From ba49199268da4583f029ee7248dadaf1844ec8bb Mon Sep 17 00:00:00 2001 From: Alexander Nguyen Date: Sat, 30 May 2026 04:06:59 -0700 Subject: [PATCH 1/2] docs: consolidate design specs under docs/ and refresh assets - Move design_specs/ into docs/design_specs/ and fix relative links in the frontend spec to match the new location - Remove obsolete REMAINING_WORK planning docs - Anchor graphify-out/ ignore rule to repo root - Update sync/logo SVG assets and add sync_nas asset - Regenerate graphify-out/ knowledge-graph artifacts Co-Authored-By: Claude Opus 4.8 (1M context) --- .gitignore | 2 +- assets/ExLabWizardLogo.svg | 2 +- assets/sync_cloud.svg | 2 +- assets/sync_local.svg | 2 +- assets/sync_nas.svg | 1 + docs/REMAINING_WORK.md | 221 - docs/REMAINING_WORK_TASKS.md | 270 - .../design_specs}/ExLab-Wizard_Design_Spec.md | 0 .../ExLab-Wizard_Frontend_Spec.md | 4 +- .../design_specs}/IMPLEMENTATION_PLAN.md | 0 .../02_User_Interaction.md | 0 .../03_Directory_Structure_Convention.md | 0 .../04_Backend_Architecture.md | 0 .../05_Template_Format.md | 0 .../design_spec_sections/06_Plugin_System.md | 0 .../07_Sync_and_Database_Integration.md | 0 .../08_Error_Handling_Principles.md | 0 .../09_Configuration_File.md | 0 .../10_README_Generation.md | 0 .../design_spec_sections/11_Cache_Folders.md | 0 .../12_Orchestrator_Mode.md | 0 .../13_Equipment_to_Orchestrator_Data_Flow.md | 0 .../design_spec_sections/15_Distribution.md | 0 .../design_spec_sections/16_Logging.md | 0 graphify-out/GRAPH_REPORT.md | 1736 +- graphify-out/graph.json | 71708 +++++++++------- graphify-out/manifest.json | 554 +- 27 files changed, 44262 insertions(+), 30240 deletions(-) create mode 100644 assets/sync_nas.svg delete mode 100644 docs/REMAINING_WORK.md delete mode 100644 docs/REMAINING_WORK_TASKS.md rename {design_specs => docs/design_specs}/ExLab-Wizard_Design_Spec.md (100%) rename {design_specs => docs/design_specs}/ExLab-Wizard_Frontend_Spec.md (99%) rename {design_specs => docs/design_specs}/IMPLEMENTATION_PLAN.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/02_User_Interaction.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/03_Directory_Structure_Convention.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/04_Backend_Architecture.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/05_Template_Format.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/06_Plugin_System.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/07_Sync_and_Database_Integration.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/08_Error_Handling_Principles.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/09_Configuration_File.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/10_README_Generation.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/11_Cache_Folders.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/12_Orchestrator_Mode.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/15_Distribution.md (100%) rename {design_specs => docs/design_specs}/design_spec_sections/16_Logging.md (100%) diff --git a/.gitignore b/.gitignore index 7f99485..06f8d9e 100644 --- a/.gitignore +++ b/.gitignore @@ -61,5 +61,5 @@ tests/docker/nas-data/* # superpowers brainstorming visual companion .superpowers/ -graphify-out/ +/graphify-out/ /*.png diff --git a/assets/ExLabWizardLogo.svg b/assets/ExLabWizardLogo.svg index 7dd15d1..11b9317 100644 --- a/assets/ExLabWizardLogo.svg +++ b/assets/ExLabWizardLogo.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/sync_cloud.svg b/assets/sync_cloud.svg index 01a428f..8476de3 100644 --- a/assets/sync_cloud.svg +++ b/assets/sync_cloud.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/sync_local.svg b/assets/sync_local.svg index d087e95..1319ef2 100644 --- a/assets/sync_local.svg +++ b/assets/sync_local.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/sync_nas.svg b/assets/sync_nas.svg new file mode 100644 index 0000000..ecb17d3 --- /dev/null +++ b/assets/sync_nas.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/REMAINING_WORK.md b/docs/REMAINING_WORK.md deleted file mode 100644 index b5aab5a..0000000 --- a/docs/REMAINING_WORK.md +++ /dev/null @@ -1,221 +0,0 @@ -# ExLab-Wizard — Remaining Work Specification - -**Verified against:** branch `fix/debug-with-playwright`, HEAD `85de7a3 feat: live config reload + opt-in staging_root`. -All `file:line` references below were read from the current tree. Each item states the -feature **intent** (with design-spec citation), the **current behavior / gap**, **what -implementing it entails**, and the **issues / risks**. - -> **Tracked checklist:** [`REMAINING_WORK_TASKS.md`](./REMAINING_WORK_TASKS.md) — tick each -> task and add an implementation note as it is integrated. - ---- - -## 0. Context - -### 0.1 Architecture (read first) -The GUI is **NiceGUI mounted in-process on the FastAPI app**. The UI does **not** call the -HTTP API — it calls backend objects directly off a dependency container `deps` -(`deps.controller`, `deps.nas_sync`, `deps.lims_client`, `deps.keyring_store`, -`deps.equipment_probe`, `deps.autostart_toggle`, `deps.audit_channel`, …). The `@router.*` -HTTP routes under `src/exlab_wizard/api/` are a **parallel surface consumed only by the -e2e/Playwright tests**. So "a route has no UI caller" is normal; an item is only a real gap -when the **underlying capability has no path in the in-process UI** either. Every item below -meets that stricter bar. - -### 0.2 What the recent edit changed (and didn't) -`85de7a3` introduced **live config reload** (`apply_live_config` in `tray/dependencies.py`) -plus an opt-in `orchestrator.staging_root`. Practical consequence for this backlog: settings -saved from the dialog now apply **without an app restart**, so the editors proposed below -(A2/A4/A5) take effect immediately once wired. The edit did **not** wire any of the inert -Application-section controls, the operators editor, or any of the §B/§C items. - -### 0.3 Healthy baseline (not stubs) -No `raise NotImplementedError` exists in the package; no bare `pass`/`...` bodies outside -`typing.Protocol`; the validator's unresolved-placeholder detection is a **shipped feature**. -The HTTP routers, `operations_modal`, and `session_progress` components are all built and -unit-tested — the missing work is mostly **mount-layer wiring**. - ---- - -## A. UI controls that exist but are not functional - -### A1 — "Quit ExLab-Wizard now" button has no handler -- **Where:** `src/exlab_wizard/ui/pages/settings.py:516` — `ui.button("Quit ExLab-Wizard now").props("flat")`, no `on_click`. -- **Intent:** Frontend Spec **§7.13** (`design_specs/ExLab-Wizard_Frontend_Spec.md:1052`): an in-window button that initiates the same graceful shutdown as the tray "Quit", for when the operator can't find the tray icon. Graceful-shutdown protocol: Backend **§4.3.2** (`tray/quit_coordinator.py`). -- **Current behavior / gap:** Renders but does nothing. The shutdown machinery exists but is **tray-process-local and not on `deps`**: `QuitCoordinator.quit()` (`tray/quit_coordinator.py:82`) runs the drain/force-quit protocol and `TrayApp.request_quit()` (`tray/main.py:77`) is the sync entry the pystray menu uses (`tray/main.py:109`), but `tray/dependencies.py` never attaches any quit callback to `deps` (it sets `deps.autostart_toggle` at `:130` and nothing quit-related; the `QuitCoordinator` is built later at `tray/main.py:171`). -- **What implementing it entails:** - 1. Expose a quit hook on `deps`: in `tray/main.py` after the coordinator/app are built (~`:171`–`:183`), set e.g. `deps.request_quit = tray_app.request_quit` (already handles running-loop vs no-loop, `tray/main.py:80`/`:84`). - 2. Add an `on_quit` param to `render_settings_page(...)` and thread it to the Application section, mirroring how the LIMS credential handlers are plumbed. - 3. In `ui/mount.py` `_settings()` (~`:358`) pass `on_quit=getattr(deps, "request_quit", None)` and wire the button with a `None`-guard; route the confirm through `QuitCoordinator.on_force_quit_prompt` (a NiceGUI confirm dialog) per §3.4.6. -- **Issues / risks:** Calling `request_quit` **synchronously inside a NiceGUI handler kills the server serving the page** — schedule it (fire-and-forget) so the HTTP response flushes first; avoid deadlocking the event loop the window runs on. Disable/no-op the button in headless/test fixtures where `deps.request_quit` is absent. - -### A2 — "Start at login" autostart checkbox is not bound -- **Where:** `src/exlab_wizard/ui/pages/settings.py:514` — `ui.checkbox("Start ExLab-Wizard at login")` with no initial value and no `on_change`. The comment at `:511-513` says wiring it "is a follow-up." -- **Intent:** Frontend Spec **§7.13** (`Frontend_Spec.md:1048`) + Distribution **§15.7** (`design_spec_sections/15_Distribution.md:150,161,167`): a toggle that *immediately* registers/unregisters the platform autostart entry (LaunchAgent / systemd / Run-key), reflecting and reversible from Settings → Application. -- **Current behavior / gap:** Renders inert; doesn't reflect real registration state. The capability is fully present and already used by the welcome card: `deps.autostart_toggle` (`tray/dependencies.py:130`, factory `:840`) calls `AutostartManager.register()/unregister()` and returns `is_registered()`; the welcome flow calls it via `_apply_autostart(deps, enabled)` (`ui/mount.py:687`). Same surface as the e2e-only `POST /setup/autostart` (`api/setup.py:289`). -- **What implementing it entails:** - 1. This section is **exempt from the draft/Save model** (§7.13 — applied immediately), so do not bind to the draft. - 2. Add `deps.autostart_is_registered: bool` at build time (`tray/dependencies.py`, next to `autostart_toggle`) so the page can seed the checkbox without importing `tray/`. - 3. Add params to `render_settings_page` (`autostart_present`, `on_set_autostart`); in `ui/mount.py` `_settings()` seed the value and wire `on_change` to reuse `_apply_autostart` (`mount.py:687`, already `None`-guards and logs). Reflect the **actual post-op `is_registered()`** result, not the optimistic checkbox state. -- **Issues / risks:** `register()/unregister()` touch the real per-user filesystem; sandbox in tests via `EXLAB_AUTOSTART_ROOT` (`tray/autostart.py:80`) or the toggle stub. A failed registration must visibly revert the checkbox. Default-on applies only to the welcome card; here the initial state mirrors reality. - -### A3 — Application-section status indicators are hardcoded / missing (§7.13 parity) -- **Where:** `src/exlab_wizard/ui/pages/settings.py:515` — `ui.label("Show in system tray: available")` is a **static literal** that doesn't reflect real `pystray` availability; there is no "Window behavior on close" text and no `[Refresh]` action. -- **Intent:** Frontend Spec **§7.13** specifies the Application section also surfaces real tray availability and window-on-close behavior. -- **Current behavior / gap:** The "available" string is always shown regardless of whether a tray backend loaded (on Linux without a tray, the app runs window-only per §15.7.4). Missing the close-behavior text. -- **What implementing it entails:** seed the tray-availability label from a `deps` flag derived from whether `pystray` initialized; add the close-behavior copy. Low effort; bundle with A1/A2. -- **Issues / risks:** low; cosmetic correctness. - -### A4 — Operators allowlist has backend enforcement but **no editor UI** -- **Where:** omitted from `SETTINGS_SECTIONS` at `src/exlab_wizard/ui/pages/settings.py:30-32`; also absent from `_render_section_body`. Setup routing skips it in `ui/mount.py` (operators intentionally omitted). -- **Intent:** Frontend Spec **§7.9** (`Frontend_Spec.md:1003-1007`): an Operators section backing `operators.allowlist` — a **chip input** (one chip per username, `[+ Add]`, per-chip delete) with helper text: *"If empty (default), the operator field accepts any value; if non-empty, the wizard renders a dropdown of these values and rejects free-text."* Config schema **§9** (`design_spec_sections/09_Configuration_File.md:116-123`); resolved Design-Spec Open-Q#11 (`ExLab-Wizard_Design_Spec.md:180`); creation-time gate in User Interaction **§2** (`02_User_Interaction.md:53,162`). -- **Current behavior / gap:** Backend is correct and live: `OperatorsConfig.allowlist` (`config/models.py:422-427`) on `Config.operators` (`:565`); `controller/creation.py:540-547` rejects an operator absent from a **non-empty** allowlist. But with no GUI to populate it, the list stays `[]` and the gate is a permanent no-op for GUI users. The wizard's "dropdown vs free-text" behavior (Open-Q#11 resolution) is also not implemented on the creation wizard. -- **What implementing it entails:** - 1. Add `"operators"` to `SETTINGS_SECTIONS` (`settings.py:25`) and a `SECTION_TITLES` entry (`:46`). - 2. Add an `elif section == "operators":` branch in `_render_section_body` (~`:464`) with a chip editor bound to `draft.operators.allowlist`. Persistence rides the existing draft → `finalize_settings_draft` → `on_save` → `_persist_config` → `apply_live_config` path — **no new plumbing**. - 3. (Optional, separate) implement the wizard dropdown-vs-free-text behavior in the project/run wizard pages. -- **Issues / risks:** needs a real chip widget (shared with A5). `OperatorsConfig` is `extra="forbid"`, `str_strip_whitespace=True`, and the allowlist is **case-sensitive** — the editor must not lowercase. Keep it **optional/non-gating**: do not add to `_missing_setup_sections` (the original reason it was pulled, so it can't block reaching the main GUI). - -### A5 — `content_scan_extensions` renders read-only (partial) -- **Where:** `src/exlab_wizard/ui/pages/settings.py:482-484` — `ui.label("Scanned file extensions: " + ", ".join(...))`. Module docstring at `:399-402` notes list editors are "a follow-up." -- **Status:** **Partially fixed** — equipment is now an editable add-form (`_render_equipment_section`, `:526-650`) and NAS-credentials is fully interactive; only `validator.content_scan_extensions` remains display-only (its scalar sibling `content_scan_max_mib` *is* editable at `:478-481`). -- **Intent:** Frontend Spec **§7.10** (`Frontend_Spec.md:1016`): a **chip input** pre-populated with the spec defaults plus a **[Reset to defaults]** action. Configurability is resolved Design-Spec Open-Q#14 (`ExLab-Wizard_Design_Spec.md:183`). -- **What implementing it entails:** replace the label at `:483` with a chip editor bound to `draft.validator.content_scan_extensions`; add `[Reset to defaults]` calling `_default_content_scan_extensions()` (`config/models.py:435`). Persistence is automatic via the draft path. -- **Issues / risks:** `ValidatorConfig._extensions_must_start_with_dot` (`config/models.py:464-471`) rejects entries not starting with `.` — validate on add for good UX (the Save path already surfaces the first `ValidationError` via `notifications.notify_error`, `settings.py:355-361`). Build the chip widget once and reuse for A4. - -### Resolved / not-a-defect (previously suspected in A) -- **"Phase 12" nav no-op — RESOLVED.** `on_select_section` is now a real handler: nav rows bind to `_select_section` (`settings.py:315-318`) which toggles section visibility client-side (`:298-302`) then calls `on_select_section` if provided. `ui/mount.py` deliberately leaves it unset (switching sections is client-side so edits survive). The docstring at `:213-216` is historical, not live. Not a bug. -- **`lambda: None` handler defaults — RESOLVED.** They are parameter fallbacks for tests; production injects real handlers (LIMS creds `mount.py:345`; NAS creds `mount.py:367`; `nas_password_present` `mount.py:366`). Minor: `on_discard` is passed as `None` (`mount.py:362`) so **"Discard all" is inert in production** (guarded at `settings.py:373`) — acceptable since closing the draft already discards, but wire it if you want explicit discard. - ---- - -## B. Backend features fully built but **not surfaced in the GUI** - -> **Shared root cause.** The creation flow `ui/mount.py:_run_creation → _await_session` -> (~`:1457`,`:1536`) is **fire-and-await-final-status only**: it never consumes -> `controller.subscribe()`, never reads `session.pending_input`, and offers no -> resume/cancel/operations affordances. Implementing the **event-subscription consumer (B4)** -> is the foundation that B1/B2/B3 build on. - -### B1 — Operations modal is built, exported, and rendered nowhere ★ highest impact -- **Where:** component `src/exlab_wizard/ui/components/operations_modal.py:77`, exported at `ui/components/__init__.py:12,29`. **Zero call sites** outside the file/export. The main toolbar (`ui/pages/main.py:189-209`) has New Project / New Run / New Test Run / Add Equipment / Refresh / Settings — **no `[Operations…]`**. The footer (`main.py:347-377`) renders Sync/Validator/LIMS/Staging segments with no click handler. `GET /operations` (`api/routers/operations.py:57`) has no in-process caller. -- **Intent:** Frontend Spec **§9.5** "Disconnect and resume — the in-flight operations panel" (`Frontend_Spec.md:1154`): reachable from (1) an `[Operations…]` toolbar action when ≥1 operation is in flight/suspended (`:1163`) and (2) the footer Sync segment's "⚠ N operations need input" state (`:1162`, §3.5.5 `:586`); columns State/Started/Equipment/Project/Run/Plugin with per-row `[Resume]`/`[Cancel]`/`[View log]` (`:1165-1175`), suspended oldest-first (`:1177`), auto-refresh on WS events (`:1179`). Backed by `GET /api/v1/operations` (Backend **§4.6.1**, `04_Backend_Architecture.md:389`). -- **Consequence of the gap:** a plugin that pauses for input mid-creation **cannot be answered from the GUI**, and an in-flight/suspended session **cannot be cancelled or resumed** in-app. -- **What implementing it entails:** - 1. Add an `[Operations…]` toolbar button in `main.py` (mirror the existing `ui.button(...).props('data-testid=...')` pattern), visible when operation count > 0. - 2. Wire its `on_click` in `mount.py` `_main` to build rows from `deps.controller.session_store` — **extract a shared helper** from the route's `_iter_sessions`/`_session_to_entry` (`operations.py:86-121`) rather than duplicating; add a public accessor on `SessionStore` (the route reaches into private `store._sessions`, `operations.py:94`). - 3. Wire row actions to `controller.resume`/`controller.cancel` (B2) and reuse `_open_log_dialog` (`mount.py:1249`) for View-log. - 4. Make the footer Sync segment count suspended sessions (`tray/dependencies.py:861-865` already computes `input_required`) and open the same modal (§3.5.5). -- **Issues / risks:** modal is a static snapshot — true auto-refresh needs B4; otherwise it refreshes only on manual re-render. Concurrency: the list mutates while open. - -### B2 — No GUI path to resume or cancel a session -- **Where:** `CreationController.resume` (`controller/creation.py:327`), `.cancel` (`creation.py:351`); HTTP `POST /sessions/{id}/resume` (`api/routers/sessions.py:196`), `/cancel` (`:227`). Grep of `ui/`+`tray/` for `controller.resume(`/`controller.cancel(` → **none**; the GUI only calls `create_project`/`create_run` (`mount.py:1502,1533`) and `status` (`mount.py:1471`). -- **Intent:** Frontend **§9.5** row actions and **§9.6** concurrent-session policy; Cancel routes through the **§9.4** confirmation dialog (`Frontend_Spec.md:1139`) carrying `discard_files` (Backend §4.6.1 `:388`). Resume contract: Backend **§4.7 / §6.4.1** (`06_Plugin_System.md:494-501`); `session_already_completed` → 409 + toast. -- **Current behavior / gap:** resume/cancel reachable only via the e2e HTTP routes. The §9.6 "disable creation buttons while a session is in flight" rule is also unimplemented — `MainPageState.orchestrator_enabled` is hardcoded `True` (`main.py:54`) and button-disable only keys off `selected_node_is_received` (`main.py:198-200`). -- **What implementing it entails:** wire the modal's `on_resume`/`on_cancel` (B1) to `deps.controller.resume(id, extra_inputs)` / `.cancel(id, discard_files=…)` (same dispatch pattern as `_run_staging_action`, `mount.py:1036`). `on_resume` should open the INPUT_REQUIRED form (B3) since `resume()` requires non-empty `extra_inputs` and raises if the session isn't INPUT_REQUIRED (`creation.py:337-341`). `on_cancel` opens the §9.4 Discard/Keep dialog. Replace the hardcoded `orchestrator_enabled` with the real config flag for §9.6. -- **Issues / risks:** `cancel()` cancels and awaits the background task (`creation.py:377-381`); surface 409/`ValueError` if already finished. `discard_files=True` triggers `shutil.rmtree` of the partial dir (`creation.py:1151-1153`) — map the Discard/Keep choice correctly. - -### B3 — Plugin `INPUT_REQUIRED` cannot be answered from the GUI -- **Where:** controller wiring `on_input_required` + `_resume_queues` (`controller/creation.py:865-887`); INPUT_REQUIRED transition + `session.pending_input` (`:866-871`); `input_required` event published (`:872-880`). No escalation dialog exists anywhere in `ui/`. -- **Intent:** Frontend **§9.1** escalation dialog (`Frontend_Spec.md:1095-1106`): title "Additional input required", plugin-identity pill, the `reason` line, fields rendered with the README form widgets, `[Submit]`/`[Cancel]`; Submit → resume. Escalations are strictly **sequential** (§9.2 `:1112`). Backend **§6.4.1** suspend/resume; OS-notification fast path §9.5 `:1158` / Backend §15.7.3. -- **Current behavior / gap:** the controller correctly suspends and parks on `await queue.get()` (`creation.py:881-887`) setting `session.pending_input`, but `_await_session` (`mount.py:1457`) just awaits the task — which never completes while suspended — so the wizard **hangs indefinitely with no dialog**. Only the HTTP `/resume` route can answer. -- **What implementing it entails:** depends on **B4** (to learn a session entered INPUT_REQUIRED) and **B1** (the surface). Build a new §9.1 dialog rendering `pending_input["fields"]` with README field widgets + reason/plugin header; Submit → `controller.resume(sid, values)`, Cancel → §9.4 confirm → `controller.cancel`. Reuse from the Operations modal's `on_resume`. -- **Issues / risks:** preserve the §9.2 sequential invariant (one dialog fully resolves before the next frame). The plugin's `isolation.timeout_seconds` keeps counting while suspended (§9.1 `:1110`) — handle a `failed` frame force-closing the dialog. `resume()` rejects empty/invalid input (`ValueError`; backend maps plugin-side rejection to `plugin_variable_validation_failed` 422) — surface inline. - -### B4 — Live per-session phase progress is static; the GUI never subscribes -- **Where:** `CreationController.subscribe` (`controller/creation.py:401`); phase frames published in `_transition`/`_publish` (`creation.py:1104-1128`). Component `session_progress(...)` (`ui/components/session_progress.py:91`) is rendered **statically with `active_phase=None`** at `ui/pages/wizard_project.py:224` and `ui/pages/wizard_run.py:229`. Grep of `ui/`+`tray/` for `subscribe` → **none**. -- **Intent:** Frontend **§10.1** (`Frontend_Spec.md:1196`): the Confirm & Create step shows a phase bar advancing Validating inputs → Rendering template → Running plugins → Writing cache → Validating post-creation → Queueing NAS sync; **§9.3** adds a per-plugin sub-row from `{kind:"progress", phase:"running_plugins", current, total}` (`:1120,1135`). Backend **§4.6.2** WS frames (`04_Backend_Architecture.md:406-413`), **§4.7.1** SessionState→Phase mapping (`:573`). -- **Current behavior / gap:** every phase row sits at fraction 0.0 forever; `_run_creation` reads only final status. The frames the controller publishes (`creation.py:1116-1123`) are drained only by the e2e WebSocket. -- **What implementing it entails:** in `mount.py`, spawn a background consumer (via `_spawn_background`, `mount.py:58`) iterating `controller.subscribe(session_id)`; on each `phase`/`progress` frame re-render `session_progress` with live `active_phase`/`completed`/`plugin_current/total`; pass real args at the two call sites instead of `None`. **Verify** the controller's emitted phase strings match the component's hardcoded `PHASES` tuple (`session_progress.py:24-31`) — a mismatch silently no-ops. -- **Issues / risks:** the iterator ends on `done`/`failed` (`creation.py:416-419`) — cancel/clean up the consumer on wizard close (mind the `_BACKGROUND_TASKS` strong-ref set). The queue is lazily created (`creation.py:410-411`) — subscribe at/before create time or miss early phases. Re-render from a background task needs the right NiceGUI client context. The §9.3 sub-row depends on the plugin host actually emitting `progress` frames — confirm it does. - -### B5 — Audit / Problems live stream not consumed by the in-process UI -- **Where:** `AuditChannel` + 30 s `_audit_loop` (`api/app.py:77-133`, `:327-356`); WS `/problems/events` (`api/routers/problems.py:252-282`). Grep of `ui/` for `audit_channel`/`AuditChannel`/`.subscribe()`/`problems/events` → **zero**. -- **Intent:** Backend **§4.6.2** (`04_Backend_Architecture.md:406-426`; the 30 s task at `:366`): a background `Validator.audit("all")` every 30 s publishes a diff to a pub-sub channel the always-on Problems tab reads (snapshot on connect, then deltas). Frontend **§11 / §3.3**: the Problems tab carries a live count badge (`Frontend_Spec.md:429`) and the footer Validator segment shows "Last audit: HH:MM:SS" (`:587`); page footer copy is "Showing N of M findings · Last audit: HH:MM:SS · Next refresh in 23s". -- **Current behavior / gap (all static):** - - `/problems` page (`ui/mount.py:371-375`) runs `_safe_audit(deps)` **once per render** (`mount.py:1579-1588`); footer is the literal `"Showing {n} of {m} findings · Last audit: --"` (`ui/pages/problems.py:279-281`) — **"Last audit: --" is hardcoded**, no countdown. - - Embedded right-pane Problems (`ui/pages/main.py:445-450`) shows `f"Showing 0 of {...} findings"` — **shown-count hardcoded to 0**; `problems_count_hard/soft` default 0 (`main.py:50-51`) and `_build_main_state` (`mount.py:699-721`) never sets them, so the tab badge `f"Problems ({...})"` (`main.py:432`) is always 0. - - Nothing in the GUI reads `deps.last_audit_at` or the channel; only the HTTP/WS surface does. -- **What implementing it entails:** - 1. Either (a) a `ui.timer` that polls `deps.last_audit_at` and re-runs `validator.audit`, or (b) consume `deps.audit_channel.subscribe()` and push deltas into reactive page state. - 2. Populate `MainPageState.problems_count_hard/soft` in `_build_main_state` from the audit summary; replace the hardcoded `0` at `main.py:447`. - 3. Replace `"Last audit: --"` (`problems.py:280`) with `deps.last_audit_at` and add the "Next refresh in Ns" countdown. - 4. Confirm production `create_app(...)` passes `start_audit_task=True` (`app.py:266`). - 5. Verify the override-and-allow-sync dialog (Frontend §11.5, already present in `ui/pages/problems.py`) is reachable from wherever the tab is mounted. -- **Issues / risks:** NiceGUI re-renders per navigation, so a per-render full `validator.audit` (current `_safe_audit`) is O(tree) each time — prefer the 30 s channel. Keep the three surfaces (tab badge, right-pane summary, `/problems` page) reading the same source to avoid drift; debounce delta storms; preserve filter-chip state across refreshes. - ---- - -## C. No-op default collaborators - -### C1 — Production runs on the **stub** README generator ★ real defect -- **Where:** `NoOpReadmeGenerator` (`controller/creation.py:210-221`), wired as the constructor default at `:271-273`. The real `ReadmeGenerator` (`readme/generator.py:176-220`) is **never imported or constructed** in `tray/` or `api/` — `tray/dependencies._build_controller` (`:519-542`) and `apply_live_config` (`:226-238`) call `CreationController(...)` **without** `readme_generator=`. -- **Intent:** Backend Spec **§10** (`10_README_Generation.md`): every project/run creation must generate a `README.md` (YAML front matter + Markdown) **and** the `readme_fields.json` cache via the four-layer field merge (template/config/custom/system) with full validation (§10.2, §10.3, §10.7; cache file §11.4). README is non-optional for project/run scope. -- **Current behavior / gap:** `NoOpReadmeGenerator.generate()` writes a 3-line stub - (`# {label}` / `Operator:` / `{objective}`) with **no front matter, no field blocks, and - no `readme_fields.json`**. So GUI-created runs ship a placeholder README and are missing the - fields cache that downstream consumers (LIMS ingest, validator) expect. -- **What implementing it entails:** - 1. Inject the real generator: `readme_generator=ReadmeGenerator()` in `_build_controller` and the `apply_live_config` fresh-build branch. - 2. **Reconcile the type mismatch first** — there are two same-named `ReadmeContext` classes: the controller's flat one (`creation.py:188-201`) vs the generator's layered one (`generator.py:152-168`); and the controller's Protocol expects `-> Path` (`creation.py:204-207`) while `ReadmeGenerator.generate()` returns `tuple[Path, Path]`. Add an adapter in `_write_cache` (`creation.py:908-919`) that assembles the layered context (core fields, template/config decls from the resolved template + `config.readme.defaults`, `SystemFields`, custom fields) and consumes both returned paths. -- **Issues / risks:** the real generator **raises** on validation failures (missing required template/config fields, type mismatches, core redeclaration); `_validate_inputs` (`creation.py:578-599`) currently checks required-field presence but not types, so newly enforced gates could fail creations that previously "passed" against the stub. Generator does sync work via `asyncio.to_thread` — fine for the pipeline. **This should be validated end-to-end with a real template before release.** - -### C2 — `NoOpNASSync` controller default (informational — not a production defect) -- **Where:** `NoOpNASSync` (`controller/creation.py:230-234`), default at `:274`; real `NASSyncClient` (`sync/nas_client.py:257-1089`). -- **Why it's not a defect:** the controller is **not** the production enqueue path — its inline enqueue is best-effort and `contextlib.suppress`-wrapped (`creation.py:686-688`). Auto-sync is owned by the **quiescence poller**, which gets the real `deps.nas_sync` (built `tray/dependencies.py:110-119`, `init()`'d in lifespan `api/app.py:277-279`, polled `:807-837`); force-sync / clear-verified call `deps.nas_sync` directly (`ui/mount.py:1056-1070`). `NASSyncClient` is complete (push/check/verify/cleanup/reconcile, rclone-only). -- **Optional cleanup:** either inject `nas_sync=deps.nas_sync` into `_build_controller` if the inline enqueue is meant to be live, or add a one-line comment that the NoOp is intentional because the poller owns auto-sync. No functional change needed. - -### C3 — Runtime guard toasts (where the `None`/NoOp path surfaces in the live UI) -All in `src/exlab_wizard/ui/mount.py` — useful as detectors of mis-wired deps: -- `:1058` `"Force-sync unavailable: NAS sync not wired"` (`deps.nas_sync is None`) -- `:1193` `"Keep-local unavailable: sync-state writer not wired"` (`deps.sync_state_writer is None`) -- `:531` `"equipment probe is not available"` (`deps.equipment_probe is None`) -- related: `:1052` no-config staging, `:1478`/`:1509` controller-not-initialized. - ---- - -## D. TODO / stale markers - -### D1 — Offline-catalogue schema-version gate is stricter than the cache-file policy (open spec question) -- **Where:** `src/exlab_wizard/lims/catalogue.py:93-103` (comment `:93-96`, check `:97-103`). -- **Intent:** Backend **§7.2.9.3** (`07_Sync_and_Database_Integration.md:360`): a `schema_version` mismatch should be treated as **catalogue absent** (WARN + fall through). The cache-schema reader policy **§11.9.2** (`11_Cache_Folders.md:462-468`) is **major-only** (accept newer/older minor). -- **Gap:** `read_catalogue` does an **exact** match (`catalogue.py:98`) and **raises `ConfigError`**, which conflicts with both the major-only cache policy and the "treat as absent / WARN" wording. Net UI behavior already matches "absent" because the only caller wraps it in try/except → WARN (`ui/mount.py:1401-1416`); the inconsistency is internal-contract, not user-visible. The catalogue isn't in §11.9.4's enumerated schema list, hence the open question. -- **What resolving it entails:** decide the policy (add the catalogue to §11.9.4 / §7.2.9, choose exact vs major-only); if major-only, swap the check to a major-compare and parse known-minor fields; if strict, consider a typed "treat-as-absent" signal instead of `ConfigError` to match §7.2.9.3. Drop the TODO once decided. -- **Issues / risks:** low. With exact-match, a future *minor* bump of `OFFLINE_CATALOGUE_VERSION` on the producer makes every consumer silently ignore the catalogue — the hazard the TODO flags. - -### D2 — Stale "plugins/registry.py not yet committed" comment (documentation only) -- **Where:** `src/exlab_wizard/plugins/host.py:73-81` (plus `:115-123`, `:896-905`). -- **Reality:** `plugins/registry.py:128-378` is a **real, complete** `PluginRegistry` (manifest scan over bundled+lab roots, `api_version` gate, network-opt-in gate, lab-wins merge, `get`/`list_all`/`candidates_for`, no plugin imported at scan time) and is **wired in production** (`tray/dependencies._build_plugin_host:497-516` constructs it, `.reload()`s, adapts it to the host). The host's `_ListBackedRegistry`/`build_test_registry` (`host.py:896-918`) is test-only. -- **Intent reference:** Backend **§6.2.1** (`06_Plugin_System.md:289-306`). -- **What resolving it entails:** delete/rewrite the three stale comment blocks to say `registry.py` is committed and wired. Pure cleanup. (Minor spec note: §6.2.1 describes the registry as `extension -> list[PluginRecord]`; the impl keys `name -> PluginRecord` with `candidates_for` computing extension matches — functionally equivalent; flag only if the spec wants the literal structure.) - ---- - -## Prioritized backlog - -| # | Item | § | Impact | Effort | -|---|------|---|--------|--------| -| 1 | **Inject real `ReadmeGenerator`** (+ reconcile `ReadmeContext`/return type) | C1 | **High — GUI-created runs ship stub READMEs, no `readme_fields.json`** | M | -| 2 | Event-subscription consumer in the creation flow (foundation) | B4 | High — unblocks 3–5; live progress | S–M | -| 3 | Render Operations modal + toolbar/footer hooks | B1 | High — session control surface | M | -| 4 | Resume/Cancel wiring (+ §9.4 confirm, §9.6 disable rule) | B2 | High | M | -| 5 | INPUT_REQUIRED escalation dialog (new component) | B3 | High — creations can hang silently | M | -| 6 | Live Problems/audit stream + real counts | B5 | Med | M | -| 7 | Operators allowlist chip editor | A4 | Med — security gate has no populator | M | -| 8 | "Start at login" checkbox wiring | A2 | Med | S | -| 9 | "Quit ExLab-Wizard now" button (+ `deps` quit hook) | A1 | Low–Med | S | -| 10 | `content_scan_extensions` chip editor + reset | A5 | Low | S (reuse #7) | -| 11 | Application-section status labels parity (§7.13) | A3 | Low | S | -| 12 | Resolve offline-catalogue version-policy TODO | D1 | Low | S | -| 13 | Delete stale registry comment | D2 | Trivial | XS | - -### Shared foundations to build once -- **Event-subscription consumer** (B4) underpins B1 auto-refresh, B2 in-flight cancel, B3 escalation, and B5. -- **Reusable chip/list editor** serves A4 and A5 (and the equipment-section follow-up). -- **Shared `SessionStore → row` helper / public accessor** removes the duplication between - `api/routers/operations.py` and the new in-process modal. - -### Suggested sequencing -**Release-blocking correctness first:** #1 (README) — validate end-to-end with a real -template. **Then the session-control epic:** #2 → #3 → #4 → #5 (they compound). **Then** -the visibility/usability items #6–#11, and the cleanups #12–#13 anytime. diff --git a/docs/REMAINING_WORK_TASKS.md b/docs/REMAINING_WORK_TASKS.md deleted file mode 100644 index 33c72bc..0000000 --- a/docs/REMAINING_WORK_TASKS.md +++ /dev/null @@ -1,270 +0,0 @@ -# ExLab-Wizard — Remaining Work: Tracked Tasks - -Task checklist derived from [`REMAINING_WORK.md`](./REMAINING_WORK.md) (verified against -`85de7a3`). Each task links back to the spec section that carries the full intent, files, -implementation steps, and risks. - -## How to use this tracker -When a task is **integrated**: -1. Flip its checkbox `- [ ]` → `- [x]`. -2. Set **Status:** `✅ Done`. -3. Fill **Impl note:** with the commit SHA / PR and a one-line summary of what landed - (and any deviation from the spec). - -Status legend: `⬜ Not started` · `🟡 In progress` · `✅ Done` · `⛔ Blocked` (note the blocker). - ---- - -## Phase 1 — Release-blocking correctness - -### - [x] T1 — Inject the real `ReadmeGenerator` (+ reconcile `ReadmeContext` / return type) -- **Spec:** [§C1](./REMAINING_WORK.md#c1--production-runs-on-the-stub-readme-generator--real-defect) · **Category:** C · **Effort:** M · **Priority:** Highest (release-blocking) -- **Why:** Production builds the controller without `readme_generator=`, so it runs on - `NoOpReadmeGenerator` — GUI-created runs ship a stub README with no YAML front matter and - no `readme_fields.json`. -- **Key files:** `controller/creation.py:188-221,271-273,578-599,908-919` · `readme/generator.py:152-220` · `tray/dependencies.py:226-238,519-542` -- **Acceptance:** a GUI-created project/run produces a §10-compliant `README.md` (front - matter + four-layer field blocks) **and** `readme_fields.json`; the two `ReadmeContext` - classes and the `Path` vs `tuple[Path, Path]` return are reconciled; validated end-to-end - against a real template. -- **Risk watch:** the real generator raises on missing/typed-wrong fields — confirm - `_validate_inputs` gates align so previously-passing creations don't start failing. -- **Status:** ✅ Done -- **Impl note:** Injected `ReadmeGenerator()` in `tray.dependencies._build_controller` (the sole - production constructor, covering both the lifespan build and `apply_live_config`). Replaced the - controller's flat placeholder `ReadmeContext` with the canonical layered type from - `exlab_wizard.readme`; the controller's `ReadmeGeneratorProtocol` + `NoOpReadmeGenerator` now use - the `tuple[Path, Path]` contract. Added `CreationController._build_readme_context` (partitions - `readme_extra` across template/config/custom layers by id, maps decls, fills the §10.6 system - block: `created_by` = OS user, `project` = LIMS short id (§3.1), `run` = run dir / null). Presence is - already gated by `_validate_inputs` and the GUI submits no typed extra fields yet, so the - generator's strict validation adds no new failures for current creations (it stays the backstop). - New end-to-end test `test_real_readme_generator_writes_frontmatter_and_cache` asserts the - four-layer front matter + `readme_fields.json`. Full unit+integration suite green (2201 passed). - ---- - -## Phase 2 — Session-control epic (build in order; they compound) - -### - [x] T2 — Event-subscription consumer in the creation flow (shared foundation) -- **Spec:** [§B4](./REMAINING_WORK.md#b4--live-per-session-phase-progress-is-static-the-gui-never-subscribes) · **Category:** B · **Effort:** S–M · **Priority:** High -- **Why:** The create flow is fire-and-await-final-status; nothing consumes - `controller.subscribe()`, so progress is static (`active_phase=None`). This consumer - underpins T3/T4/T5/T6. -- **Key files:** `ui/mount.py:58,1457,1536` · `controller/creation.py:401,410-419,1104-1128` · `ui/components/session_progress.py:24-31,91` · `ui/pages/wizard_project.py:224` · `ui/pages/wizard_run.py:229` -- **Acceptance:** the Confirm & Create step advances through the live phases (and the §9.3 - per-plugin sub-row when the host emits `progress`); the consumer is cancelled/cleaned up on - wizard close; emitted phase strings verified to match the component's `PHASES`. -- **Status:** ✅ Done -- **Impl note:** Fixed a confirmed bug: `session_progress.PHASES`/`PHASE_LABELS` used - `post_validation`/`queueing_sync`, but the controller emits the wire-format - `validating_post_creation`/`queueing_nas_sync` (`state_machine.Phase`) — two of six phases would - silently no-op. Corrected the component to the verbatim wire-format (single source of truth) and - updated the phase-order test. Added `SessionProgressState` + `apply_frame(state, frame)` to the - component (folds `phase`/`progress`/`done` frames; ignores `input_required`/unknown). Each wizard - renders the confirm-step bar via a `@ui.refreshable` reading `state.progress`, exposing - `state.progress_refresh`. `mount._run_creation` now consumes `controller.subscribe()` via - `_consume_session_progress` while the pipeline runs (race-free: `_launch` creates the event queue - before the pipeline starts and the asyncio.Queue buffers early phases). Note: the controller - emits no `progress` frame today, so the §9.3 per-plugin sub-row stays dormant until the plugin - host emits one (`apply_frame` handles it for when it lands). Suite green (2205 passed). - -### - [x] T3 — Render the Operations modal + toolbar/footer hooks -- **Spec:** [§B1](./REMAINING_WORK.md#b1--operations-modal-is-built-exported-and-rendered-nowhere--highest-impact) · **Category:** B · **Effort:** M · **Priority:** High -- **Why:** `operations_modal` is built/exported but rendered nowhere; no `[Operations…]` - action exists, so sessions can't be inspected or acted on from the GUI. -- **Key files:** `ui/components/operations_modal.py:77` · `ui/pages/main.py:189-209,347-377` · `ui/mount.py` (`_main`) · `api/routers/operations.py:86-121` (extract shared `SessionStore → row` helper + public accessor) -- **Acceptance:** an `[Operations…]` toolbar button (visible when ≥1 operation in flight) - opens the modal populated from `deps.controller.session_store`; footer Sync segment shows - the "N need input" state and opens the same modal. -- **Depends on:** T2 (for auto-refresh). -- **Status:** ✅ Done -- **Impl note:** Added a public `SessionStore.iter_sorted()` accessor + a shared - `project_identifier(request)` (both in `controller/session_store.py`) so the `/operations` route - and the in-process panel stop reaching into `store._sessions` and label rows identically; - refactored the route onto them. Added `OperationRow.from_session()` (maps the §4.7 states onto the - panel's running/suspended/completed buckets). `main.py`: `[Operations…]` toolbar button (shown - when `operations_count > 0`, warning-colored if any need input) + footer Sync segment flips to - "N operations need input" and opens the same modal; `MainPageState` gains - `operations_count`/`operations_input_required`. `mount.py`: `_operation_counts`, - `_build_operation_rows`, `_open_operations_modal` (fresh snapshot per open), and an - `_open_operation_details` "view log" dialog. Fixed a latent circular import by importing - `SessionState`/`project_identifier` from submodules in `operations.py`. Resume/cancel row actions - are placeholders here (cancel does a keep-files cancel) — fully wired in T4/T5. Suite green. - -### - [x] T4 — Wire Resume / Cancel (+ §9.4 confirm, §9.6 disable rule) -- **Spec:** [§B2](./REMAINING_WORK.md#b2--no-gui-path-to-resume-or-cancel-a-session) · **Category:** B · **Effort:** M · **Priority:** High -- **Key files:** `controller/creation.py:327,337-341,351,377-381,1151-1153` · `ui/mount.py:1036` (dispatch pattern) · `ui/pages/main.py:54,198-200` -- **Acceptance:** modal Resume/Cancel call `controller.resume`/`cancel` in-process; Cancel - routes through a §9.4 Discard/Keep dialog mapped to `discard_files`; creation buttons - disabled while a session is non-terminal (single-equipment); 409/`ValueError` surfaced. -- **Depends on:** T3. -- **Status:** ✅ Done -- **Impl note:** `_cancel_operation` now opens a §9.4 Discard / Keep dialog mapped to - `controller.cancel(id, discard_files=…)` (Discard → `shutil.rmtree` of the partial dir), with - errors surfaced as a toast (`cancel` is a no-op on an already-terminal session, so no 409 to - raise). §9.6 single-equipment lock: `_operation_counts` now also returns an `active` - (strictly non-terminal) count; `_build_main_state` sets `MainPageState.creation_in_flight`, and - `main.py` disables New Project / Run / Test Run (with a tooltip) while a creation is in flight. - Added `_operation_counts` tests (panel vs active vs input_required). Resume still routes through - T5's input dialog. Suite green (UI 463 passed). - -### - [x] T5 — Plugin `INPUT_REQUIRED` escalation dialog (new component) -- **Spec:** [§B3](./REMAINING_WORK.md#b3--plugin-input_required-cannot-be-answered-from-the-gui) · **Category:** B · **Effort:** M · **Priority:** High -- **Why:** When a plugin pauses, the wizard hangs indefinitely with no dialog; only the HTTP - route can answer. -- **Key files:** `controller/creation.py:865-887` · new `ui/components/` escalation dialog · `ui/mount.py` -- **Acceptance:** a §9.1 dialog renders `pending_input["fields"]` with README widgets + - reason/plugin header; Submit → `controller.resume(sid, values)`, Cancel → §9.4 confirm → - `cancel`; escalations strictly sequential (§9.2); handles `failed`/timeout force-close. -- **Depends on:** T2 (detect INPUT_REQUIRED) + T3 (surface). -- **Status:** ✅ Done -- **Impl note:** New component `ui/components/input_required_dialog.py`: §9.1 "Additional input - required" dialog with a plugin-identity pill, the reason line, and one widget per - `pending_input["fields"]` (string→input, text→textarea, choice→select, boolean→checkbox), - two-way bound to a values dict; `persistent` so the escalation must resolve before the next frame - (§9.2). `mount.py`: the T2 consumer now opens it on an `input_required` frame and force-closes it - on a terminal `done`/`failed` frame (plugin timeout); Submit → `controller.resume(sid, values)` - (errors — empty/invalid payload, stale state, or plugin re-rejection re-emitting `input_required` - — surfaced as a toast / re-opened dialog), Cancel → the §9.4 cancel dialog. `_cancel_operation` - was split into a controller-driven `_cancel_session` core (reused by the dialog) + a deps - resolver; the Operations modal's Resume (`_resume_operation`) reads the parked `pending_input` and - re-opens the same dialog. Tests for `collect_default_values` + dialog build. Suite green (2212). - ---- - -## Phase 3 — Visibility & usability - -### - [x] T6 — Live Problems/audit stream + real counts -- **Spec:** [§B5](./REMAINING_WORK.md#b5--audit--problems-live-stream-not-consumed-by-the-in-process-ui) · **Category:** B · **Effort:** M · **Priority:** Med -- **Key files:** `api/app.py:77-133,266,327-356` · `ui/pages/problems.py:279-281` · `ui/pages/main.py:50-51,432,445-450` · `ui/mount.py:699-721,1579-1588` -- **Acceptance:** live findings counts (tab badge + right-pane summary, single source); - "Last audit: HH:MM:SS · Next refresh in Ns" instead of `--`; override-and-allow-sync - dialog (§11.5) reachable; `start_audit_task=True` confirmed in the production app build. -- **Depends on:** T2 (subscription pattern, optional). -- **Status:** ✅ Done -- **Impl note:** The 30 s `_audit_loop` now caches tier counts on - `deps.last_audit_hard`/`last_audit_soft` (single source, no per-render re-audit, per the §B5 - preference); `_build_main_state` reads them into `MainPageState.problems_count_hard/soft`, so the - Problems **tab badge** (`problems_badge_text`) and the **right-pane summary** are now real (the - right-pane no longer hardcodes "Showing 0"). The `/problems` footer takes `last_audit_at` and - renders "Last audit: HH:MM:SS · Next refresh in Ns" with a 1 s `ui.timer` countdown (was a - hardcoded "--"); `start_audit_task=True` confirmed in the production tray build. - **Deferred (documented):** wiring the §11.5 override-and-allow-sync action and the full live - WS-delta stream are out of scope here because `render_problems_page` renders a *view-model* shape - (`finding.severity/.path/.state/.finding_id`) that the raw `Validator` `Finding` - (`tier/rule/run_path/…`) does not provide — a pre-existing mismatch (the render is e2e-only, - `# pragma: no cover`). Reconciling that view-model + the in-process override-write path - (mirroring `POST /problems/{run_path}/override`) is a follow-up; the counts/last-audit core lands - here. Suite green. - -### - [x] T7 — Operators allowlist chip editor -- **Spec:** [§A4](./REMAINING_WORK.md#a4--operators-allowlist-has-backend-enforcement-but-no-editor-ui) · **Category:** A · **Effort:** M · **Priority:** Med -- **Key files:** `ui/pages/settings.py:25,30-32,46,464` · `config/models.py:422-427` · `controller/creation.py:540-547` -- **Acceptance:** an Operators section with a chip editor bound to - `draft.operators.allowlist`, persisting via the existing draft path; **case-sensitive**, no - trimming/lowercasing; kept **non-gating** (not added to `_missing_setup_sections`). -- **Builds:** the reusable chip/list widget (shared with T10). -- **Status:** ✅ Done -- **Impl note:** Built a reusable `_render_chip_editor(values, …)` in `settings.py` (modeled on the - equipment add-form: add/delete/optional-reset, mutates the draft list in place so persistence - rides the existing draft → finalize → Save path). Added `"operators"` to `SETTINGS_SECTIONS` - (between `nas_cleanup` and `validator`) + `SECTION_TITLES`, and an `elif section == "operators"` - branch with the §7.9 helper text + chip editor bound to `draft.operators.allowlist`. Stored - verbatim (case-sensitive; whitespace trimmed on add only). Non-gating (not in - `_missing_setup_sections`). Updated the section-count test (8→9). Suite green. - -### - [x] T8 — "Start at login" checkbox wiring -- **Spec:** [§A2](./REMAINING_WORK.md#a2--start-at-login-autostart-checkbox-is-not-bound) · **Category:** A · **Effort:** S · **Priority:** Med -- **Key files:** `ui/pages/settings.py:514` · `tray/dependencies.py:130,840` (add `autostart_is_registered`) · `ui/mount.py:687` -- **Acceptance:** checkbox reflects real `is_registered()` on open; `on_change` toggles - immediately via `deps.autostart_toggle` and reflects the actual post-op result (reverts on - failure); sandboxed in tests via `EXLAB_AUTOSTART_ROOT`. -- **Status:** ✅ Done -- **Impl note:** `tray/dependencies.py` seeds `deps.autostart_is_registered` from - `AutostartManager().is_registered()` at build. `_apply_autostart` now returns the toggle's - real `is_registered()` result (the welcome card still ignores it). `_settings` passes - `autostart_registered` + `on_set_autostart`; the Application checkbox (exempt from the draft, - §7.13) seeds from the real state and, on change, applies immediately and reverts to the actual - post-op result on mismatch (re-entrancy-guarded). Disabled when no toggle is wired. Tests cover - the return-value relay. - -### - [x] T9 — "Quit ExLab-Wizard now" button (+ `deps` quit hook) -- **Spec:** [§A1](./REMAINING_WORK.md#a1--quit-exlab-wizard-now-button-has-no-handler) · **Category:** A · **Effort:** S · **Priority:** Low–Med -- **Key files:** `ui/pages/settings.py:516` · `tray/main.py:77,80,84,171` · `tray/quit_coordinator.py:82` · `ui/mount.py:358` -- **Acceptance:** a `deps.request_quit` hook exists; button triggers graceful shutdown - **scheduled non-blocking** (response flushes first) behind a confirm; no-op/disabled when - the hook is absent (headless/tests). -- **Status:** ✅ Done -- **Impl note:** The tray builder (`tray/main.py`) attaches `deps.request_quit = - tray_app.request_quit` after building `TrayApp`. `_settings` builds an `on_quit` that schedules - the hook via `ui.timer(0.1, …, once=True)` so the HTTP response flushes before the server tears - down, and passes it to the Application section, which renders the Quit button behind a confirm - dialog (§3.4.6). Disabled when the hook is absent (headless/tests). `AppDependencies` gains the - typed `request_quit` field. - -### - [x] T10 — `content_scan_extensions` chip editor + reset-to-defaults -- **Spec:** [§A5](./REMAINING_WORK.md#a5--content_scan_extensions-renders-read-only-partial) · **Category:** A · **Effort:** S · **Priority:** Low -- **Key files:** `ui/pages/settings.py:482-484` · `config/models.py:435,464-471` -- **Acceptance:** chip editor bound to `draft.validator.content_scan_extensions` with a - `[Reset to defaults]` action; entries validated to start with `.` on add. -- **Depends on:** T7 (reuse the chip widget). -- **Status:** ✅ Done -- **Impl note:** Replaced the read-only "Scanned file extensions" label with the shared - `_render_chip_editor` bound to `draft.validator.content_scan_extensions`, with a - `[Reset to defaults]` action (`draft.validator.content_scan_extensions[:] = - _default_content_scan_extensions()`) and an on-add validator rejecting entries that don't start - with `.` (the `ValidatorConfig` dot-prefix rule also re-checks at Save). Landed with T7. - -### - [x] T11 — Application-section status labels parity (§7.13) -- **Spec:** [§A3](./REMAINING_WORK.md#a3--application-section-status-indicators-are-hardcoded--missing-713-parity) · **Category:** A · **Effort:** S · **Priority:** Low -- **Key files:** `ui/pages/settings.py:515` -- **Acceptance:** tray-availability label reflects real `pystray` init; window-on-close - behavior text present. -- **Status:** ✅ Done -- **Impl note:** The tray builder sets `deps.tray_available` from `_tray_backend_available()` - (whether `pystray` imports; window-only per §15.7.4 otherwise). The Application section now shows - "Show in system tray: available / unavailable (window-only)" from that flag (no longer a static - literal) plus the window-on-close behavior copy. `AppDependencies` gains the typed - `tray_available` field. Landed with T8/T9. - ---- - -## Phase 4 — Cleanups (anytime) - -### - [x] T12 — Resolve the offline-catalogue version-policy TODO -- **Spec:** [§D1](./REMAINING_WORK.md#d1--offline-catalogue-schema-version-gate-is-stricter-than-the-cache-file-policy-open-spec-question) · **Category:** D · **Effort:** S · **Priority:** Low -- **Key files:** `lims/catalogue.py:93-103` -- **Acceptance:** policy decided (exact vs §11.9.2 major-only) and the spec updated; check - aligned; `TODO(spec)` removed. -- **Status:** ✅ Done -- **Impl note:** Policy = **treat as absent / WARN** (user-confirmed; §7.2.9.3). `read_catalogue` - now returns `OfflineCatalogue | None` — a `schema_version` mismatch logs a WARN and returns - `None` (consumer falls through) instead of raising `ConfigError`; the endpoint mismatch and - missing/parse-error cases stay hard errors. The decision is recorded in the function docstring; - `TODO(spec)` removed. Caller (`mount._lims_projects_from_catalogue`) treats `None` as `[]`. Test - flipped to assert `None` + WARN. - -### - [x] T13 — Delete the stale plugin-registry comment -- **Spec:** [§D2](./REMAINING_WORK.md#d2--stale-pluginsregistrypy-not-yet-committed-comment-documentation-only) · **Category:** D · **Effort:** XS · **Priority:** Trivial -- **Key files:** `plugins/host.py:73-81,115-123,896-905` -- **Acceptance:** comments rewritten to state `registry.py` is committed + wired and - `_ListBackedRegistry` is test-only. -- **Status:** ✅ Done -- **Impl note:** Rewrote the three "owned by Agent A / not yet committed" comment blocks in - `plugins/host.py` (the registry-surface header, the `PluginRegistryProtocol` docstring, and the - `_ListBackedRegistry`/`build_test_registry` block) to state that - `plugins.registry.PluginRegistry` is the committed, wired production registry (built in - `tray.dependencies._build_plugin_host`) and that `_ListBackedRegistry` is test-only. Also fixed a - stray "before Agent A's msgspec.Struct lands" comment. Pure cleanup; no behavior change. - ---- - -## Shared foundations (build once, reused across tasks) -- **Event-subscription consumer** (T2) → underpins T3 auto-refresh, T4, T5, and T6. -- **Reusable chip/list editor** (first built in T7) → reused by T10. -- **Shared `SessionStore → row` helper + public accessor** (T3) → removes the duplication - between `api/routers/operations.py` and the in-process modal. - -## Progress -13 / 13 complete. diff --git a/design_specs/ExLab-Wizard_Design_Spec.md b/docs/design_specs/ExLab-Wizard_Design_Spec.md similarity index 100% rename from design_specs/ExLab-Wizard_Design_Spec.md rename to docs/design_specs/ExLab-Wizard_Design_Spec.md diff --git a/design_specs/ExLab-Wizard_Frontend_Spec.md b/docs/design_specs/ExLab-Wizard_Frontend_Spec.md similarity index 99% rename from design_specs/ExLab-Wizard_Frontend_Spec.md rename to docs/design_specs/ExLab-Wizard_Frontend_Spec.md index d56b4cb..9a73ff9 100644 --- a/design_specs/ExLab-Wizard_Frontend_Spec.md +++ b/docs/design_specs/ExLab-Wizard_Frontend_Spec.md @@ -55,7 +55,7 @@ Guiding principles: ### 2.1 Visual tokens and the design system -ExLab-Wizard inherits its visual design system from the lab's authoritative style guide at [`DESIGN.md`](../DESIGN.md) (*"Scientific Analysis Dashboard Design System v1.1"*). DESIGN.md is the single source of truth for color palette, type scale, spacing tokens, border radius, shadows, and component styling rules across all lab applications (PhenoTypic, ExLab-Wizard, future tools). This subsection describes how ExLab-Wizard consumes those tokens, the small set of ExLab-Wizard-specific overrides, and the Python module that exposes the tokens to runtime code. +ExLab-Wizard inherits its visual design system from the lab's authoritative style guide at [`DESIGN.md`](../../DESIGN.md) (*"Scientific Analysis Dashboard Design System v1.1"*). DESIGN.md is the single source of truth for color palette, type scale, spacing tokens, border radius, shadows, and component styling rules across all lab applications (PhenoTypic, ExLab-Wizard, future tools). This subsection describes how ExLab-Wizard consumes those tokens, the small set of ExLab-Wizard-specific overrides, and the Python module that exposes the tokens to runtime code. #### 2.1.1 The `design.py` module @@ -722,7 +722,7 @@ Beyond NiceGUI's component defaults (Tab / Shift-Tab navigation, Enter to submit ## 4. New Project Wizard -Modal, multi-step. User capability: "Create a New Project" (User Interaction Spec Section 3.1). Backed by the Mapping B LIMS integration ([Design Spec §7.2](../design_specs/design_spec_sections/07_Sync_and_Database_Integration.md#72-lims-integration)): ExLab-Wizard does not create LIMS projects, only consumes them. +Modal, multi-step. User capability: "Create a New Project" (User Interaction Spec Section 3.1). Backed by the Mapping B LIMS integration ([Design Spec §7.2](tions/07_Sync_and_Database_Integration.md#72-lims-integration)): ExLab-Wizard does not create LIMS projects, only consumes them. | Step | Purpose | Widgets | |---|---|---| diff --git a/design_specs/IMPLEMENTATION_PLAN.md b/docs/design_specs/IMPLEMENTATION_PLAN.md similarity index 100% rename from design_specs/IMPLEMENTATION_PLAN.md rename to docs/design_specs/IMPLEMENTATION_PLAN.md diff --git a/design_specs/design_spec_sections/02_User_Interaction.md b/docs/design_specs/design_spec_sections/02_User_Interaction.md similarity index 100% rename from design_specs/design_spec_sections/02_User_Interaction.md rename to docs/design_specs/design_spec_sections/02_User_Interaction.md diff --git a/design_specs/design_spec_sections/03_Directory_Structure_Convention.md b/docs/design_specs/design_spec_sections/03_Directory_Structure_Convention.md similarity index 100% rename from design_specs/design_spec_sections/03_Directory_Structure_Convention.md rename to docs/design_specs/design_spec_sections/03_Directory_Structure_Convention.md diff --git a/design_specs/design_spec_sections/04_Backend_Architecture.md b/docs/design_specs/design_spec_sections/04_Backend_Architecture.md similarity index 100% rename from design_specs/design_spec_sections/04_Backend_Architecture.md rename to docs/design_specs/design_spec_sections/04_Backend_Architecture.md diff --git a/design_specs/design_spec_sections/05_Template_Format.md b/docs/design_specs/design_spec_sections/05_Template_Format.md similarity index 100% rename from design_specs/design_spec_sections/05_Template_Format.md rename to docs/design_specs/design_spec_sections/05_Template_Format.md diff --git a/design_specs/design_spec_sections/06_Plugin_System.md b/docs/design_specs/design_spec_sections/06_Plugin_System.md similarity index 100% rename from design_specs/design_spec_sections/06_Plugin_System.md rename to docs/design_specs/design_spec_sections/06_Plugin_System.md diff --git a/design_specs/design_spec_sections/07_Sync_and_Database_Integration.md b/docs/design_specs/design_spec_sections/07_Sync_and_Database_Integration.md similarity index 100% rename from design_specs/design_spec_sections/07_Sync_and_Database_Integration.md rename to docs/design_specs/design_spec_sections/07_Sync_and_Database_Integration.md diff --git a/design_specs/design_spec_sections/08_Error_Handling_Principles.md b/docs/design_specs/design_spec_sections/08_Error_Handling_Principles.md similarity index 100% rename from design_specs/design_spec_sections/08_Error_Handling_Principles.md rename to docs/design_specs/design_spec_sections/08_Error_Handling_Principles.md diff --git a/design_specs/design_spec_sections/09_Configuration_File.md b/docs/design_specs/design_spec_sections/09_Configuration_File.md similarity index 100% rename from design_specs/design_spec_sections/09_Configuration_File.md rename to docs/design_specs/design_spec_sections/09_Configuration_File.md diff --git a/design_specs/design_spec_sections/10_README_Generation.md b/docs/design_specs/design_spec_sections/10_README_Generation.md similarity index 100% rename from design_specs/design_spec_sections/10_README_Generation.md rename to docs/design_specs/design_spec_sections/10_README_Generation.md diff --git a/design_specs/design_spec_sections/11_Cache_Folders.md b/docs/design_specs/design_spec_sections/11_Cache_Folders.md similarity index 100% rename from design_specs/design_spec_sections/11_Cache_Folders.md rename to docs/design_specs/design_spec_sections/11_Cache_Folders.md diff --git a/design_specs/design_spec_sections/12_Orchestrator_Mode.md b/docs/design_specs/design_spec_sections/12_Orchestrator_Mode.md similarity index 100% rename from design_specs/design_spec_sections/12_Orchestrator_Mode.md rename to docs/design_specs/design_spec_sections/12_Orchestrator_Mode.md diff --git a/design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md b/docs/design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md similarity index 100% rename from design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md rename to docs/design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md diff --git a/design_specs/design_spec_sections/15_Distribution.md b/docs/design_specs/design_spec_sections/15_Distribution.md similarity index 100% rename from design_specs/design_spec_sections/15_Distribution.md rename to docs/design_specs/design_spec_sections/15_Distribution.md diff --git a/design_specs/design_spec_sections/16_Logging.md b/docs/design_specs/design_spec_sections/16_Logging.md similarity index 100% rename from design_specs/design_spec_sections/16_Logging.md rename to docs/design_specs/design_spec_sections/16_Logging.md diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 4a73566..fd7b8f8 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ -# Graph Report - ExLabWizard (2026-05-29) +# Graph Report - ExLabWizard (2026-05-30) ## Corpus Check -- 413 files · ~815,442 words +- 432 files · ~800,691 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 9314 nodes · 15346 edges · 644 communities (443 shown, 201 thin omitted) -- Extraction: 77% EXTRACTED · 23% INFERRED · 0% AMBIGUOUS · INFERRED: 3564 edges (avg confidence: 0.71) +- 9884 nodes · 16238 edges · 673 communities (484 shown, 189 thin omitted) +- Extraction: 77% EXTRACTED · 23% INFERRED · 0% AMBIGUOUS · INFERRED: 3766 edges (avg confidence: 0.71) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `51b61868` +- Built from commit: `43a55083` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -543,7 +543,19 @@ - [[_COMMUNITY_Community 525|Community 525]] - [[_COMMUNITY_Community 526|Community 526]] - [[_COMMUNITY_Community 527|Community 527]] +- [[_COMMUNITY_Community 528|Community 528]] +- [[_COMMUNITY_Community 529|Community 529]] +- [[_COMMUNITY_Community 530|Community 530]] +- [[_COMMUNITY_Community 531|Community 531]] +- [[_COMMUNITY_Community 532|Community 532]] +- [[_COMMUNITY_Community 533|Community 533]] +- [[_COMMUNITY_Community 534|Community 534]] +- [[_COMMUNITY_Community 535|Community 535]] +- [[_COMMUNITY_Community 536|Community 536]] +- [[_COMMUNITY_Community 537|Community 537]] +- [[_COMMUNITY_Community 538|Community 538]] - [[_COMMUNITY_Community 539|Community 539]] +- [[_COMMUNITY_Community 540|Community 540]] - [[_COMMUNITY_Community 541|Community 541]] - [[_COMMUNITY_Community 542|Community 542]] - [[_COMMUNITY_Community 543|Community 543]] @@ -555,20 +567,7 @@ - [[_COMMUNITY_Community 549|Community 549]] - [[_COMMUNITY_Community 550|Community 550]] - [[_COMMUNITY_Community 551|Community 551]] -- [[_COMMUNITY_Community 552|Community 552]] -- [[_COMMUNITY_Community 553|Community 553]] -- [[_COMMUNITY_Community 554|Community 554]] -- [[_COMMUNITY_Community 555|Community 555]] -- [[_COMMUNITY_Community 556|Community 556]] -- [[_COMMUNITY_Community 557|Community 557]] -- [[_COMMUNITY_Community 558|Community 558]] -- [[_COMMUNITY_Community 559|Community 559]] -- [[_COMMUNITY_Community 560|Community 560]] -- [[_COMMUNITY_Community 561|Community 561]] -- [[_COMMUNITY_Community 562|Community 562]] -- [[_COMMUNITY_Community 563|Community 563]] - [[_COMMUNITY_Community 564|Community 564]] -- [[_COMMUNITY_Community 565|Community 565]] - [[_COMMUNITY_Community 566|Community 566]] - [[_COMMUNITY_Community 567|Community 567]] - [[_COMMUNITY_Community 568|Community 568]] @@ -601,6 +600,7 @@ - [[_COMMUNITY_Community 595|Community 595]] - [[_COMMUNITY_Community 596|Community 596]] - [[_COMMUNITY_Community 597|Community 597]] +- [[_COMMUNITY_Community 598|Community 598]] - [[_COMMUNITY_Community 599|Community 599]] - [[_COMMUNITY_Community 600|Community 600]] - [[_COMMUNITY_Community 601|Community 601]] @@ -625,7 +625,6 @@ - [[_COMMUNITY_Community 620|Community 620]] - [[_COMMUNITY_Community 621|Community 621]] - [[_COMMUNITY_Community 622|Community 622]] -- [[_COMMUNITY_Community 623|Community 623]] - [[_COMMUNITY_Community 624|Community 624]] - [[_COMMUNITY_Community 625|Community 625]] - [[_COMMUNITY_Community 626|Community 626]] @@ -642,9 +641,38 @@ - [[_COMMUNITY_Community 637|Community 637]] - [[_COMMUNITY_Community 638|Community 638]] - [[_COMMUNITY_Community 639|Community 639]] +- [[_COMMUNITY_Community 640|Community 640]] - [[_COMMUNITY_Community 641|Community 641]] - [[_COMMUNITY_Community 642|Community 642]] - [[_COMMUNITY_Community 643|Community 643]] +- [[_COMMUNITY_Community 644|Community 644]] +- [[_COMMUNITY_Community 645|Community 645]] +- [[_COMMUNITY_Community 646|Community 646]] +- [[_COMMUNITY_Community 647|Community 647]] +- [[_COMMUNITY_Community 648|Community 648]] +- [[_COMMUNITY_Community 649|Community 649]] +- [[_COMMUNITY_Community 650|Community 650]] +- [[_COMMUNITY_Community 651|Community 651]] +- [[_COMMUNITY_Community 652|Community 652]] +- [[_COMMUNITY_Community 653|Community 653]] +- [[_COMMUNITY_Community 654|Community 654]] +- [[_COMMUNITY_Community 655|Community 655]] +- [[_COMMUNITY_Community 656|Community 656]] +- [[_COMMUNITY_Community 657|Community 657]] +- [[_COMMUNITY_Community 658|Community 658]] +- [[_COMMUNITY_Community 659|Community 659]] +- [[_COMMUNITY_Community 660|Community 660]] +- [[_COMMUNITY_Community 661|Community 661]] +- [[_COMMUNITY_Community 662|Community 662]] +- [[_COMMUNITY_Community 663|Community 663]] +- [[_COMMUNITY_Community 664|Community 664]] +- [[_COMMUNITY_Community 666|Community 666]] +- [[_COMMUNITY_Community 667|Community 667]] +- [[_COMMUNITY_Community 668|Community 668]] +- [[_COMMUNITY_Community 669|Community 669]] +- [[_COMMUNITY_Community 670|Community 670]] +- [[_COMMUNITY_Community 671|Community 671]] +- [[_COMMUNITY_Community 672|Community 672]] ## God Nodes (most connected - your core abstractions) 1. `_deps()` - 139 edges @@ -652,361 +680,361 @@ 3. `AppDependencies` - 123 edges 4. `NASSyncClient` - 107 edges 5. `SyncStateWriter` - 102 edges -6. `EquipmentConfig` - 93 edges -7. `PathsConfig` - 91 edges -8. `CreationWriter` - 79 edges -9. `SessionStore` - 78 edges -10. `Config` - 71 edges +6. `EquipmentConfig` - 96 edges +7. `PathsConfig` - 95 edges +8. `CreationWriter` - 82 edges +9. `SessionStore` - 79 edges +10. `Config` - 73 edges ## Surprising Connections (you probably didn't know these) -- `test_config_error_can_be_raised_and_caught()` --calls--> `ConfigError` [INFERRED] - tests/unit/test_errors.py → src/exlab_wizard/errors.py -- `test_validation_error_can_be_raised_and_caught()` --calls--> `ValidationError` [INFERRED] - tests/unit/test_errors.py → src/exlab_wizard/errors.py - `test_keyring_unavailable_error_can_be_raised_and_caught()` --calls--> `KeyringUnavailableError` [INFERRED] tests/unit/test_errors.py → src/exlab_wizard/errors.py - `test_evaluate_setup_state_no_config()` --calls--> `evaluate_setup_state()` [INFERRED] tests/unit/test_paths.py → src/exlab_wizard/paths.py - `writer()` --calls--> `CreationWriter` [INFERRED] tests/unit/cache/test_creation_writer.py → src/exlab_wizard/cache/creation_writer.py +- `test_paths_config_defaults_are_empty_strings()` --calls--> `PathsConfig` [INFERRED] + tests/unit/config/test_models.py → src/exlab_wizard/config/models.py +- `test_paths_config_rejects_unknown_keys()` --calls--> `PathsConfig` [INFERRED] + tests/unit/config/test_models.py → src/exlab_wizard/config/models.py -## Communities (644 total, 201 thin omitted) +## Communities (673 total, 189 thin omitted) ### Community 0 - "Community 0" Cohesion: 0.03 -Nodes (118): CreationJson, LimsProjectBlock, PathsBlock, Template provenance captured at creation time. Spec §11.3., Resolved on-disk paths captured at creation time. Spec §11.3., Top-level ``creation.json`` payload at schema version 1.8. Reading: ``msgsp, LIMS-side project identity captured at creation time. Spec §11.3. Required, TemplateBlock (+110 more) +Nodes (154): CreationJson, LimsProjectBlock, OverrideEntry, PathsBlock, msgspec.Struct types for the ExLab-Wizard cache files. This module is the singl, Template provenance captured at creation time. Spec §11.3., Resolved on-disk paths captured at creation time. Spec §11.3., Operator-recorded validation override entry. Spec §11.3. ``revoked`` is ``F (+146 more) ### Community 1 - "Community 1" Cohesion: 0.03 -Nodes (130): AppDependencies, create_app(), Bundle of live components the API surface dispatches to. Production wiring, Build the FastAPI app. Backend Spec §4.6. ``config``: optional pre-loaded `, Build the FastAPI app. Backend Spec §4.6. ``config``: optional pre-loaded `, compute_setup_state(), Evaluate the §4.9.1 state for the app's current dependencies. The dependenc, Evaluate the §4.9.1 state for the app's current dependencies. The dependenc (+122 more) +Nodes (113): CreationWriter, Atomic reader/writer for ``creation.json``. Backend Spec §4.4.5., Construct the writer. ``lock_timeout_seconds`` is the wall-clock cap fo, Write a fresh ``creation.json``. Reserved for initial creation. Acquire, Read, mutate, and write ``creation.json`` under one ``LOCK_EX``. The fu, Read a snapshot under ``LOCK_SH`` (shared/read lock). Concurrent reader, BandwidthConfig, ``bandwidth:`` sub-block on a transport. (+105 more) ### Community 2 - "Community 2" Cohesion: 0.03 -Nodes (113): keyring_nas_username(), OS-keyring service/username conventions used for credential storage. The wizard, Return the keyring username for the given equipment's NAS credential. Equip, _config(), _deps(), _nas_config(), Tests for ``exlab_wizard.ui.mount`` helpers. The ``@ui.page(...)`` decorators i, Phase 4 adds optional file / q / density params to the same URL model. (+105 more) +Nodes (105): _config(), _deps(), _nas_config(), Tests for ``exlab_wizard.ui.mount`` helpers. The ``@ui.page(...)`` decorators i, A clicked path is resolved from the in-memory feed into a file payload., A clicked path is resolved from the in-memory feed into a file payload., A clicked path is resolved from the in-memory feed into a file payload., Live-LIMS branch with the keyring password absent -> not ready. (+97 more) ### Community 3 - "Community 3" -Cohesion: 0.05 -Nodes (100): _build_config(), _build_controller(), _drain_to_done(), _project_request(), End-to-end integration tests for :class:`CreationController`. Each test drives, The controller writes ``equipment.json`` under ``//.exlab-wiz, Generic exceptions are wrapped as ``internal_error``., The best-effort log appender writes to the equipment cache dir. (+92 more) +Cohesion: 0.03 +Nodes (66): Mutable cross-request state for the e2e harness., TestState, cache_dir(), Return the ``.exlab-wizard/`` subdirectory for a run or project root., Return the ``.exlab-wizard/`` subdirectory for a run or project root., _build_driver(), _build_target_for(), _compute_nas_path() (+58 more) ### Community 4 - "Community 4" -Cohesion: 0.05 -Nodes (69): Tests for ``exlab_wizard.io.yaml_files``., A YAML file with a top-level scalar/list is not a manifest., test_load_yaml_manifest_empty_file_returns_empty_dict(), test_load_yaml_manifest_missing_file_raises(), test_load_yaml_manifest_non_dict_returns_empty_dict(), test_load_yaml_manifest_propagates_yaml_error(), test_load_yaml_manifest_returns_dict(), load_yaml_manifest() (+61 more) +Cohesion: 0.03 +Nodes (76): One operator-defined extra README field. Backend Spec §9, §10., One operator-defined extra README field. Backend Spec §9, §10., READMEDefaultField, _equipment_dict(), _orch_staging_transport_dict(), Unit tests for ``exlab_wizard.config.models``. Pydantic models that mirror ``co, The operator-free quiescence redesign drops the per-equipment completeness-s, rclone.conf migration (Phase 8): the per-equipment staging-transport block i (+68 more) ### Community 5 - "Community 5" -Cohesion: 0.05 -Nodes (70): _make_config(), _mark_synced(), Unit tests for the ``/staging`` router. Backend Spec §13.7, §13.8. The operator, Seed a run dir that carries a ``creation.json`` -- a real run., Write a fully-verified ``sync_state.json`` so the run rolls up to ``synced``., Write a fully-verified ``sync_state.json`` so the run rolls up to ``synced``., A run with no queue job and no directory clears to zeros., A run with no queue job and no directory clears to zeros. (+62 more) +Cohesion: 0.04 +Nodes (57): _attach_resolved(), CreationController, _format_error(), _has_hard_finding(), _os_username(), _project_name_for(), Creation controller. Backend Spec §4.4.1, §4.7, §4.8. Composes the validator, t, Run :meth:`Validator.validate_creation` against the rendered tree. Catc (+49 more) ### Community 6 - "Community 6" Cohesion: 0.04 -Nodes (57): _equipment_dict(), _orch_staging_transport_dict(), Unit tests for ``exlab_wizard.config.models``. Pydantic models that mirror ``co, The operator-free quiescence redesign drops the per-equipment completeness-s, rclone.conf migration (Phase 8): the per-equipment staging-transport block i, rclone.conf migration: nas-mode carries no per-equipment connection. The ``, rclone.conf migration: a stray ``transport`` key is now forbidden., rclone.conf migration (Phase 8): stage-mode no longer requires (or accepts) (+49 more) +Nodes (67): lock_path_for(), Cache package. Backend Spec §11., Return the advisory file-lock path string for ``path``. Centralizes the ``s, FileSyncRecord, ``msgspec.Struct`` types for the per-run ``sync_state.json`` cache. Operator-fr, Per-file sync record stored under ``sync_state.json``'s ``files`` map. One, ``sync_state.json`` per-run sync-state record at schema version 1.0. Writte, SyncStateJson (+59 more) ### Community 7 - "Community 7" -Cohesion: 0.04 -Nodes (67): AutostartRequest, AutostartResult, _await_or_call(), build_setup_router(), _coerce_probe_dict(), EquipmentTestRequest, is_creation_blocked(), LIMSTestRequest (+59 more) +Cohesion: 0.05 +Nodes (69): Tests for ``exlab_wizard.io.yaml_files``., A YAML file with a top-level scalar/list is not a manifest., test_load_yaml_manifest_empty_file_returns_empty_dict(), test_load_yaml_manifest_missing_file_raises(), test_load_yaml_manifest_non_dict_returns_empty_dict(), test_load_yaml_manifest_propagates_yaml_error(), test_load_yaml_manifest_returns_dict(), load_yaml_manifest() (+61 more) ### Community 8 - "Community 8" Cohesion: 0.05 -Nodes (46): OrchestratorStagingCleanup, ``orchestrator.staging_cleanup:`` sub-block. Backend Spec §13.7., ``orchestrator.staging_cleanup:`` sub-block. Backend Spec §13.7., _Handle, _make_config(), _mark_run_synced(), Integration test for the orchestrator quiescence-sync lifecycle. Backend Spec §, A staged run is enqueued only once its files settle for the window. (+38 more) +Nodes (72): Parallelism knobs forwarded to rclone (``--transfers`` / ``--checkers``). T, RclonePerf, NASSyncClient, Durable, per-equipment NAS sync queue with Pre-Sync Gate. Backend Spec §7.1, Swap the cached config + equipment map in place (no relaunch). The ``eq, Open the queue and start the worker task. Backend Spec §7.1.2., Durable, per-equipment NAS sync queue with Pre-Sync Gate. Backend Spec §7.1, Swap the cached config + equipment map in place (no relaunch). The ``eq (+64 more) ### Community 9 - "Community 9" -Cohesion: 0.08 -Nodes (55): EquipmentJson, OrchestratorBlock, PluginApplied, PluginIsolation, msgspec.Struct types for the ExLab-Wizard cache files. This module is the singl, Plugin worker isolation telemetry. Spec §6.2.4 / §11.3 (added 1.3)., Per-plugin invocation record written into ``plugins_applied``. Spec §6.2.4, Orchestrator-mode metadata. Spec §11.3 / §13 / Redesign Spec §3.3. Always p (+47 more) +Cohesion: 0.04 +Nodes (62): _parse_argv(), Parse the tray's CLI arguments. The tray accepts: - ``--version`` -- p, Bundle of long-lived tray components. The launcher constructs one and calls, Spawn or focus the window subprocess., TrayApp, _make_tray(), Tests for :mod:`exlab_wizard.tray.main`. Backend Spec §4.3.2., ``main()`` builds default components and calls :meth:`TrayApp.run`. (+54 more) ### Community 10 - "Community 10" -Cohesion: 0.05 -Nodes (51): on_operations_panel(), project_identifier(), In-memory session store + GC for creation sessions. Backend Spec §4.4.7. The :c, Create a fresh session in :data:`SessionState.PENDING` state., Return the session keyed by ``session_id``, or ``None``., Return ``(session_id, session)`` pairs, oldest-created first. The publi, Move ``session_id`` to ``new_state``, updating ``current_phase``. Valid, Attach a WebSocket fan-out queue to the session. The controller pushes (+43 more) +Cohesion: 0.06 +Nodes (67): EquipmentJson, PluginIsolation, Plugin worker isolation telemetry. Spec §6.2.4 / §11.3 (added 1.3)., ``equipment.json`` at schema version 1.0. Spec §11.4.1., app_with_real_controller(), The soft block does not gate POST /sessions per §4.9.4., The soft block does not gate POST /sessions per §4.9.4., End-to-end WebSocket stream of phase frames. Uses the synchronous TestClien (+59 more) ### Community 11 - "Community 11" Cohesion: 0.05 -Nodes (55): _default_handoff(), is_pid_alive(), main(), _posix_is_pid_alive(), ``exlab-wizard-window`` console_scripts entry point. Backend Spec §15.3.2. Read, Entry point. Backend Spec §15.3.2. ``argv`` is ignored at this phase (the s, Hand off control to :mod:`pywebview_app`., Resolved ``server.json`` contents: ``port`` / ``pid`` / ``started_at``. (+47 more) +Nodes (70): is_test_run_dir(), True if ``name`` is a test-run directory., True if ``name`` is a test-run directory., Return every run-leaf directory pending NAS sync. Stage-mode runs sit u, count_files_and_bytes(), iter_subdirs(), Shared filesystem helpers for the orchestrator. Backend Spec §13.2. Both :mod:`, Sum file count + total bytes under ``run_path``. With ``exclude_cache=True` (+62 more) ### Community 12 - "Community 12" -Cohesion: 0.07 -Nodes (62): local_check_factory(), local_lsjson_factory(), Check factory whose closure declares every file equal. Returns a closure co, Check factory whose closure declares every file equal. Returns a closure co, lsjson factory whose closure mirrors the local subtree perfectly. Returns a, _build_config(), _factory(), _populate_run() (+54 more) +Cohesion: 0.04 +Nodes (70): _config_with_local_root(), Unit tests for the ``/tree`` and ``/run/{path}`` browse endpoints., ``TestRuns`` directory under a project surfaces as ``test_runs`` list., ``TestRuns`` directory under a project surfaces as ``test_runs`` list., A creation.json that is present but malformed surfaces as 422., A creation.json that is present but malformed surfaces as 422., Run with creation.json but no README.md returns readme: null., Run with creation.json but no README.md returns readme: null. (+62 more) ### Community 13 - "Community 13" Cohesion: 0.05 -Nodes (60): apply_test_mode_prefix(), _deep_merge(), dump_config(), load_config(), load_config_from_text(), config.yaml round-trip loader. Backend Spec §9. Uses ruamel.yaml in round-trip, Load a config from YAML text. Same semantics as load_config but for in-memory in, Atomically write `config` back to `path`. If `original_text` is supplied, r (+52 more) +Nodes (49): OrchestratorStagingCleanup, ``orchestrator.staging_cleanup:`` sub-block. Backend Spec §13.7., ``orchestrator.staging_cleanup:`` sub-block. Backend Spec §13.7., test_orchestrator_staging_cleanup_defaults(), test_orchestrator_staging_cleanup_rejects_unknown_mode(), test_orchestrator_staging_cleanup_scheduled_requires_positive_hours(), _Handle, _make_config() (+41 more) ### Community 14 - "Community 14" -Cohesion: 0.04 -Nodes (56): _build_creation_writer(), _build_equipment_writer(), _build_keyring_store(), _build_nas_sync(), _build_plugin_host(), build_production_dependencies(), _build_quiescence_poller(), _build_session_store() (+48 more) +Cohesion: 0.03 +Nodes (65): A tombstone ("On NAS") file has no on-disk copy, so size is None., Minimal NiceGUI surface stand-in: clipboard + navigate.to + notify., Minimal NiceGUI surface stand-in: clipboard + navigate.to + notify., A tombstone ("On NAS") file has no on-disk copy, so size is None., Minimal NiceGUI surface stand-in: clipboard + navigate.to + notify., A tombstone ("On NAS") file has no on-disk copy, so size is None., Nothing selected -> no scan, no write, no raise., Minimal NiceGUI surface stand-in: clipboard + navigate.to + notify. (+57 more) ### Community 15 - "Community 15" -Cohesion: 0.05 -Nodes (49): PluginStatus, Plugin invocation outcome reported by the host. Backend Spec §6.2.4., Plugin invocation outcome reported by the host. Backend Spec §6.2.4., applied_entry_as_json(), _apply_rlimits(), _build_applied_entry(), build_test_registry(), _diff_and_collect_violations() (+41 more) +Cohesion: 0.04 +Nodes (42): _PydanticBody, Module-level body class so FastAPI treats ``body: _PydanticBody`` as a JSON, error_plugin -- raises PluginError mid-transform., ErrorPlugin, error_plugin -- raises PluginError mid-transform. Exercises the Backend Spec §6, Always raises PluginError on transform., ExLabError, PluginError (+34 more) ### Community 16 - "Community 16" Cohesion: 0.05 -Nodes (54): DeltaEvent, DoneEvent, encode_event(), event_from_dict(), FailedEvent, InputRequiredEvent, PhaseEvent, ProgressEvent (+46 more) +Nodes (62): Tests for the standalone dev seeder (``python -m exlab_wizard.dev.seed``)., Pin the sandbox under ``tmp_path`` and enable test mode. Patches ``paths.os, A clean sandbox (no config) is bootstrapped and fully seeded., A second run wipes the seeded subtree (clearing stray files) and rebuilds., _sandbox_under(), test_seed_main_creates_full_tree(), test_seed_main_wipes_and_rebuilds(), creation_json_path() (+54 more) ### Community 17 - "Community 17" -Cohesion: 0.04 -Nodes (54): Minimal NiceGUI surface stand-in: clipboard + navigate.to + notify., Minimal NiceGUI surface stand-in: clipboard + navigate.to + notify., A tombstone ("On NAS") file has no on-disk copy, so size is None., Minimal NiceGUI surface stand-in: clipboard + navigate.to + notify., A tombstone ("On NAS") file has no on-disk copy, so size is None., Minimal NiceGUI surface stand-in: clipboard + navigate.to + notify., ``open_in_os`` action calls the platform opener and reports success., ``open_in_os`` action calls the platform opener and reports success. (+46 more) +Cohesion: 0.05 +Nodes (55): _default_handoff(), is_pid_alive(), main(), _posix_is_pid_alive(), ``exlab-wizard-window`` console_scripts entry point. Backend Spec §15.3.2. Read, Entry point. Backend Spec §15.3.2. ``argv`` is ignored at this phase (the s, Hand off control to :mod:`pywebview_app`., Resolved ``server.json`` contents: ``port`` / ``pid`` / ``started_at``. (+47 more) ### Community 18 - "Community 18" -Cohesion: 0.08 -Nodes (55): NASSyncClient, Durable, per-equipment NAS sync queue with Pre-Sync Gate. Backend Spec §7.1, Durable, per-equipment NAS sync queue with Pre-Sync Gate. Backend Spec §7.1, _build_config(), _client_for_target_test(), _make_creation(), _make_push_factory(), _make_recording_push_factory() (+47 more) +Cohesion: 0.05 +Nodes (49): project_identifier(), In-memory session store + GC for creation sessions. Backend Spec §4.4.7. The :c, Create a fresh session in :data:`SessionState.PENDING` state., Return the session keyed by ``session_id``, or ``None``., Return ``(session_id, session)`` pairs, oldest-created first. The publi, Move ``session_id`` to ``new_state``, updating ``current_phase``. Valid, Attach a WebSocket fan-out queue to the session. The controller pushes, Refresh ``last_heartbeat`` so the GC will not close this session. No-op (+41 more) ### Community 19 - "Community 19" Cohesion: 0.05 -Nodes (54): BandwidthDay, CreationLevel, DirectoryLevel, FieldType, FindingKind, LIMSProjectStatus, NextAction, OrchestratorTransportType (+46 more) +Nodes (54): LoggingConfig, ``logging:`` block. Central app-log rotation + level., ``logging:`` block. Central app-log rotation + level., test_logging_central_log_keep_at_least_one(), test_logging_central_log_max_mb_at_least_one(), test_logging_level_accepts_all_canonical_values(), test_logging_level_normalized_to_uppercase(), test_logging_level_rejects_non_string_directly() (+46 more) ### Community 20 - "Community 20" Cohesion: 0.05 -Nodes (40): Bundle of long-lived tray components. The launcher constructs one and calls, Spawn or focus the window subprocess., TrayApp, _make_tray(), Tests for :mod:`exlab_wizard.tray.main`. Backend Spec §4.3.2., ``main()`` builds default components and calls :meth:`TrayApp.run`., ``asyncio.run`` raises RuntimeError when a loop is running. The tray's ``re, ``_build_default_app`` builds deps, calls ``create_app``, mounts NiceGUI. (+32 more) +Nodes (34): ABC, Plugin, Plugin contract base class. Backend Spec §6.1. Defines the public surface that, Return a list of error strings; empty list means "valid". Default imple, Called once before the file loop. Default: no-op. Use for batch setup t, Called once after the file loop. Default: no-op. Symmetric to :meth:`pr, Called if any prior hook raised. Default: no-op. Use to roll back parti, Abstract base class for all ExLab-Wizard plugins. Backend Spec §6.1.3. (+26 more) ### Community 21 - "Community 21" -Cohesion: 0.06 -Nodes (29): _attach_resolved(), CreationController, _format_error(), _has_hard_finding(), _project_name_for(), Creation controller. Backend Spec §4.4.1, §4.7, §4.8. Composes the validator, t, Write the per-equipment ``equipment.json`` registry record. Backend Spe, Run :meth:`Validator.validate_creation` against the rendered tree. Catc (+21 more) +Cohesion: 0.05 +Nodes (49): PluginStatus, Plugin invocation outcome reported by the host. Backend Spec §6.2.4., Plugin invocation outcome reported by the host. Backend Spec §6.2.4., applied_entry_as_json(), _apply_rlimits(), _build_applied_entry(), build_test_registry(), _diff_and_collect_violations() (+41 more) ### Community 22 - "Community 22" Cohesion: 0.05 -Nodes (35): assert_transition(), Return the :class:`Phase` event corresponding to ``state``. Backend Spec §4, Raise :class:`ValueError` if ``current -> new_state`` is illegal. Defensive, state_to_phase(), Tests for ``exlab_wizard.controller.state_machine``. The state machine is the c, The guard rejects a state not present in ``VALID_TRANSITIONS``. We can't ea, Every ``SessionState`` value must have an explicit mapping entry., test_assert_transition_allows_cancel_from_any_non_terminal() (+27 more) +Nodes (54): _build_creation_writer(), _build_equipment_writer(), _build_keyring_store(), _build_nas_sync(), _build_plugin_host(), build_production_dependencies(), _build_quiescence_poller(), _build_session_store() (+46 more) ### Community 23 - "Community 23" -Cohesion: 0.06 -Nodes (35): _PydanticBody, Module-level body class so FastAPI treats ``body: _PydanticBody`` as a JSON, ExLabError, PluginInputRequired, Top-level exception hierarchy. Backend Spec §4.3 errors.py., Base class for all ExLab-Wizard exceptions., Raised when a Copier template fails to load. Backend Spec §5., Raised when a template redeclares label / operator / objective. Backend Spec §10 (+27 more) +Cohesion: 0.04 +Nodes (54): _controller(), Unit tests for ``CreationController.apply_config`` (live config reload). The co, test_apply_config_reinjects_plugin_host_only_when_given(), test_apply_config_swaps_config(), A resolvable file flips keep_local via the writer and fires on_done., A resolvable file flips keep_local via the writer and fires on_done., A resolvable file flips keep_local via the writer and fires on_done., A resolvable file flips keep_local via the writer and fires on_done. (+46 more) ### Community 24 - "Community 24" -Cohesion: 0.11 -Nodes (44): KeyringStore, OS keyring with encrypted-at-rest fallback. Backend Spec §7.4. Tries the OS, _BrokenKeyring, _InMemoryKeyring, Tests for :class:`exlab_wizard.lims.keyring_store.KeyringStore`. The OS-keyring, Set + get via the encrypted fallback (no OS keyring)., The fallback file is a JSON envelope with version, salt, ciphertext., A second ``set_password`` overwrites the prior secret. (+36 more) +Cohesion: 0.05 +Nodes (35): assert_transition(), Return the :class:`Phase` event corresponding to ``state``. Backend Spec §4, Raise :class:`ValueError` if ``current -> new_state`` is illegal. Defensive, state_to_phase(), Tests for ``exlab_wizard.controller.state_machine``. The state machine is the c, The guard rejects a state not present in ``VALID_TRANSITIONS``. We can't ea, Every ``SessionState`` value must have an explicit mapping entry., test_assert_transition_allows_cancel_from_any_non_terminal() (+27 more) ### Community 25 - "Community 25" -Cohesion: 0.06 -Nodes (51): creation_json_path(), Return the ``creation.json`` path under a run or project directory., build_browse_router(), _build_equipment_node(), build_hierarchy_dict(), _build_project_node(), build_received_equipment_nodes(), _build_run_node() (+43 more) +Cohesion: 0.07 +Nodes (47): OrchestratorBlock, PluginApplied, Per-plugin invocation record written into ``plugins_applied``. Spec §6.2.4, Orchestrator-mode metadata. Spec §11.3 / §13 / Redesign Spec §3.3. Always p, Write the per-equipment ``equipment.json`` registry record. Backend Spe, Write the per-equipment ``equipment.json`` registry record. Backend Spe, Write README + creation.json into the destination tree., Write README + creation.json into the destination tree. (+39 more) ### Community 26 - "Community 26" -Cohesion: 0.04 -Nodes (50): _controller(), Unit tests for ``CreationController.apply_config`` (live config reload). The co, test_apply_config_reinjects_plugin_host_only_when_given(), test_apply_config_swaps_config(), A resolvable file flips keep_local via the writer and fires on_done., A resolvable file flips keep_local via the writer and fires on_done., A resolvable file flips keep_local via the writer and fires on_done., A resolvable file flips keep_local via the writer and fires on_done. (+42 more) +Cohesion: 0.11 +Nodes (44): KeyringStore, OS keyring with encrypted-at-rest fallback. Backend Spec §7.4. Tries the OS, _BrokenKeyring, _InMemoryKeyring, Tests for :class:`exlab_wizard.lims.keyring_store.KeyringStore`. The OS-keyring, Set + get via the encrypted fallback (no OS keyring)., The fallback file is a JSON envelope with version, salt, ciphertext., A second ``set_password`` overwrites the prior secret. (+36 more) ### Community 27 - "Community 27" -Cohesion: 0.08 -Nodes (47): _make_config(), _make_run(), _poller(), Unit tests for ``exlab_wizard.orchestrator.quiescence_poller``. The :class:`Qui, Create a run-leaf directory mirroring the §13.2 staging layout., A file is enqueued only after its signature settles for the window., A file is enqueued only after its signature settles for the window., A signature change resets ``first_seen``; the window restarts. (+39 more) +Cohesion: 0.06 +Nodes (37): Integration test: tray <-> window lifecycle round-trip. Backend Spec §4.3.2. Th, Poll ``/api/v1/health`` until the server is accepting requests., test_tray_lifecycle_round_trip(), test_tray_lifecycle_window_handshake_reads_server_json(), _wait_for_health(), Integration smoke: pywebview-facing root path returns HTML, not JSON 404. This, test_root_serves_html_after_mount(), _wait_for() (+29 more) ### Community 28 - "Community 28" -Cohesion: 0.08 -Nodes (44): CreationWriter, Atomic reader/writer for ``creation.json``. Backend Spec §4.4.5., Construct the writer. ``lock_timeout_seconds`` is the wall-clock cap fo, Write a fresh ``creation.json``. Reserved for initial creation. Acquire, Read, mutate, and write ``creation.json`` under one ``LOCK_EX``. The fu, Read a snapshot under ``LOCK_SH`` (shared/read lock). Concurrent reader, _build_config(), _make_creation() (+36 more) +Cohesion: 0.04 +Nodes (51): _build_operation_rows(), _cancel_operation(), _cancel_session(), _open_operations_modal(), Build the Operations-panel rows from the live session store (T3). Uses the, Open the in-flight Operations panel (Frontend §9.5). Builds a fresh snapsho, Build the Operations-panel rows from the live session store (T3). Uses the, Open the in-flight Operations panel (Frontend §9.5). Builds a fresh snapsho (+43 more) ### Community 29 - "Community 29" -Cohesion: 0.06 -Nodes (44): _build_real_handlers(), configure_logging(), get_logger(), Canonical logger factory + configuration. Backend Spec §16.2.1, §16.2.2, §16.2.5, Drain the queue, stop the listener thread, and detach the queue handler. Ca, Tear down the active listener. Must be called with ``_state_lock`` held., Return the numeric level threshold for the root logger. ``LoggingConfig`` a, Return ``(central_log_max_mb, central_log_keep)`` from ``config`` or defaults. (+36 more) +Cohesion: 0.05 +Nodes (50): AuditScopeKind, BandwidthDay, CreationLevel, DirectoryLevel, FieldType, FindingKind, LIMSProjectSource, LIMSProjectStatus (+42 more) ### Community 30 - "Community 30" +Cohesion: 0.08 +Nodes (47): _make_config(), _make_run(), _poller(), Unit tests for ``exlab_wizard.orchestrator.quiescence_poller``. The :class:`Qui, Create a run-leaf directory mirroring the §13.2 staging layout., A file is enqueued only after its signature settles for the window., A file is enqueued only after its signature settles for the window., A signature change resets ``first_seen``; the window restarts. (+39 more) + +### Community 31 - "Community 31" Cohesion: 0.06 Nodes (49): build_error_envelope(), _config_error_handler(), error_response(), _exlab_validation_handler(), extract_or_create_trace_id(), _generic_handler(), _http_exception_handler(), _keyring_unavailable_handler() (+41 more) -### Community 31 - "Community 31" +### Community 32 - "Community 32" Cohesion: 0.12 Nodes (49): _click(), _click_handler(), _config_with(), _draft_of(), _find(), _find_all(), _fire_change(), _nas_equipment() (+41 more) -### Community 32 - "Community 32" -Cohesion: 0.06 -Nodes (48): Split ``proposed_path`` into per-segment names. Accepts both POSIX and Wind, _split_path_segments(), _clean_input(), Unit tests for ``exlab_wizard.validator.engine`` -- creation-time mode. The eng, Default ValidatorConfig matches the §9 documented defaults., Test-mode input with TestRuns/ parent and TestRun_ leaf passes., An angle-bracket identifier in a path segment fires §8.1.1., A Windows-illegal char in a file name fires §8.1.2. (+40 more) - ### Community 33 - "Community 33" -Cohesion: 0.06 -Nodes (47): append_log_line(), format_log_line(), Append-only writer for ``wizard..log`` files. Backend Spec §11.5, §16., Render the supplied context as ``[host:..] [equip:..] ...``. Returns the em, Trim ``line`` so its UTF-8 byte length is at most ``LOG_LINE_MAX_BYTES``. T, Append a single ``line`` to a ``wizard..log`` file. Creates the p, Render a structured log line per Backend Spec §11.5 / §16.4. Tags are omitt, _render_tags() (+39 more) +Cohesion: 0.04 +Nodes (50): A run dir without a creation.json yields {path, name}, not crash., A run dir without a creation.json yields {path, name}, not crash., A run dir without a creation.json yields {path, name}, not crash., A run dir without a creation.json yields {path, name}, not crash., A run dir without a creation.json yields {path, name}, not crash., A directory match delegates to the one-level folder aggregate scan., A directory match delegates to the one-level folder aggregate scan., ``copy_path`` writes the entry path to the NiceGUI clipboard. (+42 more) ### Community 34 - "Community 34" Cohesion: 0.06 -Nodes (35): parse_validation_override_entry(), Inspect ``entry["revoked"]`` and ``entry["revokes"]`` to decide which Struct, _creation_json_payload(), _minimal_creation_json(), Tests for the msgspec.Struct cache-file types in ``exlab_wizard.api.schemas``., Spec §11.3: orchestrator is *absent* (not null) in single-equipment mode., Redesign §3.3: pushed creation.json carries the equipment label so the orche, Older creation.json files (no relay field) decode cleanly. (+27 more) +Nodes (47): append_log_line(), format_log_line(), Append-only writer for ``wizard..log`` files. Backend Spec §11.5, §16., Render the supplied context as ``[host:..] [equip:..] ...``. Returns the em, Trim ``line`` so its UTF-8 byte length is at most ``LOG_LINE_MAX_BYTES``. T, Append a single ``line`` to a ``wizard..log`` file. Creates the p, Render a structured log line per Backend Spec §11.5 / §16.4. Tags are omitt, _render_tags() (+39 more) ### Community 35 - "Community 35" -Cohesion: 0.1 -Nodes (44): CustomField, Field declaration from a template's ``_exlab_readme.fields`` list or from ``, An ad-hoc user-added field. Backend Spec §10.4. Custom fields are plain str, TemplateFieldDecl, _ctx(), Tests for :class:`exlab_wizard.readme.generator.ReadmeGenerator`. Pins the cont, Calling generate twice with the same context produces identical bytes., A value whose id has no declaration is permitted (controller-side merge). (+36 more) +Cohesion: 0.07 +Nodes (48): _make_config(), _mark_synced(), Unit tests for the ``/staging`` router. Backend Spec §13.7, §13.8. The operator, Seed a run dir that carries a ``creation.json`` -- a real run., Write a fully-verified ``sync_state.json`` so the run rolls up to ``synced``., Write a fully-verified ``sync_state.json`` so the run rolls up to ``synced``., A run with no queue job and no directory clears to zeros., A run with no queue job and no directory clears to zeros. (+40 more) ### Community 36 - "Community 36" -Cohesion: 0.07 -Nodes (37): _Bucket, _coalesced_message(), _default_notifier(), _noop_notifier(), NotificationBus, notify(), OS notifications via plyer with 5-second coalescing. Backend Spec §15.7.3. Two, Coalescing layer over :func:`notify`. The launcher constructs one bus and t (+29 more) +Cohesion: 0.06 +Nodes (48): Split ``proposed_path`` into per-segment names. Accepts both POSIX and Wind, _split_path_segments(), _clean_input(), Unit tests for ``exlab_wizard.validator.engine`` -- creation-time mode. The eng, Default ValidatorConfig matches the §9 documented defaults., Test-mode input with TestRuns/ parent and TestRun_ leaf passes., An angle-bracket identifier in a path segment fires §8.1.1., A Windows-illegal char in a file name fires §8.1.2. (+40 more) ### Community 37 - "Community 37" -Cohesion: 0.04 -Nodes (44): 7.1.10 Cache file syncing and metadata-only retention on cleanup, 7.1.1 Component model, 7.1.2 Job lifecycle, 7.1.3 Transport driver (`RcloneDriver`), 7.1.3 Transport drivers, 7.1.4 Hash verification, 7.1.4 Verify flow (lsjson reconcile + cleanup-time hash gate), 7.1.5 Retry policy (+36 more) +Cohesion: 0.08 +Nodes (46): NASCleanupConfig, ``nas_cleanup:`` block. Local-copy retention after NAS verify., ``nas_cleanup:`` block. Local-copy retention after NAS verify., test_nas_cleanup_defaults(), test_nas_cleanup_min_age_hours_non_negative(), test_nas_cleanup_min_verify_passes_at_least_one(), _build_config(), _make_creation() (+38 more) ### Community 38 - "Community 38" -Cohesion: 0.07 -Nodes (42): Tests for the rclone transport driver. Backend Spec §7.1.3, §7.1.5. The driver, A missing binary raises :class:`TransportError`, not a retry result., A missing binary raises :class:`TransportError`, not a retry result., ``env`` arrives in the subprocess; ``mask_for_log`` redacts the password. T, Install the rclone stub under ``tmp_path/bin`` and prepend to PATH., Install the rclone stub under ``tmp_path/bin`` and prepend to PATH., If the --combined tempfile cannot be read, treat it as empty output., Tell the stub to append every invocation's argv to a log file. (+34 more) +Cohesion: 0.05 +Nodes (24): ``test_runs.json`` marker at schema version 1.0. Spec §11.4.2. Filename ret, TestRunsJson, _from_must_precede_to(), OperatorsConfig, _parse_hhmm(), Pydantic models that mirror ``config.yaml``. Backend Spec §9. These models are, ``readme:`` block. Lab-policy fields layered on top of the core set., ``readme:`` block. Lab-policy fields layered on top of the core set. (+16 more) ### Community 39 - "Community 39" Cohesion: 0.05 -Nodes (43): Structural smoke tests for the PyInstaller distribution. Phase 15. The actual `, ``__version__`` mirrors ``[project] version`` in ``pyproject.toml``. Drift, ``[project.scripts]`` lists exactly the three §15.3 entry points., ``exlab_wizard.spec`` parses as Python source. The file is interpreted by P, The spec names each of the three §15.1 executables., The spec names the three entry-point script paths. PyInstaller resolves the, The spec uses PyInstaller's ``MERGE`` directive (Backend Spec §15.1). ``MER, The spec declares hidden imports for libs PyInstaller misses. Backend Spec (+35 more) +Nodes (44): build_test_app(), _classify_test_node(), create_app_factory(), _feed_rows(), E2E test app wiring (Phase 16 follow-up). Builds a FastAPI app via :func:`exlab, Parse a request URL's query string into a multi-value mapping., Same shape classifier the production mount uses, for seeded ids. Returns ``, Per-node-kind hardcoded payloads the test app threads into the production re (+36 more) ### Community 40 - "Community 40" -Cohesion: 0.08 -Nodes (34): format_status(), Status-submenu rendering. Backend Spec §4.3.2. The tray's status submenu shows, Spawn the ticker thread. Idempotent., Signal the ticker to exit. Idempotent., Run a single tick synchronously. Returns the new label. Tests call this, Best-effort numeric read; missing / None / non-int returns 0., Immutable view over the §4.3.2 status inputs., Build a :class:`StatusSnapshot` from live component references. Each compon (+26 more) +Cohesion: 0.05 +Nodes (46): _close_dialog(), _consume_session_progress(), _open_input_required_dialog(), Open the §9.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm, Open the §9.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm, Open the §9.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm, Open the in-flight Operations panel (Frontend §9.5). Builds a fresh snapsho, Open the §9.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm (+38 more) ### Community 41 - "Community 41" -Cohesion: 0.08 -Nodes (39): format_bytes(), format_elapsed(), _invoke(), Orchestrator staging panel (Frontend Spec §3.9, Backend §13.8). A bottom-dock p, Render ``value`` as a binary unit string (KiB / MiB / ...). Returns a compa, Render ``seconds`` as a compact "Hh Mm Ss" / "Mm Ss" / "Ss" string., Static badge props for a staging-state pill. Returns ``{label, color, backg, Render-ready dict for one table row. Exposed for unit tests so the pure for (+31 more) +Cohesion: 0.07 +Nodes (42): format_bytes(), format_elapsed(), _invoke(), Orchestrator staging panel (Frontend Spec §3.9, Backend §13.8). A bottom-dock p, Render ``value`` as a binary unit string (KiB / MiB / ...). Returns a compa, Render ``seconds`` as a compact "Hh Mm Ss" / "Mm Ss" / "Ss" string., Static badge props for a staging-state pill. Returns ``{label, color, backg, Render-ready dict for one table row. Exposed for unit tests so the pure for (+34 more) + +### Community 42 - "Community 42" +Cohesion: 0.06 +Nodes (35): parse_validation_override_entry(), Inspect ``entry["revoked"]`` and ``entry["revokes"]`` to decide which Struct, _creation_json_payload(), _minimal_creation_json(), Tests for the msgspec.Struct cache-file types in ``exlab_wizard.api.schemas``., Spec §11.3: orchestrator is *absent* (not null) in single-equipment mode., Redesign §3.3: pushed creation.json carries the equipment label so the orche, Older creation.json files (no relay field) decode cleanly. (+27 more) ### Community 43 - "Community 43" Cohesion: 0.07 -Nodes (29): Clear all module-level state. Test fixtures only., reset_for_tests(), _credential_testids(), Smoke tests that invoke the NiceGUI factory functions. The factory functions cr, Collect every ``data-testid`` in an element's subtree., Regression: the editing state must expose an inline password input., The LIMS section must expose the password credential row., Return a NiceGUI slot we can use as a parent for factory calls. (+21 more) +Nodes (40): keyring_nas_username(), OS-keyring service/username conventions used for credential storage. The wizard, Return the keyring username for the given equipment's NAS credential. Equip, _check_nas_passwords_present(), _make_equipment_probe(), _nas_keyring_password(), Return the stored NAS password for ``equipment_id`` or ``None``. The creden, Build the ``deps.equipment_probe`` callable. rclone.conf NAS-sync migration (+32 more) ### Community 44 - "Community 44" Cohesion: 0.07 -Nodes (24): HostPluginLogger, PluginLogFrame, Plugin logger shim. Backend Spec §6.1.4 / §6.3.2. Plugins call ``ctx.log.info(., Worker-side forwarder. Emits JSON frames on stderr. Used inside the plugin, Wire format for worker-side log records. The worker subprocess emits one ``, In-process forwarder used when plugins run without subprocess isolation. Us, WorkerPluginLogger, Tests for ``exlab_wizard.plugins.logger`` -- structured plugin log shim. Pin bo (+16 more) +Nodes (37): _Bucket, _coalesced_message(), _default_notifier(), _noop_notifier(), NotificationBus, notify(), OS notifications via plyer with 5-second coalescing. Backend Spec §15.7.3. Two, Coalescing layer over :func:`notify`. The launcher constructs one bus and t (+29 more) ### Community 45 - "Community 45" -Cohesion: 0.06 -Nodes (38): _build_main_state(), _build_staging_state(), _is_setup_ready(), _lims_credential_handlers(), _nas_credential_handlers(), _operation_counts(), _panel_sessions(), NiceGUI mount helper. Backend Spec §4.3, §15.3.2. ``mount_ui`` is the single en (+30 more) +Cohesion: 0.04 +Nodes (44): 7.1.10 Cache file syncing and metadata-only retention on cleanup, 7.1.1 Component model, 7.1.2 Job lifecycle, 7.1.3 Transport driver (`RcloneDriver`), 7.1.3 Transport drivers, 7.1.4 Hash verification, 7.1.4 Verify flow (lsjson reconcile + cleanup-time hash gate), 7.1.5 Retry policy (+36 more) ### Community 46 - "Community 46" -Cohesion: 0.08 -Nodes (35): EquipmentCacheWriter, Write the ``test_runs.json`` marker file. Idempotent per §11.4.2: if th, Read and decode a ``test_runs.json`` marker file. Raises ``SchemaMajorM, Writer for ``equipment.json`` and ``test_runs.json``. Instances are statele, Write or rewrite the per-equipment ``equipment.json`` file. Stamping ru, Read and decode an existing ``equipment.json`` file. Uses ``msgspec.jso, _make_equipment_payload(), _make_test_runs_payload() (+27 more) +Cohesion: 0.05 +Nodes (43): Structural smoke tests for the PyInstaller distribution. Phase 15. The actual `, ``__version__`` mirrors ``[project] version`` in ``pyproject.toml``. Drift, ``[project.scripts]`` lists exactly the three §15.3 entry points., ``exlab_wizard.spec`` parses as Python source. The file is interpreted by P, The spec names each of the three §15.1 executables., The spec names the three entry-point script paths. PyInstaller resolves the, The spec uses PyInstaller's ``MERGE`` directive (Backend Spec §15.1). ``MER, The spec declares hidden imports for libs PyInstaller misses. Backend Spec (+35 more) ### Community 47 - "Community 47" -Cohesion: 0.09 -Nodes (27): QuitCoordinator, Graceful tray shutdown coordinator. Backend Spec §4.3.2. Steps documented in §4, Return True iff the §4.3.2 predicate holds. ``SessionStore.active_sessi, Poll :meth:`_is_idle` up to ``deadline_seconds`` seconds. Returns True, Invoke the operator-facing force-quit prompt. Returns ``True`` to indic, Return ``int(obj.)`` defensively. Falls through ``None``, missing att, Drive the §4.3.2 graceful-shutdown protocol. Construction-time dependencies, Run the graceful-shutdown protocol. ``sigterm=True`` reduces the wait w (+19 more) +Cohesion: 0.08 +Nodes (34): format_status(), Status-submenu rendering. Backend Spec §4.3.2. The tray's status submenu shows, Spawn the ticker thread. Idempotent., Signal the ticker to exit. Idempotent., Run a single tick synchronously. Returns the new label. Tests call this, Best-effort numeric read; missing / None / non-int returns 0., Immutable view over the §4.3.2 status inputs., Build a :class:`StatusSnapshot` from live component references. Each compon (+26 more) ### Community 48 - "Community 48" -Cohesion: 0.09 -Nodes (35): _check_nas_passwords_present(), _make_equipment_probe(), Build the ``deps.equipment_probe`` callable. rclone.conf NAS-sync migration, Return the set of nas-mode equipment ids that have a keyring entry. Rclone-, Build the ``deps.equipment_probe`` callable. Rclone-only NAS sync migration, _InMemoryKeyring, _nas_config_with_remote(), _nas_config_with_two_equipment() (+27 more) +Cohesion: 0.11 +Nodes (42): CustomField, Field declaration from a template's ``_exlab_readme.fields`` list or from ``, An ad-hoc user-added field. Backend Spec §10.4. Custom fields are plain str, TemplateFieldDecl, _ctx(), Tests for :class:`exlab_wizard.readme.generator.ReadmeGenerator`. Pins the cont, Calling generate twice with the same context produces identical bytes., A value whose id has no declaration is permitted (controller-side merge). (+34 more) ### Community 49 - "Community 49" -Cohesion: 0.06 -Nodes (34): _FakeController, _NavSpy, Duck-typed CreationController for the create-flow helpers., Duck-typed CreationController for the create-flow helpers., Minimal stand-in for the NiceGUI ``ui`` object's navigate surface., A successful save persists, then hot-reloads the live components. The old b, Minimal stand-in for the NiceGUI ``ui`` object's navigate surface., Minimal stand-in for the NiceGUI ``ui`` object's navigate surface. (+26 more) +Cohesion: 0.08 +Nodes (39): _extract_readme_fields(), Copier template-engine wrapper. Backend Spec §4.4.2 / §5. This module wraps Cop, Wraps the Copier Python API behind the §4.4.2 contract., Render the template into ``dst`` via Copier. Args: tpl: A p, Return the set of regular files under ``root`` (recursively). Returns the e, _snapshot_files(), TemplateEngine, Unit tests for ``exlab_wizard.template.copier_driver``. These tests pin the §4. (+31 more) -### Community 51 - "Community 51" -Cohesion: 0.07 -Nodes (30): _audit_loop(), AuditChannel, _diff_findings(), _drain(), _finding_to_dict(), FastAPI app + lifespan + dependency wiring. Backend Spec §4.6. The :func:`creat, Close every subscriber's queue. Idempotent., Yield from the subscriber queue until a sentinel arrives. (+22 more) +### Community 50 - "Community 50" +Cohesion: 0.05 +Nodes (42): _drain_background(), macOS dispatches to the ``open`` command., macOS dispatches to the ``open`` command., macOS dispatches to the ``open`` command., macOS dispatches to the ``open`` command., A failed scan keeps the existing payload and warns., Run any pending mount background tasks to completion., macOS dispatches to the ``open`` command. (+34 more) ### Community 52 - "Community 52" -Cohesion: 0.07 -Nodes (39): evaluate_setup_state(), Evaluate the §4.9.1 setup state. Order of gates (first-failing wins):, Evaluate the §4.9.1 setup state. Order of gates (first-failing wins):, _make_equipment(), _make_orchestrator(), _nas_remote_config(), endpoint+email both filled in but no offline catalogue -> the keyring-passwo, endpoint+email both filled in but no offline catalogue -> the keyring-passwo (+31 more) +Cohesion: 0.06 +Nodes (40): derive_footer_segment_states(), FooterSegmentStates, Bottom-of-window status bar segment (Frontend Spec §3.5.5). The status bar has, Build a clickable status-bar segment., Derived ``SEGMENT_*`` state for each footer status segment (Phase 5). Only, Compute a :class:`SegmentSpec` from a label and state. The state controls t, Map live backend counts to per-segment states (Frontend §3.5.5). * **Valida, Build a clickable status-bar segment. (+32 more) ### Community 53 - "Community 53" Cohesion: 0.06 -Nodes (27): _build_driver(), _build_target_for(), _discover_run_files(), _file_signature(), NAS sync client. Backend Spec §7.1, §7.3. The :class:`NASSyncClient` is the pub, Mutate ``creation.json`` ``sync_status`` to ``synced``. Backend Spec §7.1.4., Mutate ``creation.json`` ``sync_status`` to ``synced``. Backend Spec §7.1.4., Compose the run-relative ``//`` path. Le (+19 more) +Nodes (37): dict, _build_context(), _decode_files(), _load_plugin_class(), main(), Plugin worker entry point. Backend Spec §6.3.1, §6.3.2. Invoked as ``python -m, Materialize a :class:`PluginContext` from the stdin envelope. Returns the c, Import the plugin module and return the exported ``Plugin`` symbol. The hos (+29 more) ### Community 54 - "Community 54" Cohesion: 0.05 -Nodes (38): 10. Affected files, 11. Deferred follow-ups (explicitly out of v1), 1. Summary, 2. Goals & non-goals, 3.1 New tokens, 3.2 Fix latent debt — referenced-but-undefined variables, 3. Design tokens (foundation), 4.1 Panel framing — `components/framed_pane.py` (new) + `pages/main.py` (+30 more) +Nodes (41): Without a job row the dialog shows the 'no sync job' line., Without a job row the dialog shows the 'no sync job' line., Without a job row the dialog shows the 'no sync job' line., Non-EquipmentNode keys in the hierarchy are ignored; unknown root -> treated, Non-EquipmentNode keys in the hierarchy are ignored; unknown root -> treated, A matching equipment id projects its config fields into the payload., Non-EquipmentNode keys in the hierarchy are ignored; unknown root -> treated, A schema_version mismatch (read_catalogue -> None) yields ``[]``. (+33 more) ### Community 55 - "Community 55" Cohesion: 0.05 -Nodes (38): The early-exit when config is missing produces a toast, no task., The early-exit when config is missing produces a toast, no task., The early-exit when config is missing produces a toast, no task., The early-exit when config is missing produces a toast, no task., The early-exit when config is missing produces a toast, no task., The early-exit when config is missing produces a toast, no task., Any exception raised by a per-kind builder is logged + swallowed., The early-exit when config is missing produces a toast, no task. (+30 more) +Nodes (40): _open_log_dialog(), Dispatch a per-run context action to its backend surface. Mirrors :func:`ap, Dispatch a per-run context action to its backend surface. Mirrors :func:`ap, Force a fresh single-folder scan and prime the feed payload (OQ-1/A). The F, Force a fresh single-folder scan and prime the feed payload (OQ-1/A). The F, Flip a file's ``keep_local`` flag via the orchestrator's writer. Operator-f, Dispatch a per-run context action to its backend surface. Mirrors :func:`ap, Dispatch a per-run context action to its backend surface. Mirrors :func:`ap (+32 more) ### Community 56 - "Community 56" -Cohesion: 0.06 -Nodes (37): banner_overflow_count(), BannerId, clear_banner(), clear_field_error(), clear_form_errors(), ContainerId, _emit_toast(), get_field_error() (+29 more) +Cohesion: 0.08 +Nodes (37): equipment_json_path(), Return the ``equipment.json`` path under an equipment directory., Return ``Run_`` or ``TestRun_``., Return ``Run_`` or ``TestRun_``., run_dir_stem(), can_advance(), preview_path_segments(), primary_button_color() (+29 more) ### Community 57 - "Community 57" -Cohesion: 0.06 -Nodes (37): _build_operation_rows(), _cancel_operation(), _cancel_session(), _open_operations_modal(), Build the Operations-panel rows from the live session store (T3). Uses the, Open the in-flight Operations panel (Frontend §9.5). Builds a fresh snapsho, Build the Operations-panel rows from the live session store (T3). Uses the, Open the in-flight Operations panel (Frontend §9.5). Builds a fresh snapsho (+29 more) +Cohesion: 0.08 +Nodes (35): EquipmentCacheWriter, Write the ``test_runs.json`` marker file. Idempotent per §11.4.2: if th, Read and decode a ``test_runs.json`` marker file. Raises ``SchemaMajorM, Writer for ``equipment.json`` and ``test_runs.json``. Instances are statele, Write or rewrite the per-equipment ``equipment.json`` file. Stamping ru, Read and decode an existing ``equipment.json`` file. Uses ``msgspec.jso, _make_equipment_payload(), _make_test_runs_payload() (+27 more) ### Community 58 - "Community 58" -Cohesion: 0.07 -Nodes (25): ABC, error_plugin -- raises PluginError mid-transform., ErrorPlugin, error_plugin -- raises PluginError mid-transform. Exercises the Backend Spec §6, Always raises PluginError on transform., PluginError, Raised by plugin workers to signal expected failure. Backend Spec §6., FileChange (+17 more) +Cohesion: 0.09 +Nodes (27): QuitCoordinator, Graceful tray shutdown coordinator. Backend Spec §4.3.2. Steps documented in §4, Return True iff the §4.3.2 predicate holds. ``SessionStore.active_sessi, Poll :meth:`_is_idle` up to ``deadline_seconds`` seconds. Returns True, Invoke the operator-facing force-quit prompt. Returns ``True`` to indic, Return ``int(obj.)`` defensively. Falls through ``None``, missing att, Drive the §4.3.2 graceful-shutdown protocol. Construction-time dependencies, Run the graceful-shutdown protocol. ``sigterm=True`` reduces the wait w (+19 more) ### Community 59 - "Community 59" -Cohesion: 0.06 -Nodes (35): ActionSpec, A single action affordance attached to a notification. At most one action p, Unit tests for :mod:`exlab_wizard.ui.notifications`. The helpers all delegate t, ``clear_banner`` removes the active record., Frontend §2.2.3: max 2 banners; 3rd collapses into a count., Inline field errors round-trip through register / get / clear., Inline form errors round-trip through register / get / clear., Frontend §2.2.3: exactly five canonical banner ids. (+27 more) +Cohesion: 0.07 +Nodes (40): evaluate_setup_state(), Evaluate the §4.9.1 setup state. Order of gates (first-failing wins):, Evaluate the §4.9.1 setup state. Order of gates (first-failing wins):, _make_equipment(), _make_orchestrator(), _nas_remote_config(), endpoint+email both filled in but no offline catalogue -> the keyring-passwo, endpoint+email both filled in but no offline catalogue -> the keyring-passwo (+32 more) ### Community 60 - "Community 60" -Cohesion: 0.07 -Nodes (35): _lims_slot_satisfied(), _missing_lims_fields(), _missing_nas_fields(), _missing_orchestrator_fields(), _missing_paths_fields(), _nas_in_use(), _nas_remote_satisfied(), _nas_slot_satisfied() (+27 more) +Cohesion: 0.06 +Nodes (35): _FakeController, _NavSpy, Duck-typed CreationController for the create-flow helpers., Duck-typed CreationController for the create-flow helpers., Duck-typed CreationController for the create-flow helpers., Minimal stand-in for the NiceGUI ``ui`` object's navigate surface., Minimal stand-in for the NiceGUI ``ui`` object's navigate surface., Minimal stand-in for the NiceGUI ``ui`` object's navigate surface. (+27 more) ### Community 61 - "Community 61" -Cohesion: 0.1 -Nodes (34): Wraps the Copier Python API behind the §4.4.2 contract., TemplateEngine, Unit tests for ``exlab_wizard.template.copier_driver``. These tests pin the §4., test_render_calls_copier_run_copy_with_spec_kwargs(), test_render_into_dst_with_conflicting_files_raises(), test_render_project_basic_files_written_lists_the_readme(), test_render_project_basic_writes_readme(), test_render_snapshots_existing_regular_file_at_dst() (+26 more) +Cohesion: 0.07 +Nodes (37): body_style(), card_style(), framed_pane(), header_style(), Framed pane helper (GUI/Orchestrator Redesign §4.1). The main-window refresh fr, Return the framed-pane card-shell style fragment (pure; testable). Always e, Return the framed-pane card-shell style fragment (pure; testable). Always e, Return the title-strip style fragment (pure; testable). (+29 more) -### Community 62 - "Community 62" +### Community 63 - "Community 63" Cohesion: 0.06 -Nodes (35): A directory match delegates to the one-level folder aggregate scan., ``copy_path`` writes the entry path to the NiceGUI clipboard., A directory match delegates to the one-level folder aggregate scan., ``copy_path`` writes the entry path to the NiceGUI clipboard., ``copy_path`` writes the entry path to the NiceGUI clipboard., ``copy_path`` writes the entry path to the NiceGUI clipboard., Without a selected node the feed isn't started and returns ``[]``., ``copy_path`` writes the entry path to the NiceGUI clipboard. (+27 more) +Nodes (39): _await_session(), _equipment_ids(), Open the §9.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm, Map each ``template_type`` template name to its parsed copier questions. Re, Map each ``template_type`` template name to its parsed copier questions. Re, Await a controller session's pipeline task and return the final handle. ``c, Return the configured equipment IDs., Map each ``template_type`` template name to its parsed copier questions. Re (+31 more) ### Community 64 - "Community 64" -Cohesion: 0.07 -Nodes (35): _app_name(), _env_path(), _home(), os_cache_path(), os_config_path(), _platform(), Return a normalized platform tag for OS-conditional path dispatch., Return the operator's home directory. Centralized so test fixtures can monk (+27 more) +Cohesion: 0.08 +Nodes (37): DeltaEvent, DoneEvent, encode_event(), event_from_dict(), FailedEvent, InputRequiredEvent, PhaseEvent, ProgressEvent (+29 more) ### Community 65 - "Community 65" -Cohesion: 0.1 -Nodes (32): can_advance(), preview_path_segments(), primary_button_color(), primary_button_label(), New Run Wizard (Frontend Spec §5). Six-step wizard with mode bound at construct, Return ``True`` when the active step's preconditions hold., Render the six-step run wizard. ``templates`` lists run-scope template name, Render the bound input fields for one run-wizard step. The "variables" step (+24 more) +Cohesion: 0.05 +Nodes (38): 10. Affected files, 11. Deferred follow-ups (explicitly out of v1), 1. Summary, 2. Goals & non-goals, 3.1 New tokens, 3.2 Fix latent debt — referenced-but-undefined variables, 3. Design tokens (foundation), 4.1 Panel framing — `components/framed_pane.py` (new) + `pages/main.py` (+30 more) ### Community 66 - "Community 66" Cohesion: 0.08 -Nodes (33): An absent or ``None`` ``schema_version`` is a major-mismatch case., Empty string is treated like ``None`` (no parseable major)., A non-``MAJOR.MINOR`` string is treated as a major-mismatch case., Same major (different minor) is allowed., test_require_schema_major_passes_on_same_major(), test_require_schema_major_raises_on_empty_version(), test_require_schema_major_raises_on_garbage_version(), test_require_schema_major_raises_on_none_version() (+25 more) +Nodes (25): _credential_testids(), Smoke tests that invoke the NiceGUI factory functions. The factory functions cr, Collect every ``data-testid`` in an element's subtree., Regression: the editing state must expose an inline password input., The LIMS section must expose the password credential row., Return a NiceGUI slot we can use as a parent for factory calls., _slot(), test_credential_field_editing_state_renders_a_password_input() (+17 more) ### Community 67 - "Community 67" -Cohesion: 0.06 -Nodes (19): queue(), Tests for ``exlab_wizard.sync.queue``. Covers the durable SQLite-backed sync-jo, A queue rebuilt against the same db file sees the prior rows., A RUNNING row from a prior process is downgraded to QUEUED on restart., Operations without init() raise a clear RuntimeError., ``insert`` produces a QUEUED row with a generated UUID job id., Two inserts on the same run_path violate UNIQUE., The per-file ``files`` list round-trips through insert and read. (+11 more) +Cohesion: 0.07 +Nodes (29): _audit_loop(), AuditChannel, _diff_findings(), _drain(), _finding_to_dict(), FastAPI app + lifespan + dependency wiring. Backend Spec §4.6. The :func:`creat, Close every subscriber's queue. Idempotent., Yield from the subscriber queue until a sentinel arrives. (+21 more) ### Community 68 - "Community 68" -Cohesion: 0.06 -Nodes (34): _open_log_dialog(), Dispatch a per-run context action to its backend surface. Mirrors :func:`ap, Dispatch a per-run context action to its backend surface. Mirrors :func:`ap, Force a fresh single-folder scan and prime the feed payload (OQ-1/A). The F, Force a fresh single-folder scan and prime the feed payload (OQ-1/A). The F, Flip a file's ``keep_local`` flag via the orchestrator's writer. Operator-f, Dispatch a per-run context action to its backend surface. Mirrors :func:`ap, Dispatch a per-run context action to its backend surface. Mirrors :func:`ap (+26 more) +Cohesion: 0.09 +Nodes (36): Tests for the rclone transport driver. Backend Spec §7.1.3, §7.1.5. The driver, A missing binary raises :class:`TransportError`, not a retry result., A missing binary raises :class:`TransportError`, not a retry result., ``env`` arrives in the subprocess; ``mask_for_log`` redacts the password. T, If the --combined tempfile cannot be read, treat it as empty output., Return the recorded argv lists, in invocation order., Return the recorded argv lists, in invocation order., _read_recorded_argvs() (+28 more) ### Community 69 - "Community 69" -Cohesion: 0.07 -Nodes (34): Return the configured templates directory, or ``None``., List template directory names of ``template_type`` under templates_dir., Return the configured templates directory, or ``None``., Map each ``template_type`` template name to its parsed copier questions. Re, Return the configured templates directory, or ``None``., List template directory names of ``template_type`` under templates_dir., Map each ``template_type`` template name to its parsed copier questions. Re, Map each ``template_type`` template name to its parsed copier questions. Re (+26 more) +Cohesion: 0.05 +Nodes (37): Any exception raised by a per-kind builder is logged + swallowed., Any exception raised by a per-kind builder is logged + swallowed., A missing parent dir returns 0 (no FS pre-check needed)., Only directory children whose names start with the prefix are counted., Any exception raised by a per-kind builder is logged + swallowed., When nas_sync.enqueue raises, the background task swallows + toasts., When nas_sync.enqueue raises, the background task swallows + toasts., Only directory children whose names start with the prefix are counted. (+29 more) ### Community 70 - "Community 70" -Cohesion: 0.08 -Nodes (32): body_style(), card_style(), framed_pane(), header_style(), Framed pane helper (GUI/Orchestrator Redesign §4.1). The main-window refresh fr, Return the framed-pane card-shell style fragment (pure; testable). Always e, Return the framed-pane card-shell style fragment (pure; testable). Always e, Return the title-strip style fragment (pure; testable). (+24 more) +Cohesion: 0.06 +Nodes (27): Unit tests for :mod:`exlab_wizard.ui.theme`. The theme module renders the ``:ro, A body / heading / mono reset block follows the ``:root {}``., In source layout, the resolver returns ``/assets/``., All shadows are navy-tinted (DESIGN.md §04)., Phase 5 / §4.8: the compact-density rule scopes file-row padding to the .exl, The block opens with ``:root {`` per DESIGN.md §07., All shadows are navy-tinted (DESIGN.md §04)., A body / heading / mono reset block follows the ``:root {}``. (+19 more) ### Community 71 - "Community 71" Cohesion: 0.09 -Nodes (28): assemble_equipment_config(), can_advance(), EquipmentWizardState, _maybe_confirm(), Add-Equipment wizard (GUI/Orchestrator Redesign §6). Four-step wizard launched, Build the final EquipmentConfig from the wizard's state. Raises a pydantic, Render the self-contained Add-Equipment wizard. Next / Back navigation is h, Build the final EquipmentConfig from the wizard's state. Raises a pydantic (+20 more) +Nodes (21): is_run_dir(), True if ``name`` is an experimental-run directory. Note: ``RUN_DIR_PREFIX``, True if ``name`` is an experimental-run directory. Note: ``RUN_DIR_PREFIX``, _extract_overrides_and_sync(), Read ``/.exlab-wizard/creation.json`` if present. Returns ``, Run §8.1 rules in creation-time and audit modes. Backend Spec §11.8. The co, Walk a directory subtree and return all findings. Backend Spec §11.8. U, Public read-only alias for :meth:`audit`. Backend Spec §11.8. Read-only (+13 more) ### Community 72 - "Community 72" -Cohesion: 0.08 -Nodes (31): _build_minimal_payload(), Tests for the atomic ``creation.json`` writer in ``exlab_wizard.cache.creation_w, Even if the caller hands us an old version, the writer pins to current., Forward-compat: a v0.7 writer must not drop fields a v0.8 writer added., Two simultaneous mutators on the same path must serialize. This is a small-, Multiple LOCK_SH readers must not block each other., A non-MAJOR.MINOR string must surface as the same structured error rather th, Spec §11.3 history: a 1.0 file predates ``run_kind``, ``validation_overrides (+23 more) - -### Community 73 - "Community 73" -Cohesion: 0.09 -Nodes (24): AutostartManager, _detect_platform(), platform(), Per-platform autostart register / unregister / is_registered. Construction-, fake_winreg(), _FakeKey, _FakeWinreg, Tests for :mod:`exlab_wizard.tray.autostart`. Backend Spec §15.7. (+16 more) +Cohesion: 0.1 +Nodes (22): AutostartManager, _import_winreg(), Create the per-platform autostart record. Idempotent., Remove the per-platform autostart record. Idempotent., Import ``winreg`` lazily so the module loads on macOS / Linux too. Returns, Per-platform autostart register / unregister / is_registered. Construction-, Return True iff a per-platform autostart record exists., Tests for :mod:`exlab_wizard.tray.autostart`. Backend Spec §15.7. (+14 more) ### Community 74 - "Community 74" -Cohesion: 0.07 -Nodes (22): Integration test: tray <-> window lifecycle round-trip. Backend Spec §4.3.2. Th, Poll ``/api/v1/health`` until the server is accepting requests., test_tray_lifecycle_round_trip(), test_tray_lifecycle_window_handshake_reads_server_json(), _wait_for_health(), Integration smoke: pywebview-facing root path returns HTML, not JSON 404. This, test_root_serves_html_after_mount(), _wait_for() (+14 more) +Cohesion: 0.06 +Nodes (13): E2E flow 08: Settings dialog round-trip + persistence. Frontend Spec §6.7 (sett, The renamed "Workstation" section (id still ``orchestrator``) collects the l, The LIMS credential field's full lifecycle: set -> replace -> clear (§7.4.1)., Cancelling the credential editor collapses the row without saving., test_flow_08_lims_password_cancel_discards_edit(), test_flow_08_lims_password_credential(), test_flow_08_settings(), test_flow_08_workstation_section_hides_staging_root() (+5 more) ### Community 75 - "Community 75" -Cohesion: 0.06 -Nodes (33): code:bash (# macOS), code:block10 (:///), code:bash (# Confirm the remote answers), code:bash (rclone --config /path/to/rclone.conf about lab-nas:), code:yaml (nas:), code:yaml (nas:), code:yaml (nas:), code:yaml (nas:) (+25 more) +Cohesion: 0.09 +Nodes (34): canonicalize_equipment_id(), compose_project_path(), Validate ``value`` against the §3.1 equipment-ID regex. Returns ``value`` u, Compose the project-level directory. ``// replace -> clear (§7.4.1)., Cancelling the credential editor collapses the row without saving., test_flow_08_lims_password_cancel_discards_edit(), test_flow_08_lims_password_credential(), test_flow_08_settings(), Page object for the Settings dialog. Frontend Spec §6.7., Locators for the settings dialog's nine-section layout. (+3 more) +Cohesion: 0.07 +Nodes (33): chip_state_to_tree_filters(), count_search_results(), _default_chips(), density_card_class(), MainPageState, problems_badge_text(), Main window (Frontend Spec §3). Layout: * **Left drawer** -- search box + filt, Translate a chip group state into a :class:`TreeFilters`. (+25 more) ### Community 82 - "Community 82" -Cohesion: 0.09 -Nodes (32): canonicalize_equipment_id(), compose_project_path(), Validate ``value`` against the §3.1 equipment-ID regex. Returns ``value`` u, Compose the project-level directory. ``//``; returns None on 404. ``uid_or_short_id``, ``GET /api/v1/me``; returns the current operator's row., Return a ``HealthStatus`` snapshot. Backend Spec §7.2.3. Calls ``GET /a, Close the underlying ``httpx.AsyncClient``. Idempotent. (+12 more) +Cohesion: 0.06 +Nodes (33): code:bash (# macOS), code:block10 (:///), code:bash (# Confirm the remote answers), code:bash (rclone --config /path/to/rclone.conf about lab-nas:), code:yaml (nas:), code:yaml (nas:), code:yaml (nas:), code:yaml (nas:) (+25 more) ### Community 85 - "Community 85" -Cohesion: 0.09 -Nodes (23): Plugin, _make_ctx(), _MinimalPlugin, Tests for ``exlab_wizard.plugins.base`` -- the plugin contract base class. Pin, A subclass with both abstract methods implemented is instantiable., An empty string is treated as a missing value (per spec: 'missing or empty')., The plugins package re-exports the same class object as ``errors``., PluginInputRequired stores both the field list and the operator-readable reason. (+15 more) +Cohesion: 0.06 +Nodes (33): 11.1 Folder Placement, 11.2 File Inventory per Level, 11.3 `creation.json` Schema, 11.4.1 `equipment.json` Schema, 11.4.2 `test_runs.json` Schema, 11.4.3 `runs.json` Schema, 11.4 `readme_fields.json` Schema, 11.5.1 Log Levels, Rotation, and the Central App Log (+25 more) ### Community 86 - "Community 86" -Cohesion: 0.09 -Nodes (24): _python_window_argv(), Tests for :mod:`exlab_wizard.tray.window_launcher`. Backend Spec §4.3.2., Default constructor with no override delegates to the resolver., Return an argv that runs a tiny window stand-in (a sleep)., test_argv_falls_through_resolve_helper(), test_close_is_idempotent(), test_close_kills_unresponsive_process(), test_close_terminates_subprocess() (+16 more) +Cohesion: 0.06 +Nodes (34): Force-sync routes to ``deps.nas_sync.enqueue`` with the run path., Force-sync routes to ``deps.nas_sync.enqueue`` with the run path., Force-sync routes to ``deps.nas_sync.enqueue`` with the run path., Force-sync routes to ``deps.nas_sync.enqueue`` with the run path., The early-exit when config is missing produces a toast, no task., The early-exit when config is missing produces a toast, no task., The early-exit when config is missing produces a toast, no task., When the feed's last_payload is set, entries are projected into FileListEntr (+26 more) ### Community 87 - "Community 87" Cohesion: 0.13 @@ -1014,735 +1042,731 @@ Nodes (29): PluginHost, Spawns plugin worker subprocesses with strict isolation. ### Community 88 - "Community 88" Cohesion: 0.09 -Nodes (32): _make_clean_tree(), _make_validator(), If ``stat()`` raises OSError, the file is skipped from content scanning., If ``open(rb)`` raises OSError, the file is silently skipped., Build a single-equipment / single-project / single-run clean tree. Returns, Construct a :class:`Validator` for tests with a single equipment root., A well-formed equipment / project / run tree produces no findings., A large file with a placeholder is NOT scanned for content. (+24 more) +Nodes (24): _python_window_argv(), Tests for :mod:`exlab_wizard.tray.window_launcher`. Backend Spec §4.3.2., Default constructor with no override delegates to the resolver., Return an argv that runs a tiny window stand-in (a sleep)., test_argv_falls_through_resolve_helper(), test_close_is_idempotent(), test_close_kills_unresponsive_process(), test_close_terminates_subprocess() (+16 more) ### Community 89 - "Community 89" -Cohesion: 0.09 -Nodes (32): _build_creation_json_dict(), A directory name containing ```` produces a finding., Hard-tier findings come first; ties break on rule then offending_path., ``{"kind": "equipment_id", ...}`` walks only the matching subtree., ``{"kind": "project_path", ...}`` walks the supplied path only., ``{"kind": "all"}`` aggregates findings across every equipment root., Build the wire-form ``creation.json`` dict for a fixture tree., Every entry in the result is a :class:`Finding` instance. (+24 more) +Cohesion: 0.12 +Nodes (30): BandwidthWindow, One ``{days, from, to}`` window. Backend Spec §9., One ``{days, from, to}`` window. Backend Spec §9., effective_bandwidth_limit_kibps(), is_window_active(), mbps_to_kibps(), _parse_hhmm(), Bandwidth schedule evaluator. Backend Spec §7.1.7. The §7.1.7 bandwidth limiter (+22 more) ### Community 90 - "Community 90" Cohesion: 0.07 -Nodes (24): Exception, test_about_missing_binary_returns_not_ok(), test_classify_failure_unknown_when_rc_zero_and_no_markers(), Sync transports package. Backend Spec §7.1.3. Each transport is a thin async wr, Kind of failure that the queue worker uses to drive the retry policy. Backe, Outcome of a transport push. ``ok`` is True iff the transport reported succ, Raised when a transport probe cannot complete. Distinct from :class:`Transp, TransportError (+16 more) +Nodes (31): BannerId, clear_banner(), clear_field_error(), clear_form_errors(), ContainerId, _emit_toast(), get_field_error(), get_form_error() (+23 more) ### Community 91 - "Community 91" -Cohesion: 0.07 -Nodes (18): FolderFeed, FolderFeedState, Folder-feed client abstraction. GUI/Orchestrator Redesign §5. A small ``start(p, In-memory state of one folder feed (one per centre pane)., One folder feed; rebound to a different path via ``start()``., Start polling ``path``. Switching paths stops the previous poll before s, Pause polling — used when the window is backgrounded., Resume polling after a pause. (+10 more) +Cohesion: 0.09 +Nodes (31): _make_finding(), Unit tests for ``exlab_wizard.validator.findings``. The :class:`Finding` datacl, Optional fields default if missing from the payload., Unknown keys in a future-minor payload are not lethal., ``matched_token`` of ``None`` survives the round-trip as ``None``., Two findings with identical field values collapse in a set., Different field values produce distinct set entries., Findings sort lexicographically when keyed by their dict shape. (+23 more) ### Community 92 - "Community 92" Cohesion: 0.09 -Nodes (31): _make_finding(), Unit tests for ``exlab_wizard.validator.findings``. The :class:`Finding` datacl, Optional fields default if missing from the payload., Unknown keys in a future-minor payload are not lethal., ``matched_token`` of ``None`` survives the round-trip as ``None``., Two findings with identical field values collapse in a set., Different field values produce distinct set entries., Findings sort lexicographically when keyed by their dict shape. (+23 more) +Nodes (32): _make_clean_tree(), _make_validator(), If ``stat()`` raises OSError, the file is skipped from content scanning., If ``open(rb)`` raises OSError, the file is silently skipped., Build a single-equipment / single-project / single-run clean tree. Returns, Construct a :class:`Validator` for tests with a single equipment root., A well-formed equipment / project / run tree produces no findings., A large file with a placeholder is NOT scanned for content. (+24 more) ### Community 93 - "Community 93" Cohesion: 0.09 -Nodes (21): Writer for ``equipment.json`` (registry) and ``test_runs.json`` (marker). Backe, Return the on-disk ``first_seen_at`` if the file exists. Returns ``None`` w, _read_equipment_sync(), _read_existing_first_seen_at(), _read_test_runs_marker_sync(), _write_equipment_sync(), _write_test_runs_marker_sync(), lock_path_for() (+13 more) +Nodes (32): _build_creation_json_dict(), A ``Run_*`` leaf whose creation.json says ``run_kind="test"`` is flagged., Hard-tier findings come first; ties break on rule then offending_path., ``{"kind": "equipment_id", ...}`` walks only the matching subtree., ``{"kind": "project_path", ...}`` walks the supplied path only., ``{"kind": "all"}`` aggregates findings across every equipment root., Build the wire-form ``creation.json`` dict for a fixture tree., Every entry in the result is a :class:`Finding` instance. (+24 more) ### Community 94 - "Community 94" -Cohesion: 0.06 -Nodes (31): A suspended session re-opens its escalation dialog with parked fields., A suspended session re-opens its escalation dialog with parked fields., A suspended session re-opens its escalation dialog with parked fields., With a job row, the dialog renders each populated field line., With a job row, the dialog renders each populated field line., A suspended session re-opens its escalation dialog with parked fields., A suspended session re-opens its escalation dialog with parked fields., Without a job row the dialog shows the 'no sync job' line. (+23 more) +Cohesion: 0.08 +Nodes (31): create_app(), Build the FastAPI app. Backend Spec §4.6. ``config``: optional pre-loaded `, Build the FastAPI app. Backend Spec §4.6. ``config``: optional pre-loaded `, build_setup_router(), Construct the ``/setup/*`` router. Always-available endpoints., Construct the ``/setup/*`` router. Always-available endpoints., When config has no equipment the setup gate blocks /tree., When config has no equipment the setup gate blocks /tree. (+23 more) ### Community 95 - "Community 95" -Cohesion: 0.11 -Nodes (28): can_advance(), disk_space_pre_flight_message(), preview_step_clear(), ProjectWizardState, New Project Wizard (Frontend Spec §4). Seven steps in a ``ui.stepper``: 1. LIM, Pre-flight checks for the Preview step (Frontend §10.5.4)., Return a copy-ready message when disk space is low; else ``None``., Render the seven-step project wizard. ``templates`` is the list of project- (+20 more) +Cohesion: 0.14 +Nodes (30): AppDependencies, Bundle of live components the API surface dispatches to. Production wiring, compute_setup_state(), Evaluate the §4.9.1 state for the app's current dependencies. The dependenc, Evaluate the §4.9.1 state for the app's current dependencies. The dependenc, Unit tests for ``exlab_wizard.api.setup`` (gate + endpoints)., When the nas remote is unavailable the status surfaces the rclone next-action., Equipment with a password-requiring transport but no keyring entry gates. (+22 more) ### Community 96 - "Community 96" -Cohesion: 0.11 -Nodes (28): _build_front_matter(), _build_readme_fields(), _check_value_type(), _core_fields_dict(), _custom_fields_list(), _is_present(), README generator. Backend Spec §10 / §11.4. Renders ``README.md`` (YAML front m, Renders ``README.md`` + ``readme_fields.json``. Backend Spec §10. (+20 more) +Cohesion: 0.08 +Nodes (31): _goto(), E2E flow 25: production /main is wired to the redesigned renderer. This suite e, Loading /main?selected=TEST_EQ1 directly renders the centre + right panes., Clicking a breadcrumb segment routes back through /main?selected=. The brea, Clicking a breadcrumb segment routes back through /main?selected=. The brea, Clicking the right-pane toggle flips ?right_pane=collapsed in the URL., Clicking the right-pane toggle flips ?right_pane=collapsed in the URL., Owned-equipment Edit menu navigates to /settings with the equipment id. Rou (+23 more) ### Community 97 - "Community 97" -Cohesion: 0.11 -Nodes (30): _apply_live_config(), Push ``cfg`` into the running components, then keep it as the live config., apply_live_config(), _lims_identity(), Push a freshly saved ``config.yaml`` into the running components. Replaces, Push a freshly saved ``config.yaml`` into the running components. Replaces, Return the ``(endpoint, email)`` pair that defines a LIMS client. Trailing, Return the ``(endpoint, email)`` pair that defines a LIMS client. Trailing (+22 more) +Cohesion: 0.07 +Nodes (18): FolderFeed, FolderFeedState, Folder-feed client abstraction. GUI/Orchestrator Redesign §5. A small ``start(p, In-memory state of one folder feed (one per centre pane)., One folder feed; rebound to a different path via ``start()``., Start polling ``path``. Switching paths stops the previous poll before s, Pause polling — used when the window is backgrounded., Resume polling after a pause. (+10 more) ### Community 98 - "Community 98" -Cohesion: 0.11 -Nodes (17): _encode_files(), Encode a run-relative path tuple into the ``files`` JSON column., Async SQLite-backed durable sync queue. Backend Spec §7.1.1. Use :meth:`ini, Open the connection, ensure the schema, and replay in-flight rows. Repl, Close the underlying connection (idempotent)., Return the row for ``job_id`` or raise ``ValueError``. Centralizes the, Insert a new ``QUEUED`` row for ``run_path``. ``files`` is the per-file, Return the row with the given ``job_id`` or ``None``. (+9 more) +Cohesion: 0.09 +Nodes (18): LIMSClient, _project_from_row(), Read-only LIMS client (Mapping B). Backend Spec §7.2. The client wraps an :clas, ``GET /api/v1/projects``; returns one LIMSProject per row. ``status_fil, ``GET /api/v1/projects/``; returns None on 404. ``uid_or_short_id``, ``GET /api/v1/me``; returns the current operator's row., Return a ``HealthStatus`` snapshot. Backend Spec §7.2.3. Calls ``GET /a, Close the underlying ``httpx.AsyncClient``. Idempotent. (+10 more) ### Community 99 - "Community 99" -Cohesion: 0.09 -Nodes (25): build_icon(), default_icon_image(), _import_pystray(), pystray icon construction. Backend Spec §4.3.2. The tray icon's menu has three, Invoke a menu callback; log + swallow exceptions. The pystray menu handler, Return a small PIL.Image used as the tray icon bitmap. Imported lazily so t, Build the pystray icon with the §4.1 menu. ``status_provider`` is invoked e, Lazy import so unit tests on headless hosts can mock pystray. (+17 more) +Cohesion: 0.07 +Nodes (31): Drive a create_* call to completion and toast the outcome. When ``wizard_st, Build a RunCreateRequest from the wizard state and run it., Drive a create_* call to completion and toast the outcome. When ``wizard_st, Run the validator audit, swallowing failures to a WARN log., Drive a create_* call to completion and toast the outcome. When ``wizard_st, Run the validator audit, swallowing failures to a WARN log., Run the validator audit, swallowing failures to a WARN log., Build a RunCreateRequest from the wizard state and run it. (+23 more) ### Community 100 - "Community 100" -Cohesion: 0.07 -Nodes (30): _await_session(), Await a controller session's pipeline task and return the final handle. ``c, Await a controller session's pipeline task and return the final handle. ``c, Await a controller session's pipeline task and return the final handle. ``c, Drive a create_* call to completion and toast the outcome. When ``wizard_st, Return the configured equipment IDs., Await a controller session's pipeline task and return the final handle. ``c, Drive a create_* call to completion and toast the outcome. When ``wizard_st (+22 more) +Cohesion: 0.11 +Nodes (28): can_advance(), disk_space_pre_flight_message(), preview_step_clear(), ProjectWizardState, New Project Wizard (Frontend Spec §4). Seven steps in a ``ui.stepper``: 1. LIM, Pre-flight checks for the Preview step (Frontend §10.5.4)., Return a copy-ready message when disk space is low; else ``None``., Render the seven-step project wizard. ``templates`` is the list of project- (+20 more) ### Community 101 - "Community 101" -Cohesion: 0.09 -Nodes (15): _import_winreg(), Per-platform autostart registration. Backend Spec §4.3.2 + §15.7. Registers ``E, Create the per-platform autostart record. Idempotent., Remove the per-platform autostart record. Idempotent., Return the macOS LaunchAgent plist body. Backend Spec §15.7.1., Return the Linux systemd-user unit body. Backend Spec §15.7.1., Return the XDG ``.desktop`` autostart body. Backend Spec §15.7.1., Import ``winreg`` lazily so the module loads on macOS / Linux too. Returns (+7 more) +Cohesion: 0.11 +Nodes (30): _apply_live_config(), Push ``cfg`` into the running components, then keep it as the live config., apply_live_config(), _lims_identity(), Push a freshly saved ``config.yaml`` into the running components. Replaces, Push a freshly saved ``config.yaml`` into the running components. Replaces, Return the ``(endpoint, email)`` pair that defines a LIMS client. Trailing, Return the ``(endpoint, email)`` pair that defines a LIMS client. Trailing (+22 more) ### Community 102 - "Community 102" Cohesion: 0.07 -Nodes (29): 10. Error handling, 11. Testing strategy, 12. Future (v1.x), 1. Summary, 2. Goals & non-goals, 3.1 Always-orchestrator, 3.2 Per-equipment sync role, 3.3 Owned vs. received equipment (+21 more) +Nodes (29): Unit tests for :mod:`exlab_wizard.ui.notifications`. The helpers all delegate t, ``clear_banner`` removes the active record., Frontend §2.2.3: max 2 banners; 3rd collapses into a count., Inline field errors round-trip through register / get / clear., Inline form errors round-trip through register / get / clear., Frontend §2.2.3: exactly five canonical banner ids., Severity matches DESIGN.md alerts table., ContainerId enumerates the three banner placement scopes. (+21 more) ### Community 103 - "Community 103" -Cohesion: 0.07 -Nodes (29): The selected-node fields end up on MainPageState for the renderer., The selected-node fields end up on MainPageState for the renderer., An unknown sys.platform falls through to False so the toast can warn., An unknown sys.platform falls through to False so the toast can warn., The selected-node fields end up on MainPageState for the renderer., Linux dispatches to xdg-open via subprocess.Popen., The selected-node fields end up on MainPageState for the renderer., Phase 4 selection / search / density fields reach MainPageState. (+21 more) +Cohesion: 0.09 +Nodes (25): build_icon(), default_icon_image(), _import_pystray(), pystray icon construction. Backend Spec §4.3.2. The tray icon's menu has three, Invoke a menu callback; log + swallow exceptions. The pystray menu handler, Return a small PIL.Image used as the tray icon bitmap. Imported lazily so t, Build the pystray icon with the §4.1 menu. ``status_provider`` is invoked e, Lazy import so unit tests on headless hosts can mock pystray. (+17 more) ### Community 104 - "Community 104" -Cohesion: 0.07 -Nodes (28): Unit tests for ``Validator.audit`` and ``Validator.query_problems``. Backend Sp, A directory outside the equipment root resolves to "other" (defensive)., A finding with an unknown tier sorts after both hard and soft., ``Validator.from_config`` projects fields out of a Config-shaped object., When ``orchestrator.enabled`` is False, no staging root is wired in., ``orchestrator`` attribute absent on the config also works (default None)., ``_classify_level`` returns "other" for dirs outside the equipment root., ``_compute_run_path`` returns ``str(directory)`` for unrelated paths. (+20 more) +Cohesion: 0.09 +Nodes (21): Exception, test_classify_failure_unknown_when_rc_zero_and_no_markers(), Sync transports package. Backend Spec §7.1.3. Each transport is a thin async wr, Kind of failure that the queue worker uses to drive the retry policy. Backe, Outcome of a transport push. ``ok`` is True iff the transport reported succ, Raised when a transport probe cannot complete. Distinct from :class:`Transp, TransportError, TransportErrorKind (+13 more) ### Community 105 - "Community 105" Cohesion: 0.07 -Nodes (28): 0.1 Architecture (read first), 0.2 What the recent edit changed (and didn't), 0.3 Healthy baseline (not stubs), 0. Context, A1 — "Quit ExLab-Wizard now" button has no handler, A2 — "Start at login" autostart checkbox is not bound, A3 — Application-section status indicators are hardcoded / missing (§7.13 parity), A4 — Operators allowlist has backend enforcement but **no editor UI** (+20 more) +Nodes (29): 10. Error handling, 11. Testing strategy, 12. Future (v1.x), 1. Summary, 2. Goals & non-goals, 3.1 Always-orchestrator, 3.2 Per-equipment sync role, 3.3 Owned vs. received equipment (+21 more) ### Community 106 - "Community 106" Cohesion: 0.07 -Nodes (28): code:block1 (┌───────────────────────────────────────────────────────────), Context, Critical Files (Reference), ExLab-Wizard Implementation Plan, First Action (before phase 1), Goals, Per-Phase Definition of Done, Phase 10: NAS sync client (+20 more) +Nodes (30): A successful scan records the refresh on the coordinator., A successful scan records the refresh on the coordinator., A successful scan records the refresh on the coordinator., A successful scan records the refresh on the coordinator., When the clear helper raises, the background task swallows + toasts., When the clear helper raises, the background task swallows + toasts., The 0-file path reports ``already cleared`` rather than ``cleared N``., The 0-file path reports ``already cleared`` rather than ``cleared N``. (+22 more) ### Community 107 - "Community 107" -Cohesion: 0.16 -Nodes (24): _findings(), Unit tests for the ``/problems`` router., Connecting to /problems/events emits a snapshot frame immediately., Connecting to /problems/events emits a snapshot frame immediately., Without an audit channel the WebSocket closes with 1011., Without an audit channel the WebSocket closes with 1011., ``POST /problems/refresh`` invokes audit and publishes to the channel., ``POST /problems/refresh`` invokes audit and publishes to the channel. (+16 more) +Cohesion: 0.07 +Nodes (30): An unknown sys.platform falls through to False so the toast can warn., An unknown sys.platform falls through to False so the toast can warn., An unknown sys.platform falls through to False so the toast can warn., A scan failure yields item_count=None + neutral rollup, no raise., A force-refresh writes the fresh scan onto the per-tab feed payload and reco, An entry with no path triggers the early-return toast., An unknown sys.platform falls through to False so the toast can warn., A scan failure yields item_count=None + neutral rollup, no raise. (+22 more) ### Community 108 - "Community 108" -Cohesion: 0.09 -Nodes (26): browser(), _free_port(), page(), E2E test fixtures (Phase 16). Boots a real uvicorn process serving the e2e test, Yield a chromium browser (headless)., Yield a fresh Playwright page for each test., Return a free TCP port on 127.0.0.1., Return a chromium executable path or None. Search order: 1. ``EXLAB_E2 (+18 more) +Cohesion: 0.07 +Nodes (29): apply_test_mode_prefix(), load_config_from_text(), Load a config from YAML text. Same semantics as load_config but for in-memory in, Return ``config`` with each equipment id prefixed by :data:`TEST_MODE_PREFIX`., The default code path is a no-op: no env var, no rewrite., A truthy env value rewrites every id with the canonical prefix., An already-``TEST_``-prefixed id must NOT be re-prefixed., The default code path is a no-op: no env var, no rewrite. (+21 more) ### Community 109 - "Community 109" -Cohesion: 0.12 -Nodes (17): is_run_dir(), True if ``name`` is an experimental-run directory. Note: ``RUN_DIR_PREFIX``, True if ``name`` is an experimental-run directory. Note: ``RUN_DIR_PREFIX``, _extract_overrides_and_sync(), Read ``/.exlab-wizard/creation.json`` if present. Returns ``, Run §8.1 rules in creation-time and audit modes. Backend Spec §11.8. The co, Recursive ``os.scandir`` walk; apply rules at every level. Per-director, Classify a directory's role in an equipment subtree. Equipment root is (+9 more) +Cohesion: 0.17 +Nodes (28): generate_samples(), Expand ``SAMPLES`` into an on-disk demo tree under the sandbox. Synchronous, _project_dirs(), End-to-end tests for the sample-data generator (design spec §6/§7/§9). These dr, A seeded equipment dir replaced by a symlink out of the sandbox is refused., Seeded ``EquipmentConfig.local_root``/``nas_root`` are BASE roots. Consumer, ``wipe=False`` seeds, and a re-seed without wipe does not delete the tree., Return the README ``core_fields.label`` for a project/run folder. (+20 more) ### Community 110 - "Community 110" -Cohesion: 0.11 -Nodes (23): Build a perfect remote manifest from the local run subtree. Each non-cache, _walk_local(), parse_lsjson(), Parser for ``rclone lsjson`` output into a run-relative remote manifest. Sole o, One file on the remote. ``mod_time`` is the RFC3339 string as emitted., Run-relative view of a remote subtree. Keyed by POSIX rel-path., True iff ``rel_path`` is present and its remote size equals local., True iff ``rel_path`` is present on the remote (existence probe). (+15 more) +Cohesion: 0.08 +Nodes (23): create_prod_app_factory(), uvicorn ``--factory`` entrypoint for the *production* wizard app. ``_test_app.p, Build the production wizard app (NiceGUI mounted at ``/``)., _build_default_app(), _build_default_components(), main(), ``exlab-wizard-tray`` console_scripts entry point. Backend Spec §4.3.2. Wires t, Return the production FastAPI app for the tray. Constructs the live :class: (+15 more) ### Community 111 - "Community 111" -Cohesion: 0.07 -Nodes (27): 1. Transport driver — `sync/transports/rclone.py` (single reusable rclone-ops surface), 2. Manifest + parser — new `sync/manifest.py`, 3. Sync client + verify/cleanup flow — `sync/nas_client.py`, `sync/verifier.py`, `sync/cleanup.py`, 4. Verify / cleanup flow, 5. Credentials / setup gate — `paths.py`, `constants/`, `api/`, `tray/`, 6. UI — `ui/pages/settings.py`, `ui/mount.py`, `ui/pages/main.py`, `ui/pages/wizard_equipment.py`, `ui/equipment_form.py`, 7. Orchestrator / staging hop, 8. Docs (+19 more) +Cohesion: 0.11 +Nodes (25): ``transport:`` block for an SMB share with password auth. The wizard invoke, RcloneSmbTransport, Return the inline rclone remote name used for ``equipment``. The remote nam, Look up the password, obscure it, build the rclone env. Returns ``(env, mas, _remote_name_for(), _resolve_env_for_equipment(), build_rclone_env(), pass_env_keys_for() (+17 more) ### Community 112 - "Community 112" -Cohesion: 0.09 -Nodes (26): Return True when ``transport`` sources its credential from the keyring. Bot, transport_requires_keyring_password(), _full_config_dict(), Build a Config from a §9-shaped dict, dump it, and compare. ``model_dump()`, Minimal valid rclone_sftp transport block., Full Config dict mirroring the §9 example. Used by round-trip tests., Full Config dict mirroring the §9 example. Used by round-trip tests., Build a Config from a §9-shaped dict, dump it, and compare. ``model_dump()` (+18 more) +Cohesion: 0.07 +Nodes (28): AutostartRequest, AutostartResult, _await_or_call(), _coerce_probe_dict(), EquipmentTestRequest, LIMSTestRequest, ProbeResult, Setup-state gate + ``/setup/*`` endpoints. Backend Spec §4.6, §4.9. Two respons (+20 more) ### Community 113 - "Community 113" -Cohesion: 0.13 -Nodes (26): Mask credential-bearing substrings inside ``value``. Replaces three classes, Formatter that renders the §16.4 structured-tag log line. Reads the active, redact_secret(), StructuredTagFormatter, Tests for ``exlab_wizard.logging.format``. Backend Spec §16.4 defines the canon, ``record.exc_info`` triggers the formatter to append a traceback (§16.4 keep, Build a minimal ``LogRecord`` at a known timestamp. The timestamp is set to, Spec §16.4: level field is exactly 5 chars wide. §16.5 commits four canonic (+18 more) +Cohesion: 0.07 +Nodes (28): 0.1 Architecture (read first), 0.2 What the recent edit changed (and didn't), 0.3 Healthy baseline (not stubs), 0. Context, A1 — "Quit ExLab-Wizard now" button has no handler, A2 — "Start at login" autostart checkbox is not bound, A3 — Application-section status indicators are hardcoded / missing (§7.13 parity), A4 — Operators allowlist has backend enforcement but **no editor UI** (+20 more) ### Community 114 - "Community 114" -Cohesion: 0.09 -Nodes (21): create_prod_app_factory(), uvicorn ``--factory`` entrypoint for the *production* wizard app. ``_test_app.p, Build the production wizard app (NiceGUI mounted at ``/``)., _build_default_app(), _build_default_components(), main(), ``exlab-wizard-tray`` console_scripts entry point. Backend Spec §4.3.2. Wires t, Return the production FastAPI app for the tray. Constructs the live :class: (+13 more) +Cohesion: 0.07 +Nodes (28): code:block1 (┌───────────────────────────────────────────────────────────), Context, Critical Files (Reference), ExLab-Wizard Implementation Plan, First Action (before phase 1), Goals, Per-Phase Definition of Done, Phase 10: NAS sync client (+20 more) ### Community 115 - "Community 115" -Cohesion: 0.14 -Nodes (25): cleanup_interlocks_satisfied(), has_recent_revocation(), Cleanup safety interlocks. Backend Spec §7.1.6. The cleanup reaper deletes loca, Return True if any tombstone was recorded within ``min_age_hours``. A tombs, Evaluate every §7.1.6 interlock; return True iff all pass. Logs a debug ent, _config(), _job(), Tests for ``exlab_wizard.sync.cleanup``. Backend Spec §7.1.6. Each interlock mu (+17 more) +Cohesion: 0.11 +Nodes (23): Build a perfect remote manifest from the local run subtree. Each non-cache, _walk_local(), parse_lsjson(), Parser for ``rclone lsjson`` output into a run-relative remote manifest. Sole o, One file on the remote. ``mod_time`` is the RFC3339 string as emitted., Run-relative view of a remote subtree. Keyed by POSIX rel-path., True iff ``rel_path`` is present and its remote size equals local., True iff ``rel_path`` is present on the remote (existence probe). (+15 more) ### Community 116 - "Community 116" -Cohesion: 0.07 -Nodes (26): 16.10 Anti-patterns, 16.1 Goals, 16.2.1 The `get_logger(name)` entry point, 16.2.2 `configure_logging(config)` at startup, 16.2.3 Context vars, 16.2.4 Equipment-scoped handlers, 16.2.5 Non-blocking emit via `QueueHandler` + `QueueListener`, 16.2 The `logging/` package (+18 more) +Cohesion: 0.09 +Nodes (26): browser(), _free_port(), page(), E2E test fixtures (Phase 16). Boots a real uvicorn process serving the e2e test, Yield a chromium browser (headless)., Yield a fresh Playwright page for each test., Return a free TCP port on 127.0.0.1., Return a chromium executable path or None. Search order: 1. ``EXLAB_E2 (+18 more) ### Community 117 - "Community 117" -Cohesion: 0.08 -Nodes (17): Unit tests for :mod:`exlab_wizard.ui.theme`. The theme module renders the ``:ro, A body / heading / mono reset block follows the ``:root {}``., In source layout, the resolver returns ``/assets/``., All shadows are navy-tinted (DESIGN.md §04)., The block opens with ``:root {`` per DESIGN.md §07., A body / heading / mono reset block follows the ``:root {}``., In source layout, the resolver returns ``/assets/``., The main-window refresh tokens are emitted into the :root block. (+9 more) +Cohesion: 0.1 +Nodes (26): An absent or ``None`` ``schema_version`` is a major-mismatch case., Empty string is treated like ``None`` (no parseable major)., A non-``MAJOR.MINOR`` string is treated as a major-mismatch case., Same major (different minor) is allowed., test_require_schema_major_passes_on_same_major(), test_require_schema_major_raises_on_empty_version(), test_require_schema_major_raises_on_garbage_version(), test_require_schema_major_raises_on_none_version() (+18 more) + +### Community 118 - "Community 118" +Cohesion: 0.07 +Nodes (27): 1. Transport driver — `sync/transports/rclone.py` (single reusable rclone-ops surface), 2. Manifest + parser — new `sync/manifest.py`, 3. Sync client + verify/cleanup flow — `sync/nas_client.py`, `sync/verifier.py`, `sync/cleanup.py`, 4. Verify / cleanup flow, 5. Credentials / setup gate — `paths.py`, `constants/`, `api/`, `tray/`, 6. UI — `ui/pages/settings.py`, `ui/mount.py`, `ui/pages/main.py`, `ui/pages/wizard_equipment.py`, `ui/equipment_form.py`, 7. Orchestrator / staging hop, 8. Docs (+19 more) ### Community 119 - "Community 119" -Cohesion: 0.08 -Nodes (26): _equipment_ids(), _lims_catalogue_projects(), Read the offline-catalogue projects (disconnected-workstation source). Read, Read the offline-catalogue projects (disconnected-workstation source). Read, Open a NiceGUI dialog showing the run's sync-queue job state. The operator-, Return the configured equipment IDs., Map each ``template_type`` template name to its parsed copier questions. Re, Build a ProjectCreateRequest from the wizard state and run it. (+18 more) +Cohesion: 0.07 +Nodes (26): Unit tests for ``Validator.audit`` and ``Validator.query_problems``. Backend Sp, A directory outside the equipment root resolves to "other" (defensive)., A finding with an unknown tier sorts after both hard and soft., When ``orchestrator.enabled`` is False, no staging root is wired in., ``orchestrator`` attribute absent on the config also works (default None)., ``_classify_level`` returns "other" for dirs outside the equipment root., ``_compute_run_path`` returns ``str(directory)`` for unrelated paths., ``_compute_run_path`` for the equipment root itself with ``other``. (+18 more) ### Community 120 - "Community 120" -Cohesion: 0.15 -Nodes (25): create_template(), list_templates(), Return the templates under ``templates_dir``, optionally filtered. A templa, Scaffold a new minimal Copier template under ``templates_dir``. Writes `` ``current_state == 'synced'``., A run whose ``sync_state.json`` carries ``cleared_at`` rolls up to ``cleared``., A re-modified file (signature cleared -> unverified) flips synced back to syncin (+16 more) +Cohesion: 0.08 +Nodes (26): The selected-node fields end up on MainPageState for the renderer., Phase 4 selection / search / density fields reach MainPageState., The selected-node fields end up on MainPageState for the renderer., The selected-node fields end up on MainPageState for the renderer., The selected-node fields end up on MainPageState for the renderer., Linux dispatches to xdg-open via subprocess.Popen., The selected-node fields end up on MainPageState for the renderer., Phase 4 selection / search / density fields reach MainPageState. (+18 more) + +### Community 132 - "Community 132" +Cohesion: 0.13 +Nodes (24): _kv(), _kv_sync(), Node-type-aware metadata pane for the rebuilt main window. GUI/Orchestrator Red, Key/value row whose value is a sync-status icon (tolerant). Mirrors :func:`, Key/value row whose value is a sync-status icon (tolerant). Mirrors :func:`, Key/value row whose value is a sync-status icon (tolerant). Mirrors :func:`, Render the SELECTED FILE / SELECTED FOLDER sub-card (Phase 4, §4.4). Append, Render the SELECTED FILE / SELECTED FOLDER sub-card (Phase 4, §4.4). Append (+16 more) ### Community 133 - "Community 133" -Cohesion: 0.11 -Nodes (21): ``validator:`` block. Content-scan tuning. Backend Spec §8.1.1, §11.8., ``validator:`` block. Content-scan tuning. Backend Spec §8.1.1, §11.8., ValidatorConfig, test_validator_config_defaults(), test_validator_content_scan_max_mib_at_least_one(), test_validator_extensions_must_start_with_dot(), test_validator_extensions_rejects_dotless_among_others(), _build_creation_json_dict() (+13 more) +Cohesion: 0.14 +Nodes (23): _build_front_matter(), _build_readme_fields(), _check_value_type(), _core_fields_dict(), _custom_fields_list(), _is_present(), README generator. Backend Spec §10 / §11.4. Renders ``README.md`` (YAML front m, Run every validation gate. Raises on the first failure. Order matches the s (+15 more) ### Community 134 - "Community 134" -Cohesion: 0.1 -Nodes (18): BandwidthConfig, ``bandwidth:`` sub-block on a transport., ``bandwidth:`` sub-block on a transport., _build_transport_driver(), Return a ``(driver, push_callable, check_callable)`` triple. Both supported, Minimal keyring stub returning a fixed password by username., An unknown transport type raises ValueError from the helper., _StubKeyring (+10 more) +Cohesion: 0.12 +Nodes (23): _is_future(), Return True if ``expires_at`` (UTC ISO-8601) is strictly after ``now``. The, Tests for ``exlab_wizard.utils.time``., test_dt_to_iso_naive_assumed_utc(), test_dt_to_iso_non_utc_zone_converts(), test_dt_to_iso_utc_aware(), test_parse_utc_iso_naive_input_tagged_utc(), test_parse_utc_iso_offset_form() (+15 more) ### Community 135 - "Community 135" -Cohesion: 0.13 -Nodes (23): _build_minimal_controller(), _client(), Full-flow integration test for the FastAPI surface. Drives one project-creation, End-to-end: POST /sessions -> session reaches DONE -> creation.json on disk., End-to-end: POST /sessions -> session reaches DONE -> creation.json on disk., Each non-soft INCOMPLETE_* state surfaces the right next_action., Each non-soft INCOMPLETE_* state surfaces the right next_action., POST /sessions returns 503 + setup_incomplete in non-soft INCOMPLETE_* states. (+15 more) +Cohesion: 0.17 +Nodes (19): _make_request(), Unit tests for the ``/sessions`` router., Posting without ``kind`` discriminator must 422., Posting without ``kind`` discriminator must 422., Minimal in-memory controller for routing tests., Minimal in-memory controller for routing tests., _ready_config(), _StubController (+11 more) ### Community 136 - "Community 136" -Cohesion: 0.09 -Nodes (22): clear_run_context(), get_run_context(), Per-task structured-tag context vars for the logging system. Backend Spec §16.2., Return a snapshot of the active context as a plain ``dict``. Used by the fo, Reset every context var to ``None``. Provided for test fixtures that want t, Tests for ``exlab_wizard.logging.context``. Backend Spec §16.2.3 commits the pe, Two ``asyncio.gather``-ed tasks must not see each other's context. This is, Wipe context vars before each test to prevent cross-test leakage. (+14 more) +Cohesion: 0.12 +Nodes (23): build_health_router(), _component_rollup(), HealthResponse, _lims_health(), _nas_sync_health(), _plugin_host_health(), ``GET /api/v1/health`` rollup. Backend Spec §4.6.3. Returns a component-health, Aggregate per-component statuses into the §4.6.3 top-level value. Top-level (+15 more) ### Community 137 - "Community 137" -Cohesion: 0.08 -Nodes (13): E2E flow 06: Problems view + override / revoke round trip. Frontend Spec §6.6 (, test_flow_06_problems(), E2E flow 10: Schema-mismatch / migration prompt. Frontend Spec §6.9 (schema-mis, test_flow_10_schema_mismatch(), E2E flow 11: Crash-recovery prompt on relaunch. Frontend Spec §6.10 (crash reco, test_flow_11_crash_recovery(), ProblemsPage, Page object for the Problems tab. Frontend Spec §6.6. (+5 more) - -### Community 138 - "Community 138" -Cohesion: 0.17 -Nodes (22): BadgeProps, FindingLocation, Travelling problem-badge pure function. GUI/Orchestrator Redesign §4.5. Given t, Render properties for a single tree node's badge., A validator finding pinned to a tree-node path. ``path`` is the slash-joine, Compute ``{node_id: BadgeProps}`` for every node that gets a badge. ``fold_, Walk root → leaf along ``path``; return the first collapsed ancestor. If ev, _shallowest_collapsed_ancestor() (+14 more) +Cohesion: 0.15 +Nodes (23): test_full_create_lifecycle(), OfflineCatalogue, _project_to_dict(), Offline LIMS project catalogue read/write. Backend Spec §7.2.9. A catalogue is, Atomically write ``catalogue`` to ``path``. Backend Spec §7.2.9.2. Protocol, Re-emit a LIMSProject as a serializable dict., Decoded offline catalogue. Backend Spec §7.2.9.1. ``schema_version`` is pin, Read and validate the catalogue file. Returns ``None`` (and logs a WARN) wh (+15 more) ### Community 139 - "Community 139" -Cohesion: 0.12 -Nodes (23): _fill(), _goto(), _pick_radio(), prod_server(), _project_next(), E2E flow 00b: the full create-lifecycle against the PRODUCTION app. Boots the g, Click a stepper-navigation button scoped to its step container. The Next /, Advance the project wizard from ``step_id`` via its Next button. (+15 more) +Cohesion: 0.14 +Nodes (23): Return the CSS background + decoration fragment for one file-list row. Pure, Return the CSS background + decoration fragment for one file-list row. Pure, Return the CSS background + decoration fragment for one file-list row. Pure, row_background(), _entry(), Unit tests for ``ui/components/file_list``. Redesign §4.3, §5., A bare entry defaults ``keep_local`` and ``tombstone`` to False., A bare entry defaults ``keep_local`` and ``tombstone`` to False. (+15 more) ### Community 140 - "Community 140" -Cohesion: 0.09 -Nodes (23): code:block1 (tests/docker/), code:bash (# 1. credentials / ports — edit NAS_PASSWORD to taste), code:yaml (nas:), code:yaml (equipment:), code:yaml (sync:), code:bash (# from tests/docker/), code:python (import shutil, subprocess), code:bash (# online machine) (+15 more) +Cohesion: 0.22 +Nodes (23): _build_config(), _build_controller(), _project_request(), End-to-end integration tests for :class:`CreationController`. Each test drives, Project creation walks every state and emits a current-version creation.json., Project creation walks every state and emits a current-version creation.json., Construct a minimal Config with one equipment configured., Construct a minimal Config with one equipment configured. (+15 more) ### Community 141 - "Community 141" Cohesion: 0.11 -Nodes (13): EquipmentScopedFileHandler, open(), _OpenLogFile, Equipment-scoped file handler. Backend Spec §16.2.4. The :class:`EquipmentScope, Return the cached :class:`_OpenLogFile` for ``equipment_id``. Opens the, Return ``//.exlab-wizard/wizard..log``., Append-mode log file with platform-appropriate share / append flags. The wr, Append ``line`` (already newline-terminated) to the file. (+5 more) +Nodes (24): _drain_to_done(), A run whose parent project folder has no readable creation.json still produc, A run whose parent project folder has no readable creation.json still produc, A run whose parent project folder has no readable creation.json still produc, Wait for the session task to finish and return the final state dict., Wait for the session task to finish and return the final state dict., Redesign §3.4: two creations on the same instrument within the same minute r, Redesign §3.4: two creations on the same instrument within the same minute r (+16 more) + +### Community 142 - "Community 142" +Cohesion: 0.08 +Nodes (13): E2E flow 06: Problems view + override / revoke round trip. Frontend Spec §6.6 (, test_flow_06_problems(), E2E flow 10: Schema-mismatch / migration prompt. Frontend Spec §6.9 (schema-mis, test_flow_10_schema_mismatch(), E2E flow 11: Crash-recovery prompt on relaunch. Frontend Spec §6.10 (crash reco, test_flow_11_crash_recovery(), ProblemsPage, Page object for the Problems tab. Frontend Spec §6.6. (+5 more) ### Community 143 - "Community 143" -Cohesion: 0.11 -Nodes (21): Sync-status icon component (Frontend Spec §3.2, §10.5.1). Distinct visual state, Compute icon + tooltip + retry-counter for a sync status. The ``retry_n``/`, Compute icon + tooltip + retry-counter for a sync status. The ``retry_n``/`, Build a NiceGUI row containing the icon and optional retry counter., Build a NiceGUI row containing the icon and optional retry counter., Build a NiceGUI row containing the icon and optional retry counter. ``stric, Build a NiceGUI row containing the icon and optional retry counter. ``stric, sync_status_icon() (+13 more) +Cohesion: 0.17 +Nodes (22): BadgeProps, FindingLocation, Travelling problem-badge pure function. GUI/Orchestrator Redesign §4.5. Given t, Render properties for a single tree node's badge., A validator finding pinned to a tree-node path. ``path`` is the slash-joine, Compute ``{node_id: BadgeProps}`` for every node that gets a badge. ``fold_, Walk root → leaf along ``path``; return the first collapsed ancestor. If ev, _shallowest_collapsed_ancestor() (+14 more) ### Community 144 - "Community 144" Cohesion: 0.09 -Nodes (22): 1. Purpose and Scope, 2. Mandatory Core Fields (Creation Gate), 2. User Interaction, 3.1 Create a New Project, 3.2 Create a New Experimental Run, 3.3 Create a New Test Run, 3.4 Browse Existing Equipment, Projects, and Runs, 3.5 Author a README at Creation Time (+14 more) +Nodes (22): clear_run_context(), get_run_context(), Per-task structured-tag context vars for the logging system. Backend Spec §16.2., Return a snapshot of the active context as a plain ``dict``. Used by the fo, Reset every context var to ``None``. Provided for test fixtures that want t, Tests for ``exlab_wizard.logging.context``. Backend Spec §16.2.3 commits the pe, Two ``asyncio.gather``-ed tasks must not see each other's context. This is, Wipe context vars before each test to prevent cross-test leakage. (+14 more) ### Community 145 - "Community 145" Cohesion: 0.09 -Nodes (22): Force-sync without a wired NAS sync surfaces a negative toast (no raise)., Force-sync without a wired NAS sync surfaces a negative toast (no raise)., ``view_log`` dispatches to the dialog opener helper., ``view_log`` dispatches to the dialog opener helper., Force-sync without a wired NAS sync surfaces a negative toast (no raise)., An unknown action verb is reported but doesn't raise., ``view_log`` dispatches to the dialog opener helper., An unknown action verb is reported but doesn't raise. (+14 more) +Nodes (23): code:block1 (tests/docker/), code:bash (# 1. credentials / ports — edit NAS_PASSWORD to taste), code:yaml (nas:), code:yaml (equipment:), code:yaml (sync:), code:bash (# from tests/docker/), code:python (import shutil, subprocess), code:bash (# online machine) (+15 more) ### Community 146 - "Community 146" -Cohesion: 0.1 -Nodes (21): build_test_app(), _classify_test_node(), create_app_factory(), _feed_rows(), E2E test app wiring (Phase 16 follow-up). Builds a FastAPI app via :func:`exlab, Parse a request URL's query string into a multi-value mapping., Same shape classifier the production mount uses, for seeded ids. Returns ``, Per-node-kind hardcoded payloads the test app threads into the production re (+13 more) +Cohesion: 0.18 +Nodes (22): MetadataPaneState, Mutable state for the metadata pane., Mutable state for the metadata pane., Mutable state for the metadata pane., _by_testid(), _file_payload(), Unit tests for the metadata pane's selected-file/folder sub-card. GUI/Orchestra, A degraded folder scan (item_count=None / rollup=None) still renders. (+14 more) ### Community 147 - "Community 147" -Cohesion: 0.12 -Nodes (20): Shared asyncio subprocess helper for transport drivers. Backend Spec §7.1.3. Th, Launch ``cmd`` and return ``(returncode, stdout, stderr)`` as text. The chi, Launch ``cmd`` and return ``(returncode, stdout, stderr)`` as text. ``env``, run_subprocess(), Unit tests for ``exlab_wizard.sync.transports._run.run_subprocess``. rclone.con, The child inherits the parent's environment unchanged., An env-dict entry must surface in the child process' environment., Caller-supplied env is *merged* over ``os.environ`` -- it does not replace it. (+12 more) +Cohesion: 0.1 +Nodes (23): FileListState, Mutable state for the file list, consumed by the renderer., Mutable state for the file list, consumed by the renderer., _click(), Yield ``element`` and every descendant across all its slots. NiceGUI render, The row whose path matches ``selected_path`` carries the selected fill., The row whose path matches ``selected_path`` carries the selected fill., A tombstone row carries the data-tombstone attr + dim/italic decoration. (+15 more) ### Community 148 - "Community 148" -Cohesion: 0.16 -Nodes (18): ``transport:`` block for an SMB share with password auth. The wizard invoke, RcloneSmbTransport, Look up the password, obscure it, build the rclone env. Returns ``(env, mas, _resolve_env_for_equipment(), build_rclone_env(), _BrokenKeyring, _equipment(), _Keyring (+10 more) +Cohesion: 0.15 +Nodes (22): check_illegal_filesystem_character(), check_unresolved_placeholder(), §8.1.2: detect Windows-illegal characters in any segment / file name. Illeg, §8.1.1: detect angle-bracket and Jinja placeholder tokens. Hard-tier. Uses, Tests for ``exlab_wizard.validator.rules``. Backend Spec §8.1. Covers each §8.1, test_angle_bracket_token_in_segment_fires(), test_empty_file_contents_dict_is_path_only_scan(), test_findings_have_hard_tier() (+14 more) ### Community 149 - "Community 149" -Cohesion: 0.11 -Nodes (21): ChipDefinition, ChipState, filter_chips(), initial_state(), is_active(), list_active(), Filter-chip strip component (Frontend Spec §3.5.4, §11.1). A row of toggleable, One chip in a chip group. (+13 more) - -### Community 150 - "Community 150" -Cohesion: 0.09 -Nodes (5): E2E flow 05: Browse view -- open existing project + sessions. Frontend Spec §6., test_flow_05_browse_view(), MainPage, Page object for the main window. Frontend Spec §6. Selectors target ``data-test, Page object for the main window. Frontend Spec §6.1, §6.2. +Cohesion: 0.13 +Nodes (13): _make_ctx(), _MinimalPlugin, Tests for ``exlab_wizard.plugins.base`` -- the plugin contract base class. Pin, A subclass with both abstract methods implemented is instantiable., Concrete subclass with only the two abstract methods implemented., test_default_validate_variables_returns_empty_when_no_required(), test_describe_changes_default_returns_single_modify_change(), test_minimal_plugin_can_be_instantiated() (+5 more) ### Community 151 - "Community 151" -Cohesion: 0.13 -Nodes (21): _goto(), E2E flow 25: production /main is wired to the redesigned renderer. This suite e, Clicking a breadcrumb segment routes back through /main?selected=. The brea, Clicking the right-pane toggle flips ?right_pane=collapsed in the URL., Owned-equipment Edit menu navigates to /settings with the equipment id. Rou, Selecting a TEST_RELAY_* node disables the New Project/Run/Test-Run buttons., The footer Clear-verified button is wired to a callback. Asserts the button, Navigate to ``url`` with one retry on transient NiceGUI failures. (+13 more) +Cohesion: 0.1 +Nodes (23): _build_metadata_payload(), _metadata_for_owned_equipment(), _metadata_for_relay_equipment(), Build the metadata-pane payload for the selected node, by kind. Returns ``{, Build the metadata-pane payload for the selected node, by kind. Returns ``{, Build the metadata-pane payload for the selected node, by kind. Returns ``{, Return the relay-equipment payload (label, source_host)., Project equipment-config fields into the owned-equipment payload. (+15 more) ### Community 152 - "Community 152" -Cohesion: 0.09 -Nodes (8): E2E flow 03: Experimental-run wizard end-to-end. Frontend Spec §6.4 (run wizard, test_flow_03_experimental_run(), E2E flow 04: Test-run wizard end-to-end. Frontend Spec §6.4 (run wizard, test m, test_flow_04_test_run(), Page object for the New Run Wizard. Frontend Spec §6.4., Locators for the run wizard (experimental + test mode)., Locator for a specific step container., WizardRunPage +Cohesion: 0.11 +Nodes (23): override_entry_to_dict(), Serialize an ``OverrideEntry`` to a wire-form dict. Uses ``msgspec.structs., Serialize a ``TombstoneEntry`` to a wire-form dict. Mirrors ``override_entry, tombstone_entry_to_dict(), Spec §11.3: ``revoked`` is required on every entry. ``omit_defaults`` would, test_override_entry_to_dict_emits_revoked_field_explicitly(), test_tombstone_entry_to_dict_emits_revoked_field_explicitly(), Return the subset of override entries that are currently active. Implements (+15 more) ### Community 153 - "Community 153" -Cohesion: 0.09 -Nodes (22): Soft block: surfaces a banner, not a missing-field list., Construct a fully READY Config (paths + equipment + LIMS endpoint+email). R, Construct a fully READY Config (paths + equipment + LIMS endpoint+email). R, endpoint+email present but keyring lacks the password -> INCOMPLETE_NO_LIMS., endpoint+email present but keyring lacks the password -> INCOMPLETE_NO_LIMS., Nas-mode equipment without its keyring entry gates with the new state., A configured LIMS does not mask the missing NAS credential., Adding the keyring entry advances the state to the next gate. (+14 more) +Cohesion: 0.1 +Nodes (22): ChipDefinition, ChipState, filter_chips(), initial_state(), is_active(), list_active(), Filter-chip strip component (Frontend Spec §3.5.4, §11.1). A row of toggleable, One chip in a chip group. (+14 more) ### Community 154 - "Community 154" -Cohesion: 0.09 -Nodes (22): _open_input_required_dialog(), Resume a suspended session by re-opening its §9.1 input dialog (T5). Reads, Resume a suspended session by re-opening its §9.1 input dialog (T5). Reads, Open the §9.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm, Open the §9.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm, Resume a suspended session by re-opening its §9.1 input dialog (T5). Reads, Open the §9.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm, Resume a suspended session by re-opening its §9.1 input dialog (T5). Reads (+14 more) +Cohesion: 0.11 +Nodes (13): EquipmentScopedFileHandler, open(), _OpenLogFile, Equipment-scoped file handler. Backend Spec §16.2.4. The :class:`EquipmentScope, Return the cached :class:`_OpenLogFile` for ``equipment_id``. Opens the, Return ``//.exlab-wizard/wizard..log``., Append-mode log file with platform-appropriate share / append flags. The wr, Append ``line`` (already newline-terminated) to the file. (+5 more) ### Community 155 - "Community 155" -Cohesion: 0.12 -Nodes (22): get_binding(), KeyCombo, Return the :class:`ShortcutBinding` for the given shortcut id. Raises:, A modifier-and-key combination., ``Cmd+Enter`` / ``Ctrl+Enter`` advances the wizard., Esc cancels the wizard., ``get_binding`` raises ``KeyError`` for an unknown shortcut id., ``Cmd+N`` on macOS, ``Ctrl+N`` elsewhere. (+14 more) +Cohesion: 0.09 +Nodes (22): 1. Summary, 2. Goals & non-goals, 3.1 Add-Equipment wizard — `ui/pages/wizard_equipment.py`, 3.2 Settings section — `ui/pages/settings.py`, 3.3 Staging route — `ui/mount.py`, 3.4 Main-window footer — `ui/pages/main.py`, 3.5 What stays dormant (explicitly untouched), 3.6 Reversibility contract (+14 more) ### Community 156 - "Community 156" -Cohesion: 0.19 -Nodes (21): MetadataPaneState, Mutable state for the metadata pane., Mutable state for the metadata pane., _by_testid(), _file_payload(), Unit tests for the metadata pane's selected-file/folder sub-card. GUI/Orchestra, A degraded folder scan (item_count=None / rollup=None) still renders., A degraded folder scan (item_count=None / rollup=None) still renders. (+13 more) +Cohesion: 0.09 +Nodes (22): 1. Purpose and Scope, 2. Mandatory Core Fields (Creation Gate), 2. User Interaction, 3.1 Create a New Project, 3.2 Create a New Experimental Run, 3.3 Create a New Test Run, 3.4 Browse Existing Equipment, Projects, and Runs, 3.5 Author a README at Creation Time (+14 more) ### Community 157 - "Community 157" -Cohesion: 0.12 -Nodes (21): class_chip_definitions(), empty_state_text(), filter_findings(), Finding, near_limit(), ProblemsPageState, Problems tab (Frontend Spec §11). Filter chips (Severity, Class, State, Scope),, Filter ``findings`` against the active chip / search state. (+13 more) +Cohesion: 0.09 +Nodes (23): The fetch is a no-op when RefreshCoordinator just walked the tree., The fetch is a no-op when RefreshCoordinator just walked the tree., The fetch is a no-op when RefreshCoordinator just walked the tree., The fetch is a no-op when RefreshCoordinator just walked the tree., A corrupt creation.json yields {path, name}, never crashes., A corrupt creation.json yields {path, name}, never crashes., A corrupt creation.json yields {path, name}, never crashes., A corrupt creation.json yields {path, name}, never crashes. (+15 more) ### Community 158 - "Community 158" -Cohesion: 0.17 -Nodes (20): OfflineCatalogue, _project_to_dict(), Offline LIMS project catalogue read/write. Backend Spec §7.2.9. A catalogue is, Atomically write ``catalogue`` to ``path``. Backend Spec §7.2.9.2. Protocol, Re-emit a LIMSProject as a serializable dict., Decoded offline catalogue. Backend Spec §7.2.9.1. ``schema_version`` is pin, Read and validate the catalogue file. Returns ``None`` (and logs a WARN) wh, read_catalogue() (+12 more) +Cohesion: 0.09 +Nodes (23): A run with a sync-queue job renders its state without raising., A scan failure returns ``None`` so the feed keeps polling., A run with a sync-queue job renders its state without raising., The relay payload pulls id+label from build_received_equipment_nodes., The relay payload pulls id+label from build_received_equipment_nodes., A run with a sync-queue job renders its state without raising., An unknown relay id still produces a payload (best-effort label)., Lightweight ``app`` stand-in carrying ``storage.tab``. (+15 more) ### Community 159 - "Community 159" -Cohesion: 0.15 -Nodes (21): check_malformed_yaml_front_matter(), check_unresolved_placeholder(), §8.1: detect malformed YAML front matter at the head of a Markdown file., §8.1.1: detect angle-bracket and Jinja placeholder tokens. Hard-tier. Uses, Tests for ``exlab_wizard.validator.rules``. Backend Spec §8.1. Covers each §8.1, test_angle_bracket_token_in_segment_fires(), test_empty_content_passes(), test_empty_file_contents_dict_is_path_only_scan() (+13 more) +Cohesion: 0.09 +Nodes (8): E2E flow 03: Experimental-run wizard end-to-end. Frontend Spec §6.4 (run wizard, test_flow_03_experimental_run(), E2E flow 04: Test-run wizard end-to-end. Frontend Spec §6.4 (run wizard, test m, test_flow_04_test_run(), Page object for the New Run Wizard. Frontend Spec §6.4., Locators for the run wizard (experimental + test mode)., Locator for a specific step container., WizardRunPage ### Community 160 - "Community 160" Cohesion: 0.09 -Nodes (21): ExLab-Wizard — Remaining Work: Tracked Tasks, How to use this tracker, Phase 1 — Release-blocking correctness, Phase 2 — Session-control epic (build in order; they compound), Phase 3 — Visibility & usability, Phase 4 — Cleanups (anytime), Progress, Shared foundations (build once, reused across tasks) (+13 more) +Nodes (22): Soft block: surfaces a banner, not a missing-field list., Construct a fully READY Config (paths + equipment + LIMS endpoint+email). R, Construct a fully READY Config (paths + equipment + LIMS endpoint+email). R, endpoint+email present but keyring lacks the password -> INCOMPLETE_NO_LIMS., endpoint+email present but keyring lacks the password -> INCOMPLETE_NO_LIMS., Nas-mode equipment without its keyring entry gates with the new state., A configured LIMS does not mask the missing NAS credential., Adding the keyring entry advances the state to the next gate. (+14 more) ### Community 161 - "Community 161" Cohesion: 0.09 -Nodes (21): 1. Summary, 2. Goals & non-goals, 3.1 Setup-state gate — `paths.py`, 3.2 Suggestion helper — `paths.py`, 3.3 Settings UI — `ui/pages/settings.py`, 3.4 Create-on-save — `ui/mount.py` `_persist_config`, 3.5 Verified, not modified, 3.6 Test mode — unchanged (+13 more) +Nodes (22): _bulk_clear_verified(), _file_context_action(), Bulk-clear every staged run whose sync job is verified. Wired from the file, Bulk-clear every staged run whose sync job is verified. Wired from the file, Handle ``Open in OS`` / ``Copy path`` / ``Keep local`` file actions., Bulk-clear every staged run whose sync job is verified. Wired from the file, Handle ``Open in OS`` / ``Copy path`` / ``Keep local`` file actions., Handle ``Open in OS`` / ``Copy path`` / ``Keep local`` file actions. (+14 more) ### Community 162 - "Community 162" -Cohesion: 0.1 -Nodes (21): An unknown action verb is logged + toasted without raising., An unknown action verb is logged + toasted without raising., An unknown action verb is logged + toasted without raising., Force-sync routes to ``deps.nas_sync.enqueue`` with the run path., Force-sync routes to ``deps.nas_sync.enqueue`` with the run path., Force-sync routes to ``deps.nas_sync.enqueue`` with the run path., Force-sync routes to ``deps.nas_sync.enqueue`` with the run path., An exception from the clear sweep is caught + toasted. (+13 more) +Cohesion: 0.09 +Nodes (22): _lims_catalogue_projects(), _lims_projects(), Read the offline-catalogue projects (disconnected-workstation source). Read, Return the LIMS projects backing the project wizard's picker. Tries the liv, Return the LIMS projects backing the project wizard's picker. Tries the liv, Read the offline-catalogue projects (disconnected-workstation source). Read, Return the LIMS projects backing the project wizard's picker. Tries the liv, Read the offline-catalogue projects (disconnected-workstation source). Read (+14 more) ### Community 163 - "Community 163" -Cohesion: 0.1 -Nodes (21): A successful scan records the refresh on the coordinator., A successful scan records the refresh on the coordinator., A successful scan records the refresh on the coordinator., The bulk action clears every ``synced`` row and toasts the count., The 0-file path reports ``already cleared`` rather than ``cleared N``., The 0-file path reports ``already cleared`` rather than ``cleared N``., A successful scan records the refresh on the coordinator., A successful scan records the refresh on the coordinator. (+13 more) +Cohesion: 0.09 +Nodes (22): _build_selected_file(), _build_selected_folder(), _metadata_for_run(), Count immediate child directories of ``parent`` whose names start with ``pre, Decode the run's creation.json into the metadata-pane payload. Returns ``{}, Decode the run's creation.json into the metadata-pane payload. Returns ``{}, Decode the run's creation.json into the metadata-pane payload. Returns ``{}, Resolve a centre-list selection (file or folder) to a render payload. Phase (+14 more) ### Community 164 - "Community 164" -Cohesion: 0.1 -Nodes (21): An equipment node payload pulls fields from config.equipment[id]., An equipment node payload pulls fields from config.equipment[id]., Asking for a node that isn't in config.equipment returns ``{}``., Asking for a node that isn't in config.equipment returns ``{}``., An equipment node payload pulls fields from config.equipment[id]., The project payload counts Run_* and TestRun_* directories., An equipment node payload pulls fields from config.equipment[id]., Asking for a node that isn't in config.equipment returns ``{}``. (+13 more) +Cohesion: 0.09 +Nodes (22): _open_in_os(), _open_operation_details(), Launch the host OS's default opener for ``path``. Returns False on platform, Launch the host OS's default opener for ``path``. Returns False on platform, Launch the host OS's default opener for ``path``. Returns False on platform, Show a lightweight details/"log" dialog for one in-flight operation. The §9, Show a lightweight details/"log" dialog for one in-flight operation. The §9, Launch the host OS's default opener for ``path``. Returns False on platform (+14 more) ### Community 165 - "Community 165" -Cohesion: 0.1 -Nodes (21): A scan failure returns ``None`` so the feed keeps polling., A scan failure returns ``None`` so the feed keeps polling., A run with no sync-queue job still renders a dialog without raising., A run with no sync-queue job still renders a dialog without raising., A scan failure returns ``None`` so the feed keeps polling., A run with no sync-queue job still renders a dialog without raising., A run with no sync-queue job still renders a dialog without raising., A clipboard write failure is caught and reported as a negative toast. (+13 more) +Cohesion: 0.12 +Nodes (22): get_binding(), KeyCombo, Return the :class:`ShortcutBinding` for the given shortcut id. Raises:, A modifier-and-key combination., ``Cmd+Enter`` / ``Ctrl+Enter`` advances the wizard., Esc cancels the wizard., ``get_binding`` raises ``KeyError`` for an unknown shortcut id., ``Cmd+N`` on macOS, ``Ctrl+N`` elsewhere. (+14 more) ### Community 166 - "Community 166" -Cohesion: 0.09 -Nodes (21): One operator-defined extra README field. Backend Spec §9, §10., One operator-defined extra README field. Backend Spec §9, §10., ``sync:`` block. NAS sync engine kill-switch + retry / quiescence policy., ``sync:`` block. NAS sync engine kill-switch + retry / quiescence policy., READMEDefaultField, SyncConfig, test_readme_choice_field_accepts_non_empty_options(), test_readme_choice_field_rejects_empty_options_list() (+13 more) +Cohesion: 0.12 +Nodes (21): class_chip_definitions(), empty_state_text(), filter_findings(), Finding, near_limit(), ProblemsPageState, Problems tab (Frontend Spec §11). Filter chips (Severity, Class, State, Scope),, Filter ``findings`` against the active chip / search state. (+13 more) ### Community 167 - "Community 167" -Cohesion: 0.1 -Nodes (21): compose_run_path(), Compose the absolute on-disk path for a new run. Paths follow Backend Spec, The leaf is ISO 8601 with colons replaced by hyphens. §3.1. Redesign §3.4:, The leaf is ISO 8601 with colons replaced by hyphens. §3.1. Redesign §3.4:, Redesign §3.4: experimental runs live under /Runs/Run_*., Redesign §3.4: experimental runs live under /Runs/Run_*., Redesign §3.4: two runs in the same minute resolve to the same path (Copier, Redesign §3.4: two runs in the same minute resolve to the same path (Copier (+13 more) +Cohesion: 0.12 +Nodes (20): Shared asyncio subprocess helper for transport drivers. Backend Spec §7.1.3. Th, Launch ``cmd`` and return ``(returncode, stdout, stderr)`` as text. The chi, Launch ``cmd`` and return ``(returncode, stdout, stderr)`` as text. ``env``, run_subprocess(), Unit tests for ``exlab_wizard.sync.transports._run.run_subprocess``. rclone.con, The child inherits the parent's environment unchanged., An env-dict entry must surface in the child process' environment., Caller-supplied env is *merged* over ``os.environ`` -- it does not replace it. (+12 more) ### Community 168 - "Community 168" -Cohesion: 0.1 -Nodes (21): _bulk_clear_verified(), _file_context_action(), Bulk-clear every staged run whose sync job is verified. Wired from the file, Bulk-clear every staged run whose sync job is verified. Wired from the file, Handle ``Open in OS`` / ``Copy path`` / ``Keep local`` file actions., Bulk-clear every staged run whose sync job is verified. Wired from the file, Handle ``Open in OS`` / ``Copy path`` / ``Keep local`` file actions., Handle ``Open in OS`` / ``Copy path`` / ``Keep local`` file actions. (+13 more) +Cohesion: 0.09 +Nodes (21): ExLab-Wizard — Remaining Work: Tracked Tasks, How to use this tracker, Phase 1 — Release-blocking correctness, Phase 2 — Session-control epic (build in order; they compound), Phase 3 — Visibility & usability, Phase 4 — Cleanups (anytime), Progress, Shared foundations (build once, reused across tasks) (+13 more) ### Community 169 - "Community 169" -Cohesion: 0.19 -Nodes (20): diff_file_lists(), Return the CSS background + decoration fragment for one file-list row. Pure, Return the CSS background + decoration fragment for one file-list row. Pure, Return additions / removals / modifications between two snapshots. Pure fun, Return additions / removals / modifications between two snapshots. Pure fun, row_background(), _entry(), Unit tests for ``ui/components/file_list``. Redesign §4.3, §5. (+12 more) +Cohesion: 0.09 +Nodes (21): 1. Summary, 2. Goals & non-goals, 3.1 Setup-state gate — `paths.py`, 3.2 Suggestion helper — `paths.py`, 3.3 Settings UI — `ui/pages/settings.py`, 3.4 Create-on-save — `ui/mount.py` `_persist_config`, 3.5 Verified, not modified, 3.6 Test mode — unchanged (+13 more) ### Community 170 - "Community 170" -Cohesion: 0.17 -Nodes (20): _kv(), _kv_sync(), Node-type-aware metadata pane for the rebuilt main window. GUI/Orchestrator Red, Key/value row whose value is a sync-status icon (tolerant). Mirrors :func:`, Key/value row whose value is a sync-status icon (tolerant). Mirrors :func:`, Render the SELECTED FILE / SELECTED FOLDER sub-card (Phase 4, §4.4). Append, Render the SELECTED FILE / SELECTED FOLDER sub-card (Phase 4, §4.4). Append, Render the right-pane Metadata content for ``state.selected_node``. Dispatc (+12 more) +Cohesion: 0.09 +Nodes (22): On win32 the helper calls ``os.startfile`` and reports success., No probe wired -> a failure result rather than a crash., On win32 the helper calls ``os.startfile`` and reports success., On win32 the helper calls ``os.startfile`` and reports success., On win32 the helper calls ``os.startfile`` and reports success., On win32 the helper calls ``os.startfile`` and reports success., The §9.4 dialog's Discard button cancels with discard_files=True., On win32 the helper calls ``os.startfile`` and reports success. (+14 more) ### Community 171 - "Community 171" -Cohesion: 0.13 -Nodes (8): KeyringUnavailableError, Raised when no OS keyring backend is reachable and fallback is exhausted. Backen, _decode_envelope(), OS keyring storage with encrypted-at-rest fallback. Backend Spec §7.4. Two back, Look up the secret for ``(KEYRING_SERVICE, username)``. Returns ``None`, Persist ``password`` under ``(KEYRING_SERVICE, username)``. On a keyrin, Remove the secret stored under ``(KEYRING_SERVICE, username)``. Missing, Best-effort probe of the OS keyring backend. Implemented as a round-tri +Cohesion: 0.09 +Nodes (22): A suspended session re-opens its escalation dialog with parked fields., A suspended session re-opens its escalation dialog with parked fields., A suspended session re-opens its escalation dialog with parked fields., A suspended session re-opens its escalation dialog with parked fields., The Keep-files button cancels with discard_files=False., The Keep-files button cancels with discard_files=False., The Keep-files button cancels with discard_files=False., With a job row, the dialog renders each populated field line. (+14 more) ### Community 172 - "Community 172" +Cohesion: 0.09 +Nodes (22): A cancel failure is caught and toasted, not raised., A cancel failure is caught and toasted, not raised., A cancel failure is caught and toasted, not raised., A cancel failure is caught and toasted, not raised., ``_render_run_wizard`` wires templates/equipment into the run-wizard page., ``_render_run_wizard`` wires templates/equipment into the run-wizard page., A cancel failure is caught and toasted, not raised., A cancel failure is caught and toasted, not raised. (+14 more) + +### Community 173 - "Community 173" Cohesion: 0.1 -Nodes (20): When nas_sync.enqueue raises, the background task swallows + toasts., When nas_sync.enqueue raises, the background task swallows + toasts., When the clear helper raises, the background task swallows + toasts., When the clear helper raises, the background task swallows + toasts., When nas_sync.enqueue raises, the background task swallows + toasts., When the clear helper raises, the background task swallows + toasts., When nas_sync.enqueue raises, the background task swallows + toasts., When nas_sync.enqueue raises, the background task swallows + toasts. (+12 more) +Nodes (22): A scan failure returns ``None`` so the feed keeps polling., A scan failure returns ``None`` so the feed keeps polling., A run with no sync-queue job still renders a dialog without raising., A run with no sync-queue job still renders a dialog without raising., A run with no sync-queue job still renders a dialog without raising., A scan failure returns ``None`` so the feed keeps polling., A run with no sync-queue job still renders a dialog without raising., A run with no sync-queue job still renders a dialog without raising. (+14 more) ### Community 174 - "Community 174" -Cohesion: 0.13 -Nodes (16): Parallelism knobs forwarded to rclone (``--transfers`` / ``--checkers``). T, RclonePerf, The ``(remote, base_root, perf)`` an equipment's ops resolve to. Computed o, Lightweight handle returned by :meth:`NASSyncClient.enqueue`. ``job_id`` is, Lightweight handle returned by :meth:`NASSyncClient.enqueue`. ``job_id`` is, _RemoteResolution, SyncJobHandle, _decode_files() (+8 more) +Cohesion: 0.19 +Nodes (20): load_config(), Atomically write `config` back to `path`. If `original_text` is supplied, r, Load a config.yaml from disk and validate against the Pydantic model. Raise, save_config(), Tests for ``exlab_wizard.config.loader``. Backend Spec §9. The loader is the si, test_load_config_complete_yaml(), test_load_config_invalid_yaml_raises(), test_load_config_missing_file_raises() (+12 more) ### Community 175 - "Community 175" -Cohesion: 0.1 -Nodes (20): _open_in_os(), _open_operation_details(), Launch the host OS's default opener for ``path``. Returns False on platform, Launch the host OS's default opener for ``path``. Returns False on platform, Launch the host OS's default opener for ``path``. Returns False on platform, Show a lightweight details/"log" dialog for one in-flight operation. The §9, Show a lightweight details/"log" dialog for one in-flight operation. The §9, Launch the host OS's default opener for ``path``. Returns False on platform (+12 more) +Cohesion: 0.15 +Nodes (20): _build_minimal_controller(), _client(), Full-flow integration test for the FastAPI surface. Drives one project-creation, End-to-end: POST /sessions -> session reaches DONE -> creation.json on disk., End-to-end: POST /sessions -> session reaches DONE -> creation.json on disk., Each non-soft INCOMPLETE_* state surfaces the right next_action., Each non-soft INCOMPLETE_* state surfaces the right next_action., POST /sessions returns 503 + setup_incomplete in non-soft INCOMPLETE_* states. (+12 more) ### Community 176 - "Community 176" -Cohesion: 0.12 -Nodes (20): _build_metadata_payload(), _metadata_for_owned_equipment(), _metadata_for_relay_equipment(), Build the metadata-pane payload for the selected node, by kind. Returns ``{, Build the metadata-pane payload for the selected node, by kind. Returns ``{, Build the metadata-pane payload for the selected node, by kind. Returns ``{, Return the relay-equipment payload (label, source_host)., Project equipment-config fields into the owned-equipment payload. (+12 more) +Cohesion: 0.1 +Nodes (21): compose_run_path(), Compose the absolute on-disk path for a new run. Paths follow Backend Spec, The leaf is ISO 8601 with colons replaced by hyphens. §3.1. Redesign §3.4:, The leaf is ISO 8601 with colons replaced by hyphens. §3.1. Redesign §3.4:, Redesign §3.4: experimental runs live under /Runs/Run_*., Redesign §3.4: experimental runs live under /Runs/Run_*., Redesign §3.4: two runs in the same minute resolve to the same path (Copier, Redesign §3.4: two runs in the same minute resolve to the same path (Copier (+13 more) ### Community 177 - "Community 177" -Cohesion: 0.12 -Nodes (19): mount_ui(), Register every wizard page on ``app`` and mount NiceGUI at ``/``. ``storage, Define every ``@ui.page(...)`` handler. Called from :func:`mount_ui`., Define every ``@ui.page(...)`` handler. Called from :func:`mount_ui`., _register_pages(), build_root_css(), Theme registration for NiceGUI / Quasar. Per Frontend Spec §2.1.1, this module, Register the design tokens with NiceGUI / Quasar at app start. Imports Nice (+11 more) +Cohesion: 0.1 +Nodes (21): _missing_lims_fields(), _missing_orchestrator_fields(), _missing_paths_fields(), Translate a state into ``{field, reason}`` dicts for ``/api/v1/setup/status``., Translate a state into ``{field, reason}`` dicts for ``/api/v1/setup/status``., Only ``label`` is required; ``staging_root`` is opt-in (see gate)., Only ``label`` is required; ``staging_root`` is opt-in (see gate)., setup_state_missing() (+13 more) ### Community 178 - "Community 178" -Cohesion: 0.16 -Nodes (18): Folder-level sync-status rollup (GUI/Orchestrator Redesign §4.6). When a folder, Reduce per-file sync statuses to a single worst-of rollup value. Returns th, sync_rollup(), Unit tests for the folder-level sync-status rollup (Redesign §4.6)., failed > blocked > pending > synced > cleaned: each prefix's rollup is its f, SyncStatus is a StrEnum, so passing members (not .value strings) works. Gua, test_accepts_syncstatus_enum_members_directly(), test_all_none_returns_none() (+10 more) +Cohesion: 0.14 +Nodes (20): build_settings_draft(), finalize_settings_draft(), Return the editable deep-copy draft the settings dialog mutates. ``None`` (, Return the editable deep-copy draft the settings dialog mutates. ``None`` (, Return the editable deep-copy draft the settings dialog mutates. ``None`` (, Re-validate a mutated draft into a clean :class:`Config`. The dialog's two-, Re-validate a mutated draft into a clean :class:`Config`. The dialog's two-, Re-validate a mutated draft into a clean :class:`Config`. The dialog's two- (+12 more) ### Community 179 - "Community 179" -Cohesion: 0.15 -Nodes (17): _file_names_in_run(), is_eligible(), Pre-Sync Gate. Backend Spec §7.3. The Pre-Sync Gate is the contract by which va, Return the bare file names directly under ``run_path``. The Pre-Sync Gate i, Evaluate the §7.3 eligibility rule for a run. Returns ``(True, [])`` iff th, _build_creation(), Tests for ``exlab_wizard.sync.pre_sync_gate``. Backend Spec §7.3. The Pre-Sync, An override that has been revoked does NOT unblock sync. (+9 more) +Cohesion: 0.13 +Nodes (8): KeyringUnavailableError, Raised when no OS keyring backend is reachable and fallback is exhausted. Backen, _decode_envelope(), OS keyring storage with encrypted-at-rest fallback. Backend Spec §7.4. Two back, Look up the secret for ``(KEYRING_SERVICE, username)``. Returns ``None`, Persist ``password`` under ``(KEYRING_SERVICE, username)``. On a keyrin, Remove the secret stored under ``(KEYRING_SERVICE, username)``. Missing, Best-effort probe of the OS keyring backend. Implemented as a round-tri ### Community 180 - "Community 180" -Cohesion: 0.12 -Nodes (19): ``readme_fields.json`` at schema version 1.1. Spec §11.4., ReadmeFieldsJson, test_readme_fields_json_optional_fields_default_to_empty(), test_readme_fields_json_round_trip_preserves_custom_fields(), test_readme_fields_json_round_trips(), _os_username(), Map a template's ``_exlab_readme.fields`` dicts to typed declarations. Entr, Map ``config.readme.defaults`` entries to typed declarations. Core field id (+11 more) +Cohesion: 0.1 +Nodes (21): An async probe is awaited before its dict is mapped., An async probe is awaited before its dict is mapped., An async probe is awaited before its dict is mapped., No controller -> a negative toast and no dialog open., No controller -> a negative toast and no dialog open., An async probe is awaited before its dict is mapped., A wired controller builds the modal and opens it (no raise)., An async probe is awaited before its dict is mapped. (+13 more) ### Community 181 - "Community 181" -Cohesion: 0.14 -Nodes (17): _build_context(), _decode_files(), _load_plugin_class(), main(), Plugin worker entry point. Backend Spec §6.3.1, §6.3.2. Invoked as ``python -m, Materialize a :class:`PluginContext` from the stdin envelope. Returns the c, Import the plugin module and return the exported ``Plugin`` symbol. The hos, Execute the plugin's transform lifecycle against ``files``. The lifecycle i (+9 more) +Cohesion: 0.1 +Nodes (21): The Back button closes the dialog without cancelling., The Back button closes the dialog without cancelling., The Back button closes the dialog without cancelling., The Back button closes the dialog without cancelling., The Back button closes the dialog without cancelling., The Back button closes the dialog without cancelling., The received_equipment kind routes to the relay-equipment builder., The Back button closes the dialog without cancelling. (+13 more) ### Community 182 - "Community 182" -Cohesion: 0.13 -Nodes (19): first_incomplete_section(), Settings dialog (Frontend Spec §7). Two-pane modal with a left vertical-nav and, Return the first section ID in canonical order that's incomplete. The dynam, Return the first section ID in canonical order that's incomplete. The dynam, Compute the *Save all* button label, including the badge count., Compute the *Save all* button label, including the badge count., Return ``True`` when the sidebar should decorate ``section``., Return ``True`` when the sidebar should decorate ``section``. (+11 more) - -### Community 183 - "Community 183" Cohesion: 0.1 -Nodes (19): Cleanup — rollup, code:block1 ({), Components touched, Config changes (`config/models.py`), Context, Failure handling, Goals, GUI per-file display state (+11 more) +Nodes (20): Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right- (+12 more) -### Community 184 - "Community 184" -Cohesion: 0.1 -Nodes (20): 7.10 Validator section, 7.11 Logging section, 7.12 Orchestrator Mode section, 7.13 Application section, 7.14 Setup-incomplete state, 7.1 Modality, 7.2 Layout — sidebar navigation, 7.3 Save and Discard model (+12 more) +### Community 183 - "Community 183" +Cohesion: 0.16 +Nodes (18): Folder-level sync-status rollup (GUI/Orchestrator Redesign §4.6). When a folder, Reduce per-file sync statuses to a single worst-of rollup value. Returns th, sync_rollup(), Unit tests for the folder-level sync-status rollup (Redesign §4.6)., failed > blocked > pending > synced > cleaned: each prefix's rollup is its f, SyncStatus is a StrEnum, so passing members (not .value strings) works. Gua, test_accepts_syncstatus_enum_members_directly(), test_all_none_returns_none() (+10 more) ### Community 185 - "Community 185" Cohesion: 0.11 -Nodes (19): A cancel failure is caught and toasted, not raised., A cancel failure is caught and toasted, not raised., A cancel failure is caught and toasted, not raised., ``_render_run_wizard`` wires templates/equipment into the run-wizard page., ``_render_run_wizard`` wires templates/equipment into the run-wizard page., A cancel failure is caught and toasted, not raised., A cancel failure is caught and toasted, not raised., A cancel failure is caught and toasted, not raised. (+11 more) +Nodes (19): _fill(), _goto(), _pick_radio(), _project_next(), E2E flow 00b: the full create-lifecycle against the PRODUCTION app. Boots the g, Click a stepper-navigation button scoped to its step container. The Next /, Advance the project wizard from ``step_id`` via its Next button., Advance the run wizard from ``step_id`` via its Next button. (+11 more) ### Community 186 - "Community 186" -Cohesion: 0.11 -Nodes (19): The Back button closes the dialog without cancelling., The Back button closes the dialog without cancelling., The Back button closes the dialog without cancelling., The Back button closes the dialog without cancelling., The Back button closes the dialog without cancelling., The received_equipment kind routes to the relay-equipment builder., The Back button closes the dialog without cancelling., The received_equipment kind routes to the relay-equipment builder. (+11 more) +Cohesion: 0.15 +Nodes (18): _goto(), E2E flow 16: Add-Equipment wizard (Redesign §6). Drives the wizard end to end a, Identity step renders the ID + label inputs., Identity step renders the ID + label inputs., Paths step renders local + NAS root inputs., Paths step renders local + NAS root inputs., Sync mode step renders the nas/stage radio., Review step renders Confirm; clicking it fires the success label. (+10 more) ### Community 187 - "Community 187" -Cohesion: 0.11 -Nodes (19): _by_rule(), A project directory with no ``creation.json`` produces one orphan finding., A run directory with no ``creation.json`` produces one orphan finding., A human-readable project name (spaces and all) is a safe segment., A ``Run_*`` leaf whose creation.json says ``run_kind="test"`` is flagged., An active override with matching ``problem_class`` flips ``override_active``., Synced run + hard finding -> ``synced_under_prior_policy=True``., Cleaned run + hard finding -> ``synced_under_prior_policy=True``. A ``clean (+11 more) +Cohesion: 0.12 +Nodes (19): nas_remote_available(), _lims_slot_satisfied(), _missing_nas_fields(), _nas_in_use(), _nas_remote_satisfied(), _nas_slot_satisfied(), _orchestrator_identity_complete(), _password_required_equipment() (+11 more) ### Community 188 - "Community 188" -Cohesion: 0.12 -Nodes (13): Mutate ``creation.json`` ``sync_status`` to ``cleaned``. Backend Spec §7.1.10., Mutate ``creation.json`` ``sync_status`` to ``cleaned``. Backend Spec §7.1.10., Stop the worker and close the queue DB. Idempotent., Stop the worker and close the queue DB. Idempotent., Re-run ``rclone check --download`` against the configured remote. Used, Re-run ``rclone check --download`` against the configured remote. Used, Resolve the ``rclone check --download`` callable for ``equipment``. Tes, Resolve the ``rclone check`` callable for ``equipment.transport``. Test (+5 more) +Cohesion: 0.1 +Nodes (20): _drive_folder_feed(), _fetch_folder_async(), Mount / rebind the per-tab FolderFeed and return current entries. Uses ``ap, FolderFeed fetch hook. Skips when the tree just walked. Runs the synchronou, FolderFeed fetch hook. Skips when the tree just walked. Runs the synchronou, FolderFeed fetch hook. Skips when the tree just walked. Runs the synchronou, Mount / rebind the per-tab FolderFeed and return current entries. Uses ``ap, Mount / rebind the per-tab FolderFeed and return current entries. Uses ``ap (+12 more) ### Community 189 - "Community 189" -Cohesion: 0.12 -Nodes (18): test_obscure_missing_binary_raises_auth(), test_obscure_returns_stdout_stripped(), test_parse_combined_empty_returns_empty_result(), test_parse_combined_handles_all_prefixes(), test_parse_combined_tolerates_blank_lines_and_unknown_prefix(), CheckResult, obscure(), _parse_combined() (+10 more) +Cohesion: 0.15 +Nodes (17): _file_names_in_run(), is_eligible(), Pre-Sync Gate. Backend Spec §7.3. The Pre-Sync Gate is the contract by which va, Return the bare file names directly under ``run_path``. The Pre-Sync Gate i, Evaluate the §7.3 eligibility rule for a run. Returns ``(True, [])`` iff th, _build_creation(), Tests for ``exlab_wizard.sync.pre_sync_gate``. Backend Spec §7.3. The Pre-Sync, An override that has been revoked does NOT unblock sync. (+9 more) ### Community 190 - "Community 190" -Cohesion: 0.29 -Nodes (18): Push the supplied context vars on entry and reset them on exit. Vars whose, set_run_context(), _make_handler(), _make_record(), Tests for ``exlab_wizard.logging.handlers``. Backend Spec §16.2.4 commits the e, The ``Exception`` branch in :meth:`emit` is the stdlib handler-error contrac, Construct a handler with a deterministic hostname for test paths., test_close_drains_cached_files() (+10 more) +Cohesion: 0.1 +Nodes (19): Cleanup — rollup, code:block1 ({), Components touched, Config changes (`config/models.py`), Context, Failure handling, Goals, GUI per-file display state (+11 more) ### Community 191 - "Community 191" -Cohesion: 0.11 -Nodes (6): E2E flow 02: Project wizard 7-step happy path. Frontend Spec §6.3 (project wiza, test_flow_02_project_wizard(), Page object for the New Project Wizard. Frontend Spec §6.3., Locators for the new-project wizard's seven-step stepper., Locator for a specific step container., WizardProjectPage +Cohesion: 0.1 +Nodes (20): 7.10 Validator section, 7.11 Logging section, 7.12 Orchestrator Mode section, 7.13 Application section, 7.14 Setup-incomplete state, 7.1 Modality, 7.2 Layout — sidebar navigation, 7.3 Save and Discard model (+12 more) ### Community 192 - "Community 192" Cohesion: 0.11 -Nodes (19): _build_selected_file(), _build_selected_folder(), _metadata_for_run(), Count immediate child directories of ``parent`` whose names start with ``pre, Decode the run's creation.json into the metadata-pane payload. Returns ``{}, Decode the run's creation.json into the metadata-pane payload. Returns ``{}, Decode the run's creation.json into the metadata-pane payload. Returns ``{}, Resolve a centre-list selection (file or folder) to a render payload. Phase (+11 more) +Nodes (19): Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4). (+11 more) ### Community 193 - "Community 193" Cohesion: 0.11 -Nodes (19): _apply_live_config(), _ensure_staging_root(), _persist_config(), Write ``updated`` via ``deps.save_config`` and hot-reload components. Retur, Create the staging directory when the operator saved a non-empty path. ``st, Write ``updated`` via ``deps.save_config`` and hot-reload components. Retur, Write ``updated`` via ``deps.save_config`` and hot-reload components. Retur, Write ``updated`` via ``deps.save_config`` and hot-reload components. Retur (+11 more) +Nodes (6): E2E flow 02: Project wizard 7-step happy path. Frontend Spec §6.3 (project wiza, test_flow_02_project_wizard(), Page object for the New Project Wizard. Frontend Spec §6.3., Locators for the new-project wizard's seven-step stepper., Locator for a specific step container., WizardProjectPage ### Community 194 - "Community 194" -Cohesion: 0.11 -Nodes (19): _close_dialog(), _consume_session_progress(), Fold the controller's WS frames into the wizard's live phase bar (T2) and su, Best-effort close of a NiceGUI dialog (no-op when ``None`` / test mode)., Return the configured templates directory, or ``None``., List template directory names of ``template_type`` under templates_dir., Best-effort close of a NiceGUI dialog (no-op when ``None`` / test mode)., Fold the controller's WS frames into the wizard's live phase bar (T2) and su (+11 more) +Cohesion: 0.18 +Nodes (17): Parse the operator-answerable questions out of a ``copier.yml`` body. Handl, template_questions(), build_equipment_config(), Shared assembler for an :class:`EquipmentConfig` from raw form fields. GUI/Orch, Assemble a validated :class:`EquipmentConfig` from raw form fields. Redesig, Assemble a validated :class:`EquipmentConfig` from raw form fields. Redesig, _equipment_kwargs(), Unit tests for the frontend-polish helpers. Covers the pure logic behind the th (+9 more) ### Community 195 - "Community 195" Cohesion: 0.12 -Nodes (18): FileListDiff, Live file-list component for the rebuilt main window. GUI/Orchestrator Redesign, Render the centre-pane file list. Pure render function. Double-clicking a f, Render the file-list column header row (Name / Size / Modified / Status)., Render the centre-pane file list. Pure render function. Double-clicking a f, Render the centre-pane file list. Pure render function. Double-clicking a f, Render the centre-pane file list. Pure render function. Double-clicking a f, Render the centre-pane file list. Pure render function. Double-clicking a f (+10 more) +Nodes (15): TypedDict, AuditScopeAll, AuditScopeEquipment, AuditScopeProject, _finding_sort_key(), _materialise(), _materialise_audit(), Validator engine. Backend Spec §4.4.4, §8.1, §11.7, §11.8. The engine is the si (+7 more) ### Community 196 - "Community 196" -Cohesion: 0.11 -Nodes (19): Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right-, Render the centre-pane file list (Redesign §4.3). Each row carries a right- (+11 more) +Cohesion: 0.29 +Nodes (18): Push the supplied context vars on entry and reset them on exit. Vars whose, set_run_context(), _make_handler(), _make_record(), Tests for ``exlab_wizard.logging.handlers``. Backend Spec §16.2.4 commits the e, The ``Exception`` branch in :meth:`emit` is the stdlib handler-error contrac, Construct a handler with a deterministic hostname for test paths., test_close_drains_cached_files() (+10 more) ### Community 197 - "Community 197" -Cohesion: 0.18 -Nodes (17): Parse the operator-answerable questions out of a ``copier.yml`` body. Handl, template_questions(), build_equipment_config(), Shared assembler for an :class:`EquipmentConfig` from raw form fields. GUI/Orch, Assemble a validated :class:`EquipmentConfig` from raw form fields. Redesig, Assemble a validated :class:`EquipmentConfig` from raw form fields. Redesig, _equipment_kwargs(), Unit tests for the frontend-polish helpers. Covers the pure logic behind the th (+9 more) +Cohesion: 0.11 +Nodes (18): 10. File-level change summary, 1. Summary, 2. Goals & non-goals, 3. Approaches considered, 4. Sample list data model (Pydantic), 5. Shared-helper refactor of `creation.py`, 6. Generation flow, 7. Safety guardrails (destructive wipe) (+10 more) ### Community 198 - "Community 198" -Cohesion: 0.12 -Nodes (15): TypedDict, AuditScopeAll, AuditScopeEquipment, AuditScopeProject, _finding_sort_key(), _materialise(), _materialise_audit(), Validator engine. Backend Spec §4.4.4, §8.1, §11.7, §11.8. The engine is the si (+7 more) +Cohesion: 0.11 +Nodes (18): 12.1 Template Variable Form (from `copier.yml` questions), 12.2 README Form Fields, 12.3 Required-Field Indication, 12. Widget Mappings, 13. Open Questions, 1. Purpose and Scope, 4.1 LIMS Picker Behavior, 4. New Project Wizard (+10 more) ### Community 199 - "Community 199" Cohesion: 0.11 -Nodes (18): 10. File-level change summary, 1. Summary, 2. Goals & non-goals, 3. Approaches considered, 4. Sample list data model (Pydantic), 5. Shared-helper refactor of `creation.py`, 6. Generation flow, 7. Safety guardrails (destructive wipe) (+10 more) +Nodes (18): 10. README Generation, 11. `.exlab-wizard` Cache Folders, 12. Orchestrator Mode (Multi-Equipment Workstations), 13. Equipment-to-Orchestrator Data Flow, 14. Open Questions, 15. Distribution and Installation, 16. Logging Architecture, 1. Purpose and Goals (+10 more) ### Community 200 - "Community 200" Cohesion: 0.11 -Nodes (18): 10. README Generation, 11. `.exlab-wizard` Cache Folders, 12. Orchestrator Mode (Multi-Equipment Workstations), 13. Equipment-to-Orchestrator Data Flow, 14. Open Questions, 15. Distribution and Installation, 16. Logging Architecture, 1. Purpose and Goals (+10 more) +Nodes (18): 15.1 Build Pipeline (PyInstaller), 15.2.1 Offline-machine specifics, 15.2 Code Signing Posture, 15.3.1 `ExLab-Wizard-Tray` (long-lived, autostart target), 15.3.2 `ExLab-Wizard-Window` (on-demand), 15.3.3 `ExLab-Wizard` (CLI alias / desktop-launcher target), 15.3.4 Linux fallback (no system tray), 15.3 Launcher Behavior (+10 more) ### Community 201 - "Community 201" Cohesion: 0.11 -Nodes (18): 15.1 Build Pipeline (PyInstaller), 15.2.1 Offline-machine specifics, 15.2 Code Signing Posture, 15.3.1 `ExLab-Wizard-Tray` (long-lived, autostart target), 15.3.2 `ExLab-Wizard-Window` (on-demand), 15.3.3 `ExLab-Wizard` (CLI alias / desktop-launcher target), 15.3.4 Linux fallback (no system tray), 15.3 Launcher Behavior (+10 more) +Nodes (18): diff_file_lists(), FileListDiff, Result of comparing two successive folder-list snapshots., Result of comparing two successive folder-list snapshots., Result of comparing two successive folder-list snapshots., Return additions / removals / modifications between two snapshots. Pure fun, Return additions / removals / modifications between two snapshots. Pure fun, Return additions / removals / modifications between two snapshots. Pure fun (+10 more) ### Community 202 - "Community 202" -Cohesion: 0.15 -Nodes (17): _dump_env(), _emit_combined(), _flag_value(), _is_flag_value(), main(), _parse_copy_args(), Return the value following ``flag`` in ``argv`` or ``None``., Return the value following ``flag`` in ``argv`` or ``None``. (+9 more) +Cohesion: 0.12 +Nodes (17): Live file-list component for the rebuilt main window. GUI/Orchestrator Redesign, Render the centre-pane file list. Pure render function. Double-clicking a f, Render the file-list column header row (Name / Size / Modified / Status)., Render the centre-pane file list. Pure render function. Double-clicking a f, Render the centre-pane file list. Pure render function. Double-clicking a f, Render the centre-pane file list. Pure render function. Double-clicking a f, Render the centre-pane file list. Pure render function. Double-clicking a f, Render the centre-pane file list. Pure render function. Double-clicking a f (+9 more) ### Community 203 - "Community 203" -Cohesion: 0.11 -Nodes (18): _drive_folder_feed(), _fetch_folder_async(), Mount / rebind the per-tab FolderFeed and return current entries. Uses ``ap, FolderFeed fetch hook. Skips when the tree just walked. Runs the synchronou, FolderFeed fetch hook. Skips when the tree just walked. Runs the synchronou, FolderFeed fetch hook. Skips when the tree just walked. Runs the synchronou, Mount / rebind the per-tab FolderFeed and return current entries. Uses ``ap, Mount / rebind the per-tab FolderFeed and return current entries. Uses ``ap (+10 more) +Cohesion: 0.15 +Nodes (17): _dump_env(), _emit_combined(), _flag_value(), _is_flag_value(), main(), _parse_copy_args(), Return the value following ``flag`` in ``argv`` or ``None``., Return the value following ``flag`` in ``argv`` or ``None``. (+9 more) ### Community 204 - "Community 204" Cohesion: 0.11 -Nodes (18): _missing_setup_sections(), _nas_credential_missing(), _nas_remote_missing(), Return the settings sections the operator still needs to fill in. Mirrors a, Return the settings sections the operator still needs to fill in. Mirrors a, Return the settings sections the operator still needs to fill in. Mirrors a, Return the settings sections the operator still needs to fill in. Mirrors a, Return the settings sections the operator still needs to fill in. Mirrors a (+10 more) +Nodes (18): on_operations_panel(), Return ``True`` when ``session`` belongs on the Operations panel. Frontend, _operation_counts(), _panel_sessions(), Return the (session_id, session) pairs the Operations panel shows. The §9.5, Return the (session_id, session) pairs the Operations panel shows. The §9.5, Return ``(panel_count, input_required, active)`` operation counts. ``panel_, Return ``(panel_count, input_required, active)`` operation counts. ``panel_ (+10 more) ### Community 205 - "Community 205" -Cohesion: 0.11 -Nodes (18): Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4)., Render the right Metadata / Problems pane (Redesign §4.4). (+10 more) +Cohesion: 0.15 +Nodes (16): Compute icon + tooltip + retry-counter for a sync status. The ``retry_n``/`, Compute icon + tooltip + retry-counter for a sync status. The ``retry_n``/`, Compute icon + tooltip + retry-counter for a sync status. The ``retry_n``/`, sync_status_props(), Unit tests for sync_status_icon tolerant mode (Redesign §4.5, OQ-5)., The original contract is preserved: strict (default) raises., strict=False yields neutral props (muted dash) instead of raising., strict=False accepts None (optional per-file / per-folder status). (+8 more) ### Community 206 - "Community 206" -Cohesion: 0.18 -Nodes (15): _FakeUvicornServer, _make_runner(), Tests for :mod:`exlab_wizard.tray.server_runner`. Backend Spec §4.3.2., A custom server object missing ``should_exit`` is tolerated., Fake :class:`uvicorn.Server` that runs a tiny event loop., test_double_start_raises(), test_is_running_tracks_thread_lifecycle(), test_port_property_after_start() (+7 more) +Cohesion: 0.12 +Nodes (17): _by_rule(), A project directory with no ``creation.json`` produces one orphan finding., A run directory with no ``creation.json`` produces one orphan finding., A project directory whose name is not a safe path segment (§3.2) produces a, A human-readable project name (spaces and all) is a safe segment., A directory name containing ```` produces a finding., An active override with matching ``problem_class`` flips ``override_active``., A tombstone-revoked override does not flip ``override_active``. (+9 more) ### Community 207 - "Community 207" -Cohesion: 0.15 -Nodes (11): _apply_migration_defaults(), _is_future(), _merge_unknown_fields(), _payload_to_dict(), Atomic reader/writer for ``creation.json``. Backend Spec §4.4.5. All ``creation, Return True if ``expires_at`` (UTC ISO-8601) is strictly after ``now``. The, Apply §11.3 history-table defaults for fields missing on old minors. Return, Load the file as a raw ``dict`` (no Struct conversion yet). We need the (+3 more) - -### Community 208 - "Community 208" Cohesion: 0.24 Nodes (16): _goto(), _open_context(), E2E flow 24: right-click context menus (Redesign §4.6 / decision 4A / §9.1). Th, An "On NAS" tombstone row has no local copy, so no Open-in-OS action. Opera, A keep-local file shows the "kept local" badge; the toggle action fires. Op, Open a NiceGUI ``ui.context_menu`` by right-clicking its anchor., Decision 3: received-equipment nodes don't expose edit / remove., Right-clicking a file-list row surfaces Open in OS / Copy path / Keep local. (+8 more) -### Community 209 - "Community 209" +### Community 208 - "Community 208" Cohesion: 0.12 Nodes (8): E2E flow 09: Orchestrator staging panel + quiescence-sync trigger. Frontend Spe, test_flow_09_orchestrator(), Page object for the orchestrator staging dock. Frontend Spec §3.9., Locators for the staging dock + per-row actions., The Force-sync button on the Nth row., The Clear button on the Nth row., The View-log button on the Nth row., StagingPage +### Community 209 - "Community 209" +Cohesion: 0.12 +Nodes (17): _build_main_query(), _classify_node(), Compose the ``?selected=...&right_pane=...`` query string for /main. Omits, Compose the ``?selected=...&right_pane=...`` query string for /main. Omits, Compose the ``?selected=...&right_pane=...`` query string for /main. Omits, Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi, Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi, Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi (+9 more) + ### Community 210 - "Community 210" Cohesion: 0.12 -Nodes (16): cache_dir(), equipment_json_path(), Map a state to the §4.9.3 next-action enum member. Returns ``None`` when th, Return the ``.exlab-wizard/`` subdirectory for a run or project root., Return the ``equipment.json`` path under an equipment directory., Return the ``readme_fields.json`` path under a run or project directory., Return the ``.exlab-wizard/`` subdirectory for a run or project root., Return ``Run_`` or ``TestRun_``. (+8 more) +Nodes (17): _count_dir_children(), _metadata_for_project(), Count immediate child directories of ``parent`` whose names start with ``pre, Derive a project payload from the on-disk project directory. ``node_id`` is, Derive a project payload from the on-disk project directory. ``node_id`` is, Derive a project payload from the on-disk project directory. ``node_id`` is, Count immediate child directories of ``parent`` whose names start with ``pre, Count immediate child directories of ``parent`` whose names start with ``pre (+9 more) ### Community 211 - "Community 211" -Cohesion: 0.13 -Nodes (17): FileListState, Mutable state for the file list, consumed by the renderer., Yield ``element`` and every descendant across all its slots. NiceGUI render, The row whose path matches ``selected_path`` carries the selected fill., The row whose path matches ``selected_path`` carries the selected fill., A tombstone row carries the data-tombstone attr + dim/italic decoration., A tombstone row carries the data-tombstone attr + dim/italic decoration., Selection is opt-in: with no ``on_select`` the rows wire no click handler. (+9 more) +Cohesion: 0.12 +Nodes (14): ``validator:`` block. Content-scan tuning. Backend Spec §8.1.1, §11.8., ``validator:`` block. Content-scan tuning. Backend Spec §8.1.1, §11.8., ValidatorConfig, test_validator_config_defaults(), test_validator_content_scan_max_mib_at_least_one(), test_validator_extensions_must_start_with_dot(), test_validator_extensions_rejects_dotless_among_others(), Re-seed the config + audit-mode roots in place (no tray relaunch). Mirr (+6 more) ### Community 212 - "Community 212" -Cohesion: 0.15 -Nodes (16): build_health_router(), _component_rollup(), HealthResponse, _lims_health(), _nas_sync_health(), _plugin_host_health(), ``GET /api/v1/health`` rollup. Backend Spec §4.6.3. Returns a component-health, Aggregate per-component statuses into the §4.6.3 top-level value. Top-level (+8 more) +Cohesion: 0.12 +Nodes (17): Return True when ``transport`` sources its credential from the keyring. Bot, transport_requires_keyring_password(), _full_config_dict(), Build a Config from a §9-shaped dict, dump it, and compare. ``model_dump()`, Full Config dict mirroring the §9 example. Used by round-trip tests., Full Config dict mirroring the §9 example. Used by round-trip tests., Build a Config from a §9-shaped dict, dump it, and compare. ``model_dump()`, _smb_transport_dict() (+9 more) ### Community 213 - "Community 213" -Cohesion: 0.15 -Nodes (16): is_test_run_dir(), True if ``name`` is a test-run directory., True if ``name`` is a test-run directory., _dir_mtime_iso(), _iso_to_epoch(), _parse_iso(), _path_identity(), Read-only enumeration of runs pending NAS sync. Backend Spec §13.8. The orchest (+8 more) +Cohesion: 0.12 +Nodes (14): _detect_platform(), platform(), Per-platform autostart registration. Backend Spec §4.3.2 + §15.7. Registers ``E, Return the macOS LaunchAgent plist body. Backend Spec §15.7.1., Return the Linux systemd-user unit body. Backend Spec §15.7.1., Return the XDG ``.desktop`` autostart body. Backend Spec §15.7.1., _render_desktop_file(), _render_plist() (+6 more) ### Community 214 - "Community 214" Cohesion: 0.12 Nodes (16): Building a distributable binary, code:bash (git clone https://github.com/exfab/ExLabWizard.git), code:bash (uv run exlab-wizard-tray # or: source .venv/bin/activate), code:bash (./scripts/build_local.sh # macOS / Linux), code:bash (uv run pytest tests/unit tests/integration # fast suite), code:yaml (nas:), Context, Documentation (+8 more) ### Community 215 - "Community 215" -Cohesion: 0.12 -Nodes (17): 4.4.1 CreationController, 4.4.2 TemplateEngine, 4.4.3 PluginHost, 4.4.4 Validator, 4.4.5 CacheWriter, 4.4.6 NASSyncClient and LIMSClient, 4.4.7 SessionStore, 4.4 Component Contracts (+9 more) - -### Community 216 - "Community 216" -Cohesion: 0.17 -Nodes (15): begin_edit(), cancel_edit(), clear_credential(), commit_edit(), credential_field(), credential_props(), CredentialState, Credential field component (Frontend Spec §7.4.1). Three resting / transient st (+7 more) +Cohesion: 0.14 +Nodes (7): _goto(), E2E flow 22: onboarding via the new Add-Equipment wizard (Redesign decision 2)., test_flow_22_main_window_has_add_equipment_in_toolbar(), test_flow_22_welcome_to_add_equipment(), Page object for the first-launch welcome card. Frontend Spec §6.1., Page object for the welcome card shown on first launch. Frontend Spec §6.1., WelcomePage ### Community 217 - "Community 217" -Cohesion: 0.16 -Nodes (15): excerpt_line(), FindingExcerpt, header_line(), overflow_line(), override_line(), Validation summary block (Frontend Spec §3.6.4, §11.4.1). Renders the per-run v, A single finding row used in the summary., Inputs to the summary block. (+7 more) +Cohesion: 0.13 +Nodes (12): _goto(), E2E flow 01: First-launch onboarding. Frontend Spec §6.1 (welcome card + autost, Navigate to a NiceGUI page, tolerating a transient ERR_ABORTED. NiceGUI's c, test_flow_01_onboarding(), E2E flow 05: Browse view -- open existing project + sessions. Frontend Spec §6., E2E flow 05b: per-run sync icons in the browse tree. Verifies that the project, The ``/assets`` mount serves both SVGs as 200 OK., test_flow_05_sync_icons_render_in_tree() (+4 more) ### Community 218 - "Community 218" -Cohesion: 0.12 -Nodes (16): _parse_argv(), Parse the tray's CLI arguments. The tray accepts: - ``--version`` -- p, No flags -> ``smoke`` is False, ``no_autostart_prompt`` is False., ``--smoke`` sets the smoke flag., ``--no-autostart-prompt`` is silently accepted (reserved)., ``--version`` sets the version flag., No flags -> both test-mode flags are False., ``--add-test-samples`` alone must be rejected via parser.error (exit 2). (+8 more) +Cohesion: 0.17 +Nodes (15): begin_edit(), cancel_edit(), clear_credential(), commit_edit(), credential_field(), credential_props(), CredentialState, Credential field component (Frontend Spec §7.4.1). Three resting / transient st (+7 more) ### Community 219 - "Community 219" -Cohesion: 0.2 -Nodes (15): build_settings_draft(), finalize_settings_draft(), Return the editable deep-copy draft the settings dialog mutates. ``None`` (, Return the editable deep-copy draft the settings dialog mutates. ``None`` (, Re-validate a mutated draft into a clean :class:`Config`. The dialog's two-, Re-validate a mutated draft into a clean :class:`Config`. The dialog's two-, Tests for the settings-page config binding helpers. ``render_settings_page`` it, staging_root is opt-in: a blank value finalizes cleanly (the field is option (+7 more) +Cohesion: 0.16 +Nodes (15): excerpt_line(), FindingExcerpt, header_line(), overflow_line(), override_line(), Validation summary block (Frontend Spec §3.6.4, §11.4.1). Renders the per-run v, A single finding row used in the summary., Inputs to the summary block. (+7 more) ### Community 220 - "Community 220" Cohesion: 0.12 -Nodes (16): 2.1.1 The `design.py` module, 2.1.2 What lives in DESIGN.md vs in this spec, 2.1.3 ExLab-Wizard typography overrides, 2.1.4 Warning-tier color (resolves OQ #3), 2.1.5 CSS styling reference rule, 2.1.6 DESIGN.md absolute constraints (binding), 2.1 Visual tokens and the design system, 2.2.1 Pattern selection rule (+8 more) +Nodes (16): Compute the *Save all* button label, including the badge count., Compute the *Save all* button label, including the badge count., Compute the *Save all* button label, including the badge count., Return ``True`` when the sidebar should decorate ``section``., Return ``True`` when the sidebar should decorate ``section``., Return ``True`` when the sidebar should decorate ``section``., Return ``True`` when ``section`` has uncommitted edits., Return ``True`` when ``section`` has uncommitted edits. (+8 more) ### Community 221 - "Community 221" Cohesion: 0.12 -Nodes (15): 10.1 When It Runs, 10.2 Field Sources (Merged Layers), 10.3 Field Types, 10.4 User-Added Custom Fields, 10.5 Pre-fill Behavior, 10.6 Auto-Filled System Fields, 10.7.1 Machine Query Examples, 10.7.2 Prose Body (+7 more) +Nodes (16): 2.1.1 The `design.py` module, 2.1.2 What lives in DESIGN.md vs in this spec, 2.1.3 ExLab-Wizard typography overrides, 2.1.4 Warning-tier color (resolves OQ #3), 2.1.5 CSS styling reference rule, 2.1.6 DESIGN.md absolute constraints (binding), 2.1 Visual tokens and the design system, 2.2.1 Pattern selection rule (+8 more) ### Community 222 - "Community 222" -Cohesion: 0.13 -Nodes (15): _client(), Build an un-init'd client for direct ``_delete_local`` calls., ``_delete_local`` keeps ``keep_local`` files, incl. a nested one., A directory holding only deleted files is pruned (deepest-first); a parent s, Build an un-init'd client for direct ``_delete_local`` calls., A directory symlink inside the run is left untouched -- its target's content, A ``keep_local`` file survives even when ``retain_cache=False``., A directory holding only deleted files is pruned (deepest-first); a parent s (+7 more) +Cohesion: 0.12 +Nodes (15): 10.1 When It Runs, 10.2 Field Sources (Merged Layers), 10.3 Field Types, 10.4 User-Added Custom Fields, 10.5 Pre-fill Behavior, 10.6 Auto-Filled System Fields, 10.7.1 Machine Query Examples, 10.7.2 Prose Body (+7 more) ### Community 223 - "Community 223" -Cohesion: 0.17 -Nodes (14): _load(), Contract test against vendored upstream `mcnaughtonadm/exlab` snapshots. Loads, Every required snapshot exists; guards against accidental deletion., ``GET /api/v1/me`` JSON must satisfy the ``LIMSUser`` schema., Upstream's login body is the same ``safe_user`` shape as ``/me``., ``GET /api/v1/projects`` payload must yield ``LIMSProject`` rows. Mirrors t, An empty ``data`` array must yield zero rows, not raise., ``GET /api/v1/projects/{id}`` returns one bare project object. (+6 more) +Cohesion: 0.2 +Nodes (13): BreadcrumbSegment, Breadcrumb bar for the rebuilt main window. GUI/Orchestrator Redesign §4.1 / §4, One clickable segment in the breadcrumb bar., Decompose a tree-node id into clickable segments. Tree ids are slash-joined, Render the breadcrumb row. Pure render function. Each segment is a clickabl, render_breadcrumb(), segments_from_node_id(), Unit tests for ``ui/components/breadcrumb``. Redesign §4.7 / decision 7A. (+5 more) ### Community 224 - "Community 224" -Cohesion: 0.22 -Nodes (13): _goto(), E2E flow 16: Add-Equipment wizard (Redesign §6). Drives the four-step wizard en, Identity step renders the ID + label inputs., Paths step renders local + NAS root inputs., Sync mode step renders the nas/stage radio., Review step renders Confirm; clicking it fires the success label., An empty wizard: Next stays disabled until the identity step is valid, then, test_flow_16_add_equipment_identity_step() (+5 more) +Cohesion: 0.13 +Nodes (14): ``readme_fields.json`` at schema version 1.1. Spec §11.4., ReadmeFieldsJson, test_readme_fields_json_optional_fields_default_to_empty(), test_readme_fields_json_round_trip_preserves_custom_fields(), test_readme_fields_json_round_trips(), Auto-populated, non-editable system fields. Backend Spec §10.6., Renders ``README.md`` + ``readme_fields.json``. Backend Spec §10., Validate ``ctx``, write both files, return ``(readme, cache)``. The des (+6 more) ### Community 225 - "Community 225" -Cohesion: 0.18 -Nodes (12): config_path(), free_port(), prod_app_env(), Reusable spawn/restart harness for the *production* wizard app. The e2e lifecyc, Return a free TCP port on 127.0.0.1., Build a hermetic environment for a spawned production-app process. Every OS, Where the spawned production app writes ``config.yaml``. Computed by callin, resolve_config_path() (+4 more) +Cohesion: 0.17 +Nodes (14): _load(), Contract test against vendored upstream `mcnaughtonadm/exlab` snapshots. Loads, Every required snapshot exists; guards against accidental deletion., ``GET /api/v1/me`` JSON must satisfy the ``LIMSUser`` schema., Upstream's login body is the same ``safe_user`` shape as ``/me``., ``GET /api/v1/projects`` payload must yield ``LIMSProject`` rows. Mirrors t, An empty ``data`` array must yield zero rows, not raise., ``GET /api/v1/projects/{id}`` returns one bare project object. (+6 more) ### Community 226 - "Community 226" -Cohesion: 0.13 -Nodes (15): _count_dir_children(), _metadata_for_project(), Derive a project payload from the on-disk project directory. ``node_id`` is, Derive a project payload from the on-disk project directory. ``node_id`` is, Derive a project payload from the on-disk project directory. ``node_id`` is, Count immediate child directories of ``parent`` whose names start with ``pre, Count immediate child directories of ``parent`` whose names start with ``pre, Derive a project payload from the on-disk project directory. ``node_id`` is (+7 more) +Cohesion: 0.19 +Nodes (14): _goto(), E2E flow 28: Phase 4/5 polish — file selection, search, density, legend. Covers, Single-clicking a file row threads ?file=, marks the row selected, and surfa, A search query renders the result-count pill and seeds the box (OQ-2)., A query that matches nothing renders the no-matches hint (OQ-2)., The Files-header density toggle re-navigates with ?density=compact (§4.8)., The Files-header "?" opens the sync-status legend popover (Phase 5)., The selected tree node renders Quasar's selected class -- the hook the unifi (+6 more) ### Community 227 - "Community 227" -Cohesion: 0.2 -Nodes (13): BreadcrumbSegment, Breadcrumb bar for the rebuilt main window. GUI/Orchestrator Redesign §4.1 / §4, One clickable segment in the breadcrumb bar., Decompose a tree-node id into clickable segments. Tree ids are slash-joined, Render the breadcrumb row. Pure render function. Each segment is a clickabl, render_breadcrumb(), segments_from_node_id(), Unit tests for ``ui/components/breadcrumb``. Redesign §4.7 / decision 7A. (+5 more) +Cohesion: 0.18 +Nodes (12): config_path(), free_port(), prod_app_env(), Reusable spawn/restart harness for the *production* wizard app. The e2e lifecyc, Return a free TCP port on 127.0.0.1., Build a hermetic environment for a spawned production-app process. Every OS, Where the spawned production app writes ``config.yaml``. Computed by callin, resolve_config_path() (+4 more) ### Community 228 - "Community 228" Cohesion: 0.14 -Nodes (14): check_illegal_filesystem_character(), Validator rule functions. Backend Spec §8.1. This module is a pure-function lib, Return one finding per placeholder match in ``text``., §8.1.2: detect Windows-illegal characters in any segment / file name. Illeg, Return one finding per illegal character / trailing-rule violation in ``name``., _scan_for_illegal_chars(), _scan_for_placeholders(), test_findings_have_hard_tier() (+6 more) +Nodes (14): panel_props(), Test-connection result panel (Frontend Spec §7.4.2). A persistent inline panel, One result rendered in the panel., Compute the rendered props for the panel. Returns a dict suitable for asser, Build the inline result panel. Returns a NiceGUI element, or the props dict, test_connection_panel(), TestConnectionResult, _nas_test_connection() (+6 more) ### Community 229 - "Community 229" -Cohesion: 0.22 -Nodes (14): Tombstone entry that revokes a prior override by ``id``. Spec §11.3. ``revo, ``test_runs.json`` marker at schema version 1.0. Spec §11.4.2. Filename ret, TestRunsJson, TombstoneEntry, FileSyncRecord, ``msgspec.Struct`` types for the per-run ``sync_state.json`` cache. Operator-fr, Per-file sync record stored under ``sync_state.json``'s ``files`` map. One, ``sync_state.json`` per-run sync-state record at schema version 1.0. Writte (+6 more) +Cohesion: 0.14 +Nodes (10): assemble_equipment_config(), can_advance(), _maybe_confirm(), Add-Equipment wizard (GUI/Orchestrator Redesign §6). Three-step wizard launched, Build the final EquipmentConfig from the wizard's state. Raises a pydantic, Build the final EquipmentConfig from the wizard's state. Raises a pydantic, Build the final EquipmentConfig from the wizard's state. Raises a pydantic, Return True if the active step has the data it needs to advance. Pure funct (+2 more) ### Community 230 - "Community 230" -Cohesion: 0.24 -Nodes (14): Code-review findings to honor (from earlier passes), code:block1 (git branch --show-current # feature/gui-imrprovemen), Committed (clean) — Phases 1–3, ⏩ CURRENT STATE (2026-05-29, session 2), Demo checkpoint (task #6, after Phase 4 verifies green), How to work (lessons from this session — important), Phase 4 remaining work (Option B — selection → metadata), Quick resume verification (run sequentially, one at a time) (+6 more) +Cohesion: 0.13 +Nodes (15): Reusable chip / list editor bound to a draft string list (T7 / T10). Mutate, Reusable chip / list editor bound to a draft string list (T7 / T10). Mutate, Reusable chip / list editor bound to a draft string list (T7 / T10). Mutate, Render the content for a single section, bound to ``draft``. Every scalar f, Render the content for a single section, bound to ``draft``. Every scalar f, Render the content for a single section, bound to ``draft``. Every scalar f, Render the equipment list + a full add-equipment sub-form. Adding an entry, Render the equipment list + a full add-equipment sub-form. Adding an entry (+7 more) ### Community 231 - "Community 231" -Cohesion: 0.13 -Nodes (14): 12.1 Template Variable Form (from `copier.yml` questions), 12.2 README Form Fields, 12.3 Required-Field Indication, 12. Widget Mappings, 13. Open Questions, 1. Purpose and Scope, 4.1 LIMS Picker Behavior, 4. New Project Wizard (+6 more) +Cohesion: 0.16 +Nodes (14): Writer for ``equipment.json`` (registry) and ``test_runs.json`` (marker). Backe, Return the on-disk ``first_seen_at`` if the file exists. Returns ``None`` w, _read_equipment_sync(), _read_existing_first_seen_at(), _read_test_runs_marker_sync(), _write_equipment_sync(), _write_test_runs_marker_sync(), Read ``path`` and decode it as ``type_``, optionally gating on major. When (+6 more) ### Community 232 - "Community 232" -Cohesion: 0.13 -Nodes (14): 5.0 Template Locations (Global and Per-Equipment), 5.1 Template Structure, 5.2 Copier Manifest (`copier.yml`), 5.3 Copier Python API Integration, 5.4 Copier Answers File (`.exlab-answers.yml`), 5.5 Plugin Pass (Post-Render, Controller-Driven), 5.6 Jinja2 Templating in File Contents, 5.7 Template Versioning (+6 more) +Cohesion: 0.15 +Nodes (14): test_about_missing_binary_returns_not_ok(), test_parse_combined_empty_returns_empty_result(), test_parse_combined_handles_all_prefixes(), test_parse_combined_tolerates_blank_lines_and_unknown_prefix(), AboutResult, CheckResult, _parse_combined(), rclone transport driver. Backend Spec §7.1.3. Single transport binary for the N (+6 more) ### Community 233 - "Community 233" -Cohesion: 0.18 -Nodes (10): ProdServer, Terminate the uvicorn process. Idempotent., Stop and re-spawn the process with the same HOME / port., A spawnable / restartable production-app uvicorn process. ``home`` is the r, Spawn uvicorn and block until ``/api/v1/health`` answers 200. Returns `, prod_server(), E2E flow 26: Add-Equipment wizard confirm against the PRODUCTION app. ``test_fl, Spawn the production wizard app under a fresh tmp HOME. (+2 more) +Cohesion: 0.17 +Nodes (9): _apply_migration_defaults(), _merge_unknown_fields(), _payload_to_dict(), Atomic reader/writer for ``creation.json``. Backend Spec §4.4.5. All ``creation, Apply §11.3 history-table defaults for fields missing on old minors. Return, Load the file as a raw ``dict`` (no Struct conversion yet). We need the, Encode ``payload`` to bytes, write atomically via atomic_write_bytes. T, Recursively convert a ``CreationJson`` into a plain ``dict``. Uses :func:`m (+1 more) ### Community 234 - "Community 234" -Cohesion: 0.18 -Nodes (13): Automated UX-interaction documentation + coverage checks. Drives :mod:`tests.e2, Every cataloged ``data-testid`` is present in the UI source., Every cataloged ``data-testid`` is driven by an e2e test. Scans the whole `, Render the catalog into the ``UX_INTERACTIONS.md`` markdown body., ``docs/UX_INTERACTIONS.md`` is regenerated from the catalog. Regenerates th, Guard against an empty catalog silently passing the other checks., Return ``True`` when ``haystack`` references ``testid``. Tolerates testids, _references() (+5 more) +Cohesion: 0.13 +Nodes (14): 5.0 Template Locations (Global and Per-Equipment), 5.1 Template Structure, 5.2 Copier Manifest (`copier.yml`), 5.3 Copier Python API Integration, 5.4 Copier Answers File (`.exlab-answers.yml`), 5.5 Plugin Pass (Post-Render, Controller-Driven), 5.6 Jinja2 Templating in File Contents, 5.7 Template Versioning (+6 more) ### Community 235 - "Community 235" -Cohesion: 0.15 -Nodes (14): ensure_dir(), ensure_state_dir(), os_state_path(), Return the OS-appropriate state directory. Backend Spec §15.7., ``mkdir -p`` the given path; return it. Idempotent., ``ensure_dir(os_state_path())``., test_ensure_dir_creates_missing(), test_ensure_dir_idempotent_when_exists() (+6 more) +Cohesion: 0.24 +Nodes (14): Code-review findings to honor (from earlier passes), code:block1 (git branch --show-current # feature/gui-imrprovemen), Committed (clean) — Phases 1–3, ⏩ CURRENT STATE (2026-05-29, session 2), Demo checkpoint (task #6, after Phase 4 verifies green), How to work (lessons from this session — important), Phase 4 remaining work (Option B — selection → metadata), Quick resume verification (run sequentially, one at a time) (+6 more) ### Community 236 - "Community 236" -Cohesion: 0.15 -Nodes (12): bind_global_shortcuts(), is_macos(), Keyboard-shortcut registry (Frontend Spec §3.7). The bindings are intentionally, Return ``True`` when running on macOS (used for combo selection)., Find the shortcut id matching the given key event, if any., Install a NiceGUI keyboard listener for the registry. NiceGUI is imported l, Identifiers for the app-level shortcut set (Frontend §3.7)., Return True if a NiceGUI ``KeyEventArguments`` matches this combo. (+4 more) +Cohesion: 0.14 +Nodes (13): check_reserved_filesystem_name(), check_unsafe_project_name(), Validator rule functions. Backend Spec §8.1. This module is a pure-function lib, Return one finding per placeholder match in ``text``., Return one finding per illegal character / trailing-rule violation in ``name``., §8.1.2: detect Windows reserved names (``CON``, ``PRN``, ``AUX``, ``NUL``, `, §3.2: flag a project directory whose name is not a safe path segment. The p, _scan_for_illegal_chars() (+5 more) ### Community 237 - "Community 237" -Cohesion: 0.15 -Nodes (13): panel_props(), Test-connection result panel (Frontend Spec §7.4.2). A persistent inline panel, One result rendered in the panel., Compute the rendered props for the panel. Returns a dict suitable for asser, Build the inline result panel. Returns a NiceGUI element, or the props dict, test_connection_panel(), TestConnectionResult, _nas_test_connection() (+5 more) +Cohesion: 0.18 +Nodes (13): Automated UX-interaction documentation + coverage checks. Drives :mod:`tests.e2, Every cataloged ``data-testid`` is present in the UI source., Every cataloged ``data-testid`` is driven by an e2e test. Scans the whole `, Render the catalog into the ``UX_INTERACTIONS.md`` markdown body., ``docs/UX_INTERACTIONS.md`` is regenerated from the catalog. Regenerates th, Guard against an empty catalog silently passing the other checks., Return ``True`` when ``haystack`` references ``testid``. Tolerates testids, _references() (+5 more) ### Community 238 - "Community 238" -Cohesion: 0.19 -Nodes (13): bandwidth_schedule_editor(), BandwidthSchedule, find_overlaps(), Bandwidth schedule editor (Frontend Spec §7.7.3). Lives inside the Equipment Ad, Build the schedule editor., One row in the schedule table., The full editor state., Return an error string if ``window`` is invalid, else ``None``. Time string (+5 more) +Cohesion: 0.15 +Nodes (14): ensure_central_log_dir(), ensure_dir(), os_central_log_path(), Return the OS-appropriate central log file. Backend Spec §16.3., ``mkdir -p`` the given path; return it. Idempotent., ``ensure_dir(os_central_log_path().parent)``., test_ensure_central_log_dir_creates_parent(), test_ensure_dir_creates_missing() (+6 more) ### Community 239 - "Community 239" -Cohesion: 0.14 -Nodes (14): code:bash (git add src/exlab_wizard/sync/transports/rclone.py tests/uni), code:python (# tests/unit/sync/test_transports.py — add), code:python (async def lsjson(self, remote: str, *, recursive: bool = Tru), code:bash (git add src/exlab_wizard/sync/transports/rclone.py tests/uni), code:python (# tests/unit/sync/test_transports.py — add), code:python (async def listremotes(self) -> tuple[str, ...]:), code:bash (git add src/exlab_wizard/sync/transports/rclone.py tests/uni), code:python (# tests/unit/sync/test_transports.py — add) (+6 more) +Cohesion: 0.15 +Nodes (13): main(), Standalone sample-data seeder -- ``python -m exlab_wizard.dev.seed``. Forces th, Regenerate the ``-test`` sample-data tree from scratch. Returns the process, ensure_state_dir(), os_state_path(), Return the OS-appropriate state directory. Backend Spec §15.7., ``ensure_dir(os_state_path())``., test_ensure_state_dir_creates_state_dir() (+5 more) ### Community 240 - "Community 240" -Cohesion: 0.14 -Nodes (14): code:python (# tests/unit/sync/test_transports.py — add (verifier is smal), code:bash (git add src/exlab_wizard/sync/verifier.py tests/unit/sync/te), code:python (# tests/unit/sync/test_nas_client.py — add), code:python (lsjson = self._build_lsjson(equipment)), code:bash (git add src/exlab_wizard/sync/nas_client.py tests/unit/sync/), code:python (# tests/unit/sync/test_nas_client.py — add), code:python (# Integrity gate: never delete local bytes that have not bee), code:bash (git add src/exlab_wizard/sync/nas_client.py tests/unit/sync/) (+6 more) +Cohesion: 0.15 +Nodes (12): bind_global_shortcuts(), is_macos(), Keyboard-shortcut registry (Frontend Spec §3.7). The bindings are intentionally, Return ``True`` when running on macOS (used for combo selection)., Find the shortcut id matching the given key event, if any., Install a NiceGUI keyboard listener for the registry. NiceGUI is imported l, Identifiers for the app-level shortcut set (Frontend §3.7)., Return True if a NiceGUI ``KeyEventArguments`` matches this combo. (+4 more) ### Community 241 - "Community 241" -Cohesion: 0.14 -Nodes (13): 13.1 Topology, 13.2 Staging Area Layout, 13.3 Run Lifecycle States, 13.4 `ingest.json` Schema, 13.5 Run Completeness Signal, 13.6 Transport Handling, 13.7 Staging Cleanup, 13.8 Staging State Query (Backend Contract) (+5 more) +Cohesion: 0.19 +Nodes (13): bandwidth_schedule_editor(), BandwidthSchedule, find_overlaps(), Bandwidth schedule editor (Frontend Spec §7.7.3). Lives inside the Equipment Ad, Build the schedule editor., One row in the schedule table., The full editor state., Return an error string if ``window`` is invalid, else ``None``. Time string (+5 more) ### Community 242 - "Community 242" -Cohesion: 0.14 -Nodes (13): A run dir without a creation.json yields {path, name}, not crash., A run dir without a creation.json yields {path, name}, not crash., A run dir without a creation.json yields {path, name}, not crash., A run dir without a creation.json yields {path, name}, not crash., A run dir without a creation.json yields {path, name}, not crash., A schema_version mismatch (read_catalogue -> None) yields ``[]``., A schema_version mismatch (read_catalogue -> None) yields ``[]``., A schema_version mismatch (read_catalogue -> None) yields ``[]``. (+5 more) +Cohesion: 0.24 +Nodes (13): Unit tests for the Add-Equipment wizard. Redesign §6., The sync-mode step is hidden (orchestrator/staging hidden — see docs/superpo, _state_filled_for(), test_assemble_rejects_invalid_input(), test_assemble_round_trips_to_valid_equipment_config_nas(), test_assemble_round_trips_to_valid_equipment_config_stage(), test_can_advance_paths_requires_both_roots(), test_can_advance_sync_mode_nas_needs_no_transport_fields() (+5 more) ### Community 243 - "Community 243" -Cohesion: 0.15 -Nodes (13): No controller -> a negative toast and no dialog open., No controller -> a negative toast and no dialog open., An async probe is awaited before its dict is mapped., A wired controller builds the modal and opens it (no raise)., No controller -> a negative toast and no dialog open., A wired controller builds the modal and opens it (no raise)., No controller -> a negative toast and no dialog open., No controller -> a negative toast and no dialog open. (+5 more) +Cohesion: 0.14 +Nodes (14): code:bash (git add src/exlab_wizard/sync/transports/rclone.py tests/uni), code:python (# tests/unit/sync/test_transports.py — add), code:python (async def lsjson(self, remote: str, *, recursive: bool = Tru), code:bash (git add src/exlab_wizard/sync/transports/rclone.py tests/uni), code:python (# tests/unit/sync/test_transports.py — add), code:python (async def listremotes(self) -> tuple[str, ...]:), code:bash (git add src/exlab_wizard/sync/transports/rclone.py tests/uni), code:python (# tests/unit/sync/test_transports.py — add) (+6 more) ### Community 244 - "Community 244" -Cohesion: 0.19 -Nodes (10): _goto(), E2E flow 01: First-launch onboarding. Frontend Spec §6.1 (welcome card + autost, Navigate to a NiceGUI page, tolerating a transient ERR_ABORTED. NiceGUI's c, test_flow_01_onboarding(), _goto(), E2E flow 22: onboarding via the new Add-Equipment wizard (Redesign decision 2)., test_flow_22_main_window_has_add_equipment_in_toolbar(), test_flow_22_welcome_to_add_equipment() (+2 more) +Cohesion: 0.14 +Nodes (14): code:python (# tests/unit/sync/test_transports.py — add (verifier is smal), code:bash (git add src/exlab_wizard/sync/verifier.py tests/unit/sync/te), code:python (# tests/unit/sync/test_nas_client.py — add), code:python (lsjson = self._build_lsjson(equipment)), code:bash (git add src/exlab_wizard/sync/nas_client.py tests/unit/sync/), code:python (# tests/unit/sync/test_nas_client.py — add), code:python (# Integrity gate: never delete local bytes that have not bee), code:bash (git add src/exlab_wizard/sync/nas_client.py tests/unit/sync/) (+6 more) ### Community 245 - "Community 245" -Cohesion: 0.19 -Nodes (12): from_session(), operation_columns(), OperationRow, operations_modal(), In-flight operations panel (Frontend Spec §9.5). A modal reachable from the Syn, Map an operation state to its NiceGUI icon name., Build the operations modal., A single row in the operations panel. (+4 more) +Cohesion: 0.14 +Nodes (14): 4.4.1 CreationController, 4.4.2 TemplateEngine, 4.4.3 PluginHost, 4.4.4 Validator, 4.4.5 CacheWriter, 4.4.7 SessionStore, 4.4 Component Contracts, code:python (class SessionStore:) (+6 more) ### Community 246 - "Community 246" -Cohesion: 0.17 -Nodes (10): clear_run_dir(), Operator-facing staging-clear helper. Backend Spec §13.7. The operator-free per, Delete a staged run's data files; return ``(file_count, bytes_freed)``. Ide, Delete ``run_path`` data files honoring ``retain_cache`` and ``keep_local``., Delete ``run_path`` data files honoring ``retain_cache`` and ``keep_local``., delete_run_files(), _prune_empty_dirs(), Keep-local-aware, symlink-safe deletion of a run's staging copy. Operator-free (+2 more) +Cohesion: 0.14 +Nodes (13): 13.1 Topology, 13.2 Staging Area Layout, 13.3 Run Lifecycle States, 13.4 `ingest.json` Schema, 13.5 Run Completeness Signal, 13.6 Transport Handling, 13.7 Staging Cleanup, 13.8 Staging State Query (Backend Contract) (+5 more) ### Community 247 - "Community 247" -Cohesion: 0.15 -Nodes (13): code:python (# tests/unit/constants/test_enums.py — add), code:bash (git add src/exlab_wizard/constants/enums.py tests/unit/const), code:python (# tests/unit/test_paths.py — add), code:python (def _nas_in_use(config: Config) -> bool:), code:python (remote_lookup = nas_remote_available if nas_remote_available), code:python (def _missing_nas_fields(config: Config | None) -> list[dict[), code:bash (git add src/exlab_wizard/paths.py tests/unit/test_paths.py), code:python (nas_remote_available: Callable[[str], bool] = field(default=) (+5 more) +Cohesion: 0.19 +Nodes (12): from_session(), operation_columns(), OperationRow, operations_modal(), In-flight operations panel (Frontend Spec §9.5). A modal reachable from the Syn, Map an operation state to its NiceGUI icon name., Build the operations modal., A single row in the operations panel. (+4 more) ### Community 248 - "Community 248" -Cohesion: 0.15 -Nodes (12): 6.0 Where Plugins Sit in the Pipeline, 6.10 Test / Debug CLI: `exlab-wizard plugins exec`, 6.4.1 Suspend / resume flow, 6.4.2 Resume contract (what the plugin author must guarantee), 6.4 Plugin Input Escalation (`PluginInputRequired`), 6.7 Example Plugins (Illustrative Catalog), 6.8 Plugin Authoring Checklist, 6.9 Lint CLI: `exlab-wizard plugins lint` (+4 more) +Cohesion: 0.19 +Nodes (12): _nas_mode_equipment(), _password_requiring_nas_equipment(), Settings dialog (Frontend Spec §7). Two-pane modal with a left vertical-nav and, Return nas-mode equipment whose transport sources a keyring password. Share, Return the nas-mode equipment for ``config``. Drives the NAS-remote section, Return the nas-mode equipment for ``config``. Drives the NAS-remote section, Return the visible section ids for ``config``. The NAS-remote section is in, Return the visible section ids for ``config``. The NAS-remote section is in (+4 more) ### Community 249 - "Community 249" +Cohesion: 0.15 +Nodes (13): code:python (# tests/unit/constants/test_enums.py — add), code:bash (git add src/exlab_wizard/constants/enums.py tests/unit/const), code:python (# tests/unit/test_paths.py — add), code:python (def _nas_in_use(config: Config) -> bool:), code:python (remote_lookup = nas_remote_available if nas_remote_available), code:python (def _missing_nas_fields(config: Config | None) -> list[dict[), code:bash (git add src/exlab_wizard/paths.py tests/unit/test_paths.py), code:python (nas_remote_available: Callable[[str], bool] = field(default=) (+5 more) + +### Community 250 - "Community 250" Cohesion: 0.38 Nodes (12): _config_with(), _nas_equipment(), Tests for the Settings NAS-credentials section (rclone-only migration). The sec, _stage_equipment(), test_handlers_factory_called_per_equipment_id(), test_present_password_opens_set_state_with_clear_action(), test_section_nav_entry_absent_for_stage_only_config(), test_section_nav_entry_present_when_password_equipment_exists() (+4 more) -### Community 250 - "Community 250" +### Community 251 - "Community 251" Cohesion: 0.17 -Nodes (12): config_with_equipment_appended(), Return a copy of ``config`` with ``equipment`` appended. The single place t, Return a copy of ``config`` with ``equipment`` appended. The single place t, A ``None`` config (fresh install) yields a default Config + the device., Appending keeps prior equipment and other config sections, unmutated., A device whose id already exists raises ConfigError, not a silent merge., A ``None`` config (fresh install) yields a default Config + the device., Appending keeps prior equipment and other config sections, unmutated. (+4 more) +Nodes (11): Sync-status icon component (Frontend Spec §3.2, §10.5.1). Distinct visual state, Return the sync-status legend rows, in declaration order (Phase 5). One dic, Build a NiceGUI row containing the icon and optional retry counter., Build a NiceGUI row containing the icon and optional retry counter., Build a NiceGUI row containing the icon and optional retry counter. ``stric, Build a NiceGUI row containing the icon and optional retry counter. ``stric, Build a NiceGUI row containing the icon and optional retry counter. ``stric, sync_legend_entries() (+3 more) -### Community 251 - "Community 251" +### Community 252 - "Community 252" +Cohesion: 0.17 +Nodes (12): check_mode_prefix_mismatch(), §8.1.3: detect three-way disagreement between ``run_kind``, leaf prefix, and, Redesign §3.4: experimental run leaf parented by ``Runs`` is valid., Redesign §3.4: a misplaced ``Run_*`` directly under the project (not under `, test_experimental_under_test_runs_parent_fires(), test_experimental_with_run_prefix_at_project_level_fires(), test_experimental_with_run_prefix_under_runs_parent_passes(), test_experimental_with_test_run_prefix_fires() (+4 more) + +### Community 253 - "Community 253" +Cohesion: 0.24 +Nodes (11): _make_client(), Integration tests for the LIMS client + cache pair. Backend Spec §7.2. These te, A 401-then-relogin flow successfully refreshes and caches results., list_projects() fills the cache; the cache then returns the same rows., A get_project against the cache hits without a live LIMS call., When cache TTL expires, a refresh from the live API rewrites rows., test_cache_satisfies_lookup_without_network(), test_client_populates_cache() (+3 more) + +### Community 254 - "Community 254" +Cohesion: 0.18 +Nodes (6): aiosqlite-backed cache for LIMS project rows. Backend Spec §7.2.4. The cache li, Insert or update every row. ``last_refreshed`` is taken from each ``LIMS, Return every cached project for ``endpoint``, optionally filtered by ``s, Return one project by uid or short_id, or None if absent., True iff the most recent ``last_refreshed`` is within ``ttl_hours`` of t, _row_to_project() + +### Community 255 - "Community 255" Cohesion: 0.21 Nodes (10): Read and decode the run's ``sync_state.json``. Returns a fresh empty :c, _CacheCase, Integration tests for the cross-major-read-fails contract from §11.9.2. For eve, Walk the candidate matrix and return the first reader method we find. Each, A v2.0 file MUST be refused by every v1.x reader (§11.9.2 rule 3)., A v3.7 file is also refused; the rule isn't tied to ``2.0`` specifically., One cache-file flavour to exercise against the reader gate., _resolve_reader() (+2 more) -### Community 252 - "Community 252" +### Community 256 - "Community 256" Cohesion: 0.2 Nodes (12): project_name_violations(), Return every way ``value`` fails the §3.2 project-name rule. The project fo, Validate ``value`` as a §3.2 project-folder name. Returns the input unchang, validate_project_name(), Spaces and ordinary punctuation are fine -- the name is used verbatim., Spaces and ordinary punctuation are fine -- the name is used verbatim., The §3.2 contract is 'used verbatim' -- no canonicalisation., The §3.2 contract is 'used verbatim' -- no canonicalisation. (+4 more) -### Community 253 - "Community 253" +### Community 257 - "Community 257" Cohesion: 0.17 Nodes (10): A populated registry of shortcut handlers. Pages instantiate one registry,, Attach a handler. Only one handler per shortcut. Raises: Va, Invoke the handler for ``shortcut`` if registered. Returns ``True`` if, ShortcutRegistry, ``ShortcutRegistry`` dispatches the registered handler exactly once., Dispatching an unbound shortcut returns ``False`` and runs no handler., Two handlers per shortcut is forbidden., test_registry_dispatch_returns_false_when_unbound() (+2 more) -### Community 254 - "Community 254" +### Community 258 - "Community 258" Cohesion: 0.2 Nodes (11): apply_frame(), compute_phase_rows(), PhaseRow, Wizard session-progress bar (Frontend Spec §10.1, §9.3). Drives a phase indicat, Build the progress bar for the Confirm & Create step. The wizard reaches in, Mutable phase/sub-progress state folded from controller WS frames. The wiza, Fold one controller WS ``frame`` into ``state`` in place. Returns ``True``, One renderable row in the session-progress component. (+3 more) -### Community 255 - "Community 255" +### Community 259 - "Community 259" Cohesion: 0.2 Nodes (11): Template manager page (Frontend Spec §4 step 2, §5 step 2). Two operations the, Render one Copier question as a bound NiceGUI widget. The widget two-way bi, Render the template manager: existing-template list + create form. ``on_cre, One row in the template list. ``name`` is the template directory name (what, One Copier question parsed from a template's ``copier.yml``. ``kind`` is no, render_question_field(), render_template_manager(), TemplateQuestion (+3 more) -### Community 256 - "Community 256" -Cohesion: 0.24 -Nodes (11): _make_client(), Integration tests for the LIMS client + cache pair. Backend Spec §7.2. These te, A 401-then-relogin flow successfully refreshes and caches results., list_projects() fills the cache; the cache then returns the same rows., A get_project against the cache hits without a live LIMS call., When cache TTL expires, a refresh from the live API rewrites rows., test_cache_satisfies_lookup_without_network(), test_client_populates_cache() (+3 more) - -### Community 257 - "Community 257" -Cohesion: 0.18 -Nodes (6): aiosqlite-backed cache for LIMS project rows. Backend Spec §7.2.4. The cache li, Insert or update every row. ``last_refreshed`` is taken from each ``LIMS, Return every cached project for ``endpoint``, optionally filtered by ``s, Return one project by uid or short_id, or None if absent., True iff the most recent ``last_refreshed`` is within ``ttl_hours`` of t, _row_to_project() +### Community 260 - "Community 260" +Cohesion: 0.17 +Nodes (12): EquipmentWizardState, Render the self-contained Add-Equipment wizard. Next / Back navigation is h, Render the self-contained Add-Equipment wizard. Next / Back navigation is h, Render the self-contained Add-Equipment wizard. Next / Back navigation is h, Mutable state for the in-flight Add-Equipment wizard., Mutable state for the in-flight Add-Equipment wizard., Mutable state for the in-flight Add-Equipment wizard., render_wizard_equipment() (+4 more) -### Community 258 - "Community 258" +### Community 261 - "Community 261" Cohesion: 0.17 -Nodes (12): check_mode_prefix_mismatch(), §8.1.3: detect three-way disagreement between ``run_kind``, leaf prefix, and, Redesign §3.4: experimental run leaf parented by ``Runs`` is valid., Redesign §3.4: a misplaced ``Run_*`` directly under the project (not under `, test_experimental_under_test_runs_parent_fires(), test_experimental_with_run_prefix_at_project_level_fires(), test_experimental_with_run_prefix_under_runs_parent_passes(), test_experimental_with_test_run_prefix_fires() (+4 more) +Nodes (12): config_with_equipment_appended(), Return a copy of ``config`` with ``equipment`` appended. The single place t, Return a copy of ``config`` with ``equipment`` appended. The single place t, A ``None`` config (fresh install) yields a default Config + the device., Appending keeps prior equipment and other config sections, unmutated., A device whose id already exists raises ConfigError, not a silent merge., A ``None`` config (fresh install) yields a default Config + the device., Appending keeps prior equipment and other config sections, unmutated. (+4 more) -### Community 259 - "Community 259" +### Community 262 - "Community 262" Cohesion: 0.24 Nodes (10): atomic_write_bytes(), Atomic file writes via the §4.4.5 temp-file + ``os.replace`` recipe. This is th, Write ``data`` to ``path`` atomically. Implementation follows the §4.4.5 re, Tests for ``exlab_wizard.io.atomic_write``., test_atomic_write_calls_fsync_by_default(), test_atomic_write_cleans_up_temp_on_replace_failure(), test_atomic_write_creates_file(), test_atomic_write_leaves_no_temp_file_on_success() (+2 more) -### Community 260 - "Community 260" +### Community 263 - "Community 263" Cohesion: 0.24 Nodes (10): load_or_create_storage_secret(), Per-installation NiceGUI ``storage_secret`` token. Backend Spec §15.3. NiceGUI', Return the per-installation storage secret, generating it if absent. The fi, Tests for ``exlab_wizard.tray.storage_secret``. The secret backs NiceGUI's Star, test_creates_state_dir_if_missing(), test_generates_secret_on_first_call(), test_idempotent_across_calls(), test_regenerates_on_empty_file() (+2 more) -### Community 261 - "Community 261" -Cohesion: 0.18 -Nodes (11): lims_password_present(), nas_password_present(), nas_remote_available(), Shared FastAPI dependency helpers for the wizard's HTTP routers. The lifespan h, Return whether a LIMS password is stored -- the repo-wide reader. Every sur, Return whether ``remote`` is present in the operator's rclone.conf. rclone., Return ``deps.controller`` or raise a structured 503. Used by the routes th, Return ``deps.controller`` or raise a structured 503. Used by the routes th (+3 more) - -### Community 262 - "Community 262" -Cohesion: 0.17 -Nodes (11): Add equipment, Equipment, File explorer, First-launch setup, NAS Credentials, NAS Remote, New project, New run / test run (+3 more) - -### Community 263 - "Community 263" +### Community 264 - "Community 264" Cohesion: 0.17 -Nodes (12): 3.1.1 Setup-complete definition, 3.1.2 Boot flow, 3.1.3 Welcome Card (first launch only), 3.1.4 Setup-Incomplete state on the Main Window, 3.1.5 First-launch defaults, 3.1.6 Bundled content discovery, 3.1.7 LIMS configuration: online and offline workstations, 3.1 Application Lifecycle and First-Launch State (+4 more) +Nodes (11): Async SQLite-backed durable sync queue. Backend Spec §7.1.1. Use :meth:`ini, Open the connection, ensure the schema, and replay in-flight rows. Repl, SyncQueue, queue(), A queue rebuilt against the same db file sees the prior rows., A RUNNING row from a prior process is downgraded to QUEUED on restart., Operations without init() raise a clear RuntimeError., test_close_is_idempotent() (+3 more) ### Community 265 - "Community 265" -Cohesion: 0.22 -Nodes (8): from_check_result(), SHA-256 verifier wrapper around ``rclone check --download``. Rclone-only NAS sy, Run ``rclone check --download`` over ``files_from`` and translate. Rais, Run ``rclone check --download`` over ``files_from`` and translate. Rais, Outcome of one ``rclone check --download`` pass against a remote. ``ok`` is, Verifier: ``rclone check`` wrapper, no Python SHA pipeline. Constructed wit, Verifier, VerifyResult +Cohesion: 0.18 +Nodes (10): compute_next_attempt_at(), Return the ISO timestamp of the next retry attempt. ``attempts_after`` is t, Transition a job to ``new_state`` and patch the auxiliary columns. The, Record a transport failure on ``job_id``. If ``terminal`` is True (auth, The 1st through 5th attempts use the documented backoff sequence., Attempts <1 or >MAX_ATTEMPTS yield ``None``., test_compute_next_attempt_at_out_of_range(), test_compute_next_attempt_at_uses_schedule() (+2 more) ### Community 266 - "Community 266" -Cohesion: 0.18 -Nodes (11): _lims_projects(), Return the LIMS projects backing the project wizard's picker. Tries the liv, Return the LIMS projects backing the project wizard's picker. Tries the liv, Return the LIMS projects backing the project wizard's picker. Tries the liv, Return the LIMS projects backing the project wizard's picker. Tries the liv, Return the LIMS projects backing the project wizard's picker. Tries the liv, Return the LIMS projects backing the project wizard's picker. Tries the liv, Return the LIMS projects backing the project wizard's picker. Tries the liv (+3 more) +Cohesion: 0.17 +Nodes (11): Add equipment, Equipment, File explorer, First-launch setup, NAS Credentials, NAS Remote, New project, New run / test run (+3 more) ### Community 267 - "Community 267" -Cohesion: 0.18 -Nodes (10): code:yaml (name: "xlsx_field_filler"), code:yaml (supported_extensions: [".xlsx"] # file-extension or "readm), code:yaml (required_variables:), code:yaml (isolation:), Discovery rules, Manifest Schema, Optional declaration block, Optional execution policy (+2 more) +Cohesion: 0.17 +Nodes (12): 3.1.1 Setup-complete definition, 3.1.2 Boot flow, 3.1.3 Welcome Card (first launch only), 3.1.4 Setup-Incomplete state on the Main Window, 3.1.5 First-launch defaults, 3.1.6 Bundled content discovery, 3.1.7 LIMS configuration: online and offline workstations, 3.1 Application Lifecycle and First-Launch State (+4 more) ### Community 268 - "Community 268" -Cohesion: 0.27 -Nodes (9): collect_default_values(), _field_id(), input_required_dialog(), Plugin ``INPUT_REQUIRED`` escalation dialog (Frontend Spec §9.1). When a plugin, Return the field's identifier (``id``, falling back to ``key``)., Seed an answers dict from each field's declared default. Booleans default t, Build the §9.1 "Additional input required" dialog. Renders one widget per f, test_collect_default_values_seeds_from_declared_defaults() (+1 more) - -### Community 269 - "Community 269" Cohesion: 0.2 -Nodes (10): A subprocess failure is caught and surfaces False so the caller can toast., A subprocess failure is caught and surfaces False so the caller can toast., A subprocess failure is caught and surfaces False so the caller can toast., Empty path or a path matching no current entry resolves to None., Empty path or a path matching no current entry resolves to None., A subprocess failure is caught and surfaces False so the caller can toast., A subprocess failure is caught and surfaces False so the caller can toast., A subprocess failure is caught and surfaces False so the caller can toast. (+2 more) +Nodes (10): _deep_merge(), dump_config(), config.yaml round-trip loader. Backend Spec §9. Uses ruamel.yaml in round-trip, In-place deep-merge source into target. Used by save_config to overlay new, Serialize config to a YAML string. No comment preservation; tests use this., Return True when the env var :data:`TEST_MODE_ENV` is truthy. Centralized h, Build a configured ruamel.yaml instance. typ='rt' is round-trip mode (prese, _test_mode_enabled() (+2 more) ### Community 270 - "Community 270" -Cohesion: 0.2 -Nodes (10): An entry with no path triggers the early-return toast., An entry with no path triggers the early-return toast., An entry with no path triggers the early-return toast., A force-refresh writes the fresh scan onto the per-tab feed payload and reco, A force-refresh writes the fresh scan onto the per-tab feed payload., An entry with no path triggers the early-return toast., An entry with no path triggers the early-return toast., An entry with no path triggers the early-return toast. (+2 more) +Cohesion: 0.24 +Nodes (8): ProdServer, Terminate the uvicorn process. Idempotent., Stop and re-spawn the process with the same HOME / port., A spawnable / restartable production-app uvicorn process. ``home`` is the r, Spawn uvicorn and block until ``/api/v1/health`` answers 200. Returns `, prod_server(), Yield a started :class:`ProdServer` rooted at a fresh tmp HOME. The keyring, Yield a started :class:`ProdServer` rooted at a fresh tmp HOME. The keyring ### Community 271 - "Community 271" -Cohesion: 0.2 -Nodes (10): LoggingConfig, ``logging:`` block. Central app-log rotation + level., ``logging:`` block. Central app-log rotation + level., test_logging_central_log_keep_at_least_one(), test_logging_central_log_max_mb_at_least_one(), test_logging_level_accepts_all_canonical_values(), test_logging_level_normalized_to_uppercase(), test_logging_level_rejects_non_string_directly() (+2 more) +Cohesion: 0.18 +Nodes (3): fake_winreg(), _FakeKey, _FakeWinreg ### Community 272 - "Community 272" -Cohesion: 0.2 -Nodes (7): _compute_nas_path(), Return the equipment id for a run path. Prefers an explicit equipment i, Return the equipment id for a run path. Prefers an explicit equipment i, Mutate ``creation.json`` ``sync_status`` to ``blocked_by_validation``., Mutate ``creation.json`` ``sync_status`` to ``blocked_by_validation``., Pre-Sync Gate -> if hard-tier finding without override, mark ``sync_stat, Pre-Sync Gate -> if hard-tier finding without override, mark ``sync_stat +Cohesion: 0.22 +Nodes (5): Close the underlying connection (idempotent)., Return the row whose ``run_path`` matches, or ``None``., Return every row currently in ``state`` ordered by ``enqueued_at``., Return every row in the queue ordered by ``enqueued_at``., Remove a job row entirely. Used by the cleanup reaper after CLEANED. ### Community 273 - "Community 273" -Cohesion: 0.2 -Nodes (9): corrupt_one_check_factory(), missing_one_lsjson_factory(), Shared helpers for ``tests/unit/sync/`` test modules. Kept under a leading-unde, lsjson factory whose closure omits ``missing_rel`` from the manifest. Every, Check factory whose closure flags ``corrupt_rel`` as ``differ``. Every othe, Read run-relative paths from a ``--files-from`` tempfile., Read run-relative paths from a ``--files-from`` tempfile., Check factory whose closure flags ``corrupt_rel`` as ``differ``. Every othe (+1 more) +Cohesion: 0.18 +Nodes (10): code:yaml (name: "xlsx_field_filler"), code:yaml (supported_extensions: [".xlsx"] # file-extension or "readm), code:yaml (required_variables:), code:yaml (isolation:), Discovery rules, Manifest Schema, Optional declaration block, Optional execution policy (+2 more) ### Community 274 - "Community 274" -Cohesion: 0.22 -Nodes (10): ensure_central_log_dir(), os_central_log_path(), Return the OS-appropriate central log file. Backend Spec §16.3., ``ensure_dir(os_central_log_path().parent)``., test_ensure_central_log_dir_creates_parent(), test_os_central_log_path_linux_with_xdg(), test_os_central_log_path_linux_without_xdg(), test_os_central_log_path_macos() (+2 more) +Cohesion: 0.18 +Nodes (10): 1. What has shipped (committed on the branch), 2. Divergences from the approved design spec (must be reconciled), A. Spec reconciliation ✅ DONE, B. Phase 5 — Polish (reconcile each item with the popover), C. Phase 6 — e2e + final verification ✅ DONE (`e72cd73`), D. Cleanup / tech-debt, E. Risks & open questions, F. Deferred / out of scope (from design spec §11) (+2 more) ### Community 275 - "Community 275" -Cohesion: 0.2 -Nodes (9): Unit tests for :mod:`exlab_wizard.ui.keyboard`. The registry is intentionally s, Resolver returns the right shortcut id on non-darwin., Unknown combos resolve to ``None``., ``KeyCombo.matches`` is exact-match across modifiers and key., ``Cmd+R`` / ``Ctrl+R``., test_keycombo_matches_returns_true_for_same_modifiers(), test_refresh_tree_combo(), test_resolve_finds_known_combo_on_linux() (+1 more) +Cohesion: 0.27 +Nodes (9): collect_default_values(), _field_id(), input_required_dialog(), Plugin ``INPUT_REQUIRED`` escalation dialog (Frontend Spec §9.1). When a plugin, Return the field's identifier (``id``, falling back to ``key``)., Seed an answers dict from each field's declared default. Booleans default t, Build the §9.1 "Additional input required" dialog. Renders one widget per f, test_collect_default_values_seeds_from_declared_defaults() (+1 more) ### Community 276 - "Community 276" Cohesion: 0.2 @@ -1750,658 +1774,822 @@ Nodes (10): check_missing_required_field(), _lookup_field_value(), §8.1.5: dete ### Community 277 - "Community 277" Cohesion: 0.2 -Nodes (10): 05 -- Components, Alerts & Callouts, Badges, Buttons, code:css (.progress-track {), code:css (/* Track */), Data Tables, Form Inputs (+2 more) +Nodes (6): Plugin, test_plugin_abc_cannot_be_instantiated_directly(), Failure fixture: plugin that hangs in ``transform`` past its timeout., timeout_plugin -- exercises Backend Spec §6.3.4 timeout enforcement. The plugin, Hang past the declared timeout. Never reaches its file write., TimeoutPlugin ### Community 278 - "Community 278" -Cohesion: 0.2 -Nodes (9): Adding a new flow, code:block1 (pip install -e .[test]), code:block2 (pytest tests/e2e -q # full suite (headless), E2E test suite, Page objects, Run, Setup, Status of the 15-flow merged plan (+1 more) +Cohesion: 0.42 +Nodes (8): _make_project_request(), Unit tests for the ``/operations`` router., _ready_config(), _StubController, test_get_operations_503_when_controller_missing(), test_get_operations_emits_plugin_name_when_input_required(), test_get_operations_excludes_done_and_aborted(), test_get_operations_lists_in_flight_sessions() ### Community 279 - "Community 279" Cohesion: 0.2 -Nodes (10): 10.1 Progress, 10.2 Errors, 10.3 Success Summary, 10.4 Sync-Blocked Banner, 10.5.1 NAS sync failure recovery, 10.5.2 LIMS unreachability mid-wizard, 10.5.3 Crash and orphan recovery, 10.5.4 Pre-flight checks before creation (+2 more) +Nodes (9): Unit tests for :mod:`exlab_wizard.ui.keyboard`. The registry is intentionally s, Resolver returns the right shortcut id on non-darwin., Unknown combos resolve to ``None``., ``KeyCombo.matches`` is exact-match across modifiers and key., ``Cmd+R`` / ``Ctrl+R``., test_keycombo_matches_returns_true_for_same_modifiers(), test_refresh_tree_combo(), test_resolve_finds_known_combo_on_linux() (+1 more) ### Community 280 - "Community 280" -Cohesion: 0.2 -Nodes (10): 6.1.1 Package layout, 6.1.2 `manifest.yml` schema, 6.1.3 The `Plugin` base class, 6.1.4 The `PluginContext` object, 6.1.5 What plugins must not touch, 6.1 Plugin Contract, code:block2 (/), code:yaml (# Required identity fields) (+2 more) +Cohesion: 0.29 +Nodes (9): _build_creation_json_dict(), _build_fixture_tree(), Integration test: ``Validator.audit`` is byte-deterministic across runs. Backen, Spec §11.8 determinism: two ``audit`` calls produce identical findings. The, ``audit`` and ``query_problems`` produce byte-identical outputs. This is th, Construct a tree with several findings in stable on-disk shape. The tree co, test_audit_byte_identical_with_query_problems_alias(), test_audit_two_calls_return_byte_identical_finding_lists() (+1 more) ### Community 281 - "Community 281" Cohesion: 0.2 -Nodes (10): 6.5.1 Directory, 6.5.2 `__init__.py`, 6.5.3 `manifest.yml`, 6.5.4 `plugin.py`, 6.5.5 `README.md`, 6.5 Base Plugin Scaffold (`hello_plugin`), code:block10 (hello_plugin/), code:python ("""hello_plugin -- minimal example plugin for ExLab-Wizard.) (+2 more) +Nodes (10): 05 -- Components, Alerts & Callouts, Badges, Buttons, code:css (.progress-track {), code:css (/* Track */), Data Tables, Form Inputs (+2 more) ### Community 282 - "Community 282" Cohesion: 0.2 -Nodes (9): 4.1 Deployment Model, 4.2 Process Model, 4.5 Async / Threading Model, 4.7.1 SessionState → Phase mapping, 4.7 Creation-Session State Machine, 4.8 Crash Recovery, 4. Backend Architecture, code:block1 (┌───────────────────────────────────────────────────────────) (+1 more) +Nodes (9): Adding a new flow, code:block1 (pip install -e .[test]), code:block2 (pytest tests/e2e -q # full suite (headless), E2E test suite, Page objects, Run, Setup, Status of the 15-flow merged plan (+1 more) + +### Community 283 - "Community 283" +Cohesion: 0.2 +Nodes (10): 10.1 Progress, 10.2 Errors, 10.3 Success Summary, 10.4 Sync-Blocked Banner, 10.5.1 NAS sync failure recovery, 10.5.2 LIMS unreachability mid-wizard, 10.5.3 Crash and orphan recovery, 10.5.4 Pre-flight checks before creation (+2 more) ### Community 284 - "Community 284" -Cohesion: 0.5 -Nodes (8): _make_project_request(), Unit tests for the ``/operations`` router., _ready_config(), _StubController, test_get_operations_503_when_controller_missing(), test_get_operations_emits_plugin_name_when_input_required(), test_get_operations_excludes_done_and_aborted(), test_get_operations_lists_in_flight_sessions() +Cohesion: 0.2 +Nodes (10): 6.1.1 Package layout, 6.1.2 `manifest.yml` schema, 6.1.3 The `Plugin` base class, 6.1.4 The `PluginContext` object, 6.1.5 What plugins must not touch, 6.1 Plugin Contract, code:block2 (/), code:yaml (# Required identity fields) (+2 more) ### Community 285 - "Community 285" -Cohesion: 0.31 -Nodes (8): _build_minimal_payload(), Integration test: concurrent ``creation.json`` writers serialize correctly. Spe, An interleaved write must never produce a half-written file. The ``os.replac, Run 10 ``update_creation_atomic`` calls concurrently against the same file., The writer pins ``schema_version`` to the current version on every write. Co, test_concurrent_mutations_keep_file_valid_json(), test_concurrent_mutations_keep_schema_at_current_version(), test_ten_concurrent_mutations_all_land() +Cohesion: 0.2 +Nodes (10): 6.5.1 Directory, 6.5.2 `__init__.py`, 6.5.3 `manifest.yml`, 6.5.4 `plugin.py`, 6.5.5 `README.md`, 6.5 Base Plugin Scaffold (`hello_plugin`), code:block10 (hello_plugin/), code:python ("""hello_plugin -- minimal example plugin for ExLab-Wizard.) (+2 more) ### Community 286 - "Community 286" -Cohesion: 0.22 -Nodes (6): Open the queue and start the worker task. Backend Spec §7.1.2., Open the queue and start the worker task. Backend Spec §7.1.2., Pick the next due job and drive it through the state machine., Return the next QUEUED row whose backoff has passed (or None)., Pick the next due job and drive it through the state machine., Return the next QUEUED row whose backoff has passed (or None). +Cohesion: 0.2 +Nodes (9): 6.0 Where Plugins Sit in the Pipeline, 6.10 Test / Debug CLI: `exlab-wizard plugins exec`, 6.7 Example Plugins (Illustrative Catalog), 6.8 Plugin Authoring Checklist, 6.9 Lint CLI: `exlab-wizard plugins lint`, 6. Plugin System, code:block1 (┌───────────────────────────────────────────────────────────), code:block16 (exlab-wizard plugins lint ) (+1 more) ### Community 287 - "Community 287" -Cohesion: 0.31 -Nodes (8): _install_stub_rclone(), nas_prod_server(), E2E flow 27: NAS Remote setup gate + Settings section (rclone.conf migration)., Spawn the production wizard seeded with a credential-less nas equipment. Yi, Spawn the production wizard seeded with a credential-less nas equipment. Yi, _setup_state(), test_nas_credential_gate_set_test_and_clear(), test_nas_remote_gate_configure_and_test() +Cohesion: 0.2 +Nodes (9): 4.1 Deployment Model, 4.2 Process Model, 4.5 Async / Threading Model, 4.7.1 SessionState → Phase mapping, 4.7 Creation-Session State Machine, 4.8 Crash Recovery, 4. Backend Architecture, code:block1 (┌───────────────────────────────────────────────────────────) (+1 more) ### Community 288 - "Community 288" -Cohesion: 0.25 -Nodes (8): build_operations_router(), OperationEntry, OperationsResponse, ``/operations`` router. Backend Spec §4.6.1, Frontend §9.5. Lists all in-flight, One row in the Operations panel. Backend Spec §4.6.1, Frontend §9.5., ``GET /operations`` response., Construct the ``/operations`` router., _session_to_entry() - -### Community 289 - "Community 289" -Cohesion: 0.22 -Nodes (9): Reusable chip / list editor bound to a draft string list (T7 / T10). Mutate, Reusable chip / list editor bound to a draft string list (T7 / T10). Mutate, Render the content for a single section, bound to ``draft``. Every scalar f, Render the content for a single section, bound to ``draft``. Every scalar f, Render the equipment list + a full add-equipment sub-form. Adding an entry, Render the equipment list + a full add-equipment sub-form. Adding an entry, _render_chip_editor(), _render_equipment_section() (+1 more) +Cohesion: 0.39 +Nodes (8): _by_testid(), Unit tests for the shared empty-state placeholder (Phase 5). The helper renders, The placeholder keeps the caller's testid (once) and shows the hint., The icon name reaches the rendered icon element., test_empty_state_carries_testid_and_message(), test_empty_state_renders_the_icon(), _texts(), _walk() ### Community 290 - "Community 290" -Cohesion: 0.22 -Nodes (9): _nas_mode_equipment(), _password_requiring_nas_equipment(), Return nas-mode equipment whose transport sources a keyring password. Share, Return the nas-mode equipment for ``config``. Drives the NAS-remote section, Return the visible section ids for ``config``. The NAS-remote section is in, Return the visible section ids for ``config``. The NAS-credentials section, Render one keyring-credential row + Test-connection panel per equipment. Rc, _render_nas_credentials_section() (+1 more) +Cohesion: 0.25 +Nodes (8): build_operations_router(), OperationEntry, OperationsResponse, ``/operations`` router. Backend Spec §4.6.1, Frontend §9.5. Lists all in-flight, One row in the Operations panel. Backend Spec §4.6.1, Frontend §9.5., ``GET /operations`` response., Construct the ``/operations`` router., _session_to_entry() ### Community 291 - "Community 291" -Cohesion: 0.22 -Nodes (8): 3.6 Configure Equipment, Paths, and Integrations, Add Equipment wizard, Capability summary, code:{image} (:alt: Settings dialog with the Paths section active), code:{image} (:alt: Add-Equipment wizard, identity step), Related material, Screenshots, Walkthrough +Cohesion: 0.31 +Nodes (8): _install_stub_rclone(), nas_prod_server(), E2E flow 27: NAS Remote setup gate + Settings section (rclone.conf migration)., Spawn the production wizard seeded with a credential-less nas equipment. Yi, Spawn the production wizard seeded with a credential-less nas equipment. Yi, _setup_state(), test_nas_credential_gate_set_test_and_clear(), test_nas_remote_gate_configure_and_test() ### Community 292 - "Community 292" Cohesion: 0.22 -Nodes (9): code:python (# tests/unit/config/test_models.py — add), code:python (class RclonePerf(BaseModel):), code:python (nas: NasConfig = Field(default_factory=NasConfig)), code:bash (git add src/exlab_wizard/config/models.py tests/unit/config/), code:python (# tests/unit/config/test_loader.py — add), code:bash (git add tests/unit/config/test_loader.py), Phase 1 — Config foundation (`nas:` block, additive), Task 1.1: Add `RclonePerf` and `NasConfig` models (+1 more) +Nodes (9): ``sync:`` block. NAS sync engine kill-switch + retry / quiescence policy., ``sync:`` block. NAS sync engine kill-switch + retry / quiescence policy., SyncConfig, test_sync_config_accepts_custom_quiescence_settings(), test_sync_config_defaults(), test_sync_config_ignore_globs_default_is_independent_per_instance(), test_sync_config_poll_interval_seconds_at_least_one(), test_sync_config_quiescence_minutes_at_least_one() (+1 more) ### Community 293 - "Community 293" -Cohesion: 0.22 -Nodes (9): 6.3.1 Process model, 6.3.2 IPC envelope, 6.3.3 Resource limits, 6.3.4 Failure handling, 6.3.5 Security model: what isolation does and does not solve, 6.3.6 Validation-worker subprocess (mode = `validate`), 6.3 Subprocess Isolation, code:json ({) (+1 more) +Cohesion: 0.25 +Nodes (6): from_check_result(), SHA-256 verifier wrapper around ``rclone check --download``. Rclone-only NAS sy, Run ``rclone check --download`` over ``files_from`` and translate. Rais, Run ``rclone check --download`` over ``files_from`` and translate. Rais, Verifier: ``rclone check`` wrapper, no Python SHA pipeline. Constructed wit, Verifier ### Community 294 - "Community 294" -Cohesion: 0.22 -Nodes (8): 8.1.1 Unresolved-placeholder rule (hard tier), 8.1.2 Illegal-filesystem-character rule (hard tier), 8.1.3 Mode-prefix mismatch rule (hard tier), 8.1.4 Orphan rule (soft tier), 8.1.5 Missing-required-field rule (soft tier), 8.1.6 Tier mapping, 8.1 Path Validation Rules, 8. Error Handling Principles +Cohesion: 0.31 +Nodes (8): _build_minimal_payload(), Integration test: concurrent ``creation.json`` writers serialize correctly. Spe, An interleaved write must never produce a half-written file. The ``os.replac, Run 10 ``update_creation_atomic`` calls concurrently against the same file., The writer pins ``schema_version`` to the current version on every write. Co, test_concurrent_mutations_keep_file_valid_json(), test_concurrent_mutations_keep_schema_at_current_version(), test_ten_concurrent_mutations_all_land() ### Community 295 - "Community 295" -Cohesion: 0.25 -Nodes (8): A corrupt creation.json yields {path, name}, never crashes., A corrupt creation.json yields {path, name}, never crashes., A corrupt creation.json yields {path, name}, never crashes., A corrupt creation.json yields {path, name}, never crashes., A corrupt creation.json yields {path, name}, never crashes., A corrupt creation.json yields {path, name}, never crashes., A corrupt creation.json yields {path, name}, never crashes., test_metadata_for_run_returns_partial_on_decode_failure() +Cohesion: 0.22 +Nodes (8): 3.6 Configure Equipment, Paths, and Integrations, Add Equipment wizard, Capability summary, code:{image} (:alt: Settings dialog with the Paths section active), code:{image} (:alt: Add-Equipment wizard, identity step), Related material, Screenshots, Walkthrough ### Community 296 - "Community 296" -Cohesion: 0.25 -Nodes (8): Only directory children whose names start with the prefix are counted., Only directory children whose names start with the prefix are counted., Only directory children whose names start with the prefix are counted., Only directory children whose names start with the prefix are counted., Only directory children whose names start with the prefix are counted., Only directory children whose names start with the prefix are counted., Only directory children whose names start with the prefix are counted., test_count_dir_children_filters_by_prefix() +Cohesion: 0.22 +Nodes (9): code:python (# tests/unit/config/test_models.py — add), code:python (class RclonePerf(BaseModel):), code:python (nas: NasConfig = Field(default_factory=NasConfig)), code:bash (git add src/exlab_wizard/config/models.py tests/unit/config/), code:python (# tests/unit/config/test_loader.py — add), code:bash (git add tests/unit/config/test_loader.py), Phase 1 — Config foundation (`nas:` block, additive), Task 1.1: Add `RclonePerf` and `NasConfig` models (+1 more) ### Community 297 - "Community 297" -Cohesion: 0.25 -Nodes (8): When the opener returns False the action surfaces a negative toast., When the opener returns False the action surfaces a negative toast., When the opener returns False the action surfaces a negative toast., When the opener returns False the action surfaces a negative toast., When the opener returns False the action surfaces a negative toast., When the opener returns False the action surfaces a negative toast., When the opener returns False the action surfaces a negative toast., test_file_context_action_open_in_os_failure_toasts_negative() +Cohesion: 0.22 +Nodes (9): 6.3.1 Process model, 6.3.2 IPC envelope, 6.3.3 Resource limits, 6.3.4 Failure handling, 6.3.5 Security model: what isolation does and does not solve, 6.3.6 Validation-worker subprocess (mode = `validate`), 6.3 Subprocess Isolation, code:json ({) (+1 more) ### Community 298 - "Community 298" -Cohesion: 0.21 -Nodes (8): Nothing selected -> no scan, no write, no raise., Nothing selected -> no scan, no write, no raise., Nothing selected -> no scan, no write, no raise., A raising keyring backend surfaces a toast, not an unhandled crash., A raising keyring backend surfaces a toast, not an unhandled crash., A raising keyring backend surfaces a toast, not an unhandled crash., test_lims_credential_handlers_swallow_backend_errors(), test_refresh_selected_folder_noop_when_path_none() +Cohesion: 0.22 +Nodes (8): 8.1.1 Unresolved-placeholder rule (hard tier), 8.1.2 Illegal-filesystem-character rule (hard tier), 8.1.3 Mode-prefix mismatch rule (hard tier), 8.1.4 Orphan rule (soft tier), 8.1.5 Missing-required-field rule (soft tier), 8.1.6 Tier mapping, 8.1 Path Validation Rules, 8. Error Handling Principles ### Community 299 - "Community 299" Cohesion: 0.25 -Nodes (8): macOS dispatches to the ``open`` command., macOS dispatches to the ``open`` command., macOS dispatches to the ``open`` command., macOS dispatches to the ``open`` command., macOS dispatches to the ``open`` command., macOS dispatches to the ``open`` command., macOS dispatches to the ``open`` command., test_open_in_os_darwin_invokes_open() +Nodes (8): A one-equipment hierarchy with two runs for the search-count tests., The result pill counts project + run rows (equipment is always shown)., A query surfaces only the matching run under its project., A no-match query yields a zero count (the no-matches state) even though buil, _search_hierarchy(), test_main_count_search_results_counts_projects_and_runs(), test_main_count_search_results_narrows_with_query(), test_main_count_search_results_zero_on_no_match() + +### Community 300 - "Community 300" +Cohesion: 0.25 +Nodes (8): The details dialog renders the session state plus pending/error lines., The details dialog renders the session state plus pending/error lines., The details dialog renders the session state plus pending/error lines., The details dialog renders the session state plus pending/error lines., The details dialog renders the session state plus pending/error lines., The details dialog renders the session state plus pending/error lines., The details dialog renders the session state plus pending/error lines., test_open_operation_details_renders_state_and_pending() ### Community 301 - "Community 301" Cohesion: 0.29 -Nodes (5): _NoiseFilter, Sphinx configuration for ExLab-Wizard documentation. The configuration wires th, Drop uncategorised warnings whose message text matches a known needle. Inse, Install the noise filter at the head of the warning handler chain. Sphinx w, setup() +Nodes (7): Token-equality tests for :mod:`exlab_wizard.ui.design`. The tests assert each c, Primary palette hexes are verbatim from DESIGN.md §01., Main-window refresh surface tokens (DESIGN.md §02 UI Chrome Palette). Sever, Okabe-Ito hexes are verbatim from DESIGN.md §01., test_okabe_ito_palette_matches_designmd(), test_primary_palette_matches_designmd(), test_ui_refresh_surface_tokens_match_designmd() ### Community 302 - "Community 302" Cohesion: 0.25 -Nodes (8): _build_main_query(), Compose the ``?selected=...&right_pane=...`` query string for /main. Omits, Compose the ``?selected=...&right_pane=...`` query string for /main. Omits, Compose the ``?selected=...&right_pane=...`` query string for /main. Omits, Compose the ``?selected=...&right_pane=...`` query string for /main. Omits, Compose the ``?selected=...&right_pane=...`` query string for /main. Omits, Compose the ``?selected=...&right_pane=...`` query string for /main. Omits, Compose the ``?selected=...&right_pane=...`` query string for /main. Omits +Nodes (8): check_malformed_yaml_front_matter(), §8.1: detect malformed YAML front matter at the head of a Markdown file., test_empty_content_passes(), test_front_matter_with_nested_yaml_passes(), test_malformed_yaml_in_block_fires(), test_no_front_matter_passes(), test_unterminated_front_matter_fires(), test_well_formed_front_matter_passes() ### Community 303 - "Community 303" Cohesion: 0.25 -Nodes (8): _classify_node(), Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi, Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi, Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi, Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi, Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi, Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi, Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi +Nodes (4): crash_plugin -- exercises subprocess crash containment (SIGSEGV-like)., CrashPlugin, crash_plugin -- exercises subprocess crash containment. The plugin's ``transfor, Hard-exit the worker process before any file write. ### Community 304 - "Community 304" -Cohesion: 0.32 -Nodes (7): Bottom-of-window status bar segment (Frontend Spec §3.5.5). The status bar has, Computed render spec for a status-bar segment., Compute a :class:`SegmentSpec` from a label and state. The state controls t, Build a clickable status-bar segment., segment_spec(), SegmentSpec, status_bar_segment() +Cohesion: 0.25 +Nodes (4): policy_violation_plugin -- writes to a forbidden path (Backend Spec §6.1.5)., PolicyViolationPlugin, policy_violation_plugin -- exercises Backend Spec §6.1.5 enforcement. The plugi, Write into ``README.md`` (a wizard-controlled file). ### Community 305 - "Community 305" -Cohesion: 0.32 -Nodes (7): banner_stack(), banner_stack_props(), _color_for_severity(), Banner stack component (Frontend Spec §2.2.3). Renders the active banners for a, Compute the visible / overflow split for a container. Returns a dict with `, Map a :class:`Severity` to its CSS variable token., Build the banner stack UI for a container. +Cohesion: 0.25 +Nodes (4): input_required_plugin -- exercises the PluginInputRequired suspend/resume handsh, InputRequiredPlugin, input_required_plugin -- exercises Backend Spec §6.4 suspend/resume. On the fir, Demand a user-supplied ``color`` value before completing. ### Community 306 - "Community 306" -Cohesion: 0.32 -Nodes (7): Welcome card page (Frontend Spec §3.1.3). Modal card shown exactly once on the, Render spec captured for unit-test assertions., Return the immutable spec used to render the welcome card., Render the welcome card. ``on_get_started`` and ``on_skip`` are invoked wit, render_welcome_page(), welcome_card_spec(), WelcomeCardSpec +Cohesion: 0.25 +Nodes (4): hello_plugin -- canonical scaffold from Backend Spec §6.5. The ``Plugin`` re-ex, HelloPlugin, hello_plugin -- minimal real plugin used by the host integration suite. Backend, Append ``hello\\n`` to every ``.txt`` file the host hands us. ### Community 307 - "Community 307" -Cohesion: 0.25 -Nodes (4): Walk a directory subtree and return all findings. Backend Spec §11.8. U, Public read-only alias for :meth:`audit`. Backend Spec §11.8. Read-only, Map an :class:`AuditScope` onto the directory roots to walk., Walk a single subtree rooted at ``root`` (depth-first). Returns a flat +Cohesion: 0.21 +Nodes (8): The controller writes ``equipment.json`` under ``//.exlab-wiz, The controller writes ``equipment.json`` under ``//.exlab-wiz, A run inherits its LIMS identity from the parent project's creation.json (Ba, A run inherits its LIMS identity from the parent project's creation.json (Ba, A run inherits its LIMS identity from the parent project's creation.json (Ba, The controller writes ``equipment.json`` under ``//.exlab-wiz, test_run_creation_writes_equipment_json_at_root(), test_run_inherits_lims_project_block_from_parent() ### Community 308 - "Community 308" -Cohesion: 0.25 -Nodes (4): policy_violation_plugin -- writes to a forbidden path (Backend Spec §6.1.5)., PolicyViolationPlugin, policy_violation_plugin -- exercises Backend Spec §6.1.5 enforcement. The plugi, Write into ``README.md`` (a wizard-controlled file). +Cohesion: 0.29 +Nodes (5): _NoiseFilter, Sphinx configuration for ExLab-Wizard documentation. The configuration wires th, Drop uncategorised warnings whose message text matches a known needle. Inse, Install the noise filter at the head of the warning handler chain. Sphinx w, setup() ### Community 309 - "Community 309" -Cohesion: 0.25 -Nodes (4): Failure fixture: plugin that hangs in ``transform`` past its timeout., timeout_plugin -- exercises Backend Spec §6.3.4 timeout enforcement. The plugin, Hang past the declared timeout. Never reaches its file write., TimeoutPlugin +Cohesion: 0.32 +Nodes (7): banner_stack(), banner_stack_props(), _color_for_severity(), Banner stack component (Frontend Spec §2.2.3). Renders the active banners for a, Compute the visible / overflow split for a container. Returns a dict with `, Map a :class:`Severity` to its CSS variable token., Build the banner stack UI for a container. ### Community 310 - "Community 310" Cohesion: 0.25 -Nodes (4): crash_plugin -- exercises subprocess crash containment (SIGSEGV-like)., CrashPlugin, crash_plugin -- exercises subprocess crash containment. The plugin's ``transfor, Hard-exit the worker process before any file write. +Nodes (8): lims_credential_initial_state(), Return the credential-row state seeding the LIMS password field. A password, Return the credential-row state seeding the LIMS password field. A password, Return the credential-row state seeding the LIMS password field. A password, A password already in the OS keyring opens the row in *Set*., A password already in the OS keyring opens the row in *Set*., test_lims_credential_initial_state_not_set_when_keyring_empty(), test_lims_credential_initial_state_set_when_keyring_has_password() ### Community 311 - "Community 311" -Cohesion: 0.25 -Nodes (4): input_required_plugin -- exercises the PluginInputRequired suspend/resume handsh, InputRequiredPlugin, input_required_plugin -- exercises Backend Spec §6.4 suspend/resume. On the fir, Demand a user-supplied ``color`` value before completing. +Cohesion: 0.32 +Nodes (7): Welcome card page (Frontend Spec §3.1.3). Modal card shown exactly once on the, Render spec captured for unit-test assertions., Return the immutable spec used to render the welcome card., Render the welcome card. ``on_get_started`` and ``on_skip`` are invoked wit, render_welcome_page(), welcome_card_spec(), WelcomeCardSpec ### Community 312 - "Community 312" -Cohesion: 0.25 -Nodes (4): hello_plugin -- canonical scaffold from Backend Spec §6.5. The ``Plugin`` re-ex, HelloPlugin, hello_plugin -- minimal real plugin used by the host integration suite. Backend, Append ``hello\\n`` to every ``.txt`` file the host hands us. +Cohesion: 0.32 +Nodes (4): Return the row for ``job_id`` or raise ``ValueError``. Centralizes the, Return the row with the given ``job_id`` or ``None``., Reset a ``FAILED`` job back to ``QUEUED`` for a manual retry. Per §7.1., Reset a terminal job back to ``QUEUED`` carrying a new ``files`` list. ### Community 313 - "Community 313" Cohesion: 0.25 -Nodes (8): compute_next_attempt_at(), Return the ISO timestamp of the next retry attempt. ``attempts_after`` is t, The 1st through 5th attempts use the documented backoff sequence., Attempts <1 or >MAX_ATTEMPTS yield ``None``., test_compute_next_attempt_at_out_of_range(), test_compute_next_attempt_at_uses_schedule(), Return ``dt`` when supplied, otherwise the current UTC time. Mirrors the ``, utc_now_or() +Nodes (7): 00 -- Logo and Branding, 03 -- Spacing, 08 -- Usage Rules & Anti-Patterns, Absolute Constraints, Do, Don't, Frontend Design Style Guide ### Community 314 - "Community 314" Cohesion: 0.25 -Nodes (7): 00 -- Logo and Branding, 03 -- Spacing, 04 -- Border Radius & Shadows, Absolute Constraints, Border Radius, Frontend Design Style Guide, Shadows +Nodes (7): Bundled plugins (Spec §6.5, §6.6), Bundled templates (Spec §5), code:block1 (_internal/), `_internal/` -- bundled starter content, Layout, Populating for v1, v1 status ### Community 315 - "Community 315" Cohesion: 0.25 -Nodes (7): Bundled plugins (Spec §6.5, §6.6), Bundled templates (Spec §5), code:block1 (_internal/), `_internal/` -- bundled starter content, Layout, Populating for v1, v1 status +Nodes (7): 3.4 Browse Existing Equipment, Projects, and Runs, Capability summary, code:{image} (:alt: File-explorer main window, no node selected), code:{image} (:alt: File explorer with a project selected -- tree, file li), Related material, Screenshots, Walkthrough ### Community 316 - "Community 316" Cohesion: 0.25 -Nodes (7): 3.4 Browse Existing Equipment, Projects, and Runs, Capability summary, code:{image} (:alt: File-explorer main window, no node selected), code:{image} (:alt: File explorer with a project selected -- tree, file li), Related material, Screenshots, Walkthrough +Nodes (7): 3.7 Monitor Orchestrator Staging, Capability summary, code:{image} (:alt: Staging dock with one row in the staging state), code:{image} (:alt: Main window with the orchestrator staging panel enable), Related material, Screenshots, Walkthrough ### Community 317 - "Community 317" Cohesion: 0.25 -Nodes (7): 3.7 Monitor Orchestrator Staging, Capability summary, code:{image} (:alt: Staging dock with one row in the staging state), code:{image} (:alt: Main window with the orchestrator staging panel enable), Related material, Screenshots, Walkthrough +Nodes (7): code:json ({), code:json ({), Exit codes, IPC Envelope, Stderr (structured log channel), Stdin (host to worker), Stdout (worker to host) ### Community 318 - "Community 318" Cohesion: 0.25 -Nodes (7): code:json ({), code:json ({), Exit codes, IPC Envelope, Stderr (structured log channel), Stdin (host to worker), Stdout (worker to host) +Nodes (8): 9.1 Escalation dialog layout, 9.2 Multiple consecutive escalations from one session (sequential), 9.3 Mid-plugin-pass progress (per-plugin sub-progress), 9.4 Cancel during escalation -- confirmation dialog, 9.5 Disconnect and resume -- the in-flight operations panel, 9.6 Concurrent suspended sessions, 9. Plugin Input Escalation, code:block5 (Running plugins ) ### Community 319 - "Community 319" Cohesion: 0.25 -Nodes (8): 9.1 Escalation dialog layout, 9.2 Multiple consecutive escalations from one session (sequential), 9.3 Mid-plugin-pass progress (per-plugin sub-progress), 9.4 Cancel during escalation -- confirmation dialog, 9.5 Disconnect and resume -- the in-flight operations panel, 9.6 Concurrent suspended sessions, 9. Plugin Input Escalation, code:block5 (Running plugins ) +Nodes (8): 11.1 Layout, 11.2 Severity Tier Visual Treatment, 11.3 Per-Row Actions, 11.4.1 New-finding surfacing during the session, 11.4 Empty State, 11.5 Override-and-Allow-Sync Dialog, 11.6 Cross-Surface Links, 11. Problems Tab ### Community 320 - "Community 320" Cohesion: 0.25 -Nodes (8): 11.1 Layout, 11.2 Severity Tier Visual Treatment, 11.3 Per-Row Actions, 11.4.1 New-finding surfacing during the session, 11.4 Empty State, 11.5 Override-and-Allow-Sync Dialog, 11.6 Cross-Surface Links, 11. Problems Tab +Nodes (8): 3.6.1 Title bar, 3.6.2 Project detail sections, 3.6.3 Run detail sections, 3.6.4 Validation and override summary, 3.6.5 Action affordances, 3.6.6 Empty selection, 3.6 Detail pane (right panel), code:block4 (⚠ Unresolved placeholder token · Run_) ### Community 321 - "Community 321" Cohesion: 0.25 -Nodes (8): 3.5.1 LIMS name resolution, 3.5.2 Tree node display format, 3.5.3 Archived and deleted LIMS-project handling, 3.5.4 Search and filter chips, 3.5.5 Status bar (bottom of the main window), 3.5.6 Empty states, 3.5 Tree details, filters, and status bar, code:block3 ([ search by name, short_id, or run label ... ] [Active ✓] ) +Nodes (8): 3.4.1 Tray menu, 3.4.2 Status submenu, 3.4.3 Window lifecycle, 3.4.4 Why this lifecycle matters for the lab workflow, 3.4.5 OS notifications, 3.4.6 Quitting the app, 3.4.7 Linux fallback (no system tray), 3.4 Tray Icon and Window Lifecycle ### Community 322 - "Community 322" Cohesion: 0.25 -Nodes (8): 3.6.1 Title bar, 3.6.2 Project detail sections, 3.6.3 Run detail sections, 3.6.4 Validation and override summary, 3.6.5 Action affordances, 3.6.6 Empty selection, 3.6 Detail pane (right panel), code:block4 (⚠ Unresolved placeholder token · Run_) +Nodes (8): 3.5.1 LIMS name resolution, 3.5.2 Tree node display format, 3.5.3 Archived and deleted LIMS-project handling, 3.5.4 Search and filter chips, 3.5.5 Status bar (bottom of the main window), 3.5.6 Empty states, 3.5 Tree details, filters, and status bar, code:block3 ([ search by name, short_id, or run label ... ] [Active ✓] ) ### Community 323 - "Community 323" Cohesion: 0.25 -Nodes (8): 3.4.1 Tray menu, 3.4.2 Status submenu, 3.4.3 Window lifecycle, 3.4.4 Why this lifecycle matters for the lab workflow, 3.4.5 OS notifications, 3.4.6 Quitting the app, 3.4.7 Linux fallback (no system tray), 3.4 Tray Icon and Window Lifecycle +Nodes (8): 4.6.1 REST surface (illustrative subset; full schema lives in `api/schemas.py`), 4.6.2 WebSocket events, 4.6.3 API versioning, health, and error envelope, 4.6 Frontend ↔ Backend Protocol, code:json ({ "kind": "phase", "phase": "rendering_template", ), code:json ({ "kind": "snapshot", "findings": [...], "audit_at": "..." }), code:json ({), code:json ({) ### Community 324 - "Community 324" Cohesion: 0.25 -Nodes (8): 4.6.1 REST surface (illustrative subset; full schema lives in `api/schemas.py`), 4.6.2 WebSocket events, 4.6.3 API versioning, health, and error envelope, 4.6 Frontend ↔ Backend Protocol, code:json ({ "kind": "phase", "phase": "rendering_template", ), code:json ({ "kind": "snapshot", "findings": [...], "audit_at": "..." }), code:json ({), code:json ({) +Nodes (8): A successful save persists, then hot-reloads the live components. The old b, Redesign §3.1: orchestrator pipeline is always on, but a missing staging_roo, Redesign §3.1: orchestrator pipeline is always on, but a missing staging_roo, A successful save persists, then hot-reloads the live components. The old b, A successful save persists, then hot-reloads the live components. The old b, A successful save persists, then hot-reloads the live components. The old b, test_persist_config_writes_and_applies_live(), test_staging_state_when_staging_root_missing() ### Community 325 - "Community 325" -Cohesion: 0.29 -Nodes (7): A fully-satisfied install has no outstanding next action., A fully-satisfied install has no outstanding next action., A fully-satisfied install has no outstanding next action., A fully-satisfied install has no outstanding next action., A fully-satisfied install has no outstanding next action., A fully-satisfied install has no outstanding next action., test_setup_next_action_none_when_ready() +Cohesion: 0.25 +Nodes (8): A fully-satisfied install has no outstanding next action., A fully-satisfied install has no outstanding next action., A fully-satisfied install has no outstanding next action., A fully-satisfied install has no outstanding next action., A fully-satisfied install has no outstanding next action., A fully-satisfied install has no outstanding next action., A fully-satisfied install has no outstanding next action., test_setup_next_action_none_when_ready() ### Community 326 - "Community 326" Cohesion: 0.29 -Nodes (7): A path with no enclosing run root surfaces a negative toast., A path with no enclosing run root surfaces a negative toast., A path with no enclosing run root surfaces a negative toast., A path with no enclosing run root surfaces a negative toast., A path with no enclosing run root surfaces a negative toast., A path with no enclosing run root surfaces a negative toast., test_toggle_keep_local_file_not_in_run_toasts() +Nodes (7): ``RunNode.sync_status`` flows through to the resulting ``TreeNode``., ``RunNode.sync_status`` flows through to the resulting ``TreeNode``., A ``cleared`` run row carries the cloud-icon URL and its sync_status. Opera, ``RunNode.sync_status`` flows through to the resulting ``TreeNode``., A ``cleared`` run row carries the cloud-icon URL and its sync_status. Opera, test_to_nicegui_nodes_cleared_run_uses_cloud_icon(), test_tree_run_node_propagates_sync_status() ### Community 327 - "Community 327" Cohesion: 0.29 -Nodes (7): The details dialog renders the session state plus pending/error lines., The details dialog renders the session state plus pending/error lines., The details dialog renders the session state plus pending/error lines., The details dialog renders the session state plus pending/error lines., The details dialog renders the session state plus pending/error lines., The details dialog renders the session state plus pending/error lines., test_open_operation_details_renders_state_and_pending() +Nodes (7): Equipment and project rows render without the per-row sync icon., Equipment and project rows render without the per-row sync icon., Equipment and project rows render without the per-row sync icon., An ``EquipmentNode(relay=True)`` builds a ``received_equipment`` row., An ``EquipmentNode(relay=True)`` builds a ``received_equipment`` row., test_equipment_node_relay_flag_emits_received_equipment_kind(), test_to_nicegui_nodes_equipment_and_project_have_no_sync_icon() ### Community 328 - "Community 328" Cohesion: 0.29 -Nodes (6): Token-equality tests for :mod:`exlab_wizard.ui.design`. The tests assert each c, Primary palette hexes are verbatim from DESIGN.md §01., Frontend §2.1.3 overrides DM Sans / DM Mono with IBM Plex / system mono., Frontend §2.1.3 overrides DM Sans / DM Mono with IBM Plex / system mono., test_primary_palette_matches_designmd(), test_typography_uses_frontend_override() +Nodes (7): Hard chip default-on; Soft default-off., Hard chip default-on; Soft default-off., _sample_findings(), test_problems_filter_default_shows_hard_only(), test_problems_filter_scope_filters_by_equipment(), test_problems_filter_search_path_substring(), test_problems_filter_show_soft_when_chip_on() ### Community 329 - "Community 329" -Cohesion: 0.33 -Nodes (5): _format_utc_timestamp(), Structured log formatter and secret-redaction helpers. Backend Spec §16.4, §16.1, Render ``epoch_seconds`` as a UTC ISO 8601 timestamp with ``Z`` suffix. Exa, Render the active context as ``[host:..] [equip:..] ...``. Returns the empt, _render_tags() +Cohesion: 0.29 +Nodes (7): check_orphan(), §8.1.4: detect missing ``creation.json`` at project / run level (NOT equipme, test_equipment_without_creation_json_does_not_fire(), test_project_with_creation_json_passes(), test_project_without_creation_json_fires(), test_run_with_creation_json_passes(), test_run_without_creation_json_fires() ### Community 330 - "Community 330" -Cohesion: 0.33 -Nodes (6): _free_port(), _make_seeded_server(), E2E flow 19: travelling problem badge (Redesign §4.5). The badge sits on the sh, Spawn a uvicorn server with seeded findings injected via env var., The badge for a seeded hard finding renders on the root node., test_flow_19_travelling_badge_aggregates_red() +Cohesion: 0.29 +Nodes (6): FileChange, Return the dry-run preview for what ``transform`` would do. Default ret, A single mutation a plugin would make. Used by ``describe_changes``. Backen, test_filechange_accepts_detail_payload(), test_filechange_default_detail_is_empty_dict(), test_filechange_is_frozen_dataclass() ### Community 331 - "Community 331" Cohesion: 0.29 -Nodes (4): MockLimsState, Mutable per-app state. ``valid_email`` / ``valid_password`` are the credent, Mint a fresh opaque session token., Drop every issued session token. The next protected call sees a 401 and +Nodes (7): is_creation_blocked(), Return True when ``state`` should gate creation flows. Per §4.9.4 the soft, Return True when ``state`` should gate creation flows. Per §4.9.4 the soft, FastAPI dependency that gates a route on setup state. Looks up the app's bo, FastAPI dependency that gates a route on setup state. Looks up the app's bo, setup_state_gate(), test_is_creation_blocked_treats_lims_unreachable_as_soft() ### Community 332 - "Community 332" Cohesion: 0.29 -Nodes (7): check_orphan(), §8.1.4: detect missing ``creation.json`` at project / run level (NOT equipme, test_equipment_without_creation_json_does_not_fire(), test_project_with_creation_json_passes(), test_project_without_creation_json_fires(), test_run_with_creation_json_passes(), test_run_without_creation_json_fires() +Nodes (4): MockLimsState, Mutable per-app state. ``valid_email`` / ``valid_password`` are the credent, Mint a fresh opaque session token., Drop every issued session token. The next protected call sees a 401 and ### Community 333 - "Community 333" Cohesion: 0.29 -Nodes (5): _extract_readme_fields(), Copier template-engine wrapper. Backend Spec §4.4.2 / §5. This module wraps Cop, Render the template into ``dst`` via Copier. Args: tpl: A p, Return the set of regular files under ``root`` (recursively). Returns the e, _snapshot_files() +Nodes (7): Generic exceptions are wrapped as ``internal_error``., Generic exceptions are wrapped as ``internal_error``., The best-effort log appender writes to the equipment cache dir., The best-effort log appender writes to the equipment cache dir., The best-effort log appender writes to the equipment cache dir., test_append_log_writes_log_line(), test_format_error_with_non_validation_exception_returns_internal_error() ### Community 334 - "Community 334" -Cohesion: 0.29 -Nodes (7): 07 -- Code Integration, code:css (:root {), code:python (import matplotlib as mpl), code:python (# RGBA tuples normalized 0-1, for napari label layer color d), CSS Custom Properties, matplotlib / seaborn rcParams, napari Label Layer Colors +Cohesion: 0.33 +Nodes (6): _free_port(), _make_seeded_server(), E2E flow 19: travelling problem badge (Redesign §4.5). The badge sits on the sh, Spawn a uvicorn server with seeded findings injected via env var., The badge for a seeded hard finding renders on the root node., test_flow_19_travelling_badge_aggregates_red() ### Community 335 - "Community 335" -Cohesion: 0.29 -Nodes (7): 01 -- Color Palette, Color Selection Decision Logic, Data Colors -- Okabe-Ito -- Visualization Only, Main-window surface & interaction tokens (2026-05-29 UI refresh), Primary Colors -- UI Only, Semantic Color Assignments, Surface & Neutral Tokens +Cohesion: 0.33 +Nodes (5): _format_utc_timestamp(), Structured log formatter and secret-redaction helpers. Backend Spec §16.4, §16.1, Render ``epoch_seconds`` as a UTC ISO 8601 timestamp with ``Z`` suffix. Exa, Render the active context as ``[host:..] [equip:..] ...``. Returns the empt, _render_tags() ### Community 336 - "Community 336" Cohesion: 0.29 -Nodes (6): 3.1 Create a New Project, Capability summary, code:{image} (:alt: New project wizard, initial render), Related material, Screenshots, Walkthrough +Nodes (7): 07 -- Code Integration, code:css (:root {), code:python (import matplotlib as mpl), code:python (# RGBA tuples normalized 0-1, for napari label layer color d), CSS Custom Properties, matplotlib / seaborn rcParams, napari Label Layer Colors ### Community 337 - "Community 337" Cohesion: 0.29 -Nodes (6): 3.8 Review and Resolve Naming and Validation Problems, Capability summary, code:{image} (:alt: Problems tab with one hard-tier finding visible), Related material, Screenshots, Walkthrough +Nodes (7): 01 -- Color Palette, Color Selection Decision Logic, Data Colors -- Okabe-Ito -- Visualization Only, Main-window surface & interaction tokens (2026-05-29 UI refresh), Primary Colors -- UI Only, Semantic Color Assignments, Surface & Neutral Tokens ### Community 338 - "Community 338" Cohesion: 0.29 -Nodes (6): 3.5 Author a README at Creation Time, Capability summary, code:{image} (:alt: README step inside the new-project wizard), Related material, Screenshots, Walkthrough +Nodes (6): 3.1 Create a New Project, Capability summary, code:{image} (:alt: New project wizard, initial render), Related material, Screenshots, Walkthrough ### Community 339 - "Community 339" Cohesion: 0.29 -Nodes (6): code:{image} (:alt: First-launch welcome card), Getting Started, Overview, Related material, Screenshots, Walkthrough +Nodes (6): 3.8 Review and Resolve Naming and Validation Problems, Capability summary, code:{image} (:alt: Problems tab with one hard-tier finding visible), Related material, Screenshots, Walkthrough ### Community 340 - "Community 340" Cohesion: 0.29 -Nodes (6): 3.2 Create a New Experimental Run, Capability summary, code:{image} (:alt: New experimental run wizard, initial render), Related material, Screenshots, Walkthrough +Nodes (6): 3.5 Author a README at Creation Time, Capability summary, code:{image} (:alt: README step inside the new-project wizard), Related material, Screenshots, Walkthrough ### Community 341 - "Community 341" Cohesion: 0.29 -Nodes (6): 3.3 Create a New Test Run, Capability summary, code:{image} (:alt: New test run wizard, initial render), Related material, Screenshots, Walkthrough +Nodes (6): code:{image} (:alt: First-launch welcome card), Getting Started, Overview, Related material, Screenshots, Walkthrough ### Community 342 - "Community 342" Cohesion: 0.29 -Nodes (6): code:block1 (Creation Controller), code:{toctree} (:maxdepth: 1), Plugin Author Guide, What plugins do, Where plugins fit in the pipeline, Where to look in the codebase +Nodes (6): 3.2 Create a New Experimental Run, Capability summary, code:{image} (:alt: New experimental run wizard, initial render), Related material, Screenshots, Walkthrough ### Community 343 - "Community 343" Cohesion: 0.29 -Nodes (6): code:block1 (pip install -e .[plugin-examples]), docx_variable_replacer, Hello plugin, Where to look in the codebase, Worked Examples, xlsx_field_filler +Nodes (6): 3.3 Create a New Test Run, Capability summary, code:{image} (:alt: New test run wizard, initial render), Related material, Screenshots, Walkthrough ### Community 344 - "Community 344" Cohesion: 0.29 -Nodes (6): File Structure, Phase 8 — Orchestrator staging via rclone (confirmed in scope), rclone.conf-based NAS Sync — Implementation Plan, Self-Review (completed during authoring), Task 8.1: Staging config — `orchestrator.staging_remote` / `staging_base_root`, Task 8.2: Stage-mode push routes through rclone +Nodes (6): code:block1 (Creation Controller), code:{toctree} (:maxdepth: 1), Plugin Author Guide, What plugins do, Where plugins fit in the pipeline, Where to look in the codebase ### Community 345 - "Community 345" Cohesion: 0.29 -Nodes (7): 6.2.1 Discovery, 6.2.2 Resolution per creation session, 6.2.3 Order control via `_exlab_plugins`, 6.2.4 What gets recorded in `creation.json`, 6.2 Plugin Registry, code:yaml (_exlab_plugins:), code:json ({) +Nodes (6): code:block1 (pip install -e .[plugin-examples]), docx_variable_replacer, Hello plugin, Where to look in the codebase, Worked Examples, xlsx_field_filler ### Community 346 - "Community 346" Cohesion: 0.29 -Nodes (7): 6.6.1 What it does, 6.6.2 `manifest.yml`, 6.6.3 `plugin.py`, 6.6.4 What this exercises, 6.6 Worked Example: `xlsx_field_filler`, code:yaml (name: "xlsx_field_filler"), code:python (from pathlib import Path) +Nodes (6): File Structure, Phase 8 — Orchestrator staging via rclone (confirmed in scope), rclone.conf-based NAS Sync — Implementation Plan, Self-Review (completed during authoring), Task 8.1: Staging config — `orchestrator.staging_remote` / `staging_base_root`, Task 8.2: Stage-mode push routes through rclone ### Community 347 - "Community 347" Cohesion: 0.29 -Nodes (7): 4.9.1 Setup states, 4.9.2 Endpoint gating, 4.9.3 `GET /api/v1/setup/status` response shape, 4.9.4 LIMS unreachability is a soft block, 4.9.5 Initial setup ordering (informational), 4.9 First-Launch and Setup-Incomplete State, code:json ({) +Nodes (7): 6.2.1 Discovery, 6.2.2 Resolution per creation session, 6.2.3 Order control via `_exlab_plugins`, 6.2.4 What gets recorded in `creation.json`, 6.2 Plugin Registry, code:yaml (_exlab_plugins:), code:json ({) ### Community 348 - "Community 348" -Cohesion: 0.33 -Nodes (6): Hard chip default-on; Soft default-off., _sample_findings(), test_problems_filter_default_shows_hard_only(), test_problems_filter_scope_filters_by_equipment(), test_problems_filter_search_path_substring(), test_problems_filter_show_soft_when_chip_on() +Cohesion: 0.29 +Nodes (7): 6.6.1 What it does, 6.6.2 `manifest.yml`, 6.6.3 `plugin.py`, 6.6.4 What this exercises, 6.6 Worked Example: `xlsx_field_filler`, code:yaml (name: "xlsx_field_filler"), code:python (from pathlib import Path) ### Community 349 - "Community 349" -Cohesion: 0.33 -Nodes (6): A node id whose root is not in the hierarchy returns ``(None, False)``. Gua, A node id whose root is not in the hierarchy returns ``(None, False)``. Gua, A node id whose root is not in the hierarchy returns ``(None, False)``. Gua, A node id whose root is not in the hierarchy returns ``(None, False)``. Gua, A node id whose root is not in the hierarchy returns ``(None, False)``. Gua, test_classify_node_rejects_unknown_root() +Cohesion: 0.29 +Nodes (7): 4.9.1 Setup states, 4.9.2 Endpoint gating, 4.9.3 `GET /api/v1/setup/status` response shape, 4.9.4 LIMS unreachability is a soft block, 4.9.5 Initial setup ordering (informational), 4.9 First-Launch and Setup-Incomplete State, code:json ({) ### Community 350 - "Community 350" -Cohesion: 0.33 -Nodes (6): Equipment / project / run / received_equipment all classify correctly., Equipment / project / run / received_equipment all classify correctly., Equipment / project / run / received_equipment all classify correctly., Equipment / project / run / received_equipment all classify correctly., Equipment / project / run / received_equipment all classify correctly., test_classify_node_discriminates_kinds() +Cohesion: 0.29 +Nodes (7): A node id whose root is not in the hierarchy returns ``(None, False)``. Gua, A node id whose root is not in the hierarchy returns ``(None, False)``. Gua, A node id whose root is not in the hierarchy returns ``(None, False)``. Gua, A node id whose root is not in the hierarchy returns ``(None, False)``. Gua, A node id whose root is not in the hierarchy returns ``(None, False)``. Gua, A node id whose root is not in the hierarchy returns ``(None, False)``. Gua, test_classify_node_rejects_unknown_root() ### Community 351 - "Community 351" -Cohesion: 0.33 -Nodes (6): NASCleanupConfig, ``nas_cleanup:`` block. Local-copy retention after NAS verify., ``nas_cleanup:`` block. Local-copy retention after NAS verify., test_nas_cleanup_defaults(), test_nas_cleanup_min_age_hours_non_negative(), test_nas_cleanup_min_verify_passes_at_least_one() +Cohesion: 0.29 +Nodes (7): With no SYNCED rows the sweep clears nothing and toasts 'none'., With no SYNCED rows the sweep clears nothing and toasts 'none'., With no SYNCED rows the sweep clears nothing and toasts 'none'., With no SYNCED rows the sweep clears nothing and toasts 'none'., With no SYNCED rows the sweep clears nothing and toasts 'none'., With no SYNCED rows the sweep clears nothing and toasts 'none'., test_bulk_clear_verified_no_verified_rows_toasts() ### Community 352 - "Community 352" Cohesion: 0.33 -Nodes (5): _await_or_call(), build_config_router(), ``/config`` router. Backend Spec §4.6.1, §4.9. Endpoints: * ``GET /config`` --, Invoke a saver that may be sync or async., Construct the ``/config`` router. Routes are always available. +Nodes (6): ActionSpec, A single action affordance attached to a notification. At most one action p, ``ActionSpec`` is immutable so callbacks can't be swapped post-hoc., When an action is attached, the timeout extends to 12 s., test_action_spec_is_frozen(), test_notify_with_action_extends_to_12_seconds() ### Community 353 - "Community 353" -Cohesion: 0.53 -Nodes (5): _goto(), E2E flow 20: file-explorer navigation (Redesign §4). Tree selection drives the, test_flow_20_breadcrumb_is_present_when_node_selected(), test_flow_20_file_explorer_renders_three_regions(), test_flow_20_select_run_node_renders_metadata_pane() +Cohesion: 0.33 +Nodes (6): Activate a banner from the closed §2.2.3 set. Raises: ValueError: w, Clear all module-level state. Test fixtures only., reset_for_tests(), show_banner(), test_smoke_banner_stack_renders_with_active_banners(), test_smoke_file_explorer_page_renders_setup_incomplete() ### Community 354 - "Community 354" -Cohesion: 0.33 -Nodes (6): combo_for_current_os(), Resolve the :class:`KeyCombo` for the current OS., On non-darwin we return ``other``., On darwin we return ``macos``., test_combo_for_current_os_returns_macos_on_darwin(), test_combo_for_current_os_returns_other_on_linux() +Cohesion: 0.53 +Nodes (5): _goto(), E2E flow 20: file-explorer navigation (Redesign §4). Tree selection drives the, test_flow_20_breadcrumb_is_present_when_node_selected(), test_flow_20_file_explorer_renders_three_regions(), test_flow_20_select_run_node_renders_metadata_pane() ### Community 355 - "Community 355" Cohesion: 0.33 -Nodes (6): list_bindings(), Return the canonical bindings table (Frontend §3.7)., Each binding has a non-empty description (Frontend §3.7)., Every Frontend §3.7 row has a ShortcutBinding., test_all_documented_shortcuts_in_registry(), test_descriptions_match_spec() +Nodes (5): prod_server(), E2E flow 26: Add-Equipment wizard confirm against the PRODUCTION app. ``test_fl, Spawn the production wizard app under a fresh tmp HOME., Drive the production wizard to Confirm and assert config.yaml gains the device., test_equipment_wizard_confirm_persists_to_config() ### Community 356 - "Community 356" -Cohesion: 0.4 -Nodes (5): override_badge(), override_badge_props(), Override pill (Frontend Spec §3.6.1, §11). A pill that appears next to a run's, Compute styling props for the override pill., Build a clickable badge for the override state. Clicking opens the §11.5 ov +Cohesion: 0.33 +Nodes (6): list_bindings(), Return the canonical bindings table (Frontend §3.7)., Each binding has a non-empty description (Frontend §3.7)., Every Frontend §3.7 row has a ShortcutBinding., test_all_documented_shortcuts_in_registry(), test_descriptions_match_spec() ### Community 357 - "Community 357" -Cohesion: 0.4 -Nodes (5): Test-run pill (Frontend Spec §3.2, §3.6.1). A small *"Test"* pill rendered next, Static styling for the *"Test"* pill (Frontend §3.6.1)., Build a NiceGUI badge for a test run., test_run_badge(), test_run_badge_props() +Cohesion: 0.33 +Nodes (6): combo_for_current_os(), Resolve the :class:`KeyCombo` for the current OS., On non-darwin we return ``other``., On darwin we return ``macos``., test_combo_for_current_os_returns_macos_on_darwin(), test_combo_for_current_os_returns_other_on_linux() ### Community 358 - "Community 358" -Cohesion: 0.33 -Nodes (5): Tree context-menu renderers. GUI/Orchestrator Redesign §4.6 / decision 4A / §9., Render the right-click menu for an owned-equipment tree node. The callback, Render the right-click menu for a run tree node. The callback receives ``(r, render_equipment_context_menu(), render_run_context_menu() +Cohesion: 0.4 +Nodes (5): override_badge(), override_badge_props(), Override pill (Frontend Spec §3.6.1, §11). A pill that appears next to a run's, Compute styling props for the override pill., Build a clickable badge for the override state. Clicking opens the §11.5 ov ### Community 359 - "Community 359" -Cohesion: 0.4 -Nodes (5): mode_badge(), mode_badge_props(), Mode badge component (Frontend Spec §5.3, §6). Shows the active wizard mode (ex, Compute the badge styling props for a run kind. Returns a dict that wizards, Build a NiceGUI badge element for the given run kind. Lazy NiceGUI import k +Cohesion: 0.33 +Nodes (5): High-level Copier-template category. Backend Spec §5.2., Run-scope tag declared in a run template's ``_exlab_run_scope``. Backend Sp, RunScope, TemplateType, Load + validate a template's ``copier.yml``. Args: template ### Community 360 - "Community 360" -Cohesion: 0.33 -Nodes (6): lims_credential_initial_state(), Return the credential-row state seeding the LIMS password field. A password, Return the credential-row state seeding the LIMS password field. A password, A password already in the OS keyring opens the row in *Set*., test_lims_credential_initial_state_not_set_when_keyring_empty(), test_lims_credential_initial_state_set_when_keyring_has_password() +Cohesion: 0.4 +Nodes (5): Test-run pill (Frontend Spec §3.2, §3.6.1). A small *"Test"* pill rendered next, Static styling for the *"Test"* pill (Frontend §3.6.1)., Build a NiceGUI badge for a test run., test_run_badge(), test_run_badge_props() ### Community 361 - "Community 361" Cohesion: 0.33 -Nodes (6): 06 -- Data Visualization, Categorical Series Order, Chart Styling Rules, code:block7 (ring stroke-width: 20px on r=40 SVG circle (circumference ~), Donut / Pie Charts, Heatmap Colorscale (Single-Variable) +Nodes (5): Tree context-menu renderers. GUI/Orchestrator Redesign §4.6 / decision 4A / §9., Render the right-click menu for an owned-equipment tree node. The callback, Render the right-click menu for a run tree node. The callback receives ``(r, render_equipment_context_menu(), render_run_context_menu() ### Community 362 - "Community 362" -Cohesion: 0.33 -Nodes (6): 02 -- Typography, code:css (--font-display: 'DM Serif Display', Georgia, serif;), code:html (/), code:block2 (/data/lab/CONFOCAL_01/UCR-000-I-D_WHEELDON/Runs/Run_2026-04-) +Nodes (6): code:python (def test_nas_mode_equipment_needs_no_transport_block():), code:bash (git add src/exlab_wizard/config/models.py tests/unit/config/), code:bash (git add -A), Phase 7 — Remove dead code (clean break), Task 7.1: Remove the transport union + EquipmentConfig.transport, Task 7.2: Remove `build_rclone_env`/`obscure`/`pass_env_keys_for` + keyring helper + env plumbing ### Community 368 - "Community 368" Cohesion: 0.33 -Nodes (5): 12.1 What Changes in Orchestrator Mode, 12.2 Configuration, 12.3 Concurrent Run Handling, 12.4 Logging and DB Changes, 12. Orchestrator Mode (Multi-Equipment Workstations) +Nodes (6): code:python (if verb == "lsjson":), Phase 9 — Fixtures, integration, docker, docs, Task 9.1: Teach `stub_rclone` lsjson + listremotes; drop env-require, Task 9.2: Integration + e2e + docker `rclone.conf`, Task 9.3: Docs, Task 9.4: Full-suite + lint/type gate ### Community 369 - "Community 369" Cohesion: 0.33 -Nodes (6): 4.10.1 Unit tests (`tests/unit/`), 4.10.2 Integration tests (`tests/integration/`), 4.10.3 End-to-end tests (`tests/e2e/`), 4.10.4 Test fixtures (`tests/fixtures/`), 4.10.5 What's NOT tested at each layer, 4.10 Testing Strategy +Nodes (5): 3.1 Equipment-ID format, 3.2 Project-folder name, 3. Directory Structure Convention, code:block1 (/), code:block2 (/data/lab/CONFOCAL_01/UCR-000-I-D_WHEELDON/Runs/Run_2026-04-) ### Community 370 - "Community 370" -Cohesion: 0.4 -Nodes (5): OperatorsConfig, ``operators:`` block. Optional case-sensitive allowlist., ``operators:`` block. Optional case-sensitive allowlist., test_operators_config_accepts_arbitrary_strings(), test_operators_config_defaults_to_empty_allowlist() +Cohesion: 0.33 +Nodes (5): 12.1 What Changes in Orchestrator Mode, 12.2 Configuration, 12.3 Concurrent Run Handling, 12.4 Logging and DB Changes, 12. Orchestrator Mode (Multi-Equipment Workstations) + +### Community 371 - "Community 371" +Cohesion: 0.33 +Nodes (6): 4.10.1 Unit tests (`tests/unit/`), 4.10.2 Integration tests (`tests/integration/`), 4.10.3 End-to-end tests (`tests/e2e/`), 4.10.4 Test fixtures (`tests/fixtures/`), 4.10.5 What's NOT tested at each layer, 4.10 Testing Strategy ### Community 372 - "Community 372" -Cohesion: 0.6 -Nodes (4): _goto(), E2E flow 18: relay-receive — received equipment auto-discovery (Redesign §3.3)., test_flow_18_received_equipment_node_appears(), test_flow_18_received_metadata_shows_relay_badge() +Cohesion: 0.4 +Nodes (5): ``FILE_CONTEXT_KEEP_LOCAL`` is a distinct discriminator value., ``FILE_CONTEXT_KEEP_LOCAL`` is a distinct discriminator value., ``FILE_CONTEXT_KEEP_LOCAL`` is a distinct discriminator value., ``FILE_CONTEXT_KEEP_LOCAL`` is a distinct discriminator value., test_keep_local_action_constant_is_distinct() ### Community 373 - "Community 373" -Cohesion: 0.6 -Nodes (4): _goto(), E2E flow 17: creation-button enablement on received nodes (Redesign decision 1)., test_flow_17_creation_buttons_disabled_on_received_node(), test_flow_17_creation_buttons_enabled_on_owned_node() - -### Community 374 - "Community 374" Cohesion: 0.4 -Nodes (4): E2E flow 05b: per-run sync icons in the browse tree. Verifies that the project, The ``/assets`` mount serves both SVGs as 200 OK., test_flow_05_sync_icons_render_in_tree(), test_flow_05_sync_icons_static_assets_serve_200() +Nodes (5): The renderer wires the keep-local menu item and tombstone row. Exercises th, The renderer wires the keep-local menu item and tombstone row. Exercises th, The renderer wires the keep-local menu item and tombstone row. Exercises th, The renderer wires the keep-local menu item and tombstone row. Exercises th, test_render_file_list_keep_local_menu_and_tombstone() ### Community 375 - "Community 375" Cohesion: 0.6 -Nodes (4): _goto(), E2E flow 23: footer Staging segment + bulk Clear verified (Redesign §4.6). The, test_flow_23_bulk_clear_verified_action_present(), test_flow_23_footer_staging_segment_renders() +Nodes (4): _goto(), E2E flow 18: relay-receive — received equipment auto-discovery (Redesign §3.3)., test_flow_18_received_equipment_node_appears(), test_flow_18_received_metadata_shows_relay_badge() ### Community 376 - "Community 376" -Cohesion: 0.4 -Nodes (5): The renderer wires the keep-local menu item and tombstone row. Exercises th, The renderer wires the keep-local menu item and tombstone row. Exercises th, The renderer wires the keep-local menu item and tombstone row. Exercises th, The renderer wires the keep-local menu item and tombstone row. Exercises th, test_render_file_list_keep_local_menu_and_tombstone() +Cohesion: 0.6 +Nodes (4): _goto(), E2E flow 17: creation-button enablement on received nodes (Redesign decision 1)., test_flow_17_creation_buttons_disabled_on_received_node(), test_flow_17_creation_buttons_enabled_on_owned_node() ### Community 377 - "Community 377" -Cohesion: 0.4 -Nodes (5): _click(), Single-click selection fires ``on_select`` for files AND folders., Single-click selection fires ``on_select`` for files AND folders., Invoke ``element``'s registered click handler (simulates a single-click)., test_on_select_fires_for_file_and_folder() +Cohesion: 0.6 +Nodes (4): _goto(), E2E flow 23: footer Staging segment + bulk Clear verified (Redesign §4.6). The, test_flow_23_bulk_clear_verified_action_present(), test_flow_23_footer_staging_segment_renders() ### Community 378 - "Community 378" Cohesion: 0.4 -Nodes (5): A bare entry defaults ``keep_local`` and ``tombstone`` to False., A bare entry defaults ``keep_local`` and ``tombstone`` to False., A bare entry defaults ``keep_local`` and ``tombstone`` to False., A bare entry defaults ``keep_local`` and ``tombstone`` to False., test_file_list_entry_defaults_keep_local_and_tombstone_false() +Nodes (5): OrchestratorStagingTransport, ``orchestrator_staging_transport:`` -- staging hop only. Backend Spec §13., test_orchestrator_staging_transport_file_transfer(), test_orchestrator_staging_transport_rejects_unknown_type(), test_orchestrator_staging_transport_smb_mount() ### Community 379 - "Community 379" Cohesion: 0.4 -Nodes (5): Flipping ``keep_local`` is a modification (drives a re-render)., Flipping ``keep_local`` is a modification (drives a re-render)., Flipping ``keep_local`` is a modification (drives a re-render)., Flipping ``keep_local`` is a modification (drives a re-render)., test_diff_detects_keep_local_change_as_modification() +Nodes (4): Capability map, code:{toctree} (:maxdepth: 1), Conventions, User Guide ### Community 380 - "Community 380" Cohesion: 0.4 -Nodes (5): ``FILE_CONTEXT_KEEP_LOCAL`` is a distinct discriminator value., ``FILE_CONTEXT_KEEP_LOCAL`` is a distinct discriminator value., ``FILE_CONTEXT_KEEP_LOCAL`` is a distinct discriminator value., ``FILE_CONTEXT_KEEP_LOCAL`` is a distinct discriminator value., test_keep_local_action_constant_is_distinct() +Nodes (5): code:bash (git add src/exlab_wizard/ui/pages/settings.py src/exlab_wiza), code:bash (git add src/exlab_wizard/ui/ tests/unit/ui/), Phase 6 — UI, Task 6.1: Settings "NAS Remote" section (replaces NAS Credentials), Task 6.2: Equipment wizard/form — drop transport fields; main-page banner copy ### Community 381 - "Community 381" Cohesion: 0.4 -Nodes (5): A file transitioning to a tombstone is a modification., A file transitioning to a tombstone is a modification., A file transitioning to a tombstone is a modification., A file transitioning to a tombstone is a modification., test_diff_detects_tombstone_change_as_modification() +Nodes (5): code:python (# tests/unit/sync/test_nas_client.py — add (uses existing he), code:python (def _build_target_for_run(*, remote: str, base_root: str, eq), code:python (def _build_push(self, equipment: EquipmentConfig) -> Callabl), code:bash (git add src/exlab_wizard/sync/nas_client.py tests/unit/sync/), Task 4.1: Named-remote target builder + driver construction from `nas:` config ### Community 382 - "Community 382" Cohesion: 0.4 -Nodes (4): Capability map, code:{toctree} (:maxdepth: 1), Conventions, User Guide +Nodes (5): code:python (# tests/unit/tray/test_dependencies.py — add/replace probe t), code:python (async def _probe(equipment: Any) -> dict[str, Any]:), code:python (def _hydrate_nas_remotes(config: Any) -> tuple[str, ...]:), code:bash (git add src/exlab_wizard/tray/dependencies.py tests/unit/tra), Task 5.3: Tray probe + NAS-sync wiring + password-presence removal ### Community 383 - "Community 383" Cohesion: 0.4 -Nodes (5): code:bash (git add src/exlab_wizard/ui/pages/settings.py src/exlab_wiza), code:bash (git add src/exlab_wizard/ui/ tests/unit/ui/), Phase 6 — UI, Task 6.1: Settings "NAS Remote" section (replaces NAS Credentials), Task 6.2: Equipment wizard/form — drop transport fields; main-page banner copy +Nodes (5): code:python (# tests/unit/sync/test_manifest.py), code:python (# src/exlab_wizard/sync/manifest.py), code:bash (git add src/exlab_wizard/sync/manifest.py tests/unit/sync/te), Phase 3 — Manifest module + parser, Task 3.1: `sync/manifest.py` with `parse_lsjson` ### Community 384 - "Community 384" Cohesion: 0.4 -Nodes (5): code:python (# tests/unit/sync/test_nas_client.py — add (uses existing he), code:python (def _build_target_for_run(*, remote: str, base_root: str, eq), code:python (def _build_push(self, equipment: EquipmentConfig) -> Callabl), code:bash (git add src/exlab_wizard/sync/nas_client.py tests/unit/sync/), Task 4.1: Named-remote target builder + driver construction from `nas:` config +Nodes (5): 6.1 Layout, 6.2 Pre-fill Rules, 6.3 Preview Behavior, 6.4 Required-Field Error Messaging, 6. README Authoring Step ### Community 385 - "Community 385" Cohesion: 0.4 -Nodes (5): code:python (# tests/unit/tray/test_dependencies.py — add/replace probe t), code:python (async def _probe(equipment: Any) -> dict[str, Any]:), code:python (def _hydrate_nas_remotes(config: Any) -> tuple[str, ...]:), code:bash (git add src/exlab_wizard/tray/dependencies.py tests/unit/tra), Task 5.3: Tray probe + NAS-sync wiring + password-presence removal +Nodes (5): A raising keyring backend surfaces a toast, not an unhandled crash., A raising keyring backend surfaces a toast, not an unhandled crash., A raising keyring backend surfaces a toast, not an unhandled crash., A raising keyring backend surfaces a toast, not an unhandled crash., test_lims_credential_handlers_swallow_backend_errors() ### Community 386 - "Community 386" Cohesion: 0.4 -Nodes (5): code:python (# tests/unit/sync/test_manifest.py), code:python (# src/exlab_wizard/sync/manifest.py), code:bash (git add src/exlab_wizard/sync/manifest.py tests/unit/sync/te), Phase 3 — Manifest module + parser, Task 3.1: `sync/manifest.py` with `parse_lsjson` +Nodes (5): If the coordinator raises wholesale, the live config is still kept., If the coordinator raises wholesale, the live config is still kept., If the coordinator raises wholesale, the live config is still kept., If the coordinator raises wholesale, the live config is still kept., test_apply_live_config_falls_back_to_setting_config() ### Community 387 - "Community 387" Cohesion: 0.4 -Nodes (5): 6.1 Layout, 6.2 Pre-fill Rules, 6.3 Preview Behavior, 6.4 Required-Field Error Messaging, 6. README Authoring Step +Nodes (5): Both empty -> empty string. One present -> single param., Both empty -> empty string. One present -> single param., Both empty -> empty string. One present -> single param., Both empty -> empty string. One present -> single param., test_build_main_query_omits_empty_params() ### Community 389 - "Community 389" Cohesion: 0.5 -Nodes (4): Both empty -> empty string. One present -> single param., Both empty -> empty string. One present -> single param., Both empty -> empty string. One present -> single param., test_build_main_query_omits_empty_params() +Nodes (4): The pre-commit ``no-direct-ui-notify`` rule is mirrored in tests. Any call, The pre-commit ``no-direct-ui-notify`` rule is mirrored in tests. Any call, The pre-commit ``no-direct-ui-notify`` rule is mirrored in tests. Any call, test_no_stray_ui_notify_calls_in_ui_package() ### Community 390 - "Community 390" Cohesion: 0.5 -Nodes (4): Project names with spaces / special chars survive the round trip., Project names with spaces / special chars survive the round trip., Project names with spaces / special chars survive the round trip., test_build_main_query_url_encodes_special_chars() +Nodes (4): The ``default-header`` template carries the per-row anchors the Playwright f, The ``default-header`` template carries the per-row anchors the Playwright f, The ``default-header`` template carries the per-row anchors the Playwright f, test_slot_template_emits_testid_data_node_id_and_context_menus() ### Community 391 - "Community 391" Cohesion: 0.5 -Nodes (4): Main-window refresh surface tokens (DESIGN.md §02 UI Chrome Palette). Sever, Okabe-Ito hexes are verbatim from DESIGN.md §01., test_okabe_ito_palette_matches_designmd(), test_ui_refresh_surface_tokens_match_designmd() +Nodes (4): Any non-``cleaned`` sync status (or unset) maps to the local-icon URL., Any non-``cleaned`` sync status (or unset) maps to the local-icon URL., Any non-``cleaned`` sync status (or unset) maps to the local-icon URL., test_to_nicegui_nodes_local_run_uses_local_icon() + +### Community 392 - "Community 392" +Cohesion: 0.5 +Nodes (4): Each factory emits a dict (or NiceGUI element) without crashing. The factor, Each factory emits a dict (or NiceGUI element) without crashing. The factor, Each factory emits a dict (or NiceGUI element) without crashing. The factor, test_factories_smoke_outside_nicegui() + +### Community 393 - "Community 393" +Cohesion: 0.5 +Nodes (4): Deleted-from-LIMS rows always render (Frontend §3.5.3)., Deleted-from-LIMS rows always render (Frontend §3.5.3)., Deleted-from-LIMS rows always render (Frontend §3.5.3)., test_tree_filter_deleted_always_shown() ### Community 394 - "Community 394" Cohesion: 0.5 -Nodes (3): E2E smoke flow. Confirms the Phase 16 e2e harness can drive a real browser agai, Smoke: navigate to / and confirm the e2e harness is wired up. The Phase 16, test_root_url_responds_with_html() +Nodes (4): Archived projects are hidden by default., Archived projects are hidden by default., Archived projects are hidden by default., test_tree_filter_archived_default_off_hides_archived() ### Community 395 - "Community 395" Cohesion: 0.5 -Nodes (3): Machine-readable catalog of the wizard's UX interactions. Each :class:`UXIntera, One operator-facing affordance in the wizard UI., UXInteraction +Nodes (4): Each row carries a ``testid_kind`` matching the Playwright contract., Each row carries a ``testid_kind`` matching the Playwright contract., Each row carries a ``testid_kind`` matching the Playwright contract., test_to_nicegui_nodes_emits_testid_kind() + +### Community 396 - "Community 396" +Cohesion: 0.5 +Nodes (4): The dynamic NAS-remote section is auto-selected when it's the gate., The dynamic NAS-remote section is auto-selected when it's the gate., test_settings_first_incomplete_resolves_nas_credentials(), test_settings_first_incomplete_resolves_nas_remote() ### Community 397 - "Community 397" Cohesion: 0.5 -Nodes (3): LIMSProjectSource, Origin of a LIMS project row presented to the UI. Backend Spec §11.3., Write README + creation.json into the destination tree. +Nodes (4): The rclone-remote next-action points the operator at the setup docs., The rclone-remote next-action points the operator at the setup docs., test_main_setup_banner_subline_tailored_for_nas_credentials(), test_main_setup_banner_subline_tailored_for_rclone_remote() ### Community 398 - "Community 398" Cohesion: 0.5 -Nodes (4): AuditScopeKind, Kind discriminator for validator audit scopes. Backend Spec §8.1. Values ma, Kind discriminator for validator audit scopes. Backend Spec §8.1. Values ma, _build_scope() +Nodes (4): banner_overflow_count(), list_active_banners(), Return active banners, optionally filtered by container. Banners are return, How many banners exceed the stacking cap of 2 (Frontend §2.2.3). ### Community 399 - "Community 399" Cohesion: 0.5 -Nodes (4): check_reserved_filesystem_name(), §8.1.2: detect Windows reserved names (``CON``, ``PRN``, ``AUX``, ``NUL``, `, test_non_reserved_name_passes(), test_reserved_name_fires() - -### Community 400 - "Community 400" -Cohesion: 0.5 -Nodes (4): check_unsafe_project_name(), §3.2: flag a project directory whose name is not a safe path segment. The p, test_safe_project_name_passes(), test_unsafe_project_name_fires() - -### Community 401 - "Community 401" -Cohesion: 0.5 -Nodes (4): _level_for_orphan(), Translate the engine-level enum into the rules.check_orphan input. The orph, ``_level_for_orphan`` returns None for non-project / non-run levels., test_level_for_orphan_returns_none_for_unmapped_levels() +Nodes (3): bootstrap_test_config(), Starter ``config.yaml`` bootstrap for the ``-test`` sandbox. Shared by the tray, Tray ``--test`` bootstrap: write the starter config, optionally seed samples. ### Community 402 - "Community 402" Cohesion: 0.5 -Nodes (4): 5.1 Mode Binding at Launch, 5.2 Steps, 5.3 Visual Differentiation, 5. New Run Wizard (Experimental and Test Modes) +Nodes (4): When :class:`PluginHost` returns ``aborted=True``, the controller transition, When :class:`PluginHost` returns ``aborted=True``, the controller transition, When :class:`PluginHost` returns ``aborted=True``, the controller transition, test_plugin_pass_aborted_transitions_to_failed() ### Community 403 - "Community 403" Cohesion: 0.5 -Nodes (4): 4.3.1 The `constants/` package, 4.3.2 The `tray/` and `window/` packages, 4.3 Package Layout, code:block2 (exlab_wizard/) +Nodes (4): T1 (§C1): the production ``ReadmeGenerator`` -- injected by ``tray.dependenc, T1 (§C1): the production ``ReadmeGenerator`` -- injected by ``tray.dependenc, T1 (§C1): the production ``ReadmeGenerator`` -- injected by ``tray.dependenc, test_real_readme_generator_writes_frontmatter_and_cache() ### Community 404 - "Community 404" Cohesion: 0.5 -Nodes (3): Answer, Q: How are the example equipment, projects, run folders, and samples generated in --test mode of the wizard tray?, Source Nodes +Nodes (4): ``subscribe`` initializes ``event_queue`` if the session opened with none (d, ``subscribe`` initializes ``event_queue`` if the session opened with none (d, ``subscribe`` initializes ``event_queue`` if the session opened with none (d, test_subscribe_creates_queue_when_missing() ### Community 405 - "Community 405" -Cohesion: 0.67 -Nodes (3): ``RunNode.sync_status`` flows through to the resulting ``TreeNode``., ``RunNode.sync_status`` flows through to the resulting ``TreeNode``., test_tree_run_node_propagates_sync_status() +Cohesion: 0.5 +Nodes (4): When the operator cancels the input-required prompt (host returns ``aborted=, When the operator cancels the input-required prompt (host returns ``aborted=, When the operator cancels the input-required prompt (host returns ``aborted=, test_cancel_input_required_aborts_session_via_plugin_callback() ### Community 406 - "Community 406" -Cohesion: 0.67 -Nodes (3): Each row carries a ``testid_kind`` matching the Playwright contract., Each row carries a ``testid_kind`` matching the Playwright contract., test_to_nicegui_nodes_emits_testid_kind() +Cohesion: 0.5 +Nodes (4): ``_cleanup`` swallows compose-path errors gracefully., ``_cleanup`` swallows compose-path errors gracefully., ``_cleanup`` swallows compose-path errors gracefully., test_cancel_invokes_cleanup_when_compose_path_fails() ### Community 407 - "Community 407" -Cohesion: 0.67 -Nodes (3): Archived projects are hidden by default., Archived projects are hidden by default., test_tree_filter_archived_default_off_hides_archived() +Cohesion: 0.5 +Nodes (4): The ``_required_field_ids`` helper must skip non-dict entries in the templat, The ``_required_field_ids`` helper must skip non-dict entries in the templat, The ``_required_field_ids`` helper must skip non-dict entries in the templat, test_required_field_ids_filters_non_dict_entries() ### Community 408 - "Community 408" -Cohesion: 0.67 -Nodes (3): Deleted-from-LIMS rows always render (Frontend §3.5.3)., Deleted-from-LIMS rows always render (Frontend §3.5.3)., test_tree_filter_deleted_always_shown() +Cohesion: 0.5 +Nodes (4): ``_cleanup`` removes the destination directory when ``discard_files=True``., ``_cleanup`` removes the destination directory when ``discard_files=True``., ``_cleanup`` removes the destination directory when ``discard_files=True``., test_cleanup_removes_existing_directory_when_discard_files_true() ### Community 409 - "Community 409" -Cohesion: 0.67 -Nodes (3): An ``EquipmentNode(relay=True)`` builds a ``received_equipment`` row., An ``EquipmentNode(relay=True)`` builds a ``received_equipment`` row., test_equipment_node_relay_flag_emits_received_equipment_kind() +Cohesion: 0.5 +Nodes (4): A template-required README field missing from ``readme_extra`` must trigger, A template-required README field missing from ``readme_extra`` must trigger, A template-required README field missing from ``readme_extra`` must trigger, test_required_template_field_missing_in_readme_extra_fails() ### Community 410 - "Community 410" -Cohesion: 0.67 -Nodes (3): A ``cleared`` run row carries the cloud-icon URL and its sync_status. Opera, A ``cleared`` run row carries the cloud-icon URL and its sync_status. Opera, test_to_nicegui_nodes_cleared_run_uses_cloud_icon() +Cohesion: 0.5 +Nodes (4): A cancel with ``discard_files=False`` leaves the partial directory., A cancel with ``discard_files=False`` leaves the partial directory., A cancel with ``discard_files=False`` leaves the partial directory., test_cancel_without_discard_leaves_partial_dir() ### Community 411 - "Community 411" -Cohesion: 0.67 -Nodes (3): The pre-commit ``no-direct-ui-notify`` rule is mirrored in tests. Any call, The pre-commit ``no-direct-ui-notify`` rule is mirrored in tests. Any call, test_no_stray_ui_notify_calls_in_ui_package() +Cohesion: 0.5 +Nodes (4): If ``cancel`` is invoked on a session that has not yet started a pipeline ta, If ``cancel`` is invoked on a session that has not yet started a pipeline ta, If ``cancel`` is invoked on a session that has not yet started a pipeline ta, test_cancel_before_task_starts_invokes_cleanup() ### Community 412 - "Community 412" -Cohesion: 0.67 -Nodes (3): The ``default-header`` template carries the per-row anchors the Playwright f, The ``default-header`` template carries the per-row anchors the Playwright f, test_slot_template_emits_testid_data_node_id_and_context_menus() +Cohesion: 0.5 +Nodes (4): A Copier render failure (e.g. dst exists) transitions the session to ``FAILE, A Copier render failure (e.g. dst exists) transitions the session to ``FAILE, A Copier render failure (e.g. dst exists) transitions the session to ``FAILE, test_render_failure_transitions_session_to_failed() ### Community 413 - "Community 413" -Cohesion: 0.67 -Nodes (3): Any non-``cleaned`` sync status (or unset) maps to the local-icon URL., Any non-``cleaned`` sync status (or unset) maps to the local-icon URL., test_to_nicegui_nodes_local_run_uses_local_icon() +Cohesion: 0.5 +Nodes (4): A config.yaml-required README field missing from ``readme_extra`` must trigg, A config.yaml-required README field missing from ``readme_extra`` must trigg, A config.yaml-required README field missing from ``readme_extra`` must trigg, test_config_required_readme_field_missing_fails() ### Community 414 - "Community 414" -Cohesion: 0.67 -Nodes (3): Each factory emits a dict (or NiceGUI element) without crashing. The factor, Each factory emits a dict (or NiceGUI element) without crashing. The factor, test_factories_smoke_outside_nicegui() +Cohesion: 0.5 +Nodes (4): Resume against a session that has no resume queue raises., Resume against a session that has no resume queue raises., Resume against a session that has no resume queue raises., test_resume_session_with_no_resume_queue_raises() ### Community 415 - "Community 415" -Cohesion: 0.67 -Nodes (3): Equipment and project rows render without the per-row sync icon., Equipment and project rows render without the per-row sync icon., test_to_nicegui_nodes_equipment_and_project_have_no_sync_icon() +Cohesion: 0.5 +Nodes (4): A cancel with ``discard_files=True`` deletes the partial directory., A cancel with ``discard_files=True`` deletes the partial directory., A cancel with ``discard_files=True`` deletes the partial directory., test_cancel_with_discard_files_removes_partial_dir() ### Community 416 - "Community 416" -Cohesion: 0.67 -Nodes (3): The rclone-remote next-action points the operator at the setup docs., test_main_setup_banner_subline_tailored_for_nas_credentials(), test_main_setup_banner_subline_tailored_for_rclone_remote() +Cohesion: 0.5 +Nodes (3): E2E smoke flow. Confirms the Phase 16 e2e harness can drive a real browser agai, Smoke: navigate to / and confirm the e2e harness is wired up. The Phase 16, test_root_url_responds_with_html() ### Community 417 - "Community 417" -Cohesion: 0.67 -Nodes (3): The dynamic NAS-remote section is auto-selected when it's the gate., test_settings_first_incomplete_resolves_nas_credentials(), test_settings_first_incomplete_resolves_nas_remote() +Cohesion: 0.5 +Nodes (3): Machine-readable catalog of the wizard's UX interactions. Each :class:`UXIntera, One operator-facing affordance in the wizard UI., UXInteraction -### Community 418 - "Community 418" -Cohesion: 0.67 -Nodes (3): The Phase 4 params default empty and drop out of the URL entirely., The Phase 4 params default empty and drop out of the URL entirely., test_build_main_query_omits_empty_phase4_params() +### Community 419 - "Community 419" +Cohesion: 0.5 +Nodes (3): empty_state(), Empty-state placeholder (GUI/Orchestrator Redesign §4 polish, Phase 5). A centr, Render a centred icon + hint placeholder; return the column element. ``icon ### Community 420 - "Community 420" -Cohesion: 0.67 -Nodes (3): Motion tokens (DESIGN.md §07)., Motion tokens (DESIGN.md §07)., test_motion_tokens_match_designmd() +Cohesion: 0.5 +Nodes (4): first_incomplete_section(), Return the first section ID in canonical order that's incomplete. The dynam, Return the first section ID in canonical order that's incomplete. The dynam, Return the first section ID in canonical order that's incomplete. The dynam ### Community 421 - "Community 421" -Cohesion: 0.67 -Nodes (3): Semantic tokens alias the Okabe-Ito palette per DESIGN.md §01., Semantic tokens alias the Okabe-Ito palette per DESIGN.md §01., test_semantic_aliases_are_okabe_ito() +Cohesion: 0.5 +Nodes (4): Mutable state for the dialog., Mutable state for the dialog., Mutable state for the dialog., SettingsState ### Community 422 - "Community 422" -Cohesion: 0.67 -Nodes (3): Spacing tokens follow the 4px grid (DESIGN.md §03)., Spacing tokens follow the 4px grid (DESIGN.md §03)., test_spacing_scale_4px_grid() +Cohesion: 0.5 +Nodes (4): _level_for_orphan(), Translate the engine-level enum into the rules.check_orphan input. The orph, ``_level_for_orphan`` returns None for non-project / non-run levels., test_level_for_orphan_returns_none_for_unmapped_levels() ### Community 423 - "Community 423" -Cohesion: 0.67 -Nodes (3): Vermilion is reserved for the error / alert series (DESIGN.md §06)., Vermilion is reserved for the error / alert series (DESIGN.md §06)., test_vermilion_is_last_in_series() +Cohesion: 0.5 +Nodes (4): PluginsConfig, ``plugins:`` block. Master opt-in for network-declaring plugins., ``plugins:`` block. Master opt-in for network-declaring plugins., test_plugins_config_default_allow_network_false() ### Community 424 - "Community 424" -Cohesion: 0.67 -Nodes (3): Series order is fixed (DESIGN.md absolute constraint)., Series order is fixed (DESIGN.md absolute constraint)., test_okabe_ito_series_order_is_fixed() +Cohesion: 0.5 +Nodes (3): _encode_files(), Encode a run-relative path tuple into the ``files`` JSON column., Insert a new ``QUEUED`` row for ``run_path``. ``files`` is the per-file ### Community 425 - "Community 425" -Cohesion: 0.67 -Nodes (3): Frontend rules (DESIGN.md): series 5 is OI_BLUE but only after 4 prior series., Frontend rules (DESIGN.md): series 5 is OI_BLUE but only after 4 prior series., test_no_blue_collision_in_series_first_six() +Cohesion: 0.5 +Nodes (4): test_obscure_missing_binary_raises_auth(), test_obscure_returns_stdout_stripped(), obscure(), Return the rclone-obscured form of ``password``. rclone refuses raw passwor ### Community 426 - "Community 426" -Cohesion: 0.67 -Nodes (3): Type scale tokens are verbatim from DESIGN.md §02., Type scale tokens are verbatim from DESIGN.md §02., test_type_scale_matches_designmd() +Cohesion: 0.5 +Nodes (3): _await_or_call(), ``/config`` router. Backend Spec §4.6.1, §4.9. Endpoints: * ``GET /config`` --, Invoke a saver that may be sync or async. ### Community 427 - "Community 427" -Cohesion: 0.67 -Nodes (3): ``#F0E442`` is exposed as a token but never used for chrome. The chip strip, ``#F0E442`` is exposed as a token but never used for chrome. The chip strip, test_yellow_is_present_but_only_for_fills() +Cohesion: 0.5 +Nodes (4): 4.3.1 The `constants/` package, 4.3.2 The `tray/` and `window/` packages, 4.3 Package Layout, code:block2 (exlab_wizard/) ### Community 428 - "Community 428" -Cohesion: 0.67 -Nodes (3): All shadow definitions use ``rgba(0,54,96,...)`` (DESIGN.md §04)., All shadow definitions use ``rgba(0,54,96,...)`` (DESIGN.md §04)., test_shadows_are_navy_tinted() +Cohesion: 0.5 +Nodes (3): Answer, Q: How are the example equipment, projects, run folders, and samples generated in --test mode of the wizard tray?, Source Nodes ### Community 429 - "Community 429" -Cohesion: 0.67 -Nodes (3): Alert text variants are the documented hexes (DESIGN.md §05)., Alert text variants are the documented hexes (DESIGN.md §05)., test_alert_text_variants_match_designmd() +Cohesion: 0.5 +Nodes (4): The Phase 4 params default empty and drop out of the URL entirely., The Phase 4 params default empty and drop out of the URL entirely., The Phase 4 params default empty and drop out of the URL entirely., test_build_main_query_omits_empty_phase4_params() ### Community 430 - "Community 430" -Cohesion: 0.67 -Nodes (3): Frontend §2.1.4: warning is canonically ``--oi-orange``., Frontend §2.1.4: warning is canonically ``--oi-orange``., test_warning_token_is_oi_orange() +Cohesion: 0.5 +Nodes (4): ``file`` keeps '/' readable but encodes spaces; ``q`` encodes everything., ``file`` keeps '/' readable but encodes spaces; ``q`` encodes everything., ``file`` keeps '/' readable but encodes spaces; ``q`` encodes everything., test_build_main_query_encodes_file_path_and_search() ### Community 431 - "Community 431" Cohesion: 0.67 -Nodes (3): Border radius tokens (DESIGN.md §04)., Border radius tokens (DESIGN.md §04)., test_radius_tokens_match_designmd() +Nodes (3): Suspended rows sort first, oldest started_at first (§9.5)., Suspended rows sort first, oldest started_at first (§9.5)., test_operations_modal_sort_suspended_first_oldest_first() ### Community 432 - "Community 432" Cohesion: 0.67 -Nodes (3): Badge text variants are the documented darkened hexes (DESIGN.md §05)., Badge text variants are the documented darkened hexes (DESIGN.md §05)., test_badge_text_variants_are_wcag_aa() +Nodes (3): The phase enum order matches Frontend §10.1., The phase enum order matches Frontend §10.1., test_session_progress_phase_order_is_canonical() + +### Community 433 - "Community 433" +Cohesion: 0.67 +Nodes (3): An empty input has nothing to persist -- stay in the editor., An empty input has nothing to persist -- stay in the editor., test_commit_edit_with_empty_value_stays_editing_and_skips_save() + +### Community 434 - "Community 434" +Cohesion: 0.67 +Nodes (3): When ``running_plugins`` carries N/M, a sub-row dict is emitted. We assert, When ``running_plugins`` carries N/M, a sub-row dict is emitted. We assert, test_session_progress_plugin_sub_row_present() + +### Community 435 - "Community 435" +Cohesion: 0.67 +Nodes (3): The active phase has fraction 0.5 and ``is_active``., The active phase has fraction 0.5 and ``is_active``., test_session_progress_active_phase_marked() ### Community 436 - "Community 436" Cohesion: 0.67 -Nodes (3): Redesign §3.1: the ``enabled`` toggle is removed; old configs that carry it, Redesign §3.1: the ``enabled`` toggle is removed; old configs that carry it, test_orchestrator_legacy_enabled_field_rejected() +Nodes (3): Clicking *Set* opens the editor; *Cancel* must return to Not set., Clicking *Set* opens the editor; *Cancel* must return to Not set., test_begin_edit_from_not_set_enters_editing_remembering_not_set() ### Community 437 - "Community 437" Cohesion: 0.67 -Nodes (3): Redesign §3.1: the ``enabled`` toggle is removed; ``label`` and ``staging_ro, Redesign §3.1: the ``enabled`` toggle is removed; ``label`` and ``staging_ro, test_orchestrator_config_defaults() +Nodes (3): Clicking *Replace* opens the editor; *Cancel* must return to Set., Clicking *Replace* opens the editor; *Cancel* must return to Set., test_begin_edit_from_set_remembers_set_as_resting() ### Community 438 - "Community 438" Cohesion: 0.67 -Nodes (3): They can be empty at load time (the setup-incomplete gate trips, not the Pyd, They can be empty at load time (the setup-incomplete gate trips, not the Pyd, test_orchestrator_label_and_staging_root_load_independently() +Nodes (3): Banners exceed the 2-cap; overflow is reported., Banners exceed the 2-cap; overflow is reported., test_banner_stack_shows_visible_and_overflow_split() + +### Community 439 - "Community 439" +Cohesion: 0.67 +Nodes (3): Settings has nine sections (Frontend §7.2 + §7.9 operators). The ``operator, Settings has nine sections (Frontend §7.2 + §7.9 operators). The ``operator, test_settings_nine_sections_includes_operators() + +### Community 440 - "Community 440" +Cohesion: 0.67 +Nodes (3): Test runs add a TestRuns/ folder and TestRun_ leaf prefix., Test runs add a TestRuns/ folder and TestRun_ leaf prefix., test_wizard_run_preview_test_path_highlights() + +### Community 441 - "Community 441" +Cohesion: 0.67 +Nodes (3): Translation preserves the chip state., Translation preserves the chip state., test_main_chip_state_to_tree_filters_round_trip() + +### Community 442 - "Community 442" +Cohesion: 0.67 +Nodes (3): Three bullets describing what the app does. Redesign decision 2: bullets re, Three bullets describing what the app does. Redesign decision 2: bullets re, test_welcome_card_three_bullets() + +### Community 443 - "Community 443" +Cohesion: 0.67 +Nodes (3): First incomplete section is the first per canonical order., First incomplete section is the first per canonical order., test_settings_first_incomplete_returns_canonical_first() + +### Community 444 - "Community 444" +Cohesion: 0.67 +Nodes (3): Pre-flight: less than 100 MB free aborts (Frontend §10.5.4)., Pre-flight: less than 100 MB free aborts (Frontend §10.5.4)., test_wizard_project_preview_blocks_with_low_disk() + +### Community 445 - "Community 445" +Cohesion: 0.67 +Nodes (3): Frontend §4 mandates seven steps in a fixed order., Frontend §4 mandates seven steps in a fixed order., test_wizard_project_seven_steps() + +### Community 446 - "Community 446" +Cohesion: 0.67 +Nodes (3): Setup-incomplete banner uses ``--color-warning`` per Frontend §3.1.4., Setup-incomplete banner uses ``--color-warning`` per Frontend §3.1.4., test_main_setup_incomplete_banner_uses_warning() ### Community 447 - "Community 447" Cohesion: 0.67 -Nodes (3): When no factory is injected, the client builds the per-equipment driver. We, When no factory is injected, the client builds the named-remote driver. We, test_default_push_factory_uses_real_driver() +Nodes (3): Frontend §11.5: minimum 10 chars after trim., Frontend §11.5: minimum 10 chars after trim., test_problems_override_reason_min_length() ### Community 448 - "Community 448" Cohesion: 0.67 -Nodes (3): ``_mark_synced`` is a no-op when ``creation.json`` doesn't exist., ``_mark_synced`` is a no-op when ``creation.json`` doesn't exist., test_mark_synced_no_op_when_creation_missing() +Nodes (3): Step 1 requires a LIMS short_id., Step 1 requires a LIMS short_id., test_wizard_project_can_advance_blocks_until_lims_picked() ### Community 449 - "Community 449" Cohesion: 0.67 -Nodes (3): ``_delete_local`` is a no-op when the run directory is already gone., ``_delete_local`` is a no-op when the run directory is already gone., test_delete_local_no_op_when_path_missing() +Nodes (3): Whitespace is trimmed before length check., Whitespace is trimmed before length check., test_problems_override_reason_trims_whitespace() + +### Community 450 - "Community 450" +Cohesion: 0.67 +Nodes (3): Test-mode primary button uses ``warning`` color (Frontend §5.3)., Test-mode primary button uses ``warning`` color (Frontend §5.3)., test_wizard_run_test_button_uses_warning_color() ### Community 451 - "Community 451" Cohesion: 0.67 -Nodes (3): If neither ``creation.paths.local`` nor ``run_path`` contains a configured e, If neither ``creation.paths.local`` nor ``run_path`` contains a configured e, test_infer_equipment_id_falls_back_to_first() +Nodes (3): Frontend §11.5: maximum 500 chars after trim., Frontend §11.5: maximum 500 chars after trim., test_problems_override_reason_max_length() + +### Community 452 - "Community 452" +Cohesion: 0.67 +Nodes (3): Welcome card defaults autostart to on (Frontend §3.1.3)., Welcome card defaults autostart to on (Frontend §3.1.3)., test_welcome_card_spec_default_autostart_on() ### Community 453 - "Community 453" Cohesion: 0.67 -Nodes (3): Install the rclone stub on PATH for the test., Install the rclone stub on PATH for the test., stub_binaries_on_path() +Nodes (3): Within 10 of the maximum -> near-limit warning., Within 10 of the maximum -> near-limit warning., test_problems_near_limit_flag() + +### Community 454 - "Community 454" +Cohesion: 0.67 +Nodes (3): Five problem-class chips per Backend §8.1.1-§8.1.5., Five problem-class chips per Backend §8.1.1-§8.1.5., test_problems_chip_definitions_match_spec() + +### Community 455 - "Community 455" +Cohesion: 0.67 +Nodes (3): Active default-on, Archived default-off, Test runs default-on., Active default-on, Archived default-off, Test runs default-on., test_main_default_chips_match_spec() + +### Community 457 - "Community 457" +Cohesion: 0.67 +Nodes (3): Series order is fixed (DESIGN.md absolute constraint)., Series order is fixed (DESIGN.md absolute constraint)., test_okabe_ito_series_order_is_fixed() + +### Community 458 - "Community 458" +Cohesion: 0.67 +Nodes (3): Type scale tokens are verbatim from DESIGN.md §02., Type scale tokens are verbatim from DESIGN.md §02., test_type_scale_matches_designmd() ### Community 459 - "Community 459" Cohesion: 0.67 -Nodes (3): Defensive fallback: any value that isn't a recognized SetupState returns an, Defensive fallback: any value that isn't a recognized SetupState returns an, test_setup_state_missing_unrecognized_state_returns_empty() +Nodes (3): Motion tokens (DESIGN.md §07)., Motion tokens (DESIGN.md §07)., test_motion_tokens_match_designmd() ### Community 460 - "Community 460" Cohesion: 0.67 -Nodes (3): When config is None but state is INCOMPLETE_NO_LIMS, the whole lims block is, When config is None but state is INCOMPLETE_NO_LIMS, the whole lims block is, test_setup_state_missing_for_no_lims_with_none_config() +Nodes (3): Vermilion is reserved for the error / alert series (DESIGN.md §06)., Vermilion is reserved for the error / alert series (DESIGN.md §06)., test_vermilion_is_last_in_series() + +### Community 461 - "Community 461" +Cohesion: 0.67 +Nodes (3): All shadow definitions use ``rgba(0,54,96,...)`` (DESIGN.md §04)., All shadow definitions use ``rgba(0,54,96,...)`` (DESIGN.md §04)., test_shadows_are_navy_tinted() + +### Community 462 - "Community 462" +Cohesion: 0.67 +Nodes (3): Semantic tokens alias the Okabe-Ito palette per DESIGN.md §01., Semantic tokens alias the Okabe-Ito palette per DESIGN.md §01., test_semantic_aliases_are_okabe_ito() ### Community 463 - "Community 463" Cohesion: 0.67 -Nodes (3): code:block3 (+-- 3px accent bar (color by category) ---------------------), code:css (.stat-card {), Stat Cards +Nodes (3): Border radius tokens (DESIGN.md §04)., Border radius tokens (DESIGN.md §04)., test_radius_tokens_match_designmd() ### Community 464 - "Community 464" Cohesion: 0.67 -Nodes (3): 08 -- Usage Rules & Anti-Patterns, Do, Don't +Nodes (3): Badge text variants are the documented darkened hexes (DESIGN.md §05)., Badge text variants are the documented darkened hexes (DESIGN.md §05)., test_badge_text_variants_are_wcag_aa() + +### Community 465 - "Community 465" +Cohesion: 0.67 +Nodes (3): Spacing tokens follow the 4px grid (DESIGN.md §03)., Spacing tokens follow the 4px grid (DESIGN.md §03)., test_spacing_scale_4px_grid() + +### Community 466 - "Community 466" +Cohesion: 0.67 +Nodes (3): Frontend rules (DESIGN.md): series 5 is OI_BLUE but only after 4 prior series., Frontend rules (DESIGN.md): series 5 is OI_BLUE but only after 4 prior series., test_no_blue_collision_in_series_first_six() + +### Community 467 - "Community 467" +Cohesion: 0.67 +Nodes (3): ``#F0E442`` is exposed as a token but never used for chrome. The chip strip, ``#F0E442`` is exposed as a token but never used for chrome. The chip strip, test_yellow_is_present_but_only_for_fills() + +### Community 468 - "Community 468" +Cohesion: 0.67 +Nodes (3): Frontend §2.1.4: warning is canonically ``--oi-orange``., Frontend §2.1.4: warning is canonically ``--oi-orange``., test_warning_token_is_oi_orange() + +### Community 469 - "Community 469" +Cohesion: 0.67 +Nodes (3): Alert text variants are the documented hexes (DESIGN.md §05)., Alert text variants are the documented hexes (DESIGN.md §05)., test_alert_text_variants_match_designmd() + +### Community 470 - "Community 470" +Cohesion: 0.67 +Nodes (3): Frontend §2.1.3 overrides DM Sans / DM Mono with IBM Plex / system mono., Frontend §2.1.3 overrides DM Sans / DM Mono with IBM Plex / system mono., test_typography_uses_frontend_override() + +### Community 473 - "Community 473" +Cohesion: 0.67 +Nodes (3): Map relpath -> bytes for README/creation.json/payload (no equipment.json)., _snapshot(), test_determinism() + +### Community 483 - "Community 483" +Cohesion: 0.67 +Nodes (3): A run whose parent project name is not a safe path segment (§3.2) is rejecte, A run whose parent project name is not a safe path segment (§3.2) is rejecte, test_validation_rejects_unsafe_project_name_for_runs() + +### Community 489 - "Community 489" +Cohesion: 0.67 +Nodes (3): fake_home(), Return a fake HOME under tmp_path; route ``Path.home()`` to it., Return a fake HOME under tmp_path; route ``Path.home()`` to it. + +### Community 491 - "Community 491" +Cohesion: 0.67 +Nodes (3): Return the ``readme_fields.json`` path under a run or project directory., Return the ``readme_fields.json`` path under a run or project directory., readme_fields_json_path() + +### Community 492 - "Community 492" +Cohesion: 0.67 +Nodes (3): Redesign §3.1: the ``enabled`` toggle is removed; old configs that carry it, Redesign §3.1: the ``enabled`` toggle is removed; old configs that carry it, test_orchestrator_legacy_enabled_field_rejected() + +### Community 493 - "Community 493" +Cohesion: 0.67 +Nodes (3): Redesign §3.1: the ``enabled`` toggle is removed; ``label`` and ``staging_ro, Redesign §3.1: the ``enabled`` toggle is removed; ``label`` and ``staging_ro, test_orchestrator_config_defaults() + +### Community 494 - "Community 494" +Cohesion: 0.67 +Nodes (3): They can be empty at load time (the setup-incomplete gate trips, not the Pyd, They can be empty at load time (the setup-incomplete gate trips, not the Pyd, test_orchestrator_label_and_staging_root_load_independently() + +### Community 495 - "Community 495" +Cohesion: 0.67 +Nodes (3): Install the rclone stub under ``tmp_path/bin`` and prepend to PATH., Install the rclone stub under ``tmp_path/bin`` and prepend to PATH., stub_dir() + +### Community 496 - "Community 496" +Cohesion: 0.67 +Nodes (3): Tell the stub to append every invocation's argv to a log file., Tell the stub to append every invocation's argv to a log file., record_argv() + +### Community 497 - "Community 497" +Cohesion: 0.67 +Nodes (3): 04 -- Border Radius & Shadows, Border Radius, Shadows + +### Community 498 - "Community 498" +Cohesion: 0.67 +Nodes (3): code:block3 (+-- 3px accent bar (color by category) ---------------------), code:css (.stat-card {), Stat Cards + +### Community 501 - "Community 501" +Cohesion: 0.67 +Nodes (3): 6.4.1 Suspend / resume flow, 6.4.2 Resume contract (what the plugin author must guarantee), 6.4 Plugin Input Escalation (`PluginInputRequired`) + +### Community 502 - "Community 502" +Cohesion: 0.67 +Nodes (3): 4.4.6 NASSyncClient and LIMSClient, code:python (class LIMSClient:), code:python (class NASSyncClient:) + +### Community 504 - "Community 504" +Cohesion: 0.67 +Nodes (3): Phase 4 adds optional file / q / density params to the same URL model., Phase 4 adds optional file / q / density params to the same URL model., test_build_main_query_includes_file_q_density() ## Knowledge Gaps -- **4281 isolated node(s):** `Tests for the top-level exception hierarchy in ``exlab_wizard.errors``. These t`, `Unit tests for ``exlab_wizard.paths``. OS-aware directory helpers + equipment-i`, `Construct a minimal valid EquipmentConfig for setup-state fixtures.`, `Minimal orchestrator identity (Redesign §3.1) for setup-state fixtures.`, `Construct a fully READY Config (paths + equipment + LIMS endpoint+email). R` (+4276 more) +- **4648 isolated node(s):** `Tests for the top-level exception hierarchy in ``exlab_wizard.errors``. These t`, `Unit tests for ``exlab_wizard.paths``. OS-aware directory helpers + equipment-i`, `Construct a minimal valid EquipmentConfig for setup-state fixtures.`, `Minimal orchestrator identity (Redesign §3.1) for setup-state fixtures.`, `Construct a fully READY Config (paths + equipment + LIMS endpoint+email). R` (+4643 more) These have ≤1 connection - possible missing edges or undocumented components. -- **201 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **189 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `ConfigError` connect `Community 0` to `Community 133`, `Community 134`, `Community 8`, `Community 9`, `Community 13`, `Community 271`, `Community 146`, `Community 148`, `Community 21`, `Community 23`, `Community 158`, `Community 166`, `Community 174`, `Community 60`, `Community 79`, `Community 80`, `Community 82`, `Community 84`, `Community 351`, `Community 370`, `Community 250`, `Community 252`?** - _High betweenness centrality (0.070) - this node is a cross-community bridge._ -- **Why does `Config` connect `Community 0` to `Community 129`, `Community 1`, `Community 134`, `Community 7`, `Community 8`, `Community 9`, `Community 17`, `Community 146`, `Community 18`, `Community 20`, `Community 21`, `Community 27`, `Community 28`, `Community 284`, `Community 174`, `Community 48`, `Community 49`, `Community 51`, `Community 182`, `Community 79`, `Community 107`, `Community 250`?** - _High betweenness centrality (0.068) - this node is a cross-community bridge._ -- **Why does `TrayApp` connect `Community 20` to `Community 0`, `Community 36`, `Community 40`, `Community 73`, `Community 74`, `Community 47`, `Community 114`, `Community 86`?** - _High betweenness centrality (0.055) - this node is a cross-community bridge._ +- **Why does `ConfigError` connect `Community 10` to `Community 0`, `Community 1`, `Community 256`, `Community 3`, `Community 4`, `Community 5`, `Community 261`, `Community 8`, `Community 137`, `Community 13`, `Community 15`, `Community 19`, `Community 292`, `Community 37`, `Community 38`, `Community 423`, `Community 174`, `Community 75`, `Community 78`, `Community 211`, `Community 89`, `Community 98`, `Community 108`, `Community 111`, `Community 378`?** + _High betweenness centrality (0.079) - this node is a cross-community bridge._ +- **Why does `Config` connect `Community 0` to `Community 1`, `Community 3`, `Community 261`, `Community 5`, `Community 135`, `Community 6`, `Community 8`, `Community 10`, `Community 9`, `Community 13`, `Community 14`, `Community 278`, `Community 25`, `Community 30`, `Community 37`, `Community 38`, `Community 421`, `Community 43`, `Community 60`, `Community 67`, `Community 95`, `Community 121`?** + _High betweenness centrality (0.066) - this node is a cross-community bridge._ +- **Why does `_UiSpy` connect `Community 14` to `Community 0`, `Community 2`, `Community 131`, `Community 18`, `Community 23`, `Community 158`, `Community 33`, `Community 170`, `Community 171`, `Community 172`, `Community 173`, `Community 180`, `Community 54`, `Community 69`, `Community 86`, `Community 351`, `Community 106`, `Community 107`, `Community 125`?** + _High betweenness centrality (0.059) - this node is a cross-community bridge._ - **Are the 120 inferred relationships involving `create_app()` (e.g. with `test_get_setup_status_reports_configure_rclone_remote()` and `test_get_setup_status_ready()`) actually correct?** _`create_app()` has 120 INFERRED edges - model-reasoned connections that need verification._ - **Are the 120 inferred relationships involving `AppDependencies` (e.g. with `_RecordingComponent` and `_RecordingValidator`) actually correct?** diff --git a/graphify-out/graph.json b/graphify-out/graph.json index e1e51ff..2303de9 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -9,7 +9,7 @@ "source_file": "tests/__init__.py", "source_location": "L1", "id": "tests_init_py", - "community": 528, + "community": 552, "norm_label": "__init__.py" }, { @@ -18,7 +18,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L1", "id": "tests_unit_test_errors_py", - "community": 23, + "community": 15, "norm_label": "test_errors.py" }, { @@ -27,7 +27,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L33", "id": "unit_test_errors_test_exlab_error_is_subclass_of_exception", - "community": 23, + "community": 15, "norm_label": "test_exlab_error_is_subclass_of_exception()" }, { @@ -36,7 +36,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L37", "id": "unit_test_errors_test_exlab_error_can_be_raised_and_caught", - "community": 23, + "community": 15, "norm_label": "test_exlab_error_can_be_raised_and_caught()" }, { @@ -45,7 +45,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L48", "id": "unit_test_errors_test_config_error_is_subclass_of_exlab_error", - "community": 23, + "community": 15, "norm_label": "test_config_error_is_subclass_of_exlab_error()" }, { @@ -54,7 +54,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L52", "id": "unit_test_errors_test_config_error_can_be_raised_and_caught", - "community": 23, + "community": 10, "norm_label": "test_config_error_can_be_raised_and_caught()" }, { @@ -63,7 +63,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L57", "id": "unit_test_errors_test_validation_error_is_subclass_of_exlab_error", - "community": 23, + "community": 15, "norm_label": "test_validation_error_is_subclass_of_exlab_error()" }, { @@ -72,7 +72,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L61", "id": "unit_test_errors_test_validation_error_can_be_raised_and_caught", - "community": 23, + "community": 10, "norm_label": "test_validation_error_can_be_raised_and_caught()" }, { @@ -81,7 +81,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L66", "id": "unit_test_errors_test_template_load_error_is_subclass_of_exlab_error", - "community": 23, + "community": 15, "norm_label": "test_template_load_error_is_subclass_of_exlab_error()" }, { @@ -90,7 +90,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L70", "id": "unit_test_errors_test_template_load_error_can_be_raised_and_caught", - "community": 23, + "community": 15, "norm_label": "test_template_load_error_can_be_raised_and_caught()" }, { @@ -99,7 +99,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L75", "id": "unit_test_errors_test_plugin_error_is_subclass_of_exlab_error", - "community": 23, + "community": 15, "norm_label": "test_plugin_error_is_subclass_of_exlab_error()" }, { @@ -108,7 +108,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L79", "id": "unit_test_errors_test_plugin_error_can_be_raised_and_caught", - "community": 58, + "community": 15, "norm_label": "test_plugin_error_can_be_raised_and_caught()" }, { @@ -117,7 +117,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L84", "id": "unit_test_errors_test_keyring_unavailable_error_is_subclass_of_exlab_error", - "community": 23, + "community": 15, "norm_label": "test_keyring_unavailable_error_is_subclass_of_exlab_error()" }, { @@ -126,7 +126,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L88", "id": "unit_test_errors_test_keyring_unavailable_error_can_be_raised_and_caught", - "community": 23, + "community": 15, "norm_label": "test_keyring_unavailable_error_can_be_raised_and_caught()" }, { @@ -135,7 +135,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L93", "id": "unit_test_errors_test_setup_incomplete_error_is_subclass_of_exlab_error", - "community": 23, + "community": 15, "norm_label": "test_setup_incomplete_error_is_subclass_of_exlab_error()" }, { @@ -144,7 +144,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L97", "id": "unit_test_errors_test_setup_incomplete_error_can_be_raised_and_caught", - "community": 23, + "community": 15, "norm_label": "test_setup_incomplete_error_can_be_raised_and_caught()" }, { @@ -153,7 +153,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L107", "id": "unit_test_errors_test_template_core_field_redeclared_is_subclass_of_template_load_error", - "community": 23, + "community": 15, "norm_label": "test_template_core_field_redeclared_is_subclass_of_template_load_error()" }, { @@ -162,7 +162,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L112", "id": "unit_test_errors_test_template_core_field_redeclared_is_also_subclass_of_exlab_error", - "community": 23, + "community": 15, "norm_label": "test_template_core_field_redeclared_is_also_subclass_of_exlab_error()" }, { @@ -171,7 +171,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L116", "id": "unit_test_errors_test_template_core_field_redeclared_can_be_caught_as_template_load_error", - "community": 23, + "community": 15, "norm_label": "test_template_core_field_redeclared_can_be_caught_as_template_load_error()" }, { @@ -180,7 +180,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L121", "id": "unit_test_errors_test_template_core_field_redeclared_can_be_caught_as_exlab_error", - "community": 23, + "community": 15, "norm_label": "test_template_core_field_redeclared_can_be_caught_as_exlab_error()" }, { @@ -189,7 +189,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L131", "id": "unit_test_errors_test_plugin_input_required_is_subclass_of_exlab_error", - "community": 23, + "community": 15, "norm_label": "test_plugin_input_required_is_subclass_of_exlab_error()" }, { @@ -198,7 +198,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L135", "id": "unit_test_errors_test_plugin_input_required_sets_fields_attribute", - "community": 23, + "community": 15, "norm_label": "test_plugin_input_required_sets_fields_attribute()" }, { @@ -207,7 +207,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L141", "id": "unit_test_errors_test_plugin_input_required_accepts_empty_fields_list", - "community": 23, + "community": 15, "norm_label": "test_plugin_input_required_accepts_empty_fields_list()" }, { @@ -216,7 +216,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L146", "id": "unit_test_errors_test_plugin_input_required_reason_property_returns_message_string", - "community": 23, + "community": 15, "norm_label": "test_plugin_input_required_reason_property_returns_message_string()" }, { @@ -225,7 +225,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L151", "id": "unit_test_errors_test_plugin_input_required_str_equals_reason", - "community": 23, + "community": 15, "norm_label": "test_plugin_input_required_str_equals_reason()" }, { @@ -234,7 +234,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L157", "id": "unit_test_errors_test_plugin_input_required_can_be_raised_and_caught", - "community": 23, + "community": 15, "norm_label": "test_plugin_input_required_can_be_raised_and_caught()" }, { @@ -243,7 +243,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L164", "id": "unit_test_errors_test_plugin_input_required_can_be_caught_as_exlab_error", - "community": 23, + "community": 15, "norm_label": "test_plugin_input_required_can_be_caught_as_exlab_error()" }, { @@ -252,7 +252,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L174", "id": "unit_test_errors_test_schema_major_mismatch_is_subclass_of_exlab_error", - "community": 23, + "community": 15, "norm_label": "test_schema_major_mismatch_is_subclass_of_exlab_error()" }, { @@ -261,7 +261,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L178", "id": "unit_test_errors_test_schema_major_mismatch_sets_expected_major_attribute", - "community": 23, + "community": 15, "norm_label": "test_schema_major_mismatch_sets_expected_major_attribute()" }, { @@ -270,7 +270,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L183", "id": "unit_test_errors_test_schema_major_mismatch_sets_found_attribute", - "community": 23, + "community": 15, "norm_label": "test_schema_major_mismatch_sets_found_attribute()" }, { @@ -279,7 +279,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L188", "id": "unit_test_errors_test_schema_major_mismatch_str_contains_expected_and_found", - "community": 23, + "community": 15, "norm_label": "test_schema_major_mismatch_str_contains_expected_and_found()" }, { @@ -288,7 +288,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L195", "id": "unit_test_errors_test_schema_major_mismatch_can_be_raised_and_caught", - "community": 23, + "community": 15, "norm_label": "test_schema_major_mismatch_can_be_raised_and_caught()" }, { @@ -297,7 +297,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L202", "id": "unit_test_errors_test_schema_major_mismatch_can_be_caught_as_exlab_error", - "community": 23, + "community": 15, "norm_label": "test_schema_major_mismatch_can_be_caught_as_exlab_error()" }, { @@ -306,7 +306,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L212", "id": "unit_test_errors_test_all_lists_every_public_exception_class", - "community": 23, + "community": 15, "norm_label": "test_all_lists_every_public_exception_class()" }, { @@ -315,7 +315,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L229", "id": "unit_test_errors_test_all_entries_resolve_to_module_attributes", - "community": 23, + "community": 15, "norm_label": "test_all_entries_resolve_to_module_attributes()" }, { @@ -324,7 +324,7 @@ "source_file": "tests/unit/test_errors.py", "source_location": "L1", "id": "unit_test_errors_rationale_1", - "community": 23, + "community": 15, "norm_label": "tests for the top-level exception hierarchy in ``exlab_wizard.errors``. these t" }, { @@ -333,7 +333,7 @@ "source_file": "tests/unit/__init__.py", "source_location": "L1", "id": "tests_unit_init_py", - "community": 529, + "community": 553, "norm_label": "__init__.py" }, { @@ -342,7 +342,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1", "id": "tests_unit_test_paths_py", - "community": 82, + "community": 75, "norm_label": "test_paths.py" }, { @@ -351,7 +351,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L52", "id": "unit_test_paths_make_equipment", - "community": 52, + "community": 59, "norm_label": "_make_equipment()" }, { @@ -360,7 +360,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L64", "id": "unit_test_paths_make_orchestrator", - "community": 52, + "community": 59, "norm_label": "_make_orchestrator()" }, { @@ -369,7 +369,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L74", "id": "unit_test_paths_ready_config", - "community": 153, + "community": 160, "norm_label": "_ready_config()" }, { @@ -378,7 +378,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L103", "id": "unit_test_paths_fake_home", - "community": 82, + "community": 489, "norm_label": "fake_home()" }, { @@ -387,7 +387,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L126", "id": "unit_test_paths_test_os_config_path_macos", - "community": 64, + "community": 76, "norm_label": "test_os_config_path_macos()" }, { @@ -396,7 +396,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L132", "id": "unit_test_paths_test_os_config_path_windows", - "community": 64, + "community": 76, "norm_label": "test_os_config_path_windows()" }, { @@ -405,7 +405,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L140", "id": "unit_test_paths_test_os_config_path_linux_with_xdg", - "community": 64, + "community": 76, "norm_label": "test_os_config_path_linux_with_xdg()" }, { @@ -414,7 +414,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L148", "id": "unit_test_paths_test_os_config_path_linux_without_xdg", - "community": 64, + "community": 76, "norm_label": "test_os_config_path_linux_without_xdg()" }, { @@ -423,7 +423,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L159", "id": "unit_test_paths_test_os_state_path_macos", - "community": 235, + "community": 239, "norm_label": "test_os_state_path_macos()" }, { @@ -432,7 +432,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L165", "id": "unit_test_paths_test_os_state_path_windows", - "community": 235, + "community": 239, "norm_label": "test_os_state_path_windows()" }, { @@ -441,7 +441,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L173", "id": "unit_test_paths_test_os_state_path_linux_with_xdg", - "community": 235, + "community": 239, "norm_label": "test_os_state_path_linux_with_xdg()" }, { @@ -450,7 +450,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L181", "id": "unit_test_paths_test_os_state_path_linux_without_xdg", - "community": 235, + "community": 239, "norm_label": "test_os_state_path_linux_without_xdg()" }, { @@ -459,7 +459,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L192", "id": "unit_test_paths_test_os_cache_path_macos", - "community": 64, + "community": 76, "norm_label": "test_os_cache_path_macos()" }, { @@ -468,7 +468,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L198", "id": "unit_test_paths_test_os_cache_path_windows", - "community": 64, + "community": 76, "norm_label": "test_os_cache_path_windows()" }, { @@ -477,7 +477,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L206", "id": "unit_test_paths_test_os_cache_path_linux_with_xdg", - "community": 64, + "community": 76, "norm_label": "test_os_cache_path_linux_with_xdg()" }, { @@ -486,7 +486,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L214", "id": "unit_test_paths_test_os_cache_path_linux_without_xdg", - "community": 64, + "community": 76, "norm_label": "test_os_cache_path_linux_without_xdg()" }, { @@ -495,7 +495,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L225", "id": "unit_test_paths_test_os_central_log_path_macos", - "community": 274, + "community": 238, "norm_label": "test_os_central_log_path_macos()" }, { @@ -504,7 +504,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L231", "id": "unit_test_paths_test_os_central_log_path_windows", - "community": 274, + "community": 238, "norm_label": "test_os_central_log_path_windows()" }, { @@ -513,7 +513,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L239", "id": "unit_test_paths_test_os_central_log_path_linux_with_xdg", - "community": 274, + "community": 238, "norm_label": "test_os_central_log_path_linux_with_xdg()" }, { @@ -522,7 +522,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L249", "id": "unit_test_paths_test_os_central_log_path_linux_without_xdg", - "community": 274, + "community": 238, "norm_label": "test_os_central_log_path_linux_without_xdg()" }, { @@ -531,7 +531,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L266", "id": "unit_test_paths_test_suggested_staging_root_linux_fallback", - "community": 64, + "community": 76, "norm_label": "test_suggested_staging_root_linux_fallback()" }, { @@ -540,7 +540,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L274", "id": "unit_test_paths_test_suggested_staging_root_linux_honors_xdg_data_home", - "community": 64, + "community": 76, "norm_label": "test_suggested_staging_root_linux_honors_xdg_data_home()" }, { @@ -549,7 +549,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L283", "id": "unit_test_paths_test_suggested_staging_root_macos", - "community": 64, + "community": 76, "norm_label": "test_suggested_staging_root_macos()" }, { @@ -558,7 +558,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L289", "id": "unit_test_paths_test_suggested_staging_root_windows", - "community": 64, + "community": 76, "norm_label": "test_suggested_staging_root_windows()" }, { @@ -567,7 +567,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L310", "id": "unit_test_paths_test_test_mode_suffixes_os_config_path", - "community": 64, + "community": 76, "norm_label": "test_test_mode_suffixes_os_config_path()" }, { @@ -576,7 +576,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L319", "id": "unit_test_paths_test_test_mode_suffixes_os_state_path", - "community": 235, + "community": 239, "norm_label": "test_test_mode_suffixes_os_state_path()" }, { @@ -585,7 +585,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L326", "id": "unit_test_paths_test_test_mode_suffixes_os_cache_path", - "community": 64, + "community": 76, "norm_label": "test_test_mode_suffixes_os_cache_path()" }, { @@ -594,7 +594,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L333", "id": "unit_test_paths_test_test_mode_suffixes_os_central_log_path", - "community": 274, + "community": 238, "norm_label": "test_test_mode_suffixes_os_central_log_path()" }, { @@ -603,7 +603,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L342", "id": "unit_test_paths_test_test_mode_suffixes_suggested_staging_root", - "community": 64, + "community": 76, "norm_label": "test_test_mode_suffixes_suggested_staging_root()" }, { @@ -612,7 +612,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L353", "id": "unit_test_paths_test_test_mode_off_does_not_suffix", - "community": 64, + "community": 76, "norm_label": "test_test_mode_off_does_not_suffix()" }, { @@ -621,7 +621,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L372", "id": "unit_test_paths_test_ensure_dir_creates_missing", - "community": 235, + "community": 238, "norm_label": "test_ensure_dir_creates_missing()" }, { @@ -630,7 +630,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L380", "id": "unit_test_paths_test_ensure_dir_idempotent_when_exists", - "community": 235, + "community": 238, "norm_label": "test_ensure_dir_idempotent_when_exists()" }, { @@ -639,7 +639,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L389", "id": "unit_test_paths_test_ensure_state_dir_creates_state_dir", - "community": 235, + "community": 239, "norm_label": "test_ensure_state_dir_creates_state_dir()" }, { @@ -648,7 +648,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L398", "id": "unit_test_paths_test_ensure_central_log_dir_creates_parent", - "community": 274, + "community": 238, "norm_label": "test_ensure_central_log_dir_creates_parent()" }, { @@ -657,7 +657,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L412", "id": "unit_test_paths_test_canonicalize_equipment_id_accepts_canonical", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_accepts_canonical()" }, { @@ -666,7 +666,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L420", "id": "unit_test_paths_test_canonicalize_equipment_id_accepts_other_canonical_examples", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_accepts_other_canonical_examples()" }, { @@ -675,7 +675,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L424", "id": "unit_test_paths_test_canonicalize_equipment_id_rejects_lowercase", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_rejects_lowercase()" }, { @@ -684,7 +684,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L429", "id": "unit_test_paths_test_canonicalize_equipment_id_rejects_hyphen", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_rejects_hyphen()" }, { @@ -693,7 +693,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L434", "id": "unit_test_paths_test_canonicalize_equipment_id_rejects_leading_digit", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_rejects_leading_digit()" }, { @@ -702,7 +702,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L439", "id": "unit_test_paths_test_canonicalize_equipment_id_rejects_space", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_rejects_space()" }, { @@ -711,7 +711,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L444", "id": "unit_test_paths_test_canonicalize_equipment_id_rejects_non_ascii", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_rejects_non_ascii()" }, { @@ -720,7 +720,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L449", "id": "unit_test_paths_test_canonicalize_equipment_id_rejects_too_long", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_rejects_too_long()" }, { @@ -729,7 +729,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L457", "id": "unit_test_paths_test_canonicalize_equipment_id_accepts_max_length", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_accepts_max_length()" }, { @@ -738,7 +738,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L462", "id": "unit_test_paths_test_canonicalize_equipment_id_rejects_empty", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_rejects_empty()" }, { @@ -747,7 +747,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L467", "id": "unit_test_paths_test_canonicalize_equipment_id_rejects_none", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_rejects_none()" }, { @@ -756,7 +756,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L474", "id": "unit_test_paths_test_canonicalize_equipment_id_rejects_int", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_rejects_int()" }, { @@ -765,7 +765,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L482", "id": "unit_test_paths_test_canonicalize_equipment_id_does_not_mutate_input", - "community": 82, + "community": 75, "norm_label": "test_canonicalize_equipment_id_does_not_mutate_input()" }, { @@ -774,7 +774,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L500", "id": "unit_test_paths_test_compose_run_path_experimental", - "community": 167, + "community": 176, "norm_label": "test_compose_run_path_experimental()" }, { @@ -783,7 +783,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L512", "id": "unit_test_paths_test_compose_run_path_test", - "community": 167, + "community": 176, "norm_label": "test_compose_run_path_test()" }, { @@ -792,7 +792,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L524", "id": "unit_test_paths_test_compose_run_path_strftime_format", - "community": 167, + "community": 176, "norm_label": "test_compose_run_path_strftime_format()" }, { @@ -801,7 +801,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L541", "id": "unit_test_paths_test_compose_run_path_experimental_under_runs_subdir", - "community": 167, + "community": 176, "norm_label": "test_compose_run_path_experimental_under_runs_subdir()" }, { @@ -810,7 +810,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L554", "id": "unit_test_paths_test_compose_run_path_same_minute_collision_returns_same_path", - "community": 167, + "community": 176, "norm_label": "test_compose_run_path_same_minute_collision_returns_same_path()" }, { @@ -819,7 +819,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L575", "id": "unit_test_paths_test_compose_run_path_rejects_invalid_equipment_id", - "community": 167, + "community": 176, "norm_label": "test_compose_run_path_rejects_invalid_equipment_id()" }, { @@ -828,7 +828,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L586", "id": "unit_test_paths_test_compose_run_path_rejects_unsafe_project_name", - "community": 167, + "community": 176, "norm_label": "test_compose_run_path_rejects_unsafe_project_name()" }, { @@ -837,7 +837,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L597", "id": "unit_test_paths_test_compose_project_path_basic", - "community": 82, + "community": 75, "norm_label": "test_compose_project_path_basic()" }, { @@ -846,7 +846,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L607", "id": "unit_test_paths_test_compose_project_path_rejects_invalid_equipment_id", - "community": 82, + "community": 75, "norm_label": "test_compose_project_path_rejects_invalid_equipment_id()" }, { @@ -855,7 +855,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L616", "id": "unit_test_paths_test_compose_project_path_rejects_unsafe_project_name", - "community": 82, + "community": 75, "norm_label": "test_compose_project_path_rejects_unsafe_project_name()" }, { @@ -864,7 +864,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L625", "id": "unit_test_paths_test_compose_run_path_rejects_non_str_project_name", - "community": 167, + "community": 176, "norm_label": "test_compose_run_path_rejects_non_str_project_name()" }, { @@ -873,7 +873,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L638", "id": "unit_test_paths_test_compose_run_path_rejects_empty_project_name", - "community": 167, + "community": 176, "norm_label": "test_compose_run_path_rejects_empty_project_name()" }, { @@ -882,7 +882,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L651", "id": "unit_test_paths_test_compose_project_path_rejects_non_str_project_name", - "community": 82, + "community": 75, "norm_label": "test_compose_project_path_rejects_non_str_project_name()" }, { @@ -891,7 +891,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L666", "id": "unit_test_paths_test_validate_project_name_accepts_human_readable_names", - "community": 252, + "community": 256, "norm_label": "test_validate_project_name_accepts_human_readable_names()" }, { @@ -900,7 +900,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L690", "id": "unit_test_paths_test_validate_project_name_rejects_unsafe_names", - "community": 252, + "community": 256, "norm_label": "test_validate_project_name_rejects_unsafe_names()" }, { @@ -909,7 +909,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L696", "id": "unit_test_paths_test_validate_project_name_rejects_overlong_name", - "community": 252, + "community": 256, "norm_label": "test_validate_project_name_rejects_overlong_name()" }, { @@ -918,7 +918,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L702", "id": "unit_test_paths_test_validate_project_name_does_not_mutate_input", - "community": 252, + "community": 256, "norm_label": "test_validate_project_name_does_not_mutate_input()" }, { @@ -927,7 +927,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L713", "id": "unit_test_paths_test_evaluate_setup_state_no_config", - "community": 82, + "community": 75, "norm_label": "test_evaluate_setup_state_no_config()" }, { @@ -936,7 +936,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L717", "id": "unit_test_paths_test_evaluate_setup_state_missing_paths", - "community": 52, + "community": 59, "norm_label": "test_evaluate_setup_state_missing_paths()" }, { @@ -945,7 +945,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L726", "id": "unit_test_paths_test_evaluate_setup_state_missing_paths_partial", - "community": 52, + "community": 59, "norm_label": "test_evaluate_setup_state_missing_paths_partial()" }, { @@ -954,7 +954,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L740", "id": "unit_test_paths_test_evaluate_setup_state_no_equipment", - "community": 52, + "community": 59, "norm_label": "test_evaluate_setup_state_no_equipment()" }, { @@ -963,7 +963,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L753", "id": "unit_test_paths_test_evaluate_setup_state_no_orchestrator", - "community": 52, + "community": 59, "norm_label": "test_evaluate_setup_state_no_orchestrator()" }, { @@ -972,7 +972,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L766", "id": "unit_test_paths_test_evaluate_setup_state_no_orchestrator_when_only_staging_set", - "community": 52, + "community": 59, "norm_label": "test_evaluate_setup_state_no_orchestrator_when_only_staging_set()" }, { @@ -990,7 +990,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L800", "id": "unit_test_paths_test_setup_state_missing_for_no_orchestrator_lists_only_label", - "community": 52, + "community": 59, "norm_label": "test_setup_state_missing_for_no_orchestrator_lists_only_label()" }, { @@ -1008,7 +1008,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L834", "id": "unit_test_paths_test_evaluate_setup_state_lims_via_offline_catalogue", - "community": 52, + "community": 59, "norm_label": "test_evaluate_setup_state_lims_via_offline_catalogue()" }, { @@ -1017,7 +1017,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L857", "id": "unit_test_paths_test_evaluate_setup_state_lims_unreachable", - "community": 153, + "community": 160, "norm_label": "test_evaluate_setup_state_lims_unreachable()" }, { @@ -1026,7 +1026,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L864", "id": "unit_test_paths_test_evaluate_setup_state_ready", - "community": 153, + "community": 160, "norm_label": "test_evaluate_setup_state_ready()" }, { @@ -1035,7 +1035,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L868", "id": "unit_test_paths_test_evaluate_setup_state_keyring_missing", - "community": 153, + "community": 160, "norm_label": "test_evaluate_setup_state_keyring_missing()" }, { @@ -1044,7 +1044,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L877", "id": "unit_test_paths_nas_remote_config", - "community": 52, + "community": 59, "norm_label": "_nas_remote_config()" }, { @@ -1053,7 +1053,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L903", "id": "unit_test_paths_test_setup_incomplete_when_nas_remote_blank", - "community": 52, + "community": 59, "norm_label": "test_setup_incomplete_when_nas_remote_blank()" }, { @@ -1062,7 +1062,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L911", "id": "unit_test_paths_test_setup_incomplete_when_remote_not_in_rclone_conf", - "community": 52, + "community": 59, "norm_label": "test_setup_incomplete_when_remote_not_in_rclone_conf()" }, { @@ -1071,7 +1071,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L921", "id": "unit_test_paths_test_setup_ready_when_remote_present", - "community": 52, + "community": 59, "norm_label": "test_setup_ready_when_remote_present()" }, { @@ -1080,7 +1080,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L931", "id": "unit_test_paths_test_evaluate_setup_state_nas_state_precedes_lims_state", - "community": 153, + "community": 160, "norm_label": "test_evaluate_setup_state_nas_state_precedes_lims_state()" }, { @@ -1089,7 +1089,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L943", "id": "unit_test_paths_test_setup_state_missing_for_no_nas_remote_reports_remote_field", - "community": 60, + "community": 177, "norm_label": "test_setup_state_missing_for_no_nas_remote_reports_remote_field()" }, { @@ -1098,7 +1098,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L956", "id": "unit_test_paths_test_setup_state_next_action_for_no_nas_remote", - "community": 210, + "community": 75, "norm_label": "test_setup_state_next_action_for_no_nas_remote()" }, { @@ -1107,7 +1107,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L965", "id": "unit_test_paths_test_evaluate_setup_state_endpoint_only_missing_email", - "community": 52, + "community": 59, "norm_label": "test_evaluate_setup_state_endpoint_only_missing_email()" }, { @@ -1116,7 +1116,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L999", "id": "unit_test_paths_test_setup_state_next_action_table", - "community": 210, + "community": 75, "norm_label": "test_setup_state_next_action_table()" }, { @@ -1125,7 +1125,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1008", "id": "unit_test_paths_test_setup_state_missing_when_no_config", - "community": 60, + "community": 177, "norm_label": "test_setup_state_missing_when_no_config()" }, { @@ -1134,7 +1134,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1016", "id": "unit_test_paths_test_setup_state_missing_when_ready", - "community": 153, + "community": 160, "norm_label": "test_setup_state_missing_when_ready()" }, { @@ -1143,7 +1143,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1020", "id": "unit_test_paths_test_setup_state_missing_when_lims_unreachable_returns_empty", - "community": 153, + "community": 160, "norm_label": "test_setup_state_missing_when_lims_unreachable_returns_empty()" }, { @@ -1152,7 +1152,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1025", "id": "unit_test_paths_test_setup_state_missing_for_paths_lists_each_unset", - "community": 60, + "community": 177, "norm_label": "test_setup_state_missing_for_paths_lists_each_unset()" }, { @@ -1161,7 +1161,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1036", "id": "unit_test_paths_test_setup_state_missing_for_no_equipment", - "community": 153, + "community": 160, "norm_label": "test_setup_state_missing_for_no_equipment()" }, { @@ -1170,7 +1170,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1041", "id": "unit_test_paths_test_setup_state_missing_for_no_lims_lists_endpoint_email", - "community": 0, + "community": 59, "norm_label": "test_setup_state_missing_for_no_lims_lists_endpoint_email()" }, { @@ -1179,7 +1179,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1058", "id": "unit_test_paths_test_setup_state_missing_for_missing_paths_with_none_config", - "community": 60, + "community": 177, "norm_label": "test_setup_state_missing_for_missing_paths_with_none_config()" }, { @@ -1188,7 +1188,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1069", "id": "unit_test_paths_test_setup_state_missing_for_no_lims_with_none_config", - "community": 460, + "community": 177, "norm_label": "test_setup_state_missing_for_no_lims_with_none_config()" }, { @@ -1197,7 +1197,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1077", "id": "unit_test_paths_test_setup_state_missing_for_no_lims_flags_keyring_when_endpoint_email_set", - "community": 52, + "community": 59, "norm_label": "test_setup_state_missing_for_no_lims_flags_keyring_when_endpoint_email_set()" }, { @@ -1206,7 +1206,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1103", "id": "unit_test_paths_test_setup_state_missing_unrecognized_state_returns_empty", - "community": 459, + "community": 177, "norm_label": "test_setup_state_missing_unrecognized_state_returns_empty()" }, { @@ -1215,7 +1215,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1", "id": "unit_test_paths_rationale_1", - "community": 82, + "community": 75, "norm_label": "unit tests for ``exlab_wizard.paths``. os-aware directory helpers + equipment-i" }, { @@ -1224,7 +1224,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L53", "id": "unit_test_paths_rationale_53", - "community": 52, + "community": 59, "norm_label": "construct a minimal valid equipmentconfig for setup-state fixtures." }, { @@ -1233,7 +1233,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L65", "id": "unit_test_paths_rationale_65", - "community": 52, + "community": 59, "norm_label": "minimal orchestrator identity (redesign \u00a73.1) for setup-state fixtures." }, { @@ -1242,7 +1242,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L75", "id": "unit_test_paths_rationale_75", - "community": 153, + "community": 160, "norm_label": "construct a fully ready config (paths + equipment + lims endpoint+email). r" }, { @@ -1251,7 +1251,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L104", "id": "unit_test_paths_rationale_104", - "community": 82, + "community": 489, "norm_label": "return a fake home under tmp_path; route ``path.home()`` to it." }, { @@ -1260,7 +1260,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L345", "id": "unit_test_paths_rationale_345", - "community": 64, + "community": 76, "norm_label": "the suggestion now nests under app_name on every platform, so the test-mode" }, { @@ -1269,7 +1269,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L354", "id": "unit_test_paths_rationale_354", - "community": 64, + "community": 76, "norm_label": "unset / non-'1' values must leave the real os dirs untouched." }, { @@ -1278,7 +1278,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L468", "id": "unit_test_paths_rationale_468", - "community": 82, + "community": 75, "norm_label": "non-str input hits the isinstance guard, not the regex." }, { @@ -1287,7 +1287,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L475", "id": "unit_test_paths_rationale_475", - "community": 82, + "community": 75, "norm_label": "non-str input hits the isinstance guard, not the length / regex check." }, { @@ -1296,7 +1296,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L483", "id": "unit_test_paths_rationale_483", - "community": 82, + "community": 75, "norm_label": "spec contract: input must already be canonical; no silent uppercasing." }, { @@ -1305,7 +1305,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L525", "id": "unit_test_paths_rationale_525", - "community": 167, + "community": 176, "norm_label": "the leaf is iso 8601 with colons replaced by hyphens. \u00a73.1. redesign \u00a73.4:" }, { @@ -1314,7 +1314,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L542", "id": "unit_test_paths_rationale_542", - "community": 167, + "community": 176, "norm_label": "redesign \u00a73.4: experimental runs live under /runs/run_*." }, { @@ -1323,7 +1323,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L555", "id": "unit_test_paths_rationale_555", - "community": 167, + "community": 176, "norm_label": "redesign \u00a73.4: two runs in the same minute resolve to the same path (copier" }, { @@ -1332,7 +1332,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L626", "id": "unit_test_paths_rationale_626", - "community": 167, + "community": 176, "norm_label": "a non-str project_name hits the isinstance guard." }, { @@ -1341,7 +1341,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L639", "id": "unit_test_paths_rationale_639", - "community": 167, + "community": 176, "norm_label": "an empty-string project_name also hits the same guard." }, { @@ -1350,7 +1350,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L667", "id": "unit_test_paths_rationale_667", - "community": 252, + "community": 256, "norm_label": "spaces and ordinary punctuation are fine -- the name is used verbatim." }, { @@ -1359,7 +1359,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L703", "id": "unit_test_paths_rationale_703", - "community": 252, + "community": 256, "norm_label": "the \u00a73.2 contract is 'used verbatim' -- no canonicalisation." }, { @@ -1368,7 +1368,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L727", "id": "unit_test_paths_rationale_727", - "community": 52, + "community": 59, "norm_label": "only one path is empty -- still incomplete_missing_paths." }, { @@ -1377,7 +1377,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L754", "id": "unit_test_paths_rationale_754", - "community": 52, + "community": 59, "norm_label": "only ``label`` gates orchestrator identity; a blank label trips it." }, { @@ -1386,7 +1386,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L767", "id": "unit_test_paths_rationale_767", - "community": 52, + "community": 59, "norm_label": "a staging root without a label still trips -- staging never substitutes." }, { @@ -1404,7 +1404,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L801", "id": "unit_test_paths_rationale_801", - "community": 52, + "community": 59, "norm_label": "the orchestrator missing-field rollup no longer mentions staging_root." }, { @@ -1413,7 +1413,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L835", "id": "unit_test_paths_rationale_835", - "community": 52, + "community": 59, "norm_label": "offline catalogue path satisfies the lims slot without endpoint+email." }, { @@ -1422,7 +1422,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L869", "id": "unit_test_paths_rationale_869", - "community": 153, + "community": 160, "norm_label": "endpoint+email present but keyring lacks the password -> incomplete_no_lims." }, { @@ -1431,7 +1431,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L878", "id": "unit_test_paths_rationale_878", - "community": 52, + "community": 59, "norm_label": "build a ready-shaped config with a single nas-mode equipment. nas sync is i" }, { @@ -1440,7 +1440,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L904", "id": "unit_test_paths_rationale_904", - "community": 52, + "community": 59, "norm_label": "nas sync in use but no remote configured -> incomplete_no_nas_remote." }, { @@ -1449,7 +1449,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L912", "id": "unit_test_paths_rationale_912", - "community": 52, + "community": 59, "norm_label": "remote named but absent from rclone.conf -> incomplete_no_nas_remote." }, { @@ -1458,7 +1458,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L922", "id": "unit_test_paths_rationale_922", - "community": 52, + "community": 59, "norm_label": "remote named and present in rclone.conf -> ready." }, { @@ -1467,7 +1467,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L932", "id": "unit_test_paths_rationale_932", - "community": 153, + "community": 160, "norm_label": "a configured lims does not mask the missing nas remote." }, { @@ -1476,7 +1476,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L944", "id": "unit_test_paths_rationale_944", - "community": 60, + "community": 177, "norm_label": "the missing list names ``nas.remote`` and distinguishes unset vs absent." }, { @@ -1485,7 +1485,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L966", "id": "unit_test_paths_rationale_966", - "community": 52, + "community": 59, "norm_label": "endpoint present but email empty -> incomplete_no_lims (email is required)." }, { @@ -1494,7 +1494,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1021", "id": "unit_test_paths_rationale_1021", - "community": 153, + "community": 160, "norm_label": "soft block: surfaces a banner, not a missing-field list." }, { @@ -1503,7 +1503,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1059", "id": "unit_test_paths_rationale_1059", - "community": 60, + "community": 177, "norm_label": "when config is none but state is incomplete_missing_paths, every paths field" }, { @@ -1512,7 +1512,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1070", "id": "unit_test_paths_rationale_1070", - "community": 460, + "community": 177, "norm_label": "when config is none but state is incomplete_no_lims, the whole lims block is" }, { @@ -1521,7 +1521,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1078", "id": "unit_test_paths_rationale_1078", - "community": 52, + "community": 59, "norm_label": "endpoint+email both filled in but no offline catalogue -> the keyring-passwo" }, { @@ -1530,7 +1530,7 @@ "source_file": "tests/unit/test_paths.py", "source_location": "L1104", "id": "unit_test_paths_rationale_1104", - "community": 459, + "community": 177, "norm_label": "defensive fallback: any value that isn't a recognized setupstate returns an" }, { @@ -1575,7 +1575,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L1", "id": "tests_unit_ui_test_wizard_run_page_py", - "community": 65, + "community": 56, "norm_label": "test_wizard_run_page.py" }, { @@ -1584,7 +1584,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L34", "id": "ui_test_wizard_run_page_test_can_advance_template_step_requires_selection", - "community": 65, + "community": 56, "norm_label": "test_can_advance_template_step_requires_selection()" }, { @@ -1593,7 +1593,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L41", "id": "ui_test_wizard_run_page_test_can_advance_variables_step_always_true", - "community": 65, + "community": 56, "norm_label": "test_can_advance_variables_step_always_true()" }, { @@ -1602,7 +1602,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L46", "id": "ui_test_wizard_run_page_test_can_advance_preview_step_blocks_on_validator_findings", - "community": 65, + "community": 56, "norm_label": "test_can_advance_preview_step_blocks_on_validator_findings()" }, { @@ -1611,7 +1611,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L53", "id": "ui_test_wizard_run_page_test_can_advance_confirm_step_always_true", - "community": 65, + "community": 56, "norm_label": "test_can_advance_confirm_step_always_true()" }, { @@ -1620,7 +1620,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L58", "id": "ui_test_wizard_run_page_test_can_advance_default_step_is_project_equipment", - "community": 65, + "community": 56, "norm_label": "test_can_advance_default_step_is_project_equipment()" }, { @@ -1629,7 +1629,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L68", "id": "ui_test_wizard_run_page_test_can_advance_readme_blocks_on_partial_core_fields", - "community": 65, + "community": 56, "norm_label": "test_can_advance_readme_blocks_on_partial_core_fields()" }, { @@ -1638,7 +1638,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L81", "id": "ui_test_wizard_run_page_test_state_run_kind_is_bound_and_drives_helpers", - "community": 65, + "community": 56, "norm_label": "test_state_run_kind_is_bound_and_drives_helpers()" }, { @@ -1647,7 +1647,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L98", "id": "ui_test_wizard_run_page_test_preview_path_segments_experimental_uses_run_prefix", - "community": 65, + "community": 56, "norm_label": "test_preview_path_segments_experimental_uses_run_prefix()" }, { @@ -1656,7 +1656,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L109", "id": "ui_test_wizard_run_page_test_preview_path_segments_test_uses_testrun_prefix_and_folder", - "community": 65, + "community": 56, "norm_label": "test_preview_path_segments_test_uses_testrun_prefix_and_folder()" }, { @@ -1665,7 +1665,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L126", "id": "ui_test_wizard_run_page_test_render_run_wizard_experimental_with_choices_does_not_raise", - "community": 65, + "community": 56, "norm_label": "test_render_run_wizard_experimental_with_choices_does_not_raise()" }, { @@ -1674,7 +1674,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L136", "id": "ui_test_wizard_run_page_test_render_run_wizard_test_with_choices_does_not_raise", - "community": 65, + "community": 56, "norm_label": "test_render_run_wizard_test_with_choices_does_not_raise()" }, { @@ -1683,7 +1683,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L146", "id": "ui_test_wizard_run_page_test_render_run_wizard_with_empty_choices_does_not_raise", - "community": 65, + "community": 56, "norm_label": "test_render_run_wizard_with_empty_choices_does_not_raise()" }, { @@ -1692,7 +1692,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L155", "id": "ui_test_wizard_run_page_test_wizard_run_step_titles_cover_every_step", - "community": 65, + "community": 56, "norm_label": "test_wizard_run_step_titles_cover_every_step()" }, { @@ -1701,7 +1701,7 @@ "source_file": "tests/unit/ui/test_wizard_run_page.py", "source_location": "L1", "id": "ui_test_wizard_run_page_rationale_1", - "community": 65, + "community": 56, "norm_label": "tests for the new run wizard helpers (gaps not covered by test_pages). ``test_p" }, { @@ -1710,7 +1710,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L1", "id": "tests_unit_ui_test_metadata_pane_py", - "community": 156, + "community": 146, "norm_label": "test_metadata_pane.py" }, { @@ -1719,7 +1719,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L20", "id": "ui_test_metadata_pane_walk", - "community": 156, + "community": 146, "norm_label": "_walk()" }, { @@ -1728,7 +1728,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L27", "id": "ui_test_metadata_pane_by_testid", - "community": 156, + "community": 146, "norm_label": "_by_testid()" }, { @@ -1737,7 +1737,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L31", "id": "ui_test_metadata_pane_texts", - "community": 156, + "community": 146, "norm_label": "_texts()" }, { @@ -1746,7 +1746,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L35", "id": "ui_test_metadata_pane_file_payload", - "community": 156, + "community": 146, "norm_label": "_file_payload()" }, { @@ -1755,7 +1755,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L54", "id": "ui_test_metadata_pane_test_selected_file_card_title_maps_kind", - "community": 170, + "community": 132, "norm_label": "test_selected_file_card_title_maps_kind()" }, { @@ -1764,7 +1764,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L66", "id": "ui_test_metadata_pane_test_file_sub_card_renders_fields", - "community": 156, + "community": 146, "norm_label": "test_file_sub_card_renders_fields()" }, { @@ -1773,7 +1773,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L81", "id": "ui_test_metadata_pane_test_tombstone_file_sub_card_omits_size_and_notes_on_nas", - "community": 156, + "community": 146, "norm_label": "test_tombstone_file_sub_card_omits_size_and_notes_on_nas()" }, { @@ -1782,7 +1782,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L98", "id": "ui_test_metadata_pane_test_folder_sub_card_renders_count_no_size", - "community": 156, + "community": 146, "norm_label": "test_folder_sub_card_renders_count_no_size()" }, { @@ -1791,7 +1791,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L122", "id": "ui_test_metadata_pane_test_folder_sub_card_tolerates_degraded_scan", - "community": 156, + "community": 146, "norm_label": "test_folder_sub_card_tolerates_degraded_scan()" }, { @@ -1800,7 +1800,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L144", "id": "ui_test_metadata_pane_test_sub_card_appends_after_empty_state", - "community": 156, + "community": 146, "norm_label": "test_sub_card_appends_after_empty_state()" }, { @@ -1809,7 +1809,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L152", "id": "ui_test_metadata_pane_test_sub_card_appends_after_populated_node", - "community": 156, + "community": 146, "norm_label": "test_sub_card_appends_after_populated_node()" }, { @@ -1818,7 +1818,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L169", "id": "ui_test_metadata_pane_test_no_sub_card_without_selected_file", - "community": 156, + "community": 146, "norm_label": "test_no_sub_card_without_selected_file()" }, { @@ -1827,7 +1827,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L1", "id": "ui_test_metadata_pane_rationale_1", - "community": 156, + "community": 146, "norm_label": "unit tests for the metadata pane's selected-file/folder sub-card. gui/orchestra" }, { @@ -1836,7 +1836,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L123", "id": "ui_test_metadata_pane_rationale_123", - "community": 156, + "community": 146, "norm_label": "a degraded folder scan (item_count=none / rollup=none) still renders." }, { @@ -1845,7 +1845,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L145", "id": "ui_test_metadata_pane_rationale_145", - "community": 156, + "community": 146, "norm_label": "with no node selected, the sub-card sits beneath the empty-state hint." }, { @@ -1854,7 +1854,7 @@ "source_file": "tests/unit/ui/test_metadata_pane.py", "source_location": "L153", "id": "ui_test_metadata_pane_rationale_153", - "community": 156, + "community": 146, "norm_label": "a selected run node's content stays; the sub-card appends below it." }, { @@ -1863,7 +1863,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L1", "id": "tests_unit_ui_test_components_py", - "community": 42, + "community": 51, "norm_label": "test_components.py" }, { @@ -1872,7 +1872,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L37", "id": "ui_test_components_test_mode_badge_test_uses_warning_token", - "community": 472, + "community": 512, "norm_label": "test_mode_badge_test_uses_warning_token()" }, { @@ -1881,7 +1881,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L45", "id": "ui_test_components_test_mode_badge_experimental_uses_navy", - "community": 484, + "community": 519, "norm_label": "test_mode_badge_experimental_uses_navy()" }, { @@ -1890,7 +1890,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L52", "id": "ui_test_components_test_mode_badge_none_falls_back_to_navy_with_placeholder", - "community": 480, + "community": 505, "norm_label": "test_mode_badge_none_falls_back_to_navy_with_placeholder()" }, { @@ -1899,7 +1899,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L60", "id": "ui_test_components_test_mode_badge_accepts_label_override", - "community": 475, + "community": 518, "norm_label": "test_mode_badge_accepts_label_override()" }, { @@ -1908,7 +1908,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L72", "id": "ui_test_components_test_test_run_badge_uses_orange_aa_text", - "community": 483, + "community": 506, "norm_label": "test_test_run_badge_uses_orange_aa_text()" }, { @@ -1917,7 +1917,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L80", "id": "ui_test_components_test_override_badge_active_uses_sky_aa_text", - "community": 473, + "community": 509, "norm_label": "test_override_badge_active_uses_sky_aa_text()" }, { @@ -1926,7 +1926,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L88", "id": "ui_test_components_test_override_badge_inactive_uses_muted", - "community": 471, + "community": 520, "norm_label": "test_override_badge_inactive_uses_muted()" }, { @@ -1935,7 +1935,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L100", "id": "ui_test_components_test_sync_status_pending_uses_muted", - "community": 42, + "community": 51, "norm_label": "test_sync_status_pending_uses_muted()" }, { @@ -1944,7 +1944,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L106", "id": "ui_test_components_test_sync_status_synced_uses_success", - "community": 42, + "community": 51, "norm_label": "test_sync_status_synced_uses_success()" }, { @@ -1953,7 +1953,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L111", "id": "ui_test_components_test_sync_status_failed_uses_danger", - "community": 42, + "community": 51, "norm_label": "test_sync_status_failed_uses_danger()" }, { @@ -1962,7 +1962,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L116", "id": "ui_test_components_test_sync_status_blocked_uses_warning", - "community": 478, + "community": 508, "norm_label": "test_sync_status_blocked_uses_warning()" }, { @@ -1971,7 +1971,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L123", "id": "ui_test_components_test_sync_status_override_uses_info", - "community": 42, + "community": 51, "norm_label": "test_sync_status_override_uses_info()" }, { @@ -1980,7 +1980,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L128", "id": "ui_test_components_test_sync_status_cleaned_uses_success_with_cloud_icon", - "community": 482, + "community": 521, "norm_label": "test_sync_status_cleaned_uses_success_with_cloud_icon()" }, { @@ -1989,7 +1989,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L136", "id": "ui_test_components_test_sync_status_acquiring_uses_muted", - "community": 479, + "community": 517, "norm_label": "test_sync_status_acquiring_uses_muted()" }, { @@ -1998,7 +1998,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L145", "id": "ui_test_components_test_sync_status_syncing_uses_info", - "community": 485, + "community": 514, "norm_label": "test_sync_status_syncing_uses_info()" }, { @@ -2007,7 +2007,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L154", "id": "ui_test_components_test_sync_status_on_nas_uses_muted_cloud", - "community": 477, + "community": 522, "norm_label": "test_sync_status_on_nas_uses_muted_cloud()" }, { @@ -2016,7 +2016,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L163", "id": "ui_test_components_test_sync_status_retrying_with_counter", - "community": 470, + "community": 511, "norm_label": "test_sync_status_retrying_with_counter()" }, { @@ -2025,520 +2025,556 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L171", "id": "ui_test_components_test_sync_status_unknown_raises", - "community": 474, + "community": 516, "norm_label": "test_sync_status_unknown_raises()" }, + { + "label": "test_sync_legend_entries_cover_every_state()", + "file_type": "code", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L178", + "id": "ui_test_components_test_sync_legend_entries_cover_every_state", + "community": 513, + "norm_label": "test_sync_legend_entries_cover_every_state()" + }, { "label": "test_session_progress_phase_order_is_canonical()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L183", + "source_location": "L200", "id": "ui_test_components_test_session_progress_phase_order_is_canonical", - "community": 487, + "community": 432, "norm_label": "test_session_progress_phase_order_is_canonical()" }, { "label": "test_apply_frame_advances_phase_and_marks_predecessors_done()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L199", + "source_location": "L216", "id": "ui_test_components_test_apply_frame_advances_phase_and_marks_predecessors_done", - "community": 42, + "community": 51, "norm_label": "test_apply_frame_advances_phase_and_marks_predecessors_done()" }, { "label": "test_apply_frame_progress_sets_plugin_sub_row()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L207", + "source_location": "L224", "id": "ui_test_components_test_apply_frame_progress_sets_plugin_sub_row", - "community": 42, + "community": 51, "norm_label": "test_apply_frame_progress_sets_plugin_sub_row()" }, { "label": "test_apply_frame_done_completes_all_phases()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L217", + "source_location": "L234", "id": "ui_test_components_test_apply_frame_done_completes_all_phases", - "community": 42, + "community": 51, "norm_label": "test_apply_frame_done_completes_all_phases()" }, { "label": "test_apply_frame_ignores_unknown_kinds_and_phases()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L224", + "source_location": "L241", "id": "ui_test_components_test_apply_frame_ignores_unknown_kinds_and_phases", - "community": 42, + "community": 51, "norm_label": "test_apply_frame_ignores_unknown_kinds_and_phases()" }, { "label": "test_session_progress_active_phase_marked()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L231", + "source_location": "L248", "id": "ui_test_components_test_session_progress_active_phase_marked", - "community": 467, + "community": 435, "norm_label": "test_session_progress_active_phase_marked()" }, { "label": "test_session_progress_plugin_sub_row_present()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L244", + "source_location": "L261", "id": "ui_test_components_test_session_progress_plugin_sub_row_present", - "community": 481, + "community": 434, "norm_label": "test_session_progress_plugin_sub_row_present()" }, { "label": "test_credential_field_states_default_to_not_set()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L266", + "source_location": "L283", "id": "ui_test_components_test_credential_field_states_default_to_not_set", - "community": 42, + "community": 51, "norm_label": "test_credential_field_states_default_to_not_set()" }, { "label": "test_credential_field_set_state_offers_replace_and_clear()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L273", + "source_location": "L290", "id": "ui_test_components_test_credential_field_set_state_offers_replace_and_clear", - "community": 42, + "community": 51, "norm_label": "test_credential_field_set_state_offers_replace_and_clear()" }, { "label": "test_credential_field_editing_offers_save_and_cancel()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L280", + "source_location": "L297", "id": "ui_test_components_test_credential_field_editing_offers_save_and_cancel", - "community": 42, + "community": 51, "norm_label": "test_credential_field_editing_offers_save_and_cancel()" }, { "label": "test_begin_edit_from_not_set_enters_editing_remembering_not_set()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L291", + "source_location": "L308", "id": "ui_test_components_test_begin_edit_from_not_set_enters_editing_remembering_not_set", - "community": 468, + "community": 436, "norm_label": "test_begin_edit_from_not_set_enters_editing_remembering_not_set()" }, { "label": "test_begin_edit_from_set_remembers_set_as_resting()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L301", + "source_location": "L318", "id": "ui_test_components_test_begin_edit_from_set_remembers_set_as_resting", - "community": 476, + "community": 437, "norm_label": "test_begin_edit_from_set_remembers_set_as_resting()" }, { "label": "test_cancel_edit_returns_to_remembered_resting_state()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L311", + "source_location": "L328", "id": "ui_test_components_test_cancel_edit_returns_to_remembered_resting_state", - "community": 42, + "community": 51, "norm_label": "test_cancel_edit_returns_to_remembered_resting_state()" }, { "label": "test_cancel_edit_from_fresh_edit_returns_to_not_set()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L318", + "source_location": "L335", "id": "ui_test_components_test_cancel_edit_from_fresh_edit_returns_to_not_set", - "community": 42, + "community": 51, "norm_label": "test_cancel_edit_from_fresh_edit_returns_to_not_set()" }, { "label": "test_commit_edit_with_value_transitions_to_set_and_signals_save()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L325", + "source_location": "L342", "id": "ui_test_components_test_commit_edit_with_value_transitions_to_set_and_signals_save", - "community": 42, + "community": 51, "norm_label": "test_commit_edit_with_value_transitions_to_set_and_signals_save()" }, { "label": "test_commit_edit_with_empty_value_stays_editing_and_skips_save()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L333", + "source_location": "L350", "id": "ui_test_components_test_commit_edit_with_empty_value_stays_editing_and_skips_save", - "community": 486, + "community": 433, "norm_label": "test_commit_edit_with_empty_value_stays_editing_and_skips_save()" }, { "label": "test_clear_credential_returns_to_not_set()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L342", + "source_location": "L359", "id": "ui_test_components_test_clear_credential_returns_to_not_set", - "community": 42, + "community": 51, "norm_label": "test_clear_credential_returns_to_not_set()" }, { "label": "test_connection_panel_hidden_when_no_result()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L354", + "source_location": "L371", "id": "ui_test_components_test_connection_panel_hidden_when_no_result", - "community": 42, + "community": 51, "norm_label": "test_connection_panel_hidden_when_no_result()" }, { "label": "test_connection_panel_visible_after_result()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L359", + "source_location": "L376", "id": "ui_test_components_test_connection_panel_visible_after_result", - "community": 42, + "community": 51, "norm_label": "test_connection_panel_visible_after_result()" }, { "label": "test_connection_panel_failure_color_is_danger()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L371", + "source_location": "L388", "id": "ui_test_components_test_connection_panel_failure_color_is_danger", - "community": 42, + "community": 51, "norm_label": "test_connection_panel_failure_color_is_danger()" }, { "label": "test_connection_panel_stale_appends_disclaimer()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L381", + "source_location": "L398", "id": "ui_test_components_test_connection_panel_stale_appends_disclaimer", - "community": 42, + "community": 51, "norm_label": "test_connection_panel_stale_appends_disclaimer()" }, { "label": "test_filter_chips_initial_state_respects_default_on()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L393", + "source_location": "L410", "id": "ui_test_components_test_filter_chips_initial_state_respects_default_on", - "community": 42, + "community": 51, "norm_label": "test_filter_chips_initial_state_respects_default_on()" }, { "label": "test_filter_chips_toggle_flips_membership()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L403", + "source_location": "L420", "id": "ui_test_components_test_filter_chips_toggle_flips_membership", - "community": 42, + "community": 51, "norm_label": "test_filter_chips_toggle_flips_membership()" }, { "label": "test_filter_chips_list_active_preserves_definition_order()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L412", + "source_location": "L429", "id": "ui_test_components_test_filter_chips_list_active_preserves_definition_order", - "community": 42, + "community": 51, "norm_label": "test_filter_chips_list_active_preserves_definition_order()" }, { "label": "test_status_bar_segment_normal_uses_muted()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L426", + "source_location": "L443", "id": "ui_test_components_test_status_bar_segment_normal_uses_muted", - "community": 42, + "community": 51, "norm_label": "test_status_bar_segment_normal_uses_muted()" }, { "label": "test_status_bar_segment_warning_prefix_glyph()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L432", + "source_location": "L449", "id": "ui_test_components_test_status_bar_segment_warning_prefix_glyph", - "community": 42, + "community": 51, "norm_label": "test_status_bar_segment_warning_prefix_glyph()" }, { "label": "test_status_bar_segment_danger_prefix_glyph()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L440", + "source_location": "L457", "id": "ui_test_components_test_status_bar_segment_danger_prefix_glyph", - "community": 42, + "community": 51, "norm_label": "test_status_bar_segment_danger_prefix_glyph()" }, { "label": "test_banner_stack_shows_visible_and_overflow_split()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L453", + "source_location": "L470", "id": "ui_test_components_test_banner_stack_shows_visible_and_overflow_split", - "community": 488, + "community": 438, "norm_label": "test_banner_stack_shows_visible_and_overflow_split()" }, { "label": "test_operations_modal_columns_match_spec()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L489", + "source_location": "L506", "id": "ui_test_components_test_operations_modal_columns_match_spec", - "community": 42, + "community": 51, "norm_label": "test_operations_modal_columns_match_spec()" }, { "label": "test_operations_modal_sort_suspended_first_oldest_first()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L502", + "source_location": "L519", "id": "ui_test_components_test_operations_modal_sort_suspended_first_oldest_first", - "community": 469, + "community": 431, "norm_label": "test_operations_modal_sort_suspended_first_oldest_first()" }, { "label": "test_operations_modal_state_glyph_known_states()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L535", + "source_location": "L552", "id": "ui_test_components_test_operations_modal_state_glyph_known_states", - "community": 42, + "community": 51, "norm_label": "test_operations_modal_state_glyph_known_states()" }, { "label": "test_operation_row_from_session_maps_state_buckets_and_fields()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L541", + "source_location": "L558", "id": "ui_test_components_test_operation_row_from_session_maps_state_buckets_and_fields", - "community": 42, + "community": 51, "norm_label": "test_operation_row_from_session_maps_state_buckets_and_fields()" }, { "label": "test_collect_default_values_seeds_from_declared_defaults()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L598", + "source_location": "L615", "id": "ui_test_components_test_collect_default_values_seeds_from_declared_defaults", - "community": 268, + "community": 275, "norm_label": "test_collect_default_values_seeds_from_declared_defaults()" }, { "label": "test_input_required_dialog_builds_without_raising()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L612", + "source_location": "L629", "id": "ui_test_components_test_input_required_dialog_builds_without_raising", - "community": 268, + "community": 275, "norm_label": "test_input_required_dialog_builds_without_raising()" }, { "label": "test_bandwidth_window_validates_from_before_to()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L634", + "source_location": "L651", "id": "ui_test_components_test_bandwidth_window_validates_from_before_to", - "community": 42, + "community": 51, "norm_label": "test_bandwidth_window_validates_from_before_to()" }, { "label": "test_bandwidth_window_passes_when_correct()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L641", + "source_location": "L658", "id": "ui_test_components_test_bandwidth_window_passes_when_correct", - "community": 42, + "community": 51, "norm_label": "test_bandwidth_window_passes_when_correct()" }, { "label": "test_bandwidth_overlap_detected_for_shared_day_and_time()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L648", + "source_location": "L665", "id": "ui_test_components_test_bandwidth_overlap_detected_for_shared_day_and_time", - "community": 42, + "community": 51, "norm_label": "test_bandwidth_overlap_detected_for_shared_day_and_time()" }, { "label": "test_bandwidth_no_overlap_for_disjoint_days()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L654", + "source_location": "L671", "id": "ui_test_components_test_bandwidth_no_overlap_for_disjoint_days", - "community": 42, + "community": 51, "norm_label": "test_bandwidth_no_overlap_for_disjoint_days()" }, { "label": "test_validation_summary_hard_findings_use_warning()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L665", + "source_location": "L682", "id": "ui_test_components_test_validation_summary_hard_findings_use_warning", - "community": 42, + "community": 51, "norm_label": "test_validation_summary_hard_findings_use_warning()" }, { "label": "test_validation_summary_override_takes_priority()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L672", + "source_location": "L689", "id": "ui_test_components_test_validation_summary_override_takes_priority", - "community": 42, + "community": 51, "norm_label": "test_validation_summary_override_takes_priority()" }, { "label": "test_validation_summary_first_two_excerpts_returned_in_payload()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L684", + "source_location": "L701", "id": "ui_test_components_test_validation_summary_first_two_excerpts_returned_in_payload", - "community": 42, + "community": 51, "norm_label": "test_validation_summary_first_two_excerpts_returned_in_payload()" }, { "label": "test_validation_summary_override_line_includes_attribution()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L698", + "source_location": "L715", "id": "ui_test_components_test_validation_summary_override_line_includes_attribution", - "community": 42, + "community": 51, "norm_label": "test_validation_summary_override_line_includes_attribution()" }, { "label": "test_tree_filter_archived_default_off_hides_archived()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L719", + "source_location": "L736", "id": "ui_test_components_test_tree_filter_archived_default_off_hides_archived", - "community": 407, + "community": 394, "norm_label": "test_tree_filter_archived_default_off_hides_archived()" }, { "label": "test_tree_filter_archived_chip_on_shows_archived()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L730", + "source_location": "L747", "id": "ui_test_components_test_tree_filter_archived_chip_on_shows_archived", - "community": 42, + "community": 51, "norm_label": "test_tree_filter_archived_chip_on_shows_archived()" }, { "label": "test_tree_filter_deleted_always_shown()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L739", + "source_location": "L756", "id": "ui_test_components_test_tree_filter_deleted_always_shown", - "community": 408, + "community": 393, "norm_label": "test_tree_filter_deleted_always_shown()" }, { "label": "test_tree_filter_test_runs_chip_off_hides_test_runs()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L750", + "source_location": "L767", "id": "ui_test_components_test_tree_filter_test_runs_chip_off_hides_test_runs", - "community": 42, + "community": 51, "norm_label": "test_tree_filter_test_runs_chip_off_hides_test_runs()" }, { "label": "test_tree_build_nodes_yields_canonical_kinds()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L758", + "source_location": "L775", "id": "ui_test_components_test_tree_build_nodes_yields_canonical_kinds", - "community": 42, + "community": 51, "norm_label": "test_tree_build_nodes_yields_canonical_kinds()" }, { "label": "test_tree_test_run_carries_test_badge()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L771", + "source_location": "L788", "id": "ui_test_components_test_tree_test_run_carries_test_badge", - "community": 42, + "community": 51, "norm_label": "test_tree_test_run_carries_test_badge()" }, { "label": "test_tree_run_node_propagates_sync_status()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L786", + "source_location": "L803", "id": "ui_test_components_test_tree_run_node_propagates_sync_status", - "community": 405, + "community": 326, "norm_label": "test_tree_run_node_propagates_sync_status()" }, { "label": "test_to_nicegui_nodes_cleared_run_uses_cloud_icon()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L803", + "source_location": "L820", "id": "ui_test_components_test_to_nicegui_nodes_cleared_run_uses_cloud_icon", - "community": 410, + "community": 326, "norm_label": "test_to_nicegui_nodes_cleared_run_uses_cloud_icon()" }, { "label": "test_to_nicegui_nodes_local_run_uses_local_icon()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L828", + "source_location": "L845", "id": "ui_test_components_test_to_nicegui_nodes_local_run_uses_local_icon", - "community": 413, + "community": 391, "norm_label": "test_to_nicegui_nodes_local_run_uses_local_icon()" }, { "label": "test_to_nicegui_nodes_equipment_and_project_have_no_sync_icon()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L854", + "source_location": "L871", "id": "ui_test_components_test_to_nicegui_nodes_equipment_and_project_have_no_sync_icon", - "community": 415, + "community": 327, "norm_label": "test_to_nicegui_nodes_equipment_and_project_have_no_sync_icon()" }, + { + "label": "test_to_nicegui_nodes_carries_sync_title()", + "file_type": "code", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L888", + "id": "ui_test_components_test_to_nicegui_nodes_carries_sync_title", + "community": 515, + "norm_label": "test_to_nicegui_nodes_carries_sync_title()" + }, + { + "label": "test_build_tree_seeds_selected_node()", + "file_type": "code", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L912", + "id": "ui_test_components_test_build_tree_seeds_selected_node", + "community": 510, + "norm_label": "test_build_tree_seeds_selected_node()" + }, + { + "label": "test_build_tree_no_selection_leaves_selected_unset()", + "file_type": "code", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L930", + "id": "ui_test_components_test_build_tree_no_selection_leaves_selected_unset", + "community": 507, + "norm_label": "test_build_tree_no_selection_leaves_selected_unset()" + }, { "label": "test_equipment_node_relay_flag_emits_received_equipment_kind()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L876", + "source_location": "L948", "id": "ui_test_components_test_equipment_node_relay_flag_emits_received_equipment_kind", - "community": 409, + "community": 327, "norm_label": "test_equipment_node_relay_flag_emits_received_equipment_kind()" }, { "label": "test_to_nicegui_nodes_emits_testid_kind()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L890", + "source_location": "L962", "id": "ui_test_components_test_to_nicegui_nodes_emits_testid_kind", - "community": 406, + "community": 395, "norm_label": "test_to_nicegui_nodes_emits_testid_kind()" }, { "label": "test_slot_template_emits_testid_data_node_id_and_context_menus()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L914", + "source_location": "L986", "id": "ui_test_components_test_slot_template_emits_testid_data_node_id_and_context_menus", - "community": 412, + "community": 390, "norm_label": "test_slot_template_emits_testid_data_node_id_and_context_menus()" }, { "label": "test_factories_smoke_outside_nicegui()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L954", + "source_location": "L1026", "id": "ui_test_components_test_factories_smoke_outside_nicegui", - "community": 414, + "community": 392, "norm_label": "test_factories_smoke_outside_nicegui()" }, { "label": "test_no_stray_ui_notify_calls_in_ui_package()", "file_type": "code", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L987", + "source_location": "L1059", "id": "ui_test_components_test_no_stray_ui_notify_calls_in_ui_package", - "community": 411, + "community": 389, "norm_label": "test_no_stray_ui_notify_calls_in_ui_package()" }, { @@ -2547,7 +2583,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L1", "id": "ui_test_components_rationale_1", - "community": 42, + "community": 51, "norm_label": "unit tests for the ui components. each component exposes a pure-data ``*_props`" }, { @@ -2556,7 +2592,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L38", "id": "ui_test_components_rationale_38", - "community": 472, + "community": 512, "norm_label": "test-mode badge maps to ``--color-warning`` (frontend \u00a75.3)." }, { @@ -2565,7 +2601,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L46", "id": "ui_test_components_rationale_46", - "community": 484, + "community": 519, "norm_label": "experimental badge maps to ``--color-navy``." }, { @@ -2574,7 +2610,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L53", "id": "ui_test_components_rationale_53", - "community": 480, + "community": 505, "norm_label": "a ``none`` run kind defaults to navy with a placeholder label." }, { @@ -2583,7 +2619,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L61", "id": "ui_test_components_rationale_61", - "community": 475, + "community": 518, "norm_label": "an explicit label overrides the default." }, { @@ -2592,7 +2628,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L73", "id": "ui_test_components_rationale_73", - "community": 483, + "community": 506, "norm_label": "the test-run pill uses the orange darkened-aa text variant." }, { @@ -2601,7 +2637,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L81", "id": "ui_test_components_rationale_81", - "community": 473, + "community": 509, "norm_label": "an active override pill uses the sky-blue aa text variant." }, { @@ -2610,7 +2646,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L89", "id": "ui_test_components_rationale_89", - "community": 471, + "community": 520, "norm_label": "an inactive override pill uses the muted gray." }, { @@ -2619,7 +2655,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L117", "id": "ui_test_components_rationale_117", - "community": 478, + "community": 508, "norm_label": "blocked-by-validation maps to warning per frontend \u00a72.1.4." }, { @@ -2628,7 +2664,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L129", "id": "ui_test_components_rationale_129", - "community": 482, + "community": 521, "norm_label": "cleaned status (post-cleanup) reuses the success color with a cloud glyph." }, { @@ -2637,7 +2673,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L137", "id": "ui_test_components_rationale_137", - "community": 479, + "community": 517, "norm_label": "``acquiring`` (new file, still settling) uses the muted token." }, { @@ -2646,7 +2682,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L146", "id": "ui_test_components_rationale_146", - "community": 485, + "community": 514, "norm_label": "``syncing`` (settled, transferring) uses the info token." }, { @@ -2655,7 +2691,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L155", "id": "ui_test_components_rationale_155", - "community": 477, + "community": 522, "norm_label": "``on_nas`` (tombstone, local copy cleared) uses a muted cloud glyph." }, { @@ -2664,7 +2700,7 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L164", "id": "ui_test_components_rationale_164", - "community": 470, + "community": 511, "norm_label": "retry counter renders as ``(n/m)`` (frontend \u00a710.5.1)." }, { @@ -2673,178 +2709,214 @@ "source_file": "tests/unit/ui/test_components.py", "source_location": "L172", "id": "ui_test_components_rationale_172", - "community": 474, + "community": 516, "norm_label": "unknown status values raise." }, + { + "label": "The legend lists one row per known state, each with icon + meaning, sourced", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L179", + "id": "ui_test_components_rationale_179", + "community": 513, + "norm_label": "the legend lists one row per known state, each with icon + meaning, sourced" + }, { "label": "The phase enum order matches Frontend \u00a710.1.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L184", - "id": "ui_test_components_rationale_184", - "community": 487, + "source_location": "L201", + "id": "ui_test_components_rationale_201", + "community": 432, "norm_label": "the phase enum order matches frontend \u00a710.1." }, { "label": "The active phase has fraction 0.5 and ``is_active``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L232", - "id": "ui_test_components_rationale_232", - "community": 467, + "source_location": "L249", + "id": "ui_test_components_rationale_249", + "community": 435, "norm_label": "the active phase has fraction 0.5 and ``is_active``." }, { "label": "When ``running_plugins`` carries N/M, a sub-row dict is emitted. We assert", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L245", - "id": "ui_test_components_rationale_245", - "community": 481, + "source_location": "L262", + "id": "ui_test_components_rationale_262", + "community": 434, "norm_label": "when ``running_plugins`` carries n/m, a sub-row dict is emitted. we assert" }, { "label": "Clicking *Set* opens the editor; *Cancel* must return to Not set.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L292", - "id": "ui_test_components_rationale_292", - "community": 468, + "source_location": "L309", + "id": "ui_test_components_rationale_309", + "community": 436, "norm_label": "clicking *set* opens the editor; *cancel* must return to not set." }, { "label": "Clicking *Replace* opens the editor; *Cancel* must return to Set.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L302", - "id": "ui_test_components_rationale_302", - "community": 476, + "source_location": "L319", + "id": "ui_test_components_rationale_319", + "community": 437, "norm_label": "clicking *replace* opens the editor; *cancel* must return to set." }, { "label": "An empty input has nothing to persist -- stay in the editor.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L334", - "id": "ui_test_components_rationale_334", - "community": 486, + "source_location": "L351", + "id": "ui_test_components_rationale_351", + "community": 433, "norm_label": "an empty input has nothing to persist -- stay in the editor." }, { "label": "Banners exceed the 2-cap; overflow is reported.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L454", - "id": "ui_test_components_rationale_454", - "community": 488, + "source_location": "L471", + "id": "ui_test_components_rationale_471", + "community": 438, "norm_label": "banners exceed the 2-cap; overflow is reported." }, { "label": "Suspended rows sort first, oldest started_at first (\u00a79.5).", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L503", - "id": "ui_test_components_rationale_503", - "community": 469, + "source_location": "L520", + "id": "ui_test_components_rationale_520", + "community": 431, "norm_label": "suspended rows sort first, oldest started_at first (\u00a79.5)." }, { "label": "Archived projects are hidden by default.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L720", - "id": "ui_test_components_rationale_720", - "community": 407, + "source_location": "L737", + "id": "ui_test_components_rationale_737", + "community": 394, "norm_label": "archived projects are hidden by default." }, { "label": "Deleted-from-LIMS rows always render (Frontend \u00a73.5.3).", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L740", - "id": "ui_test_components_rationale_740", - "community": 408, + "source_location": "L757", + "id": "ui_test_components_rationale_757", + "community": 393, "norm_label": "deleted-from-lims rows always render (frontend \u00a73.5.3)." }, { "label": "``RunNode.sync_status`` flows through to the resulting ``TreeNode``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L787", - "id": "ui_test_components_rationale_787", - "community": 405, + "source_location": "L804", + "id": "ui_test_components_rationale_804", + "community": 326, "norm_label": "``runnode.sync_status`` flows through to the resulting ``treenode``." }, { "label": "A ``cleared`` run row carries the cloud-icon URL and its sync_status. Opera", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L804", - "id": "ui_test_components_rationale_804", - "community": 410, + "source_location": "L821", + "id": "ui_test_components_rationale_821", + "community": 326, "norm_label": "a ``cleared`` run row carries the cloud-icon url and its sync_status. opera" }, { "label": "Any non-``cleaned`` sync status (or unset) maps to the local-icon URL.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L829", - "id": "ui_test_components_rationale_829", - "community": 413, + "source_location": "L846", + "id": "ui_test_components_rationale_846", + "community": 391, "norm_label": "any non-``cleaned`` sync status (or unset) maps to the local-icon url." }, { "label": "Equipment and project rows render without the per-row sync icon.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L855", - "id": "ui_test_components_rationale_855", - "community": 415, + "source_location": "L872", + "id": "ui_test_components_rationale_872", + "community": 327, "norm_label": "equipment and project rows render without the per-row sync icon." }, + { + "label": "Run rows carry a friendly ``sync_title`` hover tooltip mirroring the icon: c", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L889", + "id": "ui_test_components_rationale_889", + "community": 515, + "norm_label": "run rows carry a friendly ``sync_title`` hover tooltip mirroring the icon: c" + }, + { + "label": "``selected_node`` seeds Quasar's v-model:selected so the current node render", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L913", + "id": "ui_test_components_rationale_913", + "community": 510, + "norm_label": "``selected_node`` seeds quasar's v-model:selected so the current node render" + }, + { + "label": "Without ``selected_node`` the tree carries no seeded selection.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L931", + "id": "ui_test_components_rationale_931", + "community": 507, + "norm_label": "without ``selected_node`` the tree carries no seeded selection." + }, { "label": "An ``EquipmentNode(relay=True)`` builds a ``received_equipment`` row.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L877", - "id": "ui_test_components_rationale_877", - "community": 409, + "source_location": "L949", + "id": "ui_test_components_rationale_949", + "community": 327, "norm_label": "an ``equipmentnode(relay=true)`` builds a ``received_equipment`` row." }, { "label": "Each row carries a ``testid_kind`` matching the Playwright contract.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L891", - "id": "ui_test_components_rationale_891", - "community": 406, + "source_location": "L963", + "id": "ui_test_components_rationale_963", + "community": 395, "norm_label": "each row carries a ``testid_kind`` matching the playwright contract." }, { "label": "The ``default-header`` template carries the per-row anchors the Playwright f", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L915", - "id": "ui_test_components_rationale_915", - "community": 412, + "source_location": "L987", + "id": "ui_test_components_rationale_987", + "community": 390, "norm_label": "the ``default-header`` template carries the per-row anchors the playwright f" }, { "label": "Each factory emits a dict (or NiceGUI element) without crashing. The factor", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L955", - "id": "ui_test_components_rationale_955", - "community": 414, + "source_location": "L1027", + "id": "ui_test_components_rationale_1027", + "community": 392, "norm_label": "each factory emits a dict (or nicegui element) without crashing. the factor" }, { "label": "The pre-commit ``no-direct-ui-notify`` rule is mirrored in tests. Any call", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", - "source_location": "L988", - "id": "ui_test_components_rationale_988", - "community": 411, + "source_location": "L1060", + "id": "ui_test_components_rationale_1060", + "community": 389, "norm_label": "the pre-commit ``no-direct-ui-notify`` rule is mirrored in tests. any call" }, { @@ -2853,7 +2925,7 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L1", "id": "tests_unit_ui_test_framed_pane_py", - "community": 70, + "community": 61, "norm_label": "test_framed_pane.py" }, { @@ -2862,7 +2934,7 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L13", "id": "ui_test_framed_pane_test_card_style_uses_surface_border_shadow_radius_tokens", - "community": 70, + "community": 61, "norm_label": "test_card_style_uses_surface_border_shadow_radius_tokens()" }, { @@ -2871,7 +2943,7 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L24", "id": "ui_test_framed_pane_test_card_style_ends_with_semicolon_for_safe_concatenation", - "community": 70, + "community": 61, "norm_label": "test_card_style_ends_with_semicolon_for_safe_concatenation()" }, { @@ -2880,7 +2952,7 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L30", "id": "ui_test_framed_pane_test_card_style_carries_literal_fallbacks", - "community": 70, + "community": 61, "norm_label": "test_card_style_carries_literal_fallbacks()" }, { @@ -2889,7 +2961,7 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L37", "id": "ui_test_framed_pane_test_header_style_is_tinted_strip_with_rule", - "community": 70, + "community": 61, "norm_label": "test_header_style_is_tinted_strip_with_rule()" }, { @@ -2898,7 +2970,7 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L44", "id": "ui_test_framed_pane_test_body_style_scrolls", - "community": 70, + "community": 61, "norm_label": "test_body_style_scrolls()" }, { @@ -2907,7 +2979,7 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L50", "id": "ui_test_framed_pane_test_framed_pane_yields_body_and_nests_children", - "community": 70, + "community": 61, "norm_label": "test_framed_pane_yields_body_and_nests_children()" }, { @@ -2916,16 +2988,34 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L66", "id": "ui_test_framed_pane_test_framed_pane_card_carries_testid", - "community": 70, + "community": 61, "norm_label": "test_framed_pane_card_carries_testid()" }, { - "label": "test_framed_pane_renders_header_extra_in_strip()", + "label": "test_framed_pane_applies_card_classes()", "file_type": "code", "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L77", + "id": "ui_test_framed_pane_test_framed_pane_applies_card_classes", + "community": 61, + "norm_label": "test_framed_pane_applies_card_classes()" + }, + { + "label": "test_framed_pane_no_card_classes_by_default()", + "file_type": "code", + "source_file": "tests/unit/ui/test_framed_pane.py", + "source_location": "L89", + "id": "ui_test_framed_pane_test_framed_pane_no_card_classes_by_default", + "community": 61, + "norm_label": "test_framed_pane_no_card_classes_by_default()" + }, + { + "label": "test_framed_pane_renders_header_extra_in_strip()", + "file_type": "code", + "source_file": "tests/unit/ui/test_framed_pane.py", + "source_location": "L98", "id": "ui_test_framed_pane_test_framed_pane_renders_header_extra_in_strip", - "community": 70, + "community": 61, "norm_label": "test_framed_pane_renders_header_extra_in_strip()" }, { @@ -2934,7 +3024,7 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L1", "id": "ui_test_framed_pane_rationale_1", - "community": 70, + "community": 61, "norm_label": "unit tests for the framed-pane helper (redesign \u00a74.1)." }, { @@ -2943,7 +3033,7 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L25", "id": "ui_test_framed_pane_rationale_25", - "community": 70, + "community": 61, "norm_label": "the metadata pane appends 'overflow: auto;' -- card_style() must end with ';" }, { @@ -2952,7 +3042,7 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L31", "id": "ui_test_framed_pane_rationale_31", - "community": 70, + "community": 61, "norm_label": "every token has a literal fallback (register_theme not on every route)." }, { @@ -2961,7 +3051,7 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L51", "id": "ui_test_framed_pane_rationale_51", - "community": 70, + "community": 61, "norm_label": "the manager yields the body element and children of the ``with`` block land" }, { @@ -2970,16 +3060,34 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L67", "id": "ui_test_framed_pane_rationale_67", - "community": 70, + "community": 61, "norm_label": "the card root (the body's grandparent element) carries the testid." }, { - "label": "``header_extra`` renders its controls inside the title strip (Phase 4). Use", + "label": "``card_classes`` lands on the card root so descendant CSS (e.g. the compact-", "file_type": "rationale", "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L78", "id": "ui_test_framed_pane_rationale_78", - "community": 70, + "community": 61, + "norm_label": "``card_classes`` lands on the card root so descendant css (e.g. the compact-" + }, + { + "label": "Omitting ``card_classes`` adds no extra class to the card root.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_framed_pane.py", + "source_location": "L90", + "id": "ui_test_framed_pane_rationale_90", + "community": 61, + "norm_label": "omitting ``card_classes`` adds no extra class to the card root." + }, + { + "label": "``header_extra`` renders its controls inside the title strip (Phase 4). Use", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_framed_pane.py", + "source_location": "L99", + "id": "ui_test_framed_pane_rationale_99", + "community": 61, "norm_label": "``header_extra`` renders its controls inside the title strip (phase 4). use" }, { @@ -2988,421 +3096,475 @@ "source_file": "tests/unit/ui/test_pages.py", "source_location": "L1", "id": "tests_unit_ui_test_pages_py", - "community": 132, + "community": 138, "norm_label": "test_pages.py" }, { "label": "test_welcome_card_spec_default_autostart_on()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L25", + "source_location": "L32", "id": "ui_test_pages_test_welcome_card_spec_default_autostart_on", - "community": 492, + "community": 452, "norm_label": "test_welcome_card_spec_default_autostart_on()" }, { "label": "test_welcome_card_three_bullets()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L36", + "source_location": "L43", "id": "ui_test_pages_test_welcome_card_three_bullets", - "community": 499, + "community": 442, "norm_label": "test_welcome_card_three_bullets()" }, { "label": "test_main_default_chips_match_spec()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L56", + "source_location": "L63", "id": "ui_test_pages_test_main_default_chips_match_spec", - "community": 503, + "community": 455, "norm_label": "test_main_default_chips_match_spec()" }, { "label": "test_main_chip_state_to_tree_filters_round_trip()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L66", + "source_location": "L73", "id": "ui_test_pages_test_main_chip_state_to_tree_filters_round_trip", - "community": 491, + "community": 441, "norm_label": "test_main_chip_state_to_tree_filters_round_trip()" }, { "label": "test_main_problems_badge_simple_count_when_no_soft()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L76", + "source_location": "L83", "id": "ui_test_pages_test_main_problems_badge_simple_count_when_no_soft", - "community": 132, + "community": 138, "norm_label": "test_main_problems_badge_simple_count_when_no_soft()" }, { "label": "test_main_problems_badge_compound_when_soft_present()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L81", + "source_location": "L88", "id": "ui_test_pages_test_main_problems_badge_compound_when_soft_present", - "community": 132, + "community": 138, "norm_label": "test_main_problems_badge_compound_when_soft_present()" }, { "label": "test_main_setup_incomplete_banner_uses_warning()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L86", + "source_location": "L93", "id": "ui_test_pages_test_main_setup_incomplete_banner_uses_warning", - "community": 490, + "community": 446, "norm_label": "test_main_setup_incomplete_banner_uses_warning()" }, { "label": "test_main_setup_banner_subline_tailored_for_rclone_remote()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L94", + "source_location": "L101", "id": "ui_test_pages_test_main_setup_banner_subline_tailored_for_rclone_remote", - "community": 416, + "community": 397, "norm_label": "test_main_setup_banner_subline_tailored_for_rclone_remote()" }, + { + "label": "_search_hierarchy()", + "file_type": "code", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L116", + "id": "ui_test_pages_search_hierarchy", + "community": 299, + "norm_label": "_search_hierarchy()" + }, + { + "label": "test_main_chip_state_to_tree_filters_threads_search()", + "file_type": "code", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L129", + "id": "ui_test_pages_test_main_chip_state_to_tree_filters_threads_search", + "community": 524, + "norm_label": "test_main_chip_state_to_tree_filters_threads_search()" + }, + { + "label": "test_main_count_search_results_counts_projects_and_runs()", + "file_type": "code", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L137", + "id": "ui_test_pages_test_main_count_search_results_counts_projects_and_runs", + "community": 299, + "norm_label": "test_main_count_search_results_counts_projects_and_runs()" + }, + { + "label": "test_main_count_search_results_narrows_with_query()", + "file_type": "code", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L146", + "id": "ui_test_pages_test_main_count_search_results_narrows_with_query", + "community": 299, + "norm_label": "test_main_count_search_results_narrows_with_query()" + }, + { + "label": "test_main_count_search_results_zero_on_no_match()", + "file_type": "code", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L155", + "id": "ui_test_pages_test_main_count_search_results_zero_on_no_match", + "community": 299, + "norm_label": "test_main_count_search_results_zero_on_no_match()" + }, + { + "label": "test_main_density_card_class_maps_compact()", + "file_type": "code", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L166", + "id": "ui_test_pages_test_main_density_card_class_maps_compact", + "community": 523, + "norm_label": "test_main_density_card_class_maps_compact()" + }, { "label": "test_wizard_project_seven_steps()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L109", + "source_location": "L180", "id": "ui_test_pages_test_wizard_project_seven_steps", - "community": 496, + "community": 445, "norm_label": "test_wizard_project_seven_steps()" }, { "label": "test_wizard_project_can_advance_blocks_until_lims_picked()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L117", + "source_location": "L188", "id": "ui_test_pages_test_wizard_project_can_advance_blocks_until_lims_picked", - "community": 500, + "community": 448, "norm_label": "test_wizard_project_can_advance_blocks_until_lims_picked()" }, { "label": "test_wizard_project_can_advance_blocks_until_template_picked()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L126", + "source_location": "L197", "id": "ui_test_pages_test_wizard_project_can_advance_blocks_until_template_picked", - "community": 132, + "community": 138, "norm_label": "test_wizard_project_can_advance_blocks_until_template_picked()" }, { "label": "test_wizard_project_readme_requires_core_fields()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L133", + "source_location": "L204", "id": "ui_test_pages_test_wizard_project_readme_requires_core_fields", - "community": 132, + "community": 138, "norm_label": "test_wizard_project_readme_requires_core_fields()" }, { "label": "test_wizard_project_preview_blocks_with_validator_findings()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L140", + "source_location": "L211", "id": "ui_test_pages_test_wizard_project_preview_blocks_with_validator_findings", - "community": 132, + "community": 138, "norm_label": "test_wizard_project_preview_blocks_with_validator_findings()" }, { "label": "test_wizard_project_preview_blocks_with_low_disk()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L148", + "source_location": "L219", "id": "ui_test_pages_test_wizard_project_preview_blocks_with_low_disk", - "community": 493, + "community": 444, "norm_label": "test_wizard_project_preview_blocks_with_low_disk()" }, { "label": "test_wizard_project_preview_blocks_when_plugin_host_unhealthy()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L160", + "source_location": "L231", "id": "ui_test_pages_test_wizard_project_preview_blocks_when_plugin_host_unhealthy", - "community": 132, + "community": 138, "norm_label": "test_wizard_project_preview_blocks_when_plugin_host_unhealthy()" }, { "label": "test_wizard_project_preview_passes_when_clear()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L168", + "source_location": "L239", "id": "ui_test_pages_test_wizard_project_preview_passes_when_clear", - "community": 132, + "community": 138, "norm_label": "test_wizard_project_preview_passes_when_clear()" }, { "label": "test_wizard_run_six_steps()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L182", + "source_location": "L253", "id": "ui_test_pages_test_wizard_run_six_steps", - "community": 132, + "community": 138, "norm_label": "test_wizard_run_six_steps()" }, { "label": "test_wizard_run_test_mode_title()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L186", + "source_location": "L257", "id": "ui_test_pages_test_wizard_run_test_mode_title", - "community": 132, + "community": 138, "norm_label": "test_wizard_run_test_mode_title()" }, { "label": "test_wizard_run_experimental_mode_title()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L191", + "source_location": "L262", "id": "ui_test_pages_test_wizard_run_experimental_mode_title", - "community": 132, + "community": 138, "norm_label": "test_wizard_run_experimental_mode_title()" }, { "label": "test_wizard_run_test_button_uses_warning_color()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L196", + "source_location": "L267", "id": "ui_test_pages_test_wizard_run_test_button_uses_warning_color", - "community": 502, + "community": 450, "norm_label": "test_wizard_run_test_button_uses_warning_color()" }, { "label": "test_wizard_run_experimental_button_uses_primary_color()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L204", + "source_location": "L275", "id": "ui_test_pages_test_wizard_run_experimental_button_uses_primary_color", - "community": 132, + "community": 138, "norm_label": "test_wizard_run_experimental_button_uses_primary_color()" }, { "label": "test_wizard_run_preview_test_path_highlights()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L210", + "source_location": "L281", "id": "ui_test_pages_test_wizard_run_preview_test_path_highlights", - "community": 497, + "community": 440, "norm_label": "test_wizard_run_preview_test_path_highlights()" }, { "label": "test_wizard_run_preview_experimental_no_test_marker()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L224", + "source_location": "L295", "id": "ui_test_pages_test_wizard_run_preview_experimental_no_test_marker", - "community": 132, + "community": 138, "norm_label": "test_wizard_run_preview_experimental_no_test_marker()" }, { "label": "test_wizard_run_can_advance_blocks_until_project_and_equipment()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L235", + "source_location": "L306", "id": "ui_test_pages_test_wizard_run_can_advance_blocks_until_project_and_equipment", - "community": 132, + "community": 138, "norm_label": "test_wizard_run_can_advance_blocks_until_project_and_equipment()" }, { "label": "test_wizard_run_readme_blocks_until_core_fields()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L243", + "source_location": "L314", "id": "ui_test_pages_test_wizard_run_readme_blocks_until_core_fields", - "community": 132, + "community": 138, "norm_label": "test_wizard_run_readme_blocks_until_core_fields()" }, { "label": "test_settings_nine_sections_includes_operators()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L255", + "source_location": "L326", "id": "ui_test_pages_test_settings_nine_sections_includes_operators", - "community": 504, + "community": 439, "norm_label": "test_settings_nine_sections_includes_operators()" }, { "label": "test_settings_first_incomplete_returns_canonical_first()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L268", + "source_location": "L339", "id": "ui_test_pages_test_settings_first_incomplete_returns_canonical_first", - "community": 489, + "community": 443, "norm_label": "test_settings_first_incomplete_returns_canonical_first()" }, { "label": "test_settings_first_incomplete_resolves_nas_remote()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L275", + "source_location": "L346", "id": "ui_test_pages_test_settings_first_incomplete_resolves_nas_remote", - "community": 417, + "community": 396, "norm_label": "test_settings_first_incomplete_resolves_nas_remote()" }, { "label": "test_settings_save_button_label_setup_incomplete()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L283", + "source_location": "L354", "id": "ui_test_pages_test_settings_save_button_label_setup_incomplete", - "community": 132, + "community": 138, "norm_label": "test_settings_save_button_label_setup_incomplete()" }, { "label": "test_settings_save_button_label_no_changes()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L288", + "source_location": "L359", "id": "ui_test_pages_test_settings_save_button_label_no_changes", - "community": 132, + "community": 138, "norm_label": "test_settings_save_button_label_no_changes()" }, { "label": "test_settings_save_button_label_with_count_badge()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L293", + "source_location": "L364", "id": "ui_test_pages_test_settings_save_button_label_with_count_badge", - "community": 132, + "community": 138, "norm_label": "test_settings_save_button_label_with_count_badge()" }, { "label": "test_settings_section_warning_only_for_incomplete()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L298", + "source_location": "L369", "id": "ui_test_pages_test_settings_section_warning_only_for_incomplete", - "community": 132, + "community": 138, "norm_label": "test_settings_section_warning_only_for_incomplete()" }, { "label": "_sample_findings()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L309", + "source_location": "L380", "id": "ui_test_pages_sample_findings", - "community": 348, + "community": 328, "norm_label": "_sample_findings()" }, { "label": "test_problems_filter_default_shows_hard_only()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L336", + "source_location": "L407", "id": "ui_test_pages_test_problems_filter_default_shows_hard_only", - "community": 348, + "community": 328, "norm_label": "test_problems_filter_default_shows_hard_only()" }, { "label": "test_problems_filter_show_soft_when_chip_on()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L345", + "source_location": "L416", "id": "ui_test_pages_test_problems_filter_show_soft_when_chip_on", - "community": 348, + "community": 328, "norm_label": "test_problems_filter_show_soft_when_chip_on()" }, { "label": "test_problems_filter_search_path_substring()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L352", + "source_location": "L423", "id": "ui_test_pages_test_problems_filter_search_path_substring", - "community": 348, + "community": 328, "norm_label": "test_problems_filter_search_path_substring()" }, { "label": "test_problems_filter_scope_filters_by_equipment()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L358", + "source_location": "L429", "id": "ui_test_pages_test_problems_filter_scope_filters_by_equipment", - "community": 348, + "community": 328, "norm_label": "test_problems_filter_scope_filters_by_equipment()" }, { "label": "test_problems_override_reason_min_length()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L364", + "source_location": "L435", "id": "ui_test_pages_test_problems_override_reason_min_length", - "community": 494, + "community": 447, "norm_label": "test_problems_override_reason_min_length()" }, { "label": "test_problems_override_reason_max_length()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L372", + "source_location": "L443", "id": "ui_test_pages_test_problems_override_reason_max_length", - "community": 501, + "community": 451, "norm_label": "test_problems_override_reason_max_length()" }, { "label": "test_problems_override_reason_accepts_valid()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L381", + "source_location": "L452", "id": "ui_test_pages_test_problems_override_reason_accepts_valid", - "community": 132, + "community": 138, "norm_label": "test_problems_override_reason_accepts_valid()" }, { "label": "test_problems_override_reason_trims_whitespace()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L387", + "source_location": "L458", "id": "ui_test_pages_test_problems_override_reason_trims_whitespace", - "community": 495, + "community": 449, "norm_label": "test_problems_override_reason_trims_whitespace()" }, { "label": "test_problems_near_limit_flag()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L394", + "source_location": "L465", "id": "ui_test_pages_test_problems_near_limit_flag", - "community": 505, + "community": 453, "norm_label": "test_problems_near_limit_flag()" }, { "label": "test_problems_empty_state_default()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L401", + "source_location": "L472", "id": "ui_test_pages_test_problems_empty_state_default", - "community": 132, + "community": 138, "norm_label": "test_problems_empty_state_default()" }, { "label": "test_problems_empty_state_with_hidden_soft_count()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L406", + "source_location": "L477", "id": "ui_test_pages_test_problems_empty_state_with_hidden_soft_count", - "community": 132, + "community": 138, "norm_label": "test_problems_empty_state_with_hidden_soft_count()" }, { "label": "test_problems_empty_state_with_active_filter()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L412", + "source_location": "L483", "id": "ui_test_pages_test_problems_empty_state_with_active_filter", - "community": 132, + "community": 138, "norm_label": "test_problems_empty_state_with_active_filter()" }, { "label": "test_problems_chip_definitions_match_spec()", "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L418", + "source_location": "L489", "id": "ui_test_pages_test_problems_chip_definitions_match_spec", - "community": 498, + "community": 454, "norm_label": "test_problems_chip_definitions_match_spec()" }, { @@ -3411,187 +3573,241 @@ "source_file": "tests/unit/ui/test_pages.py", "source_location": "L1", "id": "ui_test_pages_rationale_1", - "community": 132, + "community": 138, "norm_label": "unit tests for ui pages. pages render nicegui elements; these tests exercise th" }, { "label": "Welcome card defaults autostart to on (Frontend \u00a73.1.3).", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L26", - "id": "ui_test_pages_rationale_26", - "community": 492, + "source_location": "L33", + "id": "ui_test_pages_rationale_33", + "community": 452, "norm_label": "welcome card defaults autostart to on (frontend \u00a73.1.3)." }, { "label": "Three bullets describing what the app does. Redesign decision 2: bullets re", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L37", - "id": "ui_test_pages_rationale_37", - "community": 499, + "source_location": "L44", + "id": "ui_test_pages_rationale_44", + "community": 442, "norm_label": "three bullets describing what the app does. redesign decision 2: bullets re" }, { "label": "Active default-on, Archived default-off, Test runs default-on.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L57", - "id": "ui_test_pages_rationale_57", - "community": 503, + "source_location": "L64", + "id": "ui_test_pages_rationale_64", + "community": 455, "norm_label": "active default-on, archived default-off, test runs default-on." }, { "label": "Translation preserves the chip state.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L67", - "id": "ui_test_pages_rationale_67", - "community": 491, + "source_location": "L74", + "id": "ui_test_pages_rationale_74", + "community": 441, "norm_label": "translation preserves the chip state." }, { "label": "Setup-incomplete banner uses ``--color-warning`` per Frontend \u00a73.1.4.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L87", - "id": "ui_test_pages_rationale_87", - "community": 490, + "source_location": "L94", + "id": "ui_test_pages_rationale_94", + "community": 446, "norm_label": "setup-incomplete banner uses ``--color-warning`` per frontend \u00a73.1.4." }, { "label": "The rclone-remote next-action points the operator at the setup docs.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L95", - "id": "ui_test_pages_rationale_95", - "community": 416, + "source_location": "L102", + "id": "ui_test_pages_rationale_102", + "community": 397, "norm_label": "the rclone-remote next-action points the operator at the setup docs." }, + { + "label": "A one-equipment hierarchy with two runs for the search-count tests.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L117", + "id": "ui_test_pages_rationale_117", + "community": 299, + "norm_label": "a one-equipment hierarchy with two runs for the search-count tests." + }, + { + "label": "The search-box query reaches TreeFilters.search (OQ-2).", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L130", + "id": "ui_test_pages_rationale_130", + "community": 524, + "norm_label": "the search-box query reaches treefilters.search (oq-2)." + }, + { + "label": "The result pill counts project + run rows (equipment is always shown).", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L138", + "id": "ui_test_pages_rationale_138", + "community": 299, + "norm_label": "the result pill counts project + run rows (equipment is always shown)." + }, + { + "label": "A query surfaces only the matching run under its project.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L147", + "id": "ui_test_pages_rationale_147", + "community": 299, + "norm_label": "a query surfaces only the matching run under its project." + }, + { + "label": "A no-match query yields a zero count (the no-matches state) even though buil", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L156", + "id": "ui_test_pages_rationale_156", + "community": 299, + "norm_label": "a no-match query yields a zero count (the no-matches state) even though buil" + }, + { + "label": "`?density=compact` -> the Files-card class the theme rule keys on; any other", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L167", + "id": "ui_test_pages_rationale_167", + "community": 523, + "norm_label": "`?density=compact` -> the files-card class the theme rule keys on; any other" + }, { "label": "Frontend \u00a74 mandates seven steps in a fixed order.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L110", - "id": "ui_test_pages_rationale_110", - "community": 496, + "source_location": "L181", + "id": "ui_test_pages_rationale_181", + "community": 445, "norm_label": "frontend \u00a74 mandates seven steps in a fixed order." }, { "label": "Step 1 requires a LIMS short_id.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L118", - "id": "ui_test_pages_rationale_118", - "community": 500, + "source_location": "L189", + "id": "ui_test_pages_rationale_189", + "community": 448, "norm_label": "step 1 requires a lims short_id." }, { "label": "Pre-flight: less than 100 MB free aborts (Frontend \u00a710.5.4).", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L149", - "id": "ui_test_pages_rationale_149", - "community": 493, + "source_location": "L220", + "id": "ui_test_pages_rationale_220", + "community": 444, "norm_label": "pre-flight: less than 100 mb free aborts (frontend \u00a710.5.4)." }, { "label": "Test-mode primary button uses ``warning`` color (Frontend \u00a75.3).", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L197", - "id": "ui_test_pages_rationale_197", - "community": 502, + "source_location": "L268", + "id": "ui_test_pages_rationale_268", + "community": 450, "norm_label": "test-mode primary button uses ``warning`` color (frontend \u00a75.3)." }, { "label": "Test runs add a TestRuns/ folder and TestRun_ leaf prefix.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L211", - "id": "ui_test_pages_rationale_211", - "community": 497, + "source_location": "L282", + "id": "ui_test_pages_rationale_282", + "community": 440, "norm_label": "test runs add a testruns/ folder and testrun_ leaf prefix." }, { "label": "Settings has nine sections (Frontend \u00a77.2 + \u00a77.9 operators). The ``operator", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L256", - "id": "ui_test_pages_rationale_256", - "community": 504, + "source_location": "L327", + "id": "ui_test_pages_rationale_327", + "community": 439, "norm_label": "settings has nine sections (frontend \u00a77.2 + \u00a77.9 operators). the ``operator" }, { "label": "First incomplete section is the first per canonical order.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L269", - "id": "ui_test_pages_rationale_269", - "community": 489, + "source_location": "L340", + "id": "ui_test_pages_rationale_340", + "community": 443, "norm_label": "first incomplete section is the first per canonical order." }, { "label": "The dynamic NAS-remote section is auto-selected when it's the gate.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L276", - "id": "ui_test_pages_rationale_276", - "community": 417, + "source_location": "L347", + "id": "ui_test_pages_rationale_347", + "community": 396, "norm_label": "the dynamic nas-remote section is auto-selected when it's the gate." }, { "label": "Hard chip default-on; Soft default-off.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L337", - "id": "ui_test_pages_rationale_337", - "community": 348, + "source_location": "L408", + "id": "ui_test_pages_rationale_408", + "community": 328, "norm_label": "hard chip default-on; soft default-off." }, { "label": "Frontend \u00a711.5: minimum 10 chars after trim.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L365", - "id": "ui_test_pages_rationale_365", - "community": 494, + "source_location": "L436", + "id": "ui_test_pages_rationale_436", + "community": 447, "norm_label": "frontend \u00a711.5: minimum 10 chars after trim." }, { "label": "Frontend \u00a711.5: maximum 500 chars after trim.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L373", - "id": "ui_test_pages_rationale_373", - "community": 501, + "source_location": "L444", + "id": "ui_test_pages_rationale_444", + "community": 451, "norm_label": "frontend \u00a711.5: maximum 500 chars after trim." }, { "label": "Whitespace is trimmed before length check.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L388", - "id": "ui_test_pages_rationale_388", - "community": 495, + "source_location": "L459", + "id": "ui_test_pages_rationale_459", + "community": 449, "norm_label": "whitespace is trimmed before length check." }, { "label": "Within 10 of the maximum -> near-limit warning.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L395", - "id": "ui_test_pages_rationale_395", - "community": 505, + "source_location": "L466", + "id": "ui_test_pages_rationale_466", + "community": 453, "norm_label": "within 10 of the maximum -> near-limit warning." }, { "label": "Five problem-class chips per Backend \u00a78.1.1-\u00a78.1.5.", "file_type": "rationale", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L419", - "id": "ui_test_pages_rationale_419", - "community": 498, + "source_location": "L490", + "id": "ui_test_pages_rationale_490", + "community": 454, "norm_label": "five problem-class chips per backend \u00a78.1.1-\u00a78.1.5." }, { @@ -3675,119 +3891,56 @@ "community": 0, "norm_label": ".__exit__()" }, - { - "label": "_FakeUI", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L99", - "id": "ui_test_mount_fakeui", - "community": 0, - "norm_label": "_fakeui" - }, - { - "label": ".__init__()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L102", - "id": "ui_test_mount_fakeui_init", - "community": 0, - "norm_label": ".__init__()" - }, - { - "label": ".card()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L108", - "id": "ui_test_mount_fakeui_card", - "community": 0, - "norm_label": ".card()" - }, - { - "label": ".label()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L112", - "id": "ui_test_mount_fakeui_label", - "community": 0, - "norm_label": ".label()" - }, - { - "label": "_BoomUI", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L117", - "id": "ui_test_mount_boomui", - "community": 0, - "norm_label": "_boomui" - }, - { - "label": ".card()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L120", - "id": "ui_test_mount_boomui_card", - "community": 0, - "norm_label": ".card()" - }, - { - "label": ".label()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L124", - "id": "ui_test_mount_boomui_label", - "community": 0, - "norm_label": ".label()" - }, { "label": "_FakeController", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L129", + "source_location": "L99", "id": "ui_test_mount_fakecontroller", - "community": 49, + "community": 60, "norm_label": "_fakecontroller" }, { "label": ".__init__()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L132", + "source_location": "L102", "id": "ui_test_mount_fakecontroller_init", - "community": 49, + "community": 60, "norm_label": ".__init__()" }, { "label": ".status()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L148", + "source_location": "L118", "id": "ui_test_mount_fakecontroller_status", - "community": 49, + "community": 60, "norm_label": ".status()" }, { "label": ".create_project()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L151", + "source_location": "L121", "id": "ui_test_mount_fakecontroller_create_project", - "community": 49, + "community": 60, "norm_label": ".create_project()" }, { "label": ".create_run()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L158", + "source_location": "L128", "id": "ui_test_mount_fakecontroller_create_run", - "community": 49, + "community": 60, "norm_label": ".create_run()" }, { "label": "test_is_setup_ready_false_when_deps_none()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L176", + "source_location": "L146", "id": "ui_test_mount_test_is_setup_ready_false_when_deps_none", "community": 2, "norm_label": "test_is_setup_ready_false_when_deps_none()" @@ -3796,7 +3949,7 @@ "label": "test_is_setup_ready_false_when_config_missing()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L180", + "source_location": "L150", "id": "ui_test_mount_test_is_setup_ready_false_when_config_missing", "community": 2, "norm_label": "test_is_setup_ready_false_when_config_missing()" @@ -3805,7 +3958,7 @@ "label": "test_is_setup_ready_false_when_keyring_missing()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L184", + "source_location": "L154", "id": "ui_test_mount_test_is_setup_ready_false_when_keyring_missing", "community": 2, "norm_label": "test_is_setup_ready_false_when_keyring_missing()" @@ -3814,7 +3967,7 @@ "label": "test_is_setup_ready_false_when_lims_unreachable()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L194", + "source_location": "L164", "id": "ui_test_mount_test_is_setup_ready_false_when_lims_unreachable", "community": 2, "norm_label": "test_is_setup_ready_false_when_lims_unreachable()" @@ -3823,7 +3976,7 @@ "label": "test_is_setup_ready_true_when_all_satisfied()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L203", + "source_location": "L173", "id": "ui_test_mount_test_is_setup_ready_true_when_all_satisfied", "community": 2, "norm_label": "test_is_setup_ready_true_when_all_satisfied()" @@ -3832,7 +3985,7 @@ "label": "test_is_setup_ready_false_when_nas_remote_unset()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L212", + "source_location": "L182", "id": "ui_test_mount_test_is_setup_ready_false_when_nas_remote_unset", "community": 2, "norm_label": "test_is_setup_ready_false_when_nas_remote_unset()" @@ -3841,7 +3994,7 @@ "label": "test_is_setup_ready_false_when_nas_remote_unavailable()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L222", + "source_location": "L192", "id": "ui_test_mount_test_is_setup_ready_false_when_nas_remote_unavailable", "community": 2, "norm_label": "test_is_setup_ready_false_when_nas_remote_unavailable()" @@ -3850,7 +4003,7 @@ "label": "test_is_setup_ready_true_with_offline_catalogue_lims()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L233", + "source_location": "L203", "id": "ui_test_mount_test_is_setup_ready_true_with_offline_catalogue_lims", "community": 2, "norm_label": "test_is_setup_ready_true_with_offline_catalogue_lims()" @@ -3859,7 +4012,7 @@ "label": "test_build_main_state_marks_incomplete_without_config()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L253", + "source_location": "L223", "id": "ui_test_mount_test_build_main_state_marks_incomplete_without_config", "community": 2, "norm_label": "test_build_main_state_marks_incomplete_without_config()" @@ -3868,7 +4021,7 @@ "label": "test_build_main_state_sources_problems_counts_from_audit()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L262", + "source_location": "L232", "id": "ui_test_mount_test_build_main_state_sources_problems_counts_from_audit", "community": 2, "norm_label": "test_build_main_state_sources_problems_counts_from_audit()" @@ -3877,7 +4030,7 @@ "label": "test_build_main_state_always_on_orchestrator()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L270", + "source_location": "L240", "id": "ui_test_mount_test_build_main_state_always_on_orchestrator", "community": 2, "norm_label": "test_build_main_state_always_on_orchestrator()" @@ -3886,7 +4039,7 @@ "label": "test_operation_counts_distinguishes_panel_active_and_input_required()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L288", + "source_location": "L258", "id": "ui_test_mount_test_operation_counts_distinguishes_panel_active_and_input_required", "community": 2, "norm_label": "test_operation_counts_distinguishes_panel_active_and_input_required()" @@ -3895,7 +4048,7 @@ "label": "test_operation_counts_zero_without_controller()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L309", + "source_location": "L279", "id": "ui_test_mount_test_operation_counts_zero_without_controller", "community": 2, "norm_label": "test_operation_counts_zero_without_controller()" @@ -3904,7 +4057,7 @@ "label": "test_missing_sections_when_deps_none()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L318", + "source_location": "L288", "id": "ui_test_mount_test_missing_sections_when_deps_none", "community": 2, "norm_label": "test_missing_sections_when_deps_none()" @@ -3913,7 +4066,7 @@ "label": "test_missing_sections_when_config_none()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L322", + "source_location": "L292", "id": "ui_test_mount_test_missing_sections_when_config_none", "community": 2, "norm_label": "test_missing_sections_when_config_none()" @@ -3922,7 +4075,7 @@ "label": "test_missing_sections_with_paths_unset()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L329", + "source_location": "L299", "id": "ui_test_mount_test_missing_sections_with_paths_unset", "community": 2, "norm_label": "test_missing_sections_with_paths_unset()" @@ -3931,7 +4084,7 @@ "label": "test_missing_sections_with_keyring_absent_reports_lims()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L338", + "source_location": "L308", "id": "ui_test_mount_test_missing_sections_with_keyring_absent_reports_lims", "community": 2, "norm_label": "test_missing_sections_with_keyring_absent_reports_lims()" @@ -3940,7 +4093,7 @@ "label": "test_missing_sections_empty_when_fully_configured()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L343", + "source_location": "L313", "id": "ui_test_mount_test_missing_sections_empty_when_fully_configured", "community": 2, "norm_label": "test_missing_sections_empty_when_fully_configured()" @@ -3949,7 +4102,7 @@ "label": "_nas_config()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L348", + "source_location": "L318", "id": "ui_test_mount_nas_config", "community": 2, "norm_label": "_nas_config()" @@ -3958,7 +4111,7 @@ "label": "test_missing_sections_includes_nas_remote_when_remote_unavailable()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L391", + "source_location": "L361", "id": "ui_test_mount_test_missing_sections_includes_nas_remote_when_remote_unavailable", "community": 2, "norm_label": "test_missing_sections_includes_nas_remote_when_remote_unavailable()" @@ -3967,7 +4120,7 @@ "label": "test_missing_sections_includes_nas_remote_when_remote_unset()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L400", + "source_location": "L370", "id": "ui_test_mount_test_missing_sections_includes_nas_remote_when_remote_unset", "community": 2, "norm_label": "test_missing_sections_includes_nas_remote_when_remote_unset()" @@ -3976,7 +4129,7 @@ "label": "test_missing_sections_excludes_nas_remote_when_remote_available()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L408", + "source_location": "L378", "id": "ui_test_mount_test_missing_sections_excludes_nas_remote_when_remote_available", "community": 2, "norm_label": "test_missing_sections_excludes_nas_remote_when_remote_available()" @@ -3985,7 +4138,7 @@ "label": "_RaisingValidator", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L423", + "source_location": "L393", "id": "ui_test_mount_raisingvalidator", "community": 0, "norm_label": "_raisingvalidator" @@ -3994,7 +4147,7 @@ "label": ".audit()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L424", + "source_location": "L394", "id": "ui_test_mount_raisingvalidator_audit", "community": 0, "norm_label": ".audit()" @@ -4003,7 +4156,7 @@ "label": "_OkValidator", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L429", + "source_location": "L399", "id": "ui_test_mount_okvalidator", "community": 0, "norm_label": "_okvalidator" @@ -4012,7 +4165,7 @@ "label": ".__init__()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L430", + "source_location": "L400", "id": "ui_test_mount_okvalidator_init", "community": 0, "norm_label": ".__init__()" @@ -4021,7 +4174,7 @@ "label": ".audit()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L433", + "source_location": "L403", "id": "ui_test_mount_okvalidator_audit", "community": 0, "norm_label": ".audit()" @@ -4030,7 +4183,7 @@ "label": "test_safe_audit_returns_empty_list_when_validator_missing()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L437", + "source_location": "L407", "id": "ui_test_mount_test_safe_audit_returns_empty_list_when_validator_missing", "community": 2, "norm_label": "test_safe_audit_returns_empty_list_when_validator_missing()" @@ -4039,7 +4192,7 @@ "label": "test_safe_audit_swallows_validator_exception()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L441", + "source_location": "L411", "id": "ui_test_mount_test_safe_audit_swallows_validator_exception", "community": 2, "norm_label": "test_safe_audit_swallows_validator_exception()" @@ -4048,151 +4201,106 @@ "label": "test_safe_audit_forwards_validator_output()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L449", + "source_location": "L419", "id": "ui_test_mount_test_safe_audit_forwards_validator_output", "community": 2, "norm_label": "test_safe_audit_forwards_validator_output()" }, - { - "label": "test_staging_state_when_staging_root_missing()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L460", - "id": "ui_test_mount_test_staging_state_when_staging_root_missing", - "community": 2, - "norm_label": "test_staging_state_when_staging_root_missing()" - }, - { - "label": "test_staging_state_none_when_no_config()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L475", - "id": "ui_test_mount_test_staging_state_none_when_no_config", - "community": 2, - "norm_label": "test_staging_state_none_when_no_config()" - }, - { - "label": "test_staging_state_returns_empty_rows_on_query_failure()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L479", - "id": "ui_test_mount_test_staging_state_returns_empty_rows_on_query_failure", - "community": 2, - "norm_label": "test_staging_state_returns_empty_rows_on_query_failure()" - }, { "label": "_NavSpy", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L507", + "source_location": "L437", "id": "ui_test_mount_navspy", - "community": 49, + "community": 60, "norm_label": "_navspy" }, { "label": ".__init__()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L510", + "source_location": "L440", "id": "ui_test_mount_navspy_init", - "community": 49, + "community": 60, "norm_label": ".__init__()" }, { "label": "test_persist_config_writes_and_applies_live()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L515", + "source_location": "L445", "id": "ui_test_mount_test_persist_config_writes_and_applies_live", - "community": 49, + "community": 324, "norm_label": "test_persist_config_writes_and_applies_live()" }, { "label": "test_persist_config_returns_false_when_no_saver()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L538", + "source_location": "L468", "id": "ui_test_mount_test_persist_config_returns_false_when_no_saver", - "community": 49, + "community": 60, "norm_label": "test_persist_config_returns_false_when_no_saver()" }, { "label": "test_persist_config_returns_false_when_saver_raises()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L550", + "source_location": "L480", "id": "ui_test_mount_test_persist_config_returns_false_when_saver_raises", - "community": 49, + "community": 60, "norm_label": "test_persist_config_returns_false_when_saver_raises()" }, { "label": "test_persist_config_warns_when_saver_returns_awaitable()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L567", + "source_location": "L497", "id": "ui_test_mount_test_persist_config_warns_when_saver_returns_awaitable", - "community": 49, + "community": 60, "norm_label": "test_persist_config_warns_when_saver_returns_awaitable()" }, { "label": "test_persist_config_creates_staging_root_when_set()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L590", + "source_location": "L520", "id": "ui_test_mount_test_persist_config_creates_staging_root_when_set", - "community": 49, + "community": 60, "norm_label": "test_persist_config_creates_staging_root_when_set()" }, { "label": "test_persist_config_does_not_create_staging_root_when_blank()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L605", + "source_location": "L535", "id": "ui_test_mount_test_persist_config_does_not_create_staging_root_when_blank", - "community": 49, + "community": 60, "norm_label": "test_persist_config_does_not_create_staging_root_when_blank()" }, { "label": "test_persist_config_staging_dir_failure_is_non_fatal()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L619", + "source_location": "L549", "id": "ui_test_mount_test_persist_config_staging_dir_failure_is_non_fatal", - "community": 49, + "community": 60, "norm_label": "test_persist_config_staging_dir_failure_is_non_fatal()" }, { "label": "test_apply_live_config_falls_back_to_setting_config()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L645", + "source_location": "L575", "id": "ui_test_mount_test_apply_live_config_falls_back_to_setting_config", - "community": 2, + "community": 386, "norm_label": "test_apply_live_config_falls_back_to_setting_config()" }, - { - "label": "test_render_unavailable_renders_headline_and_subline()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L671", - "id": "ui_test_mount_test_render_unavailable_renders_headline_and_subline", - "community": 2, - "norm_label": "test_render_unavailable_renders_headline_and_subline()" - }, - { - "label": "test_render_unavailable_swallows_failure()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L678", - "id": "ui_test_mount_test_render_unavailable_swallows_failure", - "community": 2, - "norm_label": "test_render_unavailable_swallows_failure()" - }, { "label": "test_show_toast_positive_and_negative_never_raise()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L689", + "source_location": "L605", "id": "ui_test_mount_test_show_toast_positive_and_negative_never_raise", "community": 2, "norm_label": "test_show_toast_positive_and_negative_never_raise()" @@ -4201,7 +4309,7 @@ "label": "test_show_toast_swallows_notification_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L696", + "source_location": "L612", "id": "ui_test_mount_test_show_toast_swallows_notification_failure", "community": 2, "norm_label": "test_show_toast_swallows_notification_failure()" @@ -4210,7 +4318,7 @@ "label": "_RecordingKeyringStore", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L715", + "source_location": "L631", "id": "ui_test_mount_recordingkeyringstore", "community": 0, "norm_label": "_recordingkeyringstore" @@ -4219,7 +4327,7 @@ "label": ".__init__()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L718", + "source_location": "L634", "id": "ui_test_mount_recordingkeyringstore_init", "community": 0, "norm_label": ".__init__()" @@ -4228,7 +4336,7 @@ "label": ".set_password()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L723", + "source_location": "L639", "id": "ui_test_mount_recordingkeyringstore_set_password", "community": 0, "norm_label": ".set_password()" @@ -4237,7 +4345,7 @@ "label": ".delete_password()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L729", + "source_location": "L645", "id": "ui_test_mount_recordingkeyringstore_delete_password", "community": 0, "norm_label": ".delete_password()" @@ -4246,7 +4354,7 @@ "label": "test_lims_credential_handlers_save_writes_under_lims_username()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L736", + "source_location": "L652", "id": "ui_test_mount_test_lims_credential_handlers_save_writes_under_lims_username", "community": 2, "norm_label": "test_lims_credential_handlers_save_writes_under_lims_username()" @@ -4255,7 +4363,7 @@ "label": "test_lims_credential_handlers_clear_deletes_under_lims_username()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L745", + "source_location": "L661", "id": "ui_test_mount_test_lims_credential_handlers_clear_deletes_under_lims_username", "community": 2, "norm_label": "test_lims_credential_handlers_clear_deletes_under_lims_username()" @@ -4264,7 +4372,7 @@ "label": "test_lims_credential_handlers_tolerate_missing_keyring_store()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L754", + "source_location": "L670", "id": "ui_test_mount_test_lims_credential_handlers_tolerate_missing_keyring_store", "community": 2, "norm_label": "test_lims_credential_handlers_tolerate_missing_keyring_store()" @@ -4273,16 +4381,16 @@ "label": "test_lims_credential_handlers_swallow_backend_errors()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L763", + "source_location": "L679", "id": "ui_test_mount_test_lims_credential_handlers_swallow_backend_errors", - "community": 298, + "community": 385, "norm_label": "test_lims_credential_handlers_swallow_backend_errors()" }, { "label": "test_apply_autostart_noop_when_deps_none()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L778", + "source_location": "L694", "id": "ui_test_mount_test_apply_autostart_noop_when_deps_none", "community": 2, "norm_label": "test_apply_autostart_noop_when_deps_none()" @@ -4291,7 +4399,7 @@ "label": "test_apply_autostart_noop_when_toggle_missing()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L782", + "source_location": "L698", "id": "ui_test_mount_test_apply_autostart_noop_when_toggle_missing", "community": 2, "norm_label": "test_apply_autostart_noop_when_toggle_missing()" @@ -4300,7 +4408,7 @@ "label": "test_apply_autostart_invokes_toggle()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L786", + "source_location": "L702", "id": "ui_test_mount_test_apply_autostart_invokes_toggle", "community": 2, "norm_label": "test_apply_autostart_invokes_toggle()" @@ -4309,7 +4417,7 @@ "label": "test_apply_autostart_returns_real_registration_state()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L793", + "source_location": "L709", "id": "ui_test_mount_test_apply_autostart_returns_real_registration_state", "community": 2, "norm_label": "test_apply_autostart_returns_real_registration_state()" @@ -4318,7 +4426,7 @@ "label": "test_apply_autostart_swallows_toggle_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L802", + "source_location": "L718", "id": "ui_test_mount_test_apply_autostart_swallows_toggle_failure", "community": 2, "norm_label": "test_apply_autostart_swallows_toggle_failure()" @@ -4327,7 +4435,7 @@ "label": "test_templates_dir_none_when_deps_none()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L819", + "source_location": "L735", "id": "ui_test_mount_test_templates_dir_none_when_deps_none", "community": 2, "norm_label": "test_templates_dir_none_when_deps_none()" @@ -4336,7 +4444,7 @@ "label": "test_templates_dir_none_when_config_none()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L823", + "source_location": "L739", "id": "ui_test_mount_test_templates_dir_none_when_config_none", "community": 2, "norm_label": "test_templates_dir_none_when_config_none()" @@ -4345,7 +4453,7 @@ "label": "test_templates_dir_none_when_unset()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L827", + "source_location": "L743", "id": "ui_test_mount_test_templates_dir_none_when_unset", "community": 2, "norm_label": "test_templates_dir_none_when_unset()" @@ -4354,7 +4462,7 @@ "label": "test_templates_dir_returns_path()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L831", + "source_location": "L747", "id": "ui_test_mount_test_templates_dir_returns_path", "community": 2, "norm_label": "test_templates_dir_returns_path()" @@ -4363,7 +4471,7 @@ "label": "test_equipment_ids_empty_without_config()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L836", + "source_location": "L752", "id": "ui_test_mount_test_equipment_ids_empty_without_config", "community": 2, "norm_label": "test_equipment_ids_empty_without_config()" @@ -4372,7 +4480,7 @@ "label": "test_equipment_ids_lists_configured_ids()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L840", + "source_location": "L756", "id": "ui_test_mount_test_equipment_ids_lists_configured_ids", "community": 2, "norm_label": "test_equipment_ids_lists_configured_ids()" @@ -4381,7 +4489,7 @@ "label": "test_template_names_empty_without_templates_dir()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L852", + "source_location": "L768", "id": "ui_test_mount_test_template_names_empty_without_templates_dir", "community": 2, "norm_label": "test_template_names_empty_without_templates_dir()" @@ -4390,7 +4498,7 @@ "label": "test_template_names_lists_summary_names()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L856", + "source_location": "L772", "id": "ui_test_mount_test_template_names_lists_summary_names", "community": 2, "norm_label": "test_template_names_lists_summary_names()" @@ -4399,7 +4507,7 @@ "label": "test_template_names_swallows_scan_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L868", + "source_location": "L784", "id": "ui_test_mount_test_template_names_swallows_scan_failure", "community": 2, "norm_label": "test_template_names_swallows_scan_failure()" @@ -4408,7 +4516,7 @@ "label": "test_lims_projects_empty_without_config()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L888", + "source_location": "L804", "id": "ui_test_mount_test_lims_projects_empty_without_config", "community": 2, "norm_label": "test_lims_projects_empty_without_config()" @@ -4417,7 +4525,7 @@ "label": "test_lims_projects_empty_without_catalogue_path()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L892", + "source_location": "L808", "id": "ui_test_mount_test_lims_projects_empty_without_catalogue_path", "community": 2, "norm_label": "test_lims_projects_empty_without_catalogue_path()" @@ -4426,7 +4534,7 @@ "label": "test_lims_projects_empty_when_catalogue_missing()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L896", + "source_location": "L812", "id": "ui_test_mount_test_lims_projects_empty_when_catalogue_missing", "community": 2, "norm_label": "test_lims_projects_empty_when_catalogue_missing()" @@ -4435,7 +4543,7 @@ "label": "test_lims_projects_reads_offline_catalogue()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L901", + "source_location": "L817", "id": "ui_test_mount_test_lims_projects_reads_offline_catalogue", "community": 2, "norm_label": "test_lims_projects_reads_offline_catalogue()" @@ -4444,7 +4552,7 @@ "label": "test_lims_projects_swallows_read_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L922", + "source_location": "L838", "id": "ui_test_mount_test_lims_projects_swallows_read_failure", "community": 2, "norm_label": "test_lims_projects_swallows_read_failure()" @@ -4453,7 +4561,7 @@ "label": "_FakeLimsClient", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L939", + "source_location": "L855", "id": "ui_test_mount_fakelimsclient", "community": 0, "norm_label": "_fakelimsclient" @@ -4462,7 +4570,7 @@ "label": ".__init__()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L942", + "source_location": "L858", "id": "ui_test_mount_fakelimsclient_init", "community": 0, "norm_label": ".__init__()" @@ -4471,7 +4579,7 @@ "label": ".list_projects()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L947", + "source_location": "L863", "id": "ui_test_mount_fakelimsclient_list_projects", "community": 0, "norm_label": ".list_projects()" @@ -4480,7 +4588,7 @@ "label": "test_lims_projects_uses_live_lims()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L955", + "source_location": "L871", "id": "ui_test_mount_test_lims_projects_uses_live_lims", "community": 2, "norm_label": "test_lims_projects_uses_live_lims()" @@ -4489,7 +4597,7 @@ "label": "test_lims_projects_skips_live_lims_when_unreachable()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L969", + "source_location": "L885", "id": "ui_test_mount_test_lims_projects_skips_live_lims_when_unreachable", "community": 2, "norm_label": "test_lims_projects_skips_live_lims_when_unreachable()" @@ -4498,7 +4606,7 @@ "label": "test_lims_projects_falls_back_to_catalogue_on_live_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L976", + "source_location": "L892", "id": "ui_test_mount_test_lims_projects_falls_back_to_catalogue_on_live_failure", "community": 2, "norm_label": "test_lims_projects_falls_back_to_catalogue_on_live_failure()" @@ -4507,7 +4615,7 @@ "label": "test_template_questions_map_empty_without_templates_dir()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1011", + "source_location": "L927", "id": "ui_test_mount_test_template_questions_map_empty_without_templates_dir", "community": 2, "norm_label": "test_template_questions_map_empty_without_templates_dir()" @@ -4516,7 +4624,7 @@ "label": "test_template_questions_map_resolves_questions()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1015", + "source_location": "L931", "id": "ui_test_mount_test_template_questions_map_resolves_questions", "community": 2, "norm_label": "test_template_questions_map_resolves_questions()" @@ -4525,7 +4633,7 @@ "label": "test_template_questions_map_skips_unresolvable_template()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1036", + "source_location": "L952", "id": "ui_test_mount_test_template_questions_map_skips_unresolvable_template", "community": 2, "norm_label": "test_template_questions_map_skips_unresolvable_template()" @@ -4534,142 +4642,142 @@ "label": "test_await_session_awaits_pending_task()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1061", + "source_location": "L977", "id": "ui_test_mount_test_await_session_awaits_pending_task", - "community": 49, + "community": 60, "norm_label": "test_await_session_awaits_pending_task()" }, { "label": "test_await_session_without_pending_task()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1074", + "source_location": "L990", "id": "ui_test_mount_test_await_session_without_pending_task", - "community": 49, + "community": 60, "norm_label": "test_await_session_without_pending_task()" }, { "label": "test_run_creation_navigates_home_on_done()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1086", + "source_location": "L1002", "id": "ui_test_mount_test_run_creation_navigates_home_on_done", - "community": 49, + "community": 60, "norm_label": "test_run_creation_navigates_home_on_done()" }, { "label": "test_run_creation_reports_failure_state()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1093", + "source_location": "L1009", "id": "ui_test_mount_test_run_creation_reports_failure_state", - "community": 49, + "community": 60, "norm_label": "test_run_creation_reports_failure_state()" }, { "label": "test_run_creation_swallows_create_exception()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1101", + "source_location": "L1017", "id": "ui_test_mount_test_run_creation_swallows_create_exception", - "community": 49, + "community": 60, "norm_label": "test_run_creation_swallows_create_exception()" }, { "label": "test_submit_project_toasts_when_controller_missing()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1119", + "source_location": "L1035", "id": "ui_test_mount_test_submit_project_toasts_when_controller_missing", - "community": 49, + "community": 60, "norm_label": "test_submit_project_toasts_when_controller_missing()" }, { "label": "test_submit_project_toasts_without_template()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1125", + "source_location": "L1041", "id": "ui_test_mount_test_submit_project_toasts_without_template", - "community": 49, + "community": 60, "norm_label": "test_submit_project_toasts_without_template()" }, { "label": "test_submit_project_builds_request_and_runs()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1133", + "source_location": "L1049", "id": "ui_test_mount_test_submit_project_builds_request_and_runs", - "community": 49, + "community": 60, "norm_label": "test_submit_project_builds_request_and_runs()" }, { "label": "test_submit_run_toasts_when_controller_missing()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1154", + "source_location": "L1070", "id": "ui_test_mount_test_submit_run_toasts_when_controller_missing", - "community": 49, + "community": 60, "norm_label": "test_submit_run_toasts_when_controller_missing()" }, { "label": "test_submit_run_builds_request_and_runs()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1160", + "source_location": "L1076", "id": "ui_test_mount_test_submit_run_builds_request_and_runs", - "community": 49, + "community": 60, "norm_label": "test_submit_run_builds_request_and_runs()" }, { "label": "test_build_main_query_omits_empty_params()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1185", + "source_location": "L1101", "id": "ui_test_mount_test_build_main_query_omits_empty_params", - "community": 389, + "community": 387, "norm_label": "test_build_main_query_omits_empty_params()" }, { "label": "test_build_main_query_url_encodes_special_chars()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1193", + "source_location": "L1109", "id": "ui_test_mount_test_build_main_query_url_encodes_special_chars", - "community": 390, + "community": 80, "norm_label": "test_build_main_query_url_encodes_special_chars()" }, { "label": "test_build_main_query_includes_file_q_density()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1205", + "source_location": "L1121", "id": "ui_test_mount_test_build_main_query_includes_file_q_density", - "community": 2, + "community": 504, "norm_label": "test_build_main_query_includes_file_q_density()" }, { "label": "test_build_main_query_omits_empty_phase4_params()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1214", + "source_location": "L1130", "id": "ui_test_mount_test_build_main_query_omits_empty_phase4_params", - "community": 418, + "community": 429, "norm_label": "test_build_main_query_omits_empty_phase4_params()" }, { "label": "test_build_main_query_encodes_file_path_and_search()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1219", + "source_location": "L1135", "id": "ui_test_mount_test_build_main_query_encodes_file_path_and_search", - "community": 2, + "community": 430, "norm_label": "test_build_main_query_encodes_file_path_and_search()" }, { "label": "test_classify_node_returns_none_for_empty_selection()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1228", + "source_location": "L1144", "id": "ui_test_mount_test_classify_node_returns_none_for_empty_selection", "community": 2, "norm_label": "test_classify_node_returns_none_for_empty_selection()" @@ -4678,25 +4786,25 @@ "label": "test_classify_node_discriminates_kinds()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1233", + "source_location": "L1149", "id": "ui_test_mount_test_classify_node_discriminates_kinds", - "community": 350, + "community": 80, "norm_label": "test_classify_node_discriminates_kinds()" }, { "label": "test_classify_node_rejects_unknown_root()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1254", + "source_location": "L1170", "id": "ui_test_mount_test_classify_node_rejects_unknown_root", - "community": 349, + "community": 350, "norm_label": "test_classify_node_rejects_unknown_root()" }, { "label": "test_build_metadata_payload_returns_empty_when_node_missing()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1270", + "source_location": "L1186", "id": "ui_test_mount_test_build_metadata_payload_returns_empty_when_node_missing", "community": 2, "norm_label": "test_build_metadata_payload_returns_empty_when_node_missing()" @@ -4705,70 +4813,70 @@ "label": "test_build_metadata_payload_owned_equipment_reads_config()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1276", + "source_location": "L1192", "id": "ui_test_mount_test_build_metadata_payload_owned_equipment_reads_config", - "community": 164, + "community": 80, "norm_label": "test_build_metadata_payload_owned_equipment_reads_config()" }, { "label": "test_build_metadata_payload_unknown_equipment_id_returns_empty()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1294", + "source_location": "L1210", "id": "ui_test_mount_test_build_metadata_payload_unknown_equipment_id_returns_empty", - "community": 164, + "community": 80, "norm_label": "test_build_metadata_payload_unknown_equipment_id_returns_empty()" }, { "label": "test_build_metadata_payload_project_scans_run_counts()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1301", + "source_location": "L1217", "id": "ui_test_mount_test_build_metadata_payload_project_scans_run_counts", - "community": 164, + "community": 80, "norm_label": "test_build_metadata_payload_project_scans_run_counts()" }, { "label": "test_build_metadata_payload_run_parses_creation_json()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1320", + "source_location": "L1236", "id": "ui_test_mount_test_build_metadata_payload_run_parses_creation_json", - "community": 164, + "community": 80, "norm_label": "test_build_metadata_payload_run_parses_creation_json()" }, { "label": "test_build_metadata_payload_run_missing_creation_returns_path_only()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1365", + "source_location": "L1281", "id": "ui_test_mount_test_build_metadata_payload_run_missing_creation_returns_path_only", - "community": 242, + "community": 33, "norm_label": "test_build_metadata_payload_run_missing_creation_returns_path_only()" }, { "label": "test_build_main_state_threads_selection_into_state()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1374", + "source_location": "L1290", "id": "ui_test_mount_test_build_main_state_threads_selection_into_state", - "community": 103, + "community": 131, "norm_label": "test_build_main_state_threads_selection_into_state()" }, { "label": "test_build_main_state_threads_file_search_density()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1390", + "source_location": "L1306", "id": "ui_test_mount_test_build_main_state_threads_file_search_density", - "community": 103, + "community": 131, "norm_label": "test_build_main_state_threads_file_search_density()" }, { "label": "test_build_selected_file_resolves_file_by_path_match()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1411", + "source_location": "L1327", "id": "ui_test_mount_test_build_selected_file_resolves_file_by_path_match", "community": 2, "norm_label": "test_build_selected_file_resolves_file_by_path_match()" @@ -4777,106 +4885,106 @@ "label": "test_build_selected_file_none_for_empty_or_missing_path()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1437", + "source_location": "L1353", "id": "ui_test_mount_test_build_selected_file_none_for_empty_or_missing_path", - "community": 269, + "community": 125, "norm_label": "test_build_selected_file_none_for_empty_or_missing_path()" }, { "label": "test_build_selected_file_tombstone_omits_size()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1446", + "source_location": "L1362", "id": "ui_test_mount_test_build_selected_file_tombstone_omits_size", - "community": 17, + "community": 14, "norm_label": "test_build_selected_file_tombstone_omits_size()" }, { "label": "test_build_selected_file_folder_delegates_to_aggregate()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1465", + "source_location": "L1381", "id": "ui_test_mount_test_build_selected_file_folder_delegates_to_aggregate", - "community": 62, + "community": 33, "norm_label": "test_build_selected_file_folder_delegates_to_aggregate()" }, { "label": "test_build_selected_folder_degrades_on_scan_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1492", + "source_location": "L1408", "id": "ui_test_mount_test_build_selected_folder_degrades_on_scan_failure", - "community": 2, + "community": 107, "norm_label": "test_build_selected_folder_degrades_on_scan_failure()" }, { "label": "test_refresh_selected_folder_primes_feed_payload()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1520", + "source_location": "L1436", "id": "ui_test_mount_test_refresh_selected_folder_primes_feed_payload", - "community": 270, + "community": 107, "norm_label": "test_refresh_selected_folder_primes_feed_payload()" }, { "label": "test_refresh_selected_folder_noop_when_path_none()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1540", + "source_location": "L1456", "id": "ui_test_mount_test_refresh_selected_folder_noop_when_path_none", - "community": 298, + "community": 14, "norm_label": "test_refresh_selected_folder_noop_when_path_none()" }, { "label": "test_refresh_selected_folder_swallows_scan_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1546", + "source_location": "L1462", "id": "ui_test_mount_test_refresh_selected_folder_swallows_scan_failure", - "community": 77, + "community": 50, "norm_label": "test_refresh_selected_folder_swallows_scan_failure()" }, { "label": "test_open_in_os_returns_false_on_unhandled_platform()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1565", + "source_location": "L1481", "id": "ui_test_mount_test_open_in_os_returns_false_on_unhandled_platform", - "community": 103, + "community": 107, "norm_label": "test_open_in_os_returns_false_on_unhandled_platform()" }, { "label": "test_open_in_os_linux_invokes_xdg_open()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1573", + "source_location": "L1489", "id": "ui_test_mount_test_open_in_os_linux_invokes_xdg_open", - "community": 103, + "community": 131, "norm_label": "test_open_in_os_linux_invokes_xdg_open()" }, { "label": "test_open_in_os_darwin_invokes_open()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1587", + "source_location": "L1503", "id": "ui_test_mount_test_open_in_os_darwin_invokes_open", - "community": 299, + "community": 50, "norm_label": "test_open_in_os_darwin_invokes_open()" }, { "label": "test_open_in_os_returns_false_when_popen_raises()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1596", + "source_location": "L1512", "id": "ui_test_mount_test_open_in_os_returns_false_when_popen_raises", - "community": 269, + "community": 125, "norm_label": "test_open_in_os_returns_false_when_popen_raises()" }, { "label": "_ClipboardSpy", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1612", + "source_location": "L1528", "id": "ui_test_mount_clipboardspy", "community": 0, "norm_label": "_clipboardspy" @@ -4885,7 +4993,7 @@ "label": ".__init__()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1613", + "source_location": "L1529", "id": "ui_test_mount_clipboardspy_init", "community": 0, "norm_label": ".__init__()" @@ -4894,7 +5002,7 @@ "label": ".write()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1616", + "source_location": "L1532", "id": "ui_test_mount_clipboardspy_write", "community": 0, "norm_label": ".write()" @@ -4903,79 +5011,79 @@ "label": "_UiSpy", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1620", + "source_location": "L1536", "id": "ui_test_mount_uispy", - "community": 17, + "community": 14, "norm_label": "_uispy" }, { "label": ".__init__()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1623", + "source_location": "L1539", "id": "ui_test_mount_uispy_init", - "community": 17, + "community": 14, "norm_label": ".__init__()" }, { "label": ".__getattr__()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1636", + "source_location": "L1552", "id": "ui_test_mount_uispy_getattr", - "community": 17, + "community": 14, "norm_label": ".__getattr__()" }, { "label": "test_file_context_action_open_in_os_dispatches_to_helper()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1643", + "source_location": "L1559", "id": "ui_test_mount_test_file_context_action_open_in_os_dispatches_to_helper", - "community": 17, + "community": 14, "norm_label": "test_file_context_action_open_in_os_dispatches_to_helper()" }, { "label": "test_file_context_action_open_in_os_failure_toasts_negative()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1655", + "source_location": "L1571", "id": "ui_test_mount_test_file_context_action_open_in_os_failure_toasts_negative", - "community": 297, + "community": 131, "norm_label": "test_file_context_action_open_in_os_failure_toasts_negative()" }, { "label": "test_file_context_action_copy_path_writes_clipboard()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1666", + "source_location": "L1582", "id": "ui_test_mount_test_file_context_action_copy_path_writes_clipboard", - "community": 62, + "community": 33, "norm_label": "test_file_context_action_copy_path_writes_clipboard()" }, { "label": "test_file_context_action_unknown_action_no_raise()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1674", + "source_location": "L1590", "id": "ui_test_mount_test_file_context_action_unknown_action_no_raise", - "community": 162, + "community": 125, "norm_label": "test_file_context_action_unknown_action_no_raise()" }, { "label": "test_file_context_action_empty_path_toasts_negative()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1681", + "source_location": "L1597", "id": "ui_test_mount_test_file_context_action_empty_path_toasts_negative", - "community": 270, + "community": 107, "norm_label": "test_file_context_action_empty_path_toasts_negative()" }, { "label": "_StubNasSync", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1692", + "source_location": "L1608", "id": "ui_test_mount_stubnassync", "community": 0, "norm_label": "_stubnassync" @@ -4984,7 +5092,7 @@ "label": ".__init__()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1693", + "source_location": "L1609", "id": "ui_test_mount_stubnassync_init", "community": 0, "norm_label": ".__init__()" @@ -4993,106 +5101,70 @@ "label": ".enqueue()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1696", + "source_location": "L1612", "id": "ui_test_mount_stubnassync_enqueue", "community": 0, "norm_label": ".enqueue()" }, - { - "label": "_drain_background()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1701", - "id": "ui_test_mount_drain_background", - "community": 77, - "norm_label": "_drain_background()" - }, { "label": "test_run_staging_action_force_sync_invokes_nas_sync_enqueue()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1716", + "source_location": "L1617", "id": "ui_test_mount_test_run_staging_action_force_sync_invokes_nas_sync_enqueue", - "community": 162, + "community": 86, "norm_label": "test_run_staging_action_force_sync_invokes_nas_sync_enqueue()" }, { "label": "test_run_staging_action_force_sync_missing_nas_sync_toasts()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1729", + "source_location": "L1630", "id": "ui_test_mount_test_run_staging_action_force_sync_missing_nas_sync_toasts", - "community": 145, + "community": 33, "norm_label": "test_run_staging_action_force_sync_missing_nas_sync_toasts()" }, { "label": "test_run_staging_action_no_config_toasts_negative()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1736", + "source_location": "L1637", "id": "ui_test_mount_test_run_staging_action_no_config_toasts_negative", - "community": 103, + "community": 107, "norm_label": "test_run_staging_action_no_config_toasts_negative()" }, { "label": "test_run_staging_action_view_log_invokes_log_dialog()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1743", + "source_location": "L1644", "id": "ui_test_mount_test_run_staging_action_view_log_invokes_log_dialog", - "community": 145, + "community": 33, "norm_label": "test_run_staging_action_view_log_invokes_log_dialog()" }, { "label": "test_run_staging_action_unknown_action_no_raise()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1755", + "source_location": "L1656", "id": "ui_test_mount_test_run_staging_action_unknown_action_no_raise", - "community": 145, + "community": 33, "norm_label": "test_run_staging_action_unknown_action_no_raise()" }, { "label": "test_run_staging_action_clear_verified_invokes_clear()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1762", + "source_location": "L1663", "id": "ui_test_mount_test_run_staging_action_clear_verified_invokes_clear", - "community": 17, + "community": 14, "norm_label": "test_run_staging_action_clear_verified_invokes_clear()" }, - { - "label": "test_bulk_clear_verified_clears_verified_rows()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1787", - "id": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows", - "community": 17, - "norm_label": "test_bulk_clear_verified_clears_verified_rows()" - }, - { - "label": "test_bulk_clear_verified_no_config_toasts_and_returns()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1816", - "id": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns", - "community": 55, - "norm_label": "test_bulk_clear_verified_no_config_toasts_and_returns()" - }, - { - "label": "test_bulk_clear_verified_logs_helper_exception()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1823", - "id": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception", - "community": 162, - "norm_label": "test_bulk_clear_verified_logs_helper_exception()" - }, { "label": "_StubTabStorage", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1845", + "source_location": "L1694", "id": "ui_test_mount_stubtabstorage", "community": 0, "norm_label": "_stubtabstorage" @@ -5103,14 +5175,14 @@ "source_file": "", "source_location": "", "id": "dict", - "community": 112, + "community": 53, "norm_label": "dict" }, { "label": "_StubApp", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1849", + "source_location": "L1698", "id": "ui_test_mount_stubapp", "community": 0, "norm_label": "_stubapp" @@ -5119,7 +5191,7 @@ "label": ".__init__()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1852", + "source_location": "L1701", "id": "ui_test_mount_stubapp_init", "community": 0, "norm_label": ".__init__()" @@ -5128,178 +5200,178 @@ "label": "test_drive_folder_feed_returns_empty_when_no_selection()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1860", + "source_location": "L1709", "id": "ui_test_mount_test_drive_folder_feed_returns_empty_when_no_selection", - "community": 62, + "community": 33, "norm_label": "test_drive_folder_feed_returns_empty_when_no_selection()" }, { "label": "test_drive_folder_feed_creates_feed_on_first_render()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1868", + "source_location": "L1717", "id": "ui_test_mount_test_drive_folder_feed_creates_feed_on_first_render", - "community": 77, + "community": 50, "norm_label": "test_drive_folder_feed_creates_feed_on_first_render()" }, { "label": "test_drive_folder_feed_converts_cached_payload_to_entries()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1881", + "source_location": "L1730", "id": "ui_test_mount_test_drive_folder_feed_converts_cached_payload_to_entries", - "community": 78, + "community": 86, "norm_label": "test_drive_folder_feed_converts_cached_payload_to_entries()" }, { "label": "test_fetch_folder_async_skips_when_coord_says_skip()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1923", + "source_location": "L1772", "id": "ui_test_mount_test_fetch_folder_async_skips_when_coord_says_skip", - "community": 78, + "community": 157, "norm_label": "test_fetch_folder_async_skips_when_coord_says_skip()" }, { "label": "test_fetch_folder_async_records_refresh_on_success()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1940", + "source_location": "L1789", "id": "ui_test_mount_test_fetch_folder_async_records_refresh_on_success", - "community": 163, + "community": 106, "norm_label": "test_fetch_folder_async_records_refresh_on_success()" }, { "label": "test_fetch_folder_async_swallows_helper_exceptions()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1959", + "source_location": "L1808", "id": "ui_test_mount_test_fetch_folder_async_swallows_helper_exceptions", - "community": 165, + "community": 173, "norm_label": "test_fetch_folder_async_swallows_helper_exceptions()" }, { "label": "test_open_log_dialog_no_queue_job_renders_dialog()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1977", + "source_location": "L1826", "id": "ui_test_mount_test_open_log_dialog_no_queue_job_renders_dialog", - "community": 165, + "community": 173, "norm_label": "test_open_log_dialog_no_queue_job_renders_dialog()" }, { "label": "test_open_log_dialog_with_queue_job_renders_dialog()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1986", + "source_location": "L1835", "id": "ui_test_mount_test_open_log_dialog_with_queue_job_renders_dialog", - "community": 62, + "community": 158, "norm_label": "test_open_log_dialog_with_queue_job_renders_dialog()" }, { "label": "test_build_metadata_payload_returns_empty_on_builder_exception()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2012", + "source_location": "L1861", "id": "ui_test_mount_test_build_metadata_payload_returns_empty_on_builder_exception", - "community": 55, + "community": 69, "norm_label": "test_build_metadata_payload_returns_empty_on_builder_exception()" }, { "label": "test_metadata_for_relay_equipment_emits_id_label_source_host()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2025", + "source_location": "L1874", "id": "ui_test_mount_test_metadata_for_relay_equipment_emits_id_label_source_host", - "community": 62, + "community": 158, "norm_label": "test_metadata_for_relay_equipment_emits_id_label_source_host()" }, { "label": "test_metadata_for_relay_equipment_unknown_id_falls_back()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2043", + "source_location": "L1892", "id": "ui_test_mount_test_metadata_for_relay_equipment_unknown_id_falls_back", - "community": 77, + "community": 158, "norm_label": "test_metadata_for_relay_equipment_unknown_id_falls_back()" }, { "label": "test_metadata_for_project_returns_empty_for_single_segment_id()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2050", + "source_location": "L1899", "id": "ui_test_mount_test_metadata_for_project_returns_empty_for_single_segment_id", - "community": 78, + "community": 86, "norm_label": "test_metadata_for_project_returns_empty_for_single_segment_id()" }, { "label": "test_count_dir_children_returns_zero_for_missing_dir()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2056", + "source_location": "L1905", "id": "ui_test_mount_test_count_dir_children_returns_zero_for_missing_dir", - "community": 78, + "community": 86, "norm_label": "test_count_dir_children_returns_zero_for_missing_dir()" }, { "label": "test_count_dir_children_filters_by_prefix()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2061", + "source_location": "L1910", "id": "ui_test_mount_test_count_dir_children_filters_by_prefix", - "community": 296, + "community": 69, "norm_label": "test_count_dir_children_filters_by_prefix()" }, { "label": "test_metadata_for_run_returns_partial_on_decode_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2070", + "source_location": "L1919", "id": "ui_test_mount_test_metadata_for_run_returns_partial_on_decode_failure", - "community": 295, + "community": 157, "norm_label": "test_metadata_for_run_returns_partial_on_decode_failure()" }, { "label": "test_run_staging_action_force_sync_exception_path_no_raise()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2081", + "source_location": "L1930", "id": "ui_test_mount_test_run_staging_action_force_sync_exception_path_no_raise", - "community": 172, + "community": 69, "norm_label": "test_run_staging_action_force_sync_exception_path_no_raise()" }, { "label": "test_run_staging_action_clear_verified_exception_path_no_raise()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2097", + "source_location": "L1946", "id": "ui_test_mount_test_run_staging_action_clear_verified_exception_path_no_raise", - "community": 172, + "community": 106, "norm_label": "test_run_staging_action_clear_verified_exception_path_no_raise()" }, { "label": "test_run_staging_action_clear_verified_zero_files_branch()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2113", + "source_location": "L1962", "id": "ui_test_mount_test_run_staging_action_clear_verified_zero_files_branch", - "community": 163, + "community": 106, "norm_label": "test_run_staging_action_clear_verified_zero_files_branch()" }, { "label": "test_file_context_action_clipboard_failure_toasts()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2126", + "source_location": "L1975", "id": "ui_test_mount_test_file_context_action_clipboard_failure_toasts", - "community": 165, + "community": 173, "norm_label": "test_file_context_action_clipboard_failure_toasts()" }, { "label": "_DialogStub", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2150", + "source_location": "L1999", "id": "ui_test_mount_dialogstub", "community": 0, "norm_label": "_dialogstub" @@ -5308,7 +5380,7 @@ "label": ".__init__()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2151", + "source_location": "L2000", "id": "ui_test_mount_dialogstub_init", "community": 0, "norm_label": ".__init__()" @@ -5317,7 +5389,7 @@ "label": ".open()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2156", + "source_location": "L2005", "id": "ui_test_mount_dialogstub_open", "community": 2, "norm_label": ".open()" @@ -5326,16 +5398,16 @@ "label": ".close()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2160", + "source_location": "L2009", "id": "ui_test_mount_dialogstub_close", - "community": 77, + "community": 50, "norm_label": ".close()" }, { "label": "_DialogUI", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2165", + "source_location": "L2014", "id": "ui_test_mount_dialogui", "community": 0, "norm_label": "_dialogui" @@ -5344,7 +5416,7 @@ "label": ".__init__()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2174", + "source_location": "L2023", "id": "ui_test_mount_dialogui_init", "community": 0, "norm_label": ".__init__()" @@ -5353,7 +5425,7 @@ "label": ".dialog()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2181", + "source_location": "L2030", "id": "ui_test_mount_dialogui_dialog", "community": 0, "norm_label": ".dialog()" @@ -5362,7 +5434,7 @@ "label": ".card()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2186", + "source_location": "L2035", "id": "ui_test_mount_dialogui_card", "community": 0, "norm_label": ".card()" @@ -5371,7 +5443,7 @@ "label": ".row()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2189", + "source_location": "L2038", "id": "ui_test_mount_dialogui_row", "community": 0, "norm_label": ".row()" @@ -5380,7 +5452,7 @@ "label": ".label()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2192", + "source_location": "L2041", "id": "ui_test_mount_dialogui_label", "community": 0, "norm_label": ".label()" @@ -5389,7 +5461,7 @@ "label": ".icon()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2196", + "source_location": "L2045", "id": "ui_test_mount_dialogui_icon", "community": 0, "norm_label": ".icon()" @@ -5398,7 +5470,7 @@ "label": ".button()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2199", + "source_location": "L2048", "id": "ui_test_mount_dialogui_button", "community": 0, "norm_label": ".button()" @@ -5407,16 +5479,16 @@ "label": "test_nas_test_connection_unavailable_when_probe_missing()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2209", + "source_location": "L2058", "id": "ui_test_mount_test_nas_test_connection_unavailable_when_probe_missing", - "community": 55, + "community": 69, "norm_label": "test_nas_test_connection_unavailable_when_probe_missing()" }, { "label": "test_nas_test_connection_unavailable_when_config_missing()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2216", + "source_location": "L2065", "id": "ui_test_mount_test_nas_test_connection_unavailable_when_config_missing", "community": 2, "norm_label": "test_nas_test_connection_unavailable_when_config_missing()" @@ -5425,16 +5497,16 @@ "label": "test_nas_test_connection_success_maps_latency()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2221", + "source_location": "L2070", "id": "ui_test_mount_test_nas_test_connection_success_maps_latency", - "community": 62, + "community": 157, "norm_label": "test_nas_test_connection_success_maps_latency()" }, { "label": "test_nas_test_connection_failure_maps_reason()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2238", + "source_location": "L2087", "id": "ui_test_mount_test_nas_test_connection_failure_maps_reason", "community": 2, "norm_label": "test_nas_test_connection_failure_maps_reason()" @@ -5443,16 +5515,16 @@ "label": "test_nas_test_connection_awaits_coroutine_probe()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2248", + "source_location": "L2097", "id": "ui_test_mount_test_nas_test_connection_awaits_coroutine_probe", - "community": 78, + "community": 180, "norm_label": "test_nas_test_connection_awaits_coroutine_probe()" }, { "label": "test_nas_test_connection_swallows_probe_exception()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2259", + "source_location": "L2108", "id": "ui_test_mount_test_nas_test_connection_swallows_probe_exception", "community": 2, "norm_label": "test_nas_test_connection_swallows_probe_exception()" @@ -5461,7 +5533,7 @@ "label": "test_setup_next_action_none_when_deps_none()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2274", + "source_location": "L2123", "id": "ui_test_mount_test_setup_next_action_none_when_deps_none", "community": 2, "norm_label": "test_setup_next_action_none_when_deps_none()" @@ -5470,16 +5542,16 @@ "label": "test_setup_next_action_returns_action_for_incomplete_setup()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2278", + "source_location": "L2127", "id": "ui_test_mount_test_setup_next_action_returns_action_for_incomplete_setup", - "community": 172, + "community": 69, "norm_label": "test_setup_next_action_returns_action_for_incomplete_setup()" }, { "label": "test_setup_next_action_none_when_ready()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2285", + "source_location": "L2134", "id": "ui_test_mount_test_setup_next_action_none_when_ready", "community": 325, "norm_label": "test_setup_next_action_none_when_ready()" @@ -5488,7 +5560,7 @@ "label": "test_setup_next_action_swallows_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2291", + "source_location": "L2140", "id": "ui_test_mount_test_setup_next_action_swallows_failure", "community": 2, "norm_label": "test_setup_next_action_swallows_failure()" @@ -5497,61 +5569,61 @@ "label": "test_toggle_keep_local_no_writer_toasts()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2309", + "source_location": "L2158", "id": "ui_test_mount_test_toggle_keep_local_no_writer_toasts", - "community": 163, + "community": 106, "norm_label": "test_toggle_keep_local_no_writer_toasts()" }, { "label": "test_toggle_keep_local_file_not_in_run_toasts()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2316", + "source_location": "L2165", "id": "ui_test_mount_test_toggle_keep_local_file_not_in_run_toasts", - "community": 326, + "community": 14, "norm_label": "test_toggle_keep_local_file_not_in_run_toasts()" }, { "label": "test_toggle_keep_local_invokes_writer_and_on_done()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2327", + "source_location": "L2176", "id": "ui_test_mount_test_toggle_keep_local_invokes_writer_and_on_done", - "community": 26, + "community": 23, "norm_label": "test_toggle_keep_local_invokes_writer_and_on_done()" }, { "label": "test_toggle_keep_local_writer_failure_toasts()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2361", + "source_location": "L2210", "id": "ui_test_mount_test_toggle_keep_local_writer_failure_toasts", - "community": 17, + "community": 14, "norm_label": "test_toggle_keep_local_writer_failure_toasts()" }, { "label": "test_file_context_action_keep_local_dispatches()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2384", + "source_location": "L2233", "id": "ui_test_mount_test_file_context_action_keep_local_dispatches", - "community": 17, + "community": 14, "norm_label": "test_file_context_action_keep_local_dispatches()" }, { "label": "test_open_in_os_win32_invokes_startfile()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2401", + "source_location": "L2250", "id": "ui_test_mount_test_open_in_os_win32_invokes_startfile", - "community": 55, + "community": 170, "norm_label": "test_open_in_os_win32_invokes_startfile()" }, { "label": "_store_with_running_session()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2418", + "source_location": "L2267", "id": "ui_test_mount_store_with_running_session", "community": 2, "norm_label": "_store_with_running_session()" @@ -5560,7 +5632,7 @@ "label": "test_build_operation_rows_maps_panel_sessions()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2427", + "source_location": "L2276", "id": "ui_test_mount_test_build_operation_rows_maps_panel_sessions", "community": 2, "norm_label": "test_build_operation_rows_maps_panel_sessions()" @@ -5569,178 +5641,178 @@ "label": "test_open_operations_modal_no_controller_toasts()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2435", + "source_location": "L2284", "id": "ui_test_mount_test_open_operations_modal_no_controller_toasts", - "community": 243, + "community": 180, "norm_label": "test_open_operations_modal_no_controller_toasts()" }, { "label": "test_open_operations_modal_opens_with_controller()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2441", + "source_location": "L2290", "id": "ui_test_mount_test_open_operations_modal_opens_with_controller", - "community": 243, + "community": 180, "norm_label": "test_open_operations_modal_opens_with_controller()" }, { "label": "test_open_operation_details_session_not_found_toasts()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2454", + "source_location": "L2303", "id": "ui_test_mount_test_open_operation_details_session_not_found_toasts", - "community": 17, + "community": 14, "norm_label": "test_open_operation_details_session_not_found_toasts()" }, { "label": "test_open_operation_details_renders_state_and_pending()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2462", + "source_location": "L2311", "id": "ui_test_mount_test_open_operation_details_renders_state_and_pending", - "community": 327, + "community": 300, "norm_label": "test_open_operation_details_renders_state_and_pending()" }, { "label": "test_resume_operation_no_pending_input_toasts()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2486", + "source_location": "L2335", "id": "ui_test_mount_test_resume_operation_no_pending_input_toasts", - "community": 17, + "community": 14, "norm_label": "test_resume_operation_no_pending_input_toasts()" }, { "label": "test_resume_operation_opens_input_dialog()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2495", + "source_location": "L2344", "id": "ui_test_mount_test_resume_operation_opens_input_dialog", - "community": 94, + "community": 171, "norm_label": "test_resume_operation_opens_input_dialog()" }, { "label": "test_open_input_required_dialog_submit_resumes_controller()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2522", + "source_location": "L2371", "id": "ui_test_mount_test_open_input_required_dialog_submit_resumes_controller", - "community": 26, + "community": 23, "norm_label": "test_open_input_required_dialog_submit_resumes_controller()" }, { "label": "test_open_input_required_dialog_cancel_routes_to_cancel_session()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2554", + "source_location": "L2403", "id": "ui_test_mount_test_open_input_required_dialog_cancel_routes_to_cancel_session", - "community": 125, + "community": 23, "norm_label": "test_open_input_required_dialog_cancel_routes_to_cancel_session()" }, { "label": "test_cancel_operation_no_controller_toasts()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2583", + "source_location": "L2432", "id": "ui_test_mount_test_cancel_operation_no_controller_toasts", - "community": 17, + "community": 14, "norm_label": "test_cancel_operation_no_controller_toasts()" }, { "label": "test_cancel_operation_routes_to_cancel_session()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2588", + "source_location": "L2437", "id": "ui_test_mount_test_cancel_operation_routes_to_cancel_session", - "community": 17, + "community": 14, "norm_label": "test_cancel_operation_routes_to_cancel_session()" }, { "label": "test_cancel_session_discard_calls_controller_cancel()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2596", + "source_location": "L2445", "id": "ui_test_mount_test_cancel_session_discard_calls_controller_cancel", - "community": 55, + "community": 170, "norm_label": "test_cancel_session_discard_calls_controller_cancel()" }, { "label": "test_cancel_session_keep_files_calls_controller_cancel()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2615", + "source_location": "L2464", "id": "ui_test_mount_test_cancel_session_keep_files_calls_controller_cancel", - "community": 26, + "community": 171, "norm_label": "test_cancel_session_keep_files_calls_controller_cancel()" }, { "label": "test_cancel_session_swallows_controller_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2632", + "source_location": "L2481", "id": "ui_test_mount_test_cancel_session_swallows_controller_failure", - "community": 185, + "community": 172, "norm_label": "test_cancel_session_swallows_controller_failure()" }, { "label": "test_cancel_session_back_button_closes_dialog()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2648", + "source_location": "L2497", "id": "ui_test_mount_test_cancel_session_back_button_closes_dialog", - "community": 186, + "community": 181, "norm_label": "test_cancel_session_back_button_closes_dialog()" }, { "label": "test_open_log_dialog_renders_row_fields()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2662", + "source_location": "L2511", "id": "ui_test_mount_test_open_log_dialog_renders_row_fields", - "community": 94, + "community": 171, "norm_label": "test_open_log_dialog_renders_row_fields()" }, { "label": "test_open_log_dialog_no_row_renders_empty_line()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2690", + "source_location": "L2539", "id": "ui_test_mount_test_open_log_dialog_no_row_renders_empty_line", - "community": 94, + "community": 54, "norm_label": "test_open_log_dialog_no_row_renders_empty_line()" }, { "label": "test_consume_session_progress_early_return_without_progress()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2706", + "source_location": "L2555", "id": "ui_test_mount_test_consume_session_progress_early_return_without_progress", - "community": 26, + "community": 23, "norm_label": "test_consume_session_progress_early_return_without_progress()" }, { "label": "test_consume_session_progress_opens_dialog_then_closes_on_done()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2717", + "source_location": "L2566", "id": "ui_test_mount_test_consume_session_progress_opens_dialog_then_closes_on_done", - "community": 26, + "community": 23, "norm_label": "test_consume_session_progress_opens_dialog_then_closes_on_done()" }, { "label": "test_consume_session_progress_swallows_stream_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2752", + "source_location": "L2601", "id": "ui_test_mount_test_consume_session_progress_swallows_stream_failure", - "community": 125, + "community": 23, "norm_label": "test_consume_session_progress_swallows_stream_failure()" }, { "label": "test_close_dialog_none_is_noop()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2770", + "source_location": "L2619", "id": "ui_test_mount_test_close_dialog_none_is_noop", "community": 2, "norm_label": "test_close_dialog_none_is_noop()" @@ -5749,7 +5821,7 @@ "label": "test_close_dialog_calls_close()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2774", + "source_location": "L2623", "id": "ui_test_mount_test_close_dialog_calls_close", "community": 2, "norm_label": "test_close_dialog_calls_close()" @@ -5758,7 +5830,7 @@ "label": "test_close_dialog_swallows_close_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2780", + "source_location": "L2629", "id": "ui_test_mount_test_close_dialog_swallows_close_failure", "community": 2, "norm_label": "test_close_dialog_swallows_close_failure()" @@ -5767,43 +5839,43 @@ "label": "test_submit_run_toasts_without_template()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2794", + "source_location": "L2643", "id": "ui_test_mount_test_submit_run_toasts_without_template", - "community": 55, + "community": 170, "norm_label": "test_submit_run_toasts_without_template()" }, { "label": "test_render_run_wizard_builds_page()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2805", + "source_location": "L2654", "id": "ui_test_mount_test_render_run_wizard_builds_page", - "community": 185, + "community": 172, "norm_label": "test_render_run_wizard_builds_page()" }, { "label": "test_classify_node_skips_non_equipment_hierarchy_keys()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2834", + "source_location": "L2683", "id": "ui_test_mount_test_classify_node_skips_non_equipment_hierarchy_keys", - "community": 94, + "community": 54, "norm_label": "test_classify_node_skips_non_equipment_hierarchy_keys()" }, { "label": "test_build_metadata_payload_received_equipment_kind()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2841", + "source_location": "L2690", "id": "ui_test_mount_test_build_metadata_payload_received_equipment_kind", - "community": 186, + "community": 181, "norm_label": "test_build_metadata_payload_received_equipment_kind()" }, { "label": "test_build_metadata_payload_unknown_kind_returns_empty()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2854", + "source_location": "L2703", "id": "ui_test_mount_test_build_metadata_payload_unknown_kind_returns_empty", "community": 2, "norm_label": "test_build_metadata_payload_unknown_kind_returns_empty()" @@ -5812,92 +5884,74 @@ "label": "test_metadata_for_owned_equipment_projects_fields()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2859", + "source_location": "L2708", "id": "ui_test_mount_test_metadata_for_owned_equipment_projects_fields", - "community": 94, + "community": 54, "norm_label": "test_metadata_for_owned_equipment_projects_fields()" }, { "label": "test_lims_catalogue_projects_schema_mismatch_returns_empty()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2879", + "source_location": "L2728", "id": "ui_test_mount_test_lims_catalogue_projects_schema_mismatch_returns_empty", - "community": 242, + "community": 54, "norm_label": "test_lims_catalogue_projects_schema_mismatch_returns_empty()" }, { "label": "test_drive_folder_feed_tolerates_storage_error()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2893", + "source_location": "L2742", "id": "ui_test_mount_test_drive_folder_feed_tolerates_storage_error", - "community": 77, + "community": 50, "norm_label": "test_drive_folder_feed_tolerates_storage_error()" }, { "label": "test_is_setup_ready_swallows_evaluation_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2913", + "source_location": "L2762", "id": "ui_test_mount_test_is_setup_ready_swallows_evaluation_failure", - "community": 26, + "community": 50, "norm_label": "test_is_setup_ready_swallows_evaluation_failure()" }, { "label": "test_metadata_for_owned_equipment_no_match_returns_empty()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2928", + "source_location": "L2777", "id": "ui_test_mount_test_metadata_for_owned_equipment_no_match_returns_empty", - "community": 125, + "community": 54, "norm_label": "test_metadata_for_owned_equipment_no_match_returns_empty()" }, - { - "label": "test_bulk_clear_verified_no_verified_rows_toasts()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2934", - "id": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts", - "community": 17, - "norm_label": "test_bulk_clear_verified_no_verified_rows_toasts()" - }, { "label": "test_toggle_keep_local_unresolvable_relative_path_toasts()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2951", + "source_location": "L2783", "id": "ui_test_mount_test_toggle_keep_local_unresolvable_relative_path_toasts", - "community": 125, + "community": 54, "norm_label": "test_toggle_keep_local_unresolvable_relative_path_toasts()" }, { "label": "test_open_input_required_dialog_submit_swallows_resume_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2969", + "source_location": "L2801", "id": "ui_test_mount_test_open_input_required_dialog_submit_swallows_resume_failure", - "community": 26, + "community": 23, "norm_label": "test_open_input_required_dialog_submit_swallows_resume_failure()" }, { "label": "test_template_questions_map_swallows_outer_failure()", "file_type": "code", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2998", + "source_location": "L2830", "id": "ui_test_mount_test_template_questions_map_swallows_outer_failure", - "community": 185, + "community": 172, "norm_label": "test_template_questions_map_swallows_outer_failure()" }, - { - "label": "test_build_staging_state_query_failure_returns_empty_rows()", - "file_type": "code", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L3014", - "id": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows", - "community": 186, - "norm_label": "test_build_staging_state_query_failure_returns_empty_rows()" - }, { "label": "Tests for ``exlab_wizard.ui.mount`` helpers. The ``@ui.page(...)`` decorators i", "file_type": "rationale", @@ -5926,38 +5980,20 @@ "norm_label": "chainable no-op stand-in for a nicegui element." }, { - "label": "Records cards / labels and exposes a ``navigate.to`` spy.", + "label": "Duck-typed CreationController for the create-flow helpers.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L100", "id": "ui_test_mount_rationale_100", - "community": 0, - "norm_label": "records cards / labels and exposes a ``navigate.to`` spy." - }, - { - "label": "A ``ui`` whose element factories raise -- exercises render except paths.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L118", - "id": "ui_test_mount_rationale_118", - "community": 0, - "norm_label": "a ``ui`` whose element factories raise -- exercises render except paths." - }, - { - "label": "Duck-typed CreationController for the create-flow helpers.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L130", - "id": "ui_test_mount_rationale_130", - "community": 49, + "community": 60, "norm_label": "duck-typed creationcontroller for the create-flow helpers." }, { "label": "Live-LIMS branch with the keyring password absent -> not ready.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L185", - "id": "ui_test_mount_rationale_185", + "source_location": "L155", + "id": "ui_test_mount_rationale_155", "community": 2, "norm_label": "live-lims branch with the keyring password absent -> not ready." }, @@ -5965,8 +6001,8 @@ "label": "A nas-mode device whose ``nas.remote`` is unset blocks ready.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L213", - "id": "ui_test_mount_rationale_213", + "source_location": "L183", + "id": "ui_test_mount_rationale_183", "community": 2, "norm_label": "a nas-mode device whose ``nas.remote`` is unset blocks ready." }, @@ -5974,8 +6010,8 @@ "label": "A configured nas remote absent from rclone.conf blocks ready.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L223", - "id": "ui_test_mount_rationale_223", + "source_location": "L193", + "id": "ui_test_mount_rationale_193", "community": 2, "norm_label": "a configured nas remote absent from rclone.conf blocks ready." }, @@ -5983,8 +6019,8 @@ "label": "Regression: LIMS satisfied via the offline catalogue (no keyring password) m", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L234", - "id": "ui_test_mount_rationale_234", + "source_location": "L204", + "id": "ui_test_mount_rationale_204", "community": 2, "norm_label": "regression: lims satisfied via the offline catalogue (no keyring password) m" }, @@ -5992,8 +6028,8 @@ "label": "Redesign \u00a73.1: the orchestrator pipeline is unconditional.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L271", - "id": "ui_test_mount_rationale_271", + "source_location": "L241", + "id": "ui_test_mount_rationale_241", "community": 2, "norm_label": "redesign \u00a73.1: the orchestrator pipeline is unconditional." }, @@ -6001,80 +6037,71 @@ "label": "Real Config with one nas-mode equipment. ``offline_catalogue`` swaps the li", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L349", - "id": "ui_test_mount_rationale_349", + "source_location": "L319", + "id": "ui_test_mount_rationale_319", "community": 2, "norm_label": "real config with one nas-mode equipment. ``offline_catalogue`` swaps the li" }, - { - "label": "Redesign \u00a73.1: orchestrator pipeline is always on, but a missing staging_roo", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L461", - "id": "ui_test_mount_rationale_461", - "community": 2, - "norm_label": "redesign \u00a73.1: orchestrator pipeline is always on, but a missing staging_roo" - }, { "label": "Minimal stand-in for the NiceGUI ``ui`` object's navigate surface.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L508", - "id": "ui_test_mount_rationale_508", - "community": 49, + "source_location": "L438", + "id": "ui_test_mount_rationale_438", + "community": 60, "norm_label": "minimal stand-in for the nicegui ``ui`` object's navigate surface." }, { "label": "A successful save persists, then hot-reloads the live components. The old b", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L516", - "id": "ui_test_mount_rationale_516", - "community": 49, + "source_location": "L446", + "id": "ui_test_mount_rationale_446", + "community": 324, "norm_label": "a successful save persists, then hot-reloads the live components. the old b" }, { "label": "Opt-in: a saved non-empty staging_root is created on save.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L593", - "id": "ui_test_mount_rationale_593", - "community": 49, + "source_location": "L523", + "id": "ui_test_mount_rationale_523", + "community": 60, "norm_label": "opt-in: a saved non-empty staging_root is created on save." }, { "label": "Blank staging_root creates nothing -- the device is not a staging PC.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L608", - "id": "ui_test_mount_rationale_608", - "community": 49, + "source_location": "L538", + "id": "ui_test_mount_rationale_538", + "community": 60, "norm_label": "blank staging_root creates nothing -- the device is not a staging pc." }, { "label": "An ensure_dir failure warns but keeps the persisted config.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L622", - "id": "ui_test_mount_rationale_622", - "community": 49, + "source_location": "L552", + "id": "ui_test_mount_rationale_552", + "community": 60, "norm_label": "an ensure_dir failure warns but keeps the persisted config." }, { "label": "If the coordinator raises wholesale, the live config is still kept.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L649", - "id": "ui_test_mount_rationale_649", - "community": 2, + "source_location": "L579", + "id": "ui_test_mount_rationale_579", + "community": 386, "norm_label": "if the coordinator raises wholesale, the live config is still kept." }, { "label": "Keyring-store stand-in that records the calls the handlers make.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L716", - "id": "ui_test_mount_rationale_716", + "source_location": "L632", + "id": "ui_test_mount_rationale_632", "community": 0, "norm_label": "keyring-store stand-in that records the calls the handlers make." }, @@ -6082,8 +6109,8 @@ "label": "A best-effort keyring build can fail; the handlers must not crash.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L755", - "id": "ui_test_mount_rationale_755", + "source_location": "L671", + "id": "ui_test_mount_rationale_671", "community": 2, "norm_label": "a best-effort keyring build can fail; the handlers must not crash." }, @@ -6091,17 +6118,17 @@ "label": "A raising keyring backend surfaces a toast, not an unhandled crash.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L764", - "id": "ui_test_mount_rationale_764", - "community": 298, + "source_location": "L680", + "id": "ui_test_mount_rationale_680", + "community": 385, "norm_label": "a raising keyring backend surfaces a toast, not an unhandled crash." }, { "label": "Async ``list_projects`` stub for the live-LIMS picker path.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L940", - "id": "ui_test_mount_rationale_940", + "source_location": "L856", + "id": "ui_test_mount_rationale_856", "community": 0, "norm_label": "async ``list_projects`` stub for the live-lims picker path." }, @@ -6109,134 +6136,134 @@ "label": "Both empty -> empty string. One present -> single param.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1186", - "id": "ui_test_mount_rationale_1186", - "community": 389, + "source_location": "L1102", + "id": "ui_test_mount_rationale_1102", + "community": 387, "norm_label": "both empty -> empty string. one present -> single param." }, { "label": "Project names with spaces / special chars survive the round trip.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1194", - "id": "ui_test_mount_rationale_1194", - "community": 390, + "source_location": "L1110", + "id": "ui_test_mount_rationale_1110", + "community": 80, "norm_label": "project names with spaces / special chars survive the round trip." }, { "label": "Phase 4 adds optional file / q / density params to the same URL model.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1206", - "id": "ui_test_mount_rationale_1206", - "community": 2, + "source_location": "L1122", + "id": "ui_test_mount_rationale_1122", + "community": 504, "norm_label": "phase 4 adds optional file / q / density params to the same url model." }, { "label": "The Phase 4 params default empty and drop out of the URL entirely.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1215", - "id": "ui_test_mount_rationale_1215", - "community": 418, + "source_location": "L1131", + "id": "ui_test_mount_rationale_1131", + "community": 429, "norm_label": "the phase 4 params default empty and drop out of the url entirely." }, { "label": "``file`` keeps '/' readable but encodes spaces; ``q`` encodes everything.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1220", - "id": "ui_test_mount_rationale_1220", - "community": 2, + "source_location": "L1136", + "id": "ui_test_mount_rationale_1136", + "community": 430, "norm_label": "``file`` keeps '/' readable but encodes spaces; ``q`` encodes everything." }, { "label": "Equipment / project / run / received_equipment all classify correctly.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1234", - "id": "ui_test_mount_rationale_1234", - "community": 350, + "source_location": "L1150", + "id": "ui_test_mount_rationale_1150", + "community": 80, "norm_label": "equipment / project / run / received_equipment all classify correctly." }, { "label": "A node id whose root is not in the hierarchy returns ``(None, False)``. Gua", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1255", - "id": "ui_test_mount_rationale_1255", - "community": 349, + "source_location": "L1171", + "id": "ui_test_mount_rationale_1171", + "community": 350, "norm_label": "a node id whose root is not in the hierarchy returns ``(none, false)``. gua" }, { "label": "An equipment node payload pulls fields from config.equipment[id].", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1277", - "id": "ui_test_mount_rationale_1277", - "community": 164, + "source_location": "L1193", + "id": "ui_test_mount_rationale_1193", + "community": 80, "norm_label": "an equipment node payload pulls fields from config.equipment[id]." }, { "label": "Asking for a node that isn't in config.equipment returns ``{}``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1295", - "id": "ui_test_mount_rationale_1295", - "community": 164, + "source_location": "L1211", + "id": "ui_test_mount_rationale_1211", + "community": 80, "norm_label": "asking for a node that isn't in config.equipment returns ``{}``." }, { "label": "The project payload counts Run_* and TestRun_* directories.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1302", - "id": "ui_test_mount_rationale_1302", - "community": 164, + "source_location": "L1218", + "id": "ui_test_mount_rationale_1218", + "community": 80, "norm_label": "the project payload counts run_* and testrun_* directories." }, { "label": "The run payload decodes creation.json into the metadata fields.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1321", - "id": "ui_test_mount_rationale_1321", - "community": 164, + "source_location": "L1237", + "id": "ui_test_mount_rationale_1237", + "community": 80, "norm_label": "the run payload decodes creation.json into the metadata fields." }, { "label": "A run dir without a creation.json yields {path, name}, not crash.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1366", - "id": "ui_test_mount_rationale_1366", - "community": 242, + "source_location": "L1282", + "id": "ui_test_mount_rationale_1282", + "community": 33, "norm_label": "a run dir without a creation.json yields {path, name}, not crash." }, { "label": "The selected-node fields end up on MainPageState for the renderer.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1375", - "id": "ui_test_mount_rationale_1375", - "community": 103, + "source_location": "L1291", + "id": "ui_test_mount_rationale_1291", + "community": 131, "norm_label": "the selected-node fields end up on mainpagestate for the renderer." }, { "label": "Phase 4 selection / search / density fields reach MainPageState.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1391", - "id": "ui_test_mount_rationale_1391", - "community": 103, + "source_location": "L1307", + "id": "ui_test_mount_rationale_1307", + "community": 131, "norm_label": "phase 4 selection / search / density fields reach mainpagestate." }, { "label": "A clicked path is resolved from the in-memory feed into a file payload.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1412", - "id": "ui_test_mount_rationale_1412", + "source_location": "L1328", + "id": "ui_test_mount_rationale_1328", "community": 2, "norm_label": "a clicked path is resolved from the in-memory feed into a file payload." }, @@ -6244,251 +6271,215 @@ "label": "Empty path or a path matching no current entry resolves to None.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1438", - "id": "ui_test_mount_rationale_1438", - "community": 269, + "source_location": "L1354", + "id": "ui_test_mount_rationale_1354", + "community": 125, "norm_label": "empty path or a path matching no current entry resolves to none." }, { "label": "A tombstone (\"On NAS\") file has no on-disk copy, so size is None.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1447", - "id": "ui_test_mount_rationale_1447", - "community": 17, + "source_location": "L1363", + "id": "ui_test_mount_rationale_1363", + "community": 14, "norm_label": "a tombstone (\"on nas\") file has no on-disk copy, so size is none." }, { "label": "A directory match delegates to the one-level folder aggregate scan.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1468", - "id": "ui_test_mount_rationale_1468", - "community": 62, + "source_location": "L1384", + "id": "ui_test_mount_rationale_1384", + "community": 33, "norm_label": "a directory match delegates to the one-level folder aggregate scan." }, { "label": "A scan failure yields item_count=None + neutral rollup, no raise.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1495", - "id": "ui_test_mount_rationale_1495", - "community": 2, + "source_location": "L1411", + "id": "ui_test_mount_rationale_1411", + "community": 107, "norm_label": "a scan failure yields item_count=none + neutral rollup, no raise." }, { "label": "A force-refresh writes the fresh scan onto the per-tab feed payload and reco", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1523", - "id": "ui_test_mount_rationale_1523", - "community": 270, + "source_location": "L1439", + "id": "ui_test_mount_rationale_1439", + "community": 107, "norm_label": "a force-refresh writes the fresh scan onto the per-tab feed payload and reco" }, { "label": "Nothing selected -> no scan, no write, no raise.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1541", - "id": "ui_test_mount_rationale_1541", - "community": 298, + "source_location": "L1457", + "id": "ui_test_mount_rationale_1457", + "community": 14, "norm_label": "nothing selected -> no scan, no write, no raise." }, { "label": "A failed scan keeps the existing payload and warns.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1549", - "id": "ui_test_mount_rationale_1549", - "community": 77, + "source_location": "L1465", + "id": "ui_test_mount_rationale_1465", + "community": 50, "norm_label": "a failed scan keeps the existing payload and warns." }, { "label": "An unknown sys.platform falls through to False so the toast can warn.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1568", - "id": "ui_test_mount_rationale_1568", - "community": 103, + "source_location": "L1484", + "id": "ui_test_mount_rationale_1484", + "community": 107, "norm_label": "an unknown sys.platform falls through to false so the toast can warn." }, { "label": "Linux dispatches to xdg-open via subprocess.Popen.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1574", - "id": "ui_test_mount_rationale_1574", - "community": 103, + "source_location": "L1490", + "id": "ui_test_mount_rationale_1490", + "community": 131, "norm_label": "linux dispatches to xdg-open via subprocess.popen." }, { "label": "macOS dispatches to the ``open`` command.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1588", - "id": "ui_test_mount_rationale_1588", - "community": 299, + "source_location": "L1504", + "id": "ui_test_mount_rationale_1504", + "community": 50, "norm_label": "macos dispatches to the ``open`` command." }, { "label": "A subprocess failure is caught and surfaces False so the caller can toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1597", - "id": "ui_test_mount_rationale_1597", - "community": 269, + "source_location": "L1513", + "id": "ui_test_mount_rationale_1513", + "community": 125, "norm_label": "a subprocess failure is caught and surfaces false so the caller can toast." }, { "label": "Minimal NiceGUI surface stand-in: clipboard + navigate.to + notify.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1621", - "id": "ui_test_mount_rationale_1621", - "community": 17, + "source_location": "L1537", + "id": "ui_test_mount_rationale_1537", + "community": 14, "norm_label": "minimal nicegui surface stand-in: clipboard + navigate.to + notify." }, { "label": "``open_in_os`` action calls the platform opener and reports success.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1646", - "id": "ui_test_mount_rationale_1646", - "community": 17, + "source_location": "L1562", + "id": "ui_test_mount_rationale_1562", + "community": 107, "norm_label": "``open_in_os`` action calls the platform opener and reports success." }, { "label": "When the opener returns False the action surfaces a negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1658", - "id": "ui_test_mount_rationale_1658", - "community": 297, + "source_location": "L1574", + "id": "ui_test_mount_rationale_1574", + "community": 131, "norm_label": "when the opener returns false the action surfaces a negative toast." }, { "label": "``copy_path`` writes the entry path to the NiceGUI clipboard.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1667", - "id": "ui_test_mount_rationale_1667", - "community": 62, + "source_location": "L1583", + "id": "ui_test_mount_rationale_1583", + "community": 33, "norm_label": "``copy_path`` writes the entry path to the nicegui clipboard." }, { "label": "An unknown action verb is logged + toasted without raising.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1675", - "id": "ui_test_mount_rationale_1675", - "community": 162, + "source_location": "L1591", + "id": "ui_test_mount_rationale_1591", + "community": 125, "norm_label": "an unknown action verb is logged + toasted without raising." }, { "label": "An entry with no path triggers the early-return toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1682", - "id": "ui_test_mount_rationale_1682", - "community": 270, + "source_location": "L1598", + "id": "ui_test_mount_rationale_1598", + "community": 107, "norm_label": "an entry with no path triggers the early-return toast." }, - { - "label": "Run any pending mount background tasks to completion.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1702", - "id": "ui_test_mount_rationale_1702", - "community": 77, - "norm_label": "run any pending mount background tasks to completion." - }, { "label": "Force-sync routes to ``deps.nas_sync.enqueue`` with the run path.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1717", - "id": "ui_test_mount_rationale_1717", - "community": 162, + "source_location": "L1618", + "id": "ui_test_mount_rationale_1618", + "community": 86, "norm_label": "force-sync routes to ``deps.nas_sync.enqueue`` with the run path." }, { "label": "Force-sync without a wired NAS sync surfaces a negative toast (no raise).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1730", - "id": "ui_test_mount_rationale_1730", - "community": 145, + "source_location": "L1631", + "id": "ui_test_mount_rationale_1631", + "community": 33, "norm_label": "force-sync without a wired nas sync surfaces a negative toast (no raise)." }, { "label": "The early-exit when config is missing keeps the action a no-op.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1737", - "id": "ui_test_mount_rationale_1737", - "community": 103, + "source_location": "L1638", + "id": "ui_test_mount_rationale_1638", + "community": 107, "norm_label": "the early-exit when config is missing keeps the action a no-op." }, { "label": "``view_log`` dispatches to the dialog opener helper.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1746", - "id": "ui_test_mount_rationale_1746", - "community": 145, + "source_location": "L1647", + "id": "ui_test_mount_rationale_1647", + "community": 33, "norm_label": "``view_log`` dispatches to the dialog opener helper." }, { "label": "An unknown action verb is reported but doesn't raise.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1756", - "id": "ui_test_mount_rationale_1756", - "community": 145, + "source_location": "L1657", + "id": "ui_test_mount_rationale_1657", + "community": 33, "norm_label": "an unknown action verb is reported but doesn't raise." }, { "label": "``clear_verified`` deletes the run directory via the local helper.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1765", - "id": "ui_test_mount_rationale_1765", - "community": 17, + "source_location": "L1666", + "id": "ui_test_mount_rationale_1666", + "community": 14, "norm_label": "``clear_verified`` deletes the run directory via the local helper." }, - { - "label": "The bulk action clears every ``synced`` row and toasts the count.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1790", - "id": "ui_test_mount_rationale_1790", - "community": 17, - "norm_label": "the bulk action clears every ``synced`` row and toasts the count." - }, - { - "label": "The early-exit when config is missing produces a toast, no task.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1817", - "id": "ui_test_mount_rationale_1817", - "community": 55, - "norm_label": "the early-exit when config is missing produces a toast, no task." - }, - { - "label": "An exception from the clear sweep is caught + toasted.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1826", - "id": "ui_test_mount_rationale_1826", - "community": 162, - "norm_label": "an exception from the clear sweep is caught + toasted." - }, { "label": "Lightweight ``app`` stand-in carrying ``storage.tab``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1850", - "id": "ui_test_mount_rationale_1850", + "source_location": "L1699", + "id": "ui_test_mount_rationale_1699", "community": 0, "norm_label": "lightweight ``app`` stand-in carrying ``storage.tab``." }, @@ -6496,224 +6487,224 @@ "label": "Without a selected node the feed isn't started and returns ``[]``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1861", - "id": "ui_test_mount_rationale_1861", - "community": 62, + "source_location": "L1710", + "id": "ui_test_mount_rationale_1710", + "community": 33, "norm_label": "without a selected node the feed isn't started and returns ``[]``." }, { "label": "The first call mounts a FolderFeed + RefreshCoordinator on tab storage.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1871", - "id": "ui_test_mount_rationale_1871", - "community": 77, + "source_location": "L1720", + "id": "ui_test_mount_rationale_1720", + "community": 50, "norm_label": "the first call mounts a folderfeed + refreshcoordinator on tab storage." }, { "label": "When the feed's last_payload is set, entries are projected into FileListEntr", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1884", - "id": "ui_test_mount_rationale_1884", - "community": 78, + "source_location": "L1733", + "id": "ui_test_mount_rationale_1733", + "community": 107, "norm_label": "when the feed's last_payload is set, entries are projected into filelistentr" }, { "label": "The fetch is a no-op when RefreshCoordinator just walked the tree.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1926", - "id": "ui_test_mount_rationale_1926", - "community": 78, + "source_location": "L1775", + "id": "ui_test_mount_rationale_1775", + "community": 157, "norm_label": "the fetch is a no-op when refreshcoordinator just walked the tree." }, { "label": "A successful scan records the refresh on the coordinator.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1943", - "id": "ui_test_mount_rationale_1943", - "community": 163, + "source_location": "L1792", + "id": "ui_test_mount_rationale_1792", + "community": 106, "norm_label": "a successful scan records the refresh on the coordinator." }, { "label": "A scan failure returns ``None`` so the feed keeps polling.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1962", - "id": "ui_test_mount_rationale_1962", - "community": 165, + "source_location": "L1811", + "id": "ui_test_mount_rationale_1811", + "community": 173, "norm_label": "a scan failure returns ``none`` so the feed keeps polling." }, { "label": "A run with no sync-queue job still renders a dialog without raising.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1978", - "id": "ui_test_mount_rationale_1978", - "community": 165, + "source_location": "L1827", + "id": "ui_test_mount_rationale_1827", + "community": 173, "norm_label": "a run with no sync-queue job still renders a dialog without raising." }, { "label": "A run with a sync-queue job renders its state without raising.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1987", - "id": "ui_test_mount_rationale_1987", - "community": 62, + "source_location": "L1836", + "id": "ui_test_mount_rationale_1836", + "community": 158, "norm_label": "a run with a sync-queue job renders its state without raising." }, { "label": "Any exception raised by a per-kind builder is logged + swallowed.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2015", - "id": "ui_test_mount_rationale_2015", - "community": 55, + "source_location": "L1864", + "id": "ui_test_mount_rationale_1864", + "community": 69, "norm_label": "any exception raised by a per-kind builder is logged + swallowed." }, { "label": "The relay payload pulls id+label from build_received_equipment_nodes.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2028", - "id": "ui_test_mount_rationale_2028", - "community": 62, + "source_location": "L1877", + "id": "ui_test_mount_rationale_1877", + "community": 158, "norm_label": "the relay payload pulls id+label from build_received_equipment_nodes." }, { "label": "An unknown relay id still produces a payload (best-effort label).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2044", - "id": "ui_test_mount_rationale_2044", - "community": 77, + "source_location": "L1893", + "id": "ui_test_mount_rationale_1893", + "community": 158, "norm_label": "an unknown relay id still produces a payload (best-effort label)." }, { "label": "A node id without an equipment/project split returns ``{}``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2051", - "id": "ui_test_mount_rationale_2051", - "community": 78, + "source_location": "L1900", + "id": "ui_test_mount_rationale_1900", + "community": 86, "norm_label": "a node id without an equipment/project split returns ``{}``." }, { "label": "A missing parent dir returns 0 (no FS pre-check needed).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2057", - "id": "ui_test_mount_rationale_2057", - "community": 78, + "source_location": "L1906", + "id": "ui_test_mount_rationale_1906", + "community": 86, "norm_label": "a missing parent dir returns 0 (no fs pre-check needed)." }, { "label": "Only directory children whose names start with the prefix are counted.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2062", - "id": "ui_test_mount_rationale_2062", - "community": 296, + "source_location": "L1911", + "id": "ui_test_mount_rationale_1911", + "community": 69, "norm_label": "only directory children whose names start with the prefix are counted." }, { "label": "A corrupt creation.json yields {path, name}, never crashes.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2071", - "id": "ui_test_mount_rationale_2071", - "community": 295, + "source_location": "L1920", + "id": "ui_test_mount_rationale_1920", + "community": 157, "norm_label": "a corrupt creation.json yields {path, name}, never crashes." }, { "label": "When nas_sync.enqueue raises, the background task swallows + toasts.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2084", - "id": "ui_test_mount_rationale_2084", - "community": 172, + "source_location": "L1933", + "id": "ui_test_mount_rationale_1933", + "community": 69, "norm_label": "when nas_sync.enqueue raises, the background task swallows + toasts." }, { "label": "When the clear helper raises, the background task swallows + toasts.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2100", - "id": "ui_test_mount_rationale_2100", - "community": 172, + "source_location": "L1949", + "id": "ui_test_mount_rationale_1949", + "community": 106, "norm_label": "when the clear helper raises, the background task swallows + toasts." }, { "label": "The 0-file path reports ``already cleared`` rather than ``cleared N``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2116", - "id": "ui_test_mount_rationale_2116", - "community": 163, + "source_location": "L1965", + "id": "ui_test_mount_rationale_1965", + "community": 106, "norm_label": "the 0-file path reports ``already cleared`` rather than ``cleared n``." }, { "label": "A clipboard write failure is caught and reported as a negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2129", - "id": "ui_test_mount_rationale_2129", - "community": 165, + "source_location": "L1978", + "id": "ui_test_mount_rationale_1978", + "community": 173, "norm_label": "a clipboard write failure is caught and reported as a negative toast." }, { "label": "A fake ``ui`` whose factories build recording stand-ins. Unlike ``_UiSpy``", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2166", - "id": "ui_test_mount_rationale_2166", - "community": 0, + "source_location": "L2015", + "id": "ui_test_mount_rationale_2015", + "community": 69, "norm_label": "a fake ``ui`` whose factories build recording stand-ins. unlike ``_uispy``" }, { "label": "No probe wired -> a failure result rather than a crash.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2210", - "id": "ui_test_mount_rationale_2210", - "community": 55, + "source_location": "L2059", + "id": "ui_test_mount_rationale_2059", + "community": 69, "norm_label": "no probe wired -> a failure result rather than a crash." }, { "label": "A reachable probe maps ok/latency into a Connected result.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2222", - "id": "ui_test_mount_rationale_2222", - "community": 62, + "source_location": "L2071", + "id": "ui_test_mount_rationale_2071", + "community": 157, "norm_label": "a reachable probe maps ok/latency into a connected result." }, { "label": "An async probe is awaited before its dict is mapped.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2249", - "id": "ui_test_mount_rationale_2249", - "community": 78, + "source_location": "L2098", + "id": "ui_test_mount_rationale_2098", + "community": 180, "norm_label": "an async probe is awaited before its dict is mapped." }, { "label": "A half-wired install names its first-failing gate as the next action.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2279", - "id": "ui_test_mount_rationale_2279", - "community": 172, + "source_location": "L2128", + "id": "ui_test_mount_rationale_2128", + "community": 69, "norm_label": "a half-wired install names its first-failing gate as the next action." }, { "label": "A fully-satisfied install has no outstanding next action.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2286", - "id": "ui_test_mount_rationale_2286", + "source_location": "L2135", + "id": "ui_test_mount_rationale_2135", "community": 325, "norm_label": "a fully-satisfied install has no outstanding next action." }, @@ -6721,316 +6712,325 @@ "label": "No sync-state writer wired -> negative toast, no task spawned.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2310", - "id": "ui_test_mount_rationale_2310", - "community": 163, + "source_location": "L2159", + "id": "ui_test_mount_rationale_2159", + "community": 106, "norm_label": "no sync-state writer wired -> negative toast, no task spawned." }, { "label": "A path with no enclosing run root surfaces a negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2319", - "id": "ui_test_mount_rationale_2319", - "community": 326, + "source_location": "L2168", + "id": "ui_test_mount_rationale_2168", + "community": 14, "norm_label": "a path with no enclosing run root surfaces a negative toast." }, { "label": "A resolvable file flips keep_local via the writer and fires on_done.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2330", - "id": "ui_test_mount_rationale_2330", - "community": 26, + "source_location": "L2179", + "id": "ui_test_mount_rationale_2179", + "community": 23, "norm_label": "a resolvable file flips keep_local via the writer and fires on_done." }, { "label": "The ``keep_local`` action routes to ``_toggle_keep_local``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2385", - "id": "ui_test_mount_rationale_2385", - "community": 17, + "source_location": "L2234", + "id": "ui_test_mount_rationale_2234", + "community": 14, "norm_label": "the ``keep_local`` action routes to ``_toggle_keep_local``." }, { "label": "On win32 the helper calls ``os.startfile`` and reports success.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2402", - "id": "ui_test_mount_rationale_2402", - "community": 55, + "source_location": "L2251", + "id": "ui_test_mount_rationale_2251", + "community": 170, "norm_label": "on win32 the helper calls ``os.startfile`` and reports success." }, { "label": "No controller -> a negative toast and no dialog open.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2436", - "id": "ui_test_mount_rationale_2436", - "community": 243, + "source_location": "L2285", + "id": "ui_test_mount_rationale_2285", + "community": 180, "norm_label": "no controller -> a negative toast and no dialog open." }, { "label": "A wired controller builds the modal and opens it (no raise).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2442", - "id": "ui_test_mount_rationale_2442", - "community": 243, + "source_location": "L2291", + "id": "ui_test_mount_rationale_2291", + "community": 180, "norm_label": "a wired controller builds the modal and opens it (no raise)." }, { "label": "The details dialog renders the session state plus pending/error lines.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2463", - "id": "ui_test_mount_rationale_2463", - "community": 327, + "source_location": "L2312", + "id": "ui_test_mount_rationale_2312", + "community": 300, "norm_label": "the details dialog renders the session state plus pending/error lines." }, { "label": "A session not awaiting input cannot be resumed -> negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2487", - "id": "ui_test_mount_rationale_2487", - "community": 17, + "source_location": "L2336", + "id": "ui_test_mount_rationale_2336", + "community": 14, "norm_label": "a session not awaiting input cannot be resumed -> negative toast." }, { "label": "A suspended session re-opens its escalation dialog with parked fields.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2496", - "id": "ui_test_mount_rationale_2496", - "community": 94, + "source_location": "L2345", + "id": "ui_test_mount_rationale_2345", + "community": 171, "norm_label": "a suspended session re-opens its escalation dialog with parked fields." }, { "label": "The dialog's Submit handler calls ``controller.resume`` in the background.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2525", - "id": "ui_test_mount_rationale_2525", - "community": 26, + "source_location": "L2374", + "id": "ui_test_mount_rationale_2374", + "community": 23, "norm_label": "the dialog's submit handler calls ``controller.resume`` in the background." }, { "label": "The dialog's Cancel handler routes through ``_cancel_session``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2557", - "id": "ui_test_mount_rationale_2557", - "community": 125, + "source_location": "L2406", + "id": "ui_test_mount_rationale_2406", + "community": 23, "norm_label": "the dialog's cancel handler routes through ``_cancel_session``." }, { "label": "The \u00a79.4 dialog's Discard button cancels with discard_files=True.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2597", - "id": "ui_test_mount_rationale_2597", - "community": 55, + "source_location": "L2446", + "id": "ui_test_mount_rationale_2446", + "community": 170, "norm_label": "the \u00a79.4 dialog's discard button cancels with discard_files=true." }, { "label": "The Keep-files button cancels with discard_files=False.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2616", - "id": "ui_test_mount_rationale_2616", - "community": 26, + "source_location": "L2465", + "id": "ui_test_mount_rationale_2465", + "community": 171, "norm_label": "the keep-files button cancels with discard_files=false." }, { "label": "A cancel failure is caught and toasted, not raised.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2633", - "id": "ui_test_mount_rationale_2633", - "community": 185, + "source_location": "L2482", + "id": "ui_test_mount_rationale_2482", + "community": 172, "norm_label": "a cancel failure is caught and toasted, not raised." }, { "label": "The Back button closes the dialog without cancelling.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2649", - "id": "ui_test_mount_rationale_2649", - "community": 186, + "source_location": "L2498", + "id": "ui_test_mount_rationale_2498", + "community": 181, "norm_label": "the back button closes the dialog without cancelling." }, { "label": "With a job row, the dialog renders each populated field line.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2663", - "id": "ui_test_mount_rationale_2663", - "community": 94, + "source_location": "L2512", + "id": "ui_test_mount_rationale_2512", + "community": 171, "norm_label": "with a job row, the dialog renders each populated field line." }, { "label": "Without a job row the dialog shows the 'no sync job' line.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2691", - "id": "ui_test_mount_rationale_2691", - "community": 94, + "source_location": "L2540", + "id": "ui_test_mount_rationale_2540", + "community": 54, "norm_label": "without a job row the dialog shows the 'no sync job' line." }, { "label": "No progress view on the wizard state -> the consumer returns at once.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2707", - "id": "ui_test_mount_rationale_2707", - "community": 26, + "source_location": "L2556", + "id": "ui_test_mount_rationale_2556", + "community": 23, "norm_label": "no progress view on the wizard state -> the consumer returns at once." }, { "label": "An input_required frame opens the dialog; a done frame closes it.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2718", - "id": "ui_test_mount_rationale_2718", - "community": 26, + "source_location": "L2567", + "id": "ui_test_mount_rationale_2567", + "community": 23, "norm_label": "an input_required frame opens the dialog; a done frame closes it." }, { "label": "A subscribe error is logged, not raised.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2755", - "id": "ui_test_mount_rationale_2755", - "community": 125, + "source_location": "L2604", + "id": "ui_test_mount_rationale_2604", + "community": 23, "norm_label": "a subscribe error is logged, not raised." }, { "label": "Submitting a run with no template selected surfaces a negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2795", - "id": "ui_test_mount_rationale_2795", - "community": 55, + "source_location": "L2644", + "id": "ui_test_mount_rationale_2644", + "community": 170, "norm_label": "submitting a run with no template selected surfaces a negative toast." }, { "label": "``_render_run_wizard`` wires templates/equipment into the run-wizard page.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2806", - "id": "ui_test_mount_rationale_2806", - "community": 185, + "source_location": "L2655", + "id": "ui_test_mount_rationale_2655", + "community": 172, "norm_label": "``_render_run_wizard`` wires templates/equipment into the run-wizard page." }, { "label": "Non-EquipmentNode keys in the hierarchy are ignored; unknown root -> treated", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2835", - "id": "ui_test_mount_rationale_2835", - "community": 94, + "source_location": "L2684", + "id": "ui_test_mount_rationale_2684", + "community": 54, "norm_label": "non-equipmentnode keys in the hierarchy are ignored; unknown root -> treated" }, { "label": "The received_equipment kind routes to the relay-equipment builder.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2844", - "id": "ui_test_mount_rationale_2844", - "community": 186, + "source_location": "L2693", + "id": "ui_test_mount_rationale_2693", + "community": 181, "norm_label": "the received_equipment kind routes to the relay-equipment builder." }, { "label": "A matching equipment id projects its config fields into the payload.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2860", - "id": "ui_test_mount_rationale_2860", - "community": 94, + "source_location": "L2709", + "id": "ui_test_mount_rationale_2709", + "community": 54, "norm_label": "a matching equipment id projects its config fields into the payload." }, { "label": "A schema_version mismatch (read_catalogue -> None) yields ``[]``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2882", - "id": "ui_test_mount_rationale_2882", - "community": 242, + "source_location": "L2731", + "id": "ui_test_mount_rationale_2731", + "community": 54, "norm_label": "a schema_version mismatch (read_catalogue -> none) yields ``[]``." }, { "label": "A raising ``app.storage.tab`` degrades to an in-memory feed (no tab).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2894", - "id": "ui_test_mount_rationale_2894", - "community": 77, + "source_location": "L2743", + "id": "ui_test_mount_rationale_2743", + "community": 50, "norm_label": "a raising ``app.storage.tab`` degrades to an in-memory feed (no tab)." }, { "label": "A raising evaluator degrades to 'not ready' (banner stays up).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2916", - "id": "ui_test_mount_rationale_2916", - "community": 26, + "source_location": "L2765", + "id": "ui_test_mount_rationale_2765", + "community": 50, "norm_label": "a raising evaluator degrades to 'not ready' (banner stays up)." }, { "label": "An equipment id absent from config yields ``{}``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2929", - "id": "ui_test_mount_rationale_2929", - "community": 125, + "source_location": "L2778", + "id": "ui_test_mount_rationale_2778", + "community": 54, "norm_label": "an equipment id absent from config yields ``{}``." }, - { - "label": "With no SYNCED rows the sweep clears nothing and toasts 'none'.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2937", - "id": "ui_test_mount_rationale_2937", - "community": 17, - "norm_label": "with no synced rows the sweep clears nothing and toasts 'none'." - }, { "label": "A run root that can't yield a relative path surfaces a negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2954", - "id": "ui_test_mount_rationale_2954", - "community": 125, + "source_location": "L2786", + "id": "ui_test_mount_rationale_2786", + "community": 54, "norm_label": "a run root that can't yield a relative path surfaces a negative toast." }, { "label": "A failing ``controller.resume`` is caught + toasted, not raised.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2972", - "id": "ui_test_mount_rationale_2972", - "community": 26, + "source_location": "L2804", + "id": "ui_test_mount_rationale_2804", + "community": 23, "norm_label": "a failing ``controller.resume`` is caught + toasted, not raised." }, { "label": "An import/engine failure in the outer try yields ``{}``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L3001", - "id": "ui_test_mount_rationale_3001", - "community": 185, + "source_location": "L2833", + "id": "ui_test_mount_rationale_2833", + "community": 172, "norm_label": "an import/engine failure in the outer try yields ``{}``." }, { - "label": "A staging-query failure degrades to an empty dock, not a crash.", + "label": "# NOTE: _build_staging_state was removed when the /staging route was hidden", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L3017", - "id": "ui_test_mount_rationale_3017", - "community": 186, - "norm_label": "a staging-query failure degrades to an empty dock, not a crash." + "source_location": "L425", + "id": "ui_test_mount_rationale_425", + "community": 2, + "norm_label": "# note: _build_staging_state was removed when the /staging route was hidden" + }, + { + "label": "# NOTE: _render_unavailable was removed with the /staging route (its only", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L596", + "id": "ui_test_mount_rationale_596", + "community": 2, + "norm_label": "# note: _render_unavailable was removed with the /staging route (its only" + }, + { + "label": "# NOTE: _bulk_clear_verified was removed with the footer \"Clear verified runs\"", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1683", + "id": "ui_test_mount_rationale_1683", + "community": 2, + "norm_label": "# note: _bulk_clear_verified was removed with the footer \"clear verified runs\"" }, { "label": "test_settings_page.py", @@ -7038,88 +7038,97 @@ "source_file": "tests/unit/ui/test_settings_page.py", "source_location": "L1", "id": "tests_unit_ui_test_settings_page_py", - "community": 219, + "community": 178, "norm_label": "test_settings_page.py" }, { "label": "test_build_draft_from_none_yields_defaults()", "file_type": "code", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L27", + "source_location": "L29", "id": "ui_test_settings_page_test_build_draft_from_none_yields_defaults", - "community": 219, + "community": 178, "norm_label": "test_build_draft_from_none_yields_defaults()" }, { "label": "test_build_draft_copies_existing_config()", "file_type": "code", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L36", + "source_location": "L38", "id": "ui_test_settings_page_test_build_draft_copies_existing_config", - "community": 219, + "community": 178, "norm_label": "test_build_draft_copies_existing_config()" }, { "label": "test_draft_edits_do_not_leak_into_source()", "file_type": "code", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L49", + "source_location": "L51", "id": "ui_test_settings_page_test_draft_edits_do_not_leak_into_source", - "community": 219, + "community": 178, "norm_label": "test_draft_edits_do_not_leak_into_source()" }, { "label": "test_finalize_coerces_widget_floats_back_to_int()", "file_type": "code", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L60", + "source_location": "L62", "id": "ui_test_settings_page_test_finalize_coerces_widget_floats_back_to_int", - "community": 219, + "community": 178, "norm_label": "test_finalize_coerces_widget_floats_back_to_int()" }, { "label": "test_finalize_round_trips_edited_scalar_fields()", "file_type": "code", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L73", + "source_location": "L75", "id": "ui_test_settings_page_test_finalize_round_trips_edited_scalar_fields", - "community": 219, + "community": 178, "norm_label": "test_finalize_round_trips_edited_scalar_fields()" }, { "label": "test_finalize_allows_blank_staging_root()", "file_type": "code", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L90", + "source_location": "L92", "id": "ui_test_settings_page_test_finalize_allows_blank_staging_root", - "community": 219, + "community": 178, "norm_label": "test_finalize_allows_blank_staging_root()" }, + { + "label": "test_orchestrator_section_is_titled_workstation()", + "file_type": "code", + "source_file": "tests/unit/ui/test_settings_page.py", + "source_location": "L106", + "id": "ui_test_settings_page_test_orchestrator_section_is_titled_workstation", + "community": 178, + "norm_label": "test_orchestrator_section_is_titled_workstation()" + }, { "label": "test_finalize_raises_on_invalid_edit()", "file_type": "code", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L104", + "source_location": "L117", "id": "ui_test_settings_page_test_finalize_raises_on_invalid_edit", - "community": 219, + "community": 178, "norm_label": "test_finalize_raises_on_invalid_edit()" }, { "label": "test_lims_credential_initial_state_not_set_when_keyring_empty()", "file_type": "code", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L113", + "source_location": "L126", "id": "ui_test_settings_page_test_lims_credential_initial_state_not_set_when_keyring_empty", - "community": 360, + "community": 310, "norm_label": "test_lims_credential_initial_state_not_set_when_keyring_empty()" }, { "label": "test_lims_credential_initial_state_set_when_keyring_has_password()", "file_type": "code", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L118", + "source_location": "L131", "id": "ui_test_settings_page_test_lims_credential_initial_state_set_when_keyring_has_password", - "community": 360, + "community": 310, "norm_label": "test_lims_credential_initial_state_set_when_keyring_has_password()" }, { @@ -7128,25 +7137,34 @@ "source_file": "tests/unit/ui/test_settings_page.py", "source_location": "L1", "id": "ui_test_settings_page_rationale_1", - "community": 219, + "community": 178, "norm_label": "tests for the settings-page config binding helpers. ``render_settings_page`` it" }, { "label": "staging_root is opt-in: a blank value finalizes cleanly (the field is option", "file_type": "rationale", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L91", - "id": "ui_test_settings_page_rationale_91", - "community": 219, + "source_location": "L93", + "id": "ui_test_settings_page_rationale_93", + "community": 178, "norm_label": "staging_root is opt-in: a blank value finalizes cleanly (the field is option" }, + { + "label": "Orchestrator/staging is hidden at the UI layer (see docs/superpowers/specs/2", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_settings_page.py", + "source_location": "L107", + "id": "ui_test_settings_page_rationale_107", + "community": 178, + "norm_label": "orchestrator/staging is hidden at the ui layer (see docs/superpowers/specs/2" + }, { "label": "A password already in the OS keyring opens the row in *Set*.", "file_type": "rationale", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L119", - "id": "ui_test_settings_page_rationale_119", - "community": 360, + "source_location": "L132", + "id": "ui_test_settings_page_rationale_132", + "community": 310, "norm_label": "a password already in the os keyring opens the row in *set*." }, { @@ -7155,7 +7173,7 @@ "source_file": "tests/unit/ui/__init__.py", "source_location": "L1", "id": "tests_unit_ui_init_py", - "community": 419, + "community": 456, "norm_label": "__init__.py" }, { @@ -7164,7 +7182,7 @@ "source_file": "src/exlab_wizard/ui/__init__.py", "source_location": "L1", "id": "ui_init_rationale_1", - "community": 419, + "community": 456, "norm_label": "ui package re-exports (backend spec \u00a74.3, frontend spec \u00a72). public surface: *" }, { @@ -7173,97 +7191,106 @@ "source_file": "tests/unit/ui/test_wizard_equipment.py", "source_location": "L1", "id": "tests_unit_ui_test_wizard_equipment_py", - "community": 71, + "community": 242, "norm_label": "test_wizard_equipment.py" }, { - "label": "test_wizard_has_four_steps_without_signal_step()", + "label": "test_wizard_has_three_steps_with_sync_mode_hidden()", "file_type": "code", "source_file": "tests/unit/ui/test_wizard_equipment.py", "source_location": "L17", - "id": "ui_test_wizard_equipment_test_wizard_has_four_steps_without_signal_step", - "community": 71, - "norm_label": "test_wizard_has_four_steps_without_signal_step()" + "id": "ui_test_wizard_equipment_test_wizard_has_three_steps_with_sync_mode_hidden", + "community": 242, + "norm_label": "test_wizard_has_three_steps_with_sync_mode_hidden()" + }, + { + "label": "test_assembled_equipment_defaults_to_nas_sync_mode()", + "file_type": "code", + "source_file": "tests/unit/ui/test_wizard_equipment.py", + "source_location": "L28", + "id": "ui_test_wizard_equipment_test_assembled_equipment_defaults_to_nas_sync_mode", + "community": 260, + "norm_label": "test_assembled_equipment_defaults_to_nas_sync_mode()" }, { "label": "_state_filled_for()", "file_type": "code", "source_file": "tests/unit/ui/test_wizard_equipment.py", - "source_location": "L24", + "source_location": "L41", "id": "ui_test_wizard_equipment_state_filled_for", - "community": 71, + "community": 242, "norm_label": "_state_filled_for()" }, { "label": "test_can_advance_identity_requires_id_and_label()", "file_type": "code", "source_file": "tests/unit/ui/test_wizard_equipment.py", - "source_location": "L34", + "source_location": "L51", "id": "ui_test_wizard_equipment_test_can_advance_identity_requires_id_and_label", - "community": 71, + "community": 260, "norm_label": "test_can_advance_identity_requires_id_and_label()" }, { "label": "test_can_advance_identity_rejects_invalid_id()", "file_type": "code", "source_file": "tests/unit/ui/test_wizard_equipment.py", - "source_location": "L43", + "source_location": "L60", "id": "ui_test_wizard_equipment_test_can_advance_identity_rejects_invalid_id", - "community": 71, + "community": 260, "norm_label": "test_can_advance_identity_rejects_invalid_id()" }, { "label": "test_can_advance_paths_requires_both_roots()", "file_type": "code", "source_file": "tests/unit/ui/test_wizard_equipment.py", - "source_location": "L50", + "source_location": "L67", "id": "ui_test_wizard_equipment_test_can_advance_paths_requires_both_roots", - "community": 71, + "community": 242, "norm_label": "test_can_advance_paths_requires_both_roots()" }, { "label": "test_can_advance_sync_mode_nas_needs_no_transport_fields()", "file_type": "code", "source_file": "tests/unit/ui/test_wizard_equipment.py", - "source_location": "L57", + "source_location": "L74", "id": "ui_test_wizard_equipment_test_can_advance_sync_mode_nas_needs_no_transport_fields", - "community": 71, + "community": 242, "norm_label": "test_can_advance_sync_mode_nas_needs_no_transport_fields()" }, { "label": "test_can_advance_sync_mode_stage_needs_no_per_equipment_fields()", "file_type": "code", "source_file": "tests/unit/ui/test_wizard_equipment.py", - "source_location": "L64", + "source_location": "L81", "id": "ui_test_wizard_equipment_test_can_advance_sync_mode_stage_needs_no_per_equipment_fields", - "community": 71, + "community": 242, "norm_label": "test_can_advance_sync_mode_stage_needs_no_per_equipment_fields()" }, { "label": "test_assemble_round_trips_to_valid_equipment_config_nas()", "file_type": "code", "source_file": "tests/unit/ui/test_wizard_equipment.py", - "source_location": "L73", + "source_location": "L90", "id": "ui_test_wizard_equipment_test_assemble_round_trips_to_valid_equipment_config_nas", - "community": 71, + "community": 242, "norm_label": "test_assemble_round_trips_to_valid_equipment_config_nas()" }, { "label": "test_assemble_round_trips_to_valid_equipment_config_stage()", "file_type": "code", "source_file": "tests/unit/ui/test_wizard_equipment.py", - "source_location": "L82", + "source_location": "L99", "id": "ui_test_wizard_equipment_test_assemble_round_trips_to_valid_equipment_config_stage", - "community": 71, + "community": 242, "norm_label": "test_assemble_round_trips_to_valid_equipment_config_stage()" }, { "label": "test_assemble_rejects_invalid_input()", "file_type": "code", "source_file": "tests/unit/ui/test_wizard_equipment.py", - "source_location": "L93", + "source_location": "L110", "id": "ui_test_wizard_equipment_test_assemble_rejects_invalid_input", - "community": 71, + "community": 242, "norm_label": "test_assemble_rejects_invalid_input()" }, { @@ -7272,17 +7299,26 @@ "source_file": "tests/unit/ui/test_wizard_equipment.py", "source_location": "L1", "id": "ui_test_wizard_equipment_rationale_1", - "community": 71, + "community": 242, "norm_label": "unit tests for the add-equipment wizard. redesign \u00a76." }, { - "label": "The completeness-signal step is removed by the quiescence redesign.", + "label": "The sync-mode step is hidden (orchestrator/staging hidden \u2014 see docs/superpo", "file_type": "rationale", "source_file": "tests/unit/ui/test_wizard_equipment.py", "source_location": "L18", "id": "ui_test_wizard_equipment_rationale_18", - "community": 71, - "norm_label": "the completeness-signal step is removed by the quiescence redesign." + "community": 242, + "norm_label": "the sync-mode step is hidden (orchestrator/staging hidden \u2014 see docs/superpo" + }, + { + "label": "With the sync-mode step hidden, every wizard-built equipment is nas-mode.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_wizard_equipment.py", + "source_location": "L29", + "id": "ui_test_wizard_equipment_rationale_29", + "community": 260, + "norm_label": "with the sync-mode step hidden, every wizard-built equipment is nas-mode." }, { "label": "test_staging_page.py", @@ -7297,7 +7333,7 @@ "label": "test_staging_dock_height_is_120_px()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L29", + "source_location": "L40", "id": "ui_test_staging_page_test_staging_dock_height_is_120_px", "community": 41, "norm_label": "test_staging_dock_height_is_120_px()" @@ -7306,7 +7342,7 @@ "label": "test_staging_table_columns_match_brief_order()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L33", + "source_location": "L44", "id": "ui_test_staging_page_test_staging_table_columns_match_brief_order", "community": 41, "norm_label": "test_staging_table_columns_match_brief_order()" @@ -7315,7 +7351,7 @@ "label": "test_format_bytes_handles_negative_values()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L50", + "source_location": "L61", "id": "ui_test_staging_page_test_format_bytes_handles_negative_values", "community": 41, "norm_label": "test_format_bytes_handles_negative_values()" @@ -7324,7 +7360,7 @@ "label": "test_format_bytes_renders_sub_kib_in_bytes()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L54", + "source_location": "L65", "id": "ui_test_staging_page_test_format_bytes_renders_sub_kib_in_bytes", "community": 41, "norm_label": "test_format_bytes_renders_sub_kib_in_bytes()" @@ -7333,7 +7369,7 @@ "label": "test_format_bytes_renders_kib_with_one_decimal()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L59", + "source_location": "L70", "id": "ui_test_staging_page_test_format_bytes_renders_kib_with_one_decimal", "community": 41, "norm_label": "test_format_bytes_renders_kib_with_one_decimal()" @@ -7342,7 +7378,7 @@ "label": "test_format_bytes_renders_mib_and_gib()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L64", + "source_location": "L75", "id": "ui_test_staging_page_test_format_bytes_renders_mib_and_gib", "community": 41, "norm_label": "test_format_bytes_renders_mib_and_gib()" @@ -7351,7 +7387,7 @@ "label": "test_format_elapsed_seconds_only()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L74", + "source_location": "L85", "id": "ui_test_staging_page_test_format_elapsed_seconds_only", "community": 41, "norm_label": "test_format_elapsed_seconds_only()" @@ -7360,7 +7396,7 @@ "label": "test_format_elapsed_minutes_and_seconds()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L79", + "source_location": "L90", "id": "ui_test_staging_page_test_format_elapsed_minutes_and_seconds", "community": 41, "norm_label": "test_format_elapsed_minutes_and_seconds()" @@ -7369,7 +7405,7 @@ "label": "test_format_elapsed_hours_and_minutes()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L83", + "source_location": "L94", "id": "ui_test_staging_page_test_format_elapsed_hours_and_minutes", "community": 41, "norm_label": "test_format_elapsed_hours_and_minutes()" @@ -7378,7 +7414,7 @@ "label": "test_format_elapsed_days_and_hours()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L87", + "source_location": "L98", "id": "ui_test_staging_page_test_format_elapsed_days_and_hours", "community": 41, "norm_label": "test_format_elapsed_days_and_hours()" @@ -7387,7 +7423,7 @@ "label": "test_format_elapsed_handles_negative()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L91", + "source_location": "L102", "id": "ui_test_staging_page_test_format_elapsed_handles_negative", "community": 41, "norm_label": "test_format_elapsed_handles_negative()" @@ -7396,7 +7432,7 @@ "label": "test_state_pill_props_returns_label_and_color_for_each_state()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L100", + "source_location": "L111", "id": "ui_test_staging_page_test_state_pill_props_returns_label_and_color_for_each_state", "community": 41, "norm_label": "test_state_pill_props_returns_label_and_color_for_each_state()" @@ -7405,7 +7441,7 @@ "label": "test_state_pill_props_falls_back_for_unknown_state()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L112", + "source_location": "L123", "id": "ui_test_staging_page_test_state_pill_props_falls_back_for_unknown_state", "community": 41, "norm_label": "test_state_pill_props_falls_back_for_unknown_state()" @@ -7414,7 +7450,7 @@ "label": "_make_row()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L123", + "source_location": "L134", "id": "ui_test_staging_page_make_row", "community": 41, "norm_label": "_make_row()" @@ -7423,7 +7459,7 @@ "label": "test_row_props_emits_run_label_as_leaf()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L144", + "source_location": "L155", "id": "ui_test_staging_page_test_row_props_emits_run_label_as_leaf", "community": 41, "norm_label": "test_row_props_emits_run_label_as_leaf()" @@ -7432,7 +7468,7 @@ "label": "test_row_props_marks_synced_rollup_as_clearable()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L149", + "source_location": "L160", "id": "ui_test_staging_page_test_row_props_marks_synced_rollup_as_clearable", "community": 41, "norm_label": "test_row_props_marks_synced_rollup_as_clearable()" @@ -7441,7 +7477,7 @@ "label": "test_row_props_does_not_mark_other_rollups_as_clearable()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L155", + "source_location": "L166", "id": "ui_test_staging_page_test_row_props_does_not_mark_other_rollups_as_clearable", "community": 41, "norm_label": "test_row_props_does_not_mark_other_rollups_as_clearable()" @@ -7450,7 +7486,7 @@ "label": "test_row_props_formats_bytes_and_elapsed()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L163", + "source_location": "L174", "id": "ui_test_staging_page_test_row_props_formats_bytes_and_elapsed", "community": 41, "norm_label": "test_row_props_formats_bytes_and_elapsed()" @@ -7459,7 +7495,7 @@ "label": "test_render_staging_dock_returns_dict_when_nicegui_unavailable()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L174", + "source_location": "L185", "id": "ui_test_staging_page_test_render_staging_dock_returns_dict_when_nicegui_unavailable", "community": 41, "norm_label": "test_render_staging_dock_returns_dict_when_nicegui_unavailable()" @@ -7468,7 +7504,7 @@ "label": "test_staging_dock_state_defaults()", "file_type": "code", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L191", + "source_location": "L202", "id": "ui_test_staging_page_test_staging_dock_state_defaults", "community": 41, "norm_label": "test_staging_dock_state_defaults()" @@ -7486,8 +7522,8 @@ "label": "Only a fully-``synced`` run rollup is clearable.", "file_type": "rationale", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L150", - "id": "ui_test_staging_page_rationale_150", + "source_location": "L161", + "id": "ui_test_staging_page_rationale_161", "community": 41, "norm_label": "only a fully-``synced`` run rollup is clearable." }, @@ -7495,8 +7531,8 @@ "label": "When NiceGUI isn't importable the renderer returns a debug dict. This is th", "file_type": "rationale", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L175", - "id": "ui_test_staging_page_rationale_175", + "source_location": "L186", + "id": "ui_test_staging_page_rationale_186", "community": 41, "norm_label": "when nicegui isn't importable the renderer returns a debug dict. this is th" }, @@ -7504,8 +7540,8 @@ "label": "An empty dock state initializes without errors.", "file_type": "rationale", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L192", - "id": "ui_test_staging_page_rationale_192", + "source_location": "L203", + "id": "ui_test_staging_page_rationale_203", "community": 41, "norm_label": "an empty dock state initializes without errors." }, @@ -7515,7 +7551,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L1", "id": "tests_unit_ui_test_notifications_py", - "community": 59, + "community": 102, "norm_label": "test_notifications.py" }, { @@ -7524,7 +7560,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L25", "id": "ui_test_notifications_reset_state", - "community": 59, + "community": 102, "norm_label": "_reset_state()" }, { @@ -7533,7 +7569,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L33", "id": "ui_test_notifications_test_notify_success_uses_positive_type", - "community": 59, + "community": 102, "norm_label": "test_notify_success_uses_positive_type()" }, { @@ -7542,7 +7578,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L45", "id": "ui_test_notifications_test_notify_info_default_timeout", - "community": 59, + "community": 102, "norm_label": "test_notify_info_default_timeout()" }, { @@ -7551,7 +7587,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L54", "id": "ui_test_notifications_test_notify_warning_extended_timeout", - "community": 59, + "community": 102, "norm_label": "test_notify_warning_extended_timeout()" }, { @@ -7560,7 +7596,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L63", "id": "ui_test_notifications_test_notify_error_extended_timeout", - "community": 59, + "community": 102, "norm_label": "test_notify_error_extended_timeout()" }, { @@ -7569,7 +7605,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L72", "id": "ui_test_notifications_test_notify_with_action_extends_to_12_seconds", - "community": 59, + "community": 352, "norm_label": "test_notify_with_action_extends_to_12_seconds()" }, { @@ -7578,7 +7614,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L85", "id": "ui_test_notifications_test_show_banner_rejects_unknown_id", - "community": 59, + "community": 102, "norm_label": "test_show_banner_rejects_unknown_id()" }, { @@ -7587,7 +7623,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L97", "id": "ui_test_notifications_test_show_banner_records_active", - "community": 59, + "community": 102, "norm_label": "test_show_banner_records_active()" }, { @@ -7596,7 +7632,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L111", "id": "ui_test_notifications_test_clear_banner_removes_record", - "community": 59, + "community": 102, "norm_label": "test_clear_banner_removes_record()" }, { @@ -7605,7 +7641,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L124", "id": "ui_test_notifications_test_banner_overflow_count_when_exceeding_two", - "community": 59, + "community": 102, "norm_label": "test_banner_overflow_count_when_exceeding_two()" }, { @@ -7614,7 +7650,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L148", "id": "ui_test_notifications_test_field_errors_round_trip", - "community": 59, + "community": 102, "norm_label": "test_field_errors_round_trip()" }, { @@ -7623,7 +7659,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L157", "id": "ui_test_notifications_test_form_errors_round_trip", - "community": 59, + "community": 102, "norm_label": "test_form_errors_round_trip()" }, { @@ -7632,7 +7668,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L166", "id": "ui_test_notifications_test_banner_id_closed_set_matches_spec", - "community": 59, + "community": 102, "norm_label": "test_banner_id_closed_set_matches_spec()" }, { @@ -7641,7 +7677,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L178", "id": "ui_test_notifications_test_severity_closed_set_matches_spec", - "community": 59, + "community": 102, "norm_label": "test_severity_closed_set_matches_spec()" }, { @@ -7650,7 +7686,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L189", "id": "ui_test_notifications_test_container_id_closed_set_matches_spec", - "community": 59, + "community": 102, "norm_label": "test_container_id_closed_set_matches_spec()" }, { @@ -7659,7 +7695,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L199", "id": "ui_test_notifications_test_action_spec_is_frozen", - "community": 59, + "community": 352, "norm_label": "test_action_spec_is_frozen()" }, { @@ -7668,7 +7704,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L1", "id": "ui_test_notifications_rationale_1", - "community": 59, + "community": 102, "norm_label": "unit tests for :mod:`exlab_wizard.ui.notifications`. the helpers all delegate t" }, { @@ -7677,7 +7713,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L26", "id": "ui_test_notifications_rationale_26", - "community": 59, + "community": 102, "norm_label": "clear in-memory banner / inline state between tests." }, { @@ -7686,7 +7722,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L34", "id": "ui_test_notifications_rationale_34", - "community": 59, + "community": 102, "norm_label": "``notify_success`` calls ``ui.notify(... type=\"positive\")``." }, { @@ -7695,7 +7731,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L46", "id": "ui_test_notifications_rationale_46", - "community": 59, + "community": 102, "norm_label": "``notify_info`` uses the 4 s default." }, { @@ -7704,7 +7740,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L55", "id": "ui_test_notifications_rationale_55", - "community": 59, + "community": 102, "norm_label": "``notify_warning`` uses the 8 s default." }, { @@ -7713,7 +7749,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L64", "id": "ui_test_notifications_rationale_64", - "community": 59, + "community": 102, "norm_label": "``notify_error`` uses the 8 s default." }, { @@ -7722,7 +7758,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L73", "id": "ui_test_notifications_rationale_73", - "community": 59, + "community": 352, "norm_label": "when an action is attached, the timeout extends to 12 s." }, { @@ -7731,7 +7767,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L86", "id": "ui_test_notifications_rationale_86", - "community": 59, + "community": 102, "norm_label": "an out-of-set banner id raises ``valueerror``." }, { @@ -7740,7 +7776,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L98", "id": "ui_test_notifications_rationale_98", - "community": 59, + "community": 102, "norm_label": "``show_banner`` records the banner under the right container." }, { @@ -7749,7 +7785,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L112", "id": "ui_test_notifications_rationale_112", - "community": 59, + "community": 102, "norm_label": "``clear_banner`` removes the active record." }, { @@ -7758,7 +7794,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L125", "id": "ui_test_notifications_rationale_125", - "community": 59, + "community": 102, "norm_label": "frontend \u00a72.2.3: max 2 banners; 3rd collapses into a count." }, { @@ -7767,7 +7803,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L149", "id": "ui_test_notifications_rationale_149", - "community": 59, + "community": 102, "norm_label": "inline field errors round-trip through register / get / clear." }, { @@ -7776,7 +7812,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L158", "id": "ui_test_notifications_rationale_158", - "community": 59, + "community": 102, "norm_label": "inline form errors round-trip through register / get / clear." }, { @@ -7785,7 +7821,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L167", "id": "ui_test_notifications_rationale_167", - "community": 59, + "community": 102, "norm_label": "frontend \u00a72.2.3: exactly five canonical banner ids." }, { @@ -7794,7 +7830,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L179", "id": "ui_test_notifications_rationale_179", - "community": 59, + "community": 102, "norm_label": "severity matches design.md alerts table." }, { @@ -7803,7 +7839,7 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L190", "id": "ui_test_notifications_rationale_190", - "community": 59, + "community": 102, "norm_label": "containerid enumerates the three banner placement scopes." }, { @@ -7812,16 +7848,205 @@ "source_file": "tests/unit/ui/test_notifications.py", "source_location": "L200", "id": "ui_test_notifications_rationale_200", - "community": 59, + "community": 352, "norm_label": "``actionspec`` is immutable so callbacks can't be swapped post-hoc." }, + { + "label": "test_status_bar_segment.py", + "file_type": "code", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L1", + "id": "tests_unit_ui_test_status_bar_segment_py", + "community": 52, + "norm_label": "test_status_bar_segment.py" + }, + { + "label": "test_footer_segments_all_clear_default_normal()", + "file_type": "code", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L19", + "id": "ui_test_status_bar_segment_test_footer_segments_all_clear_default_normal", + "community": 52, + "norm_label": "test_footer_segments_all_clear_default_normal()" + }, + { + "label": "test_footer_validator_warns_on_hard_findings()", + "file_type": "code", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L32", + "id": "ui_test_status_bar_segment_test_footer_validator_warns_on_hard_findings", + "community": 52, + "norm_label": "test_footer_validator_warns_on_hard_findings()" + }, + { + "label": "test_footer_lims_danger_when_unreachable()", + "file_type": "code", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L42", + "id": "ui_test_status_bar_segment_test_footer_lims_danger_when_unreachable", + "community": 52, + "norm_label": "test_footer_lims_danger_when_unreachable()" + }, + { + "label": "test_footer_staging_warns_when_pending()", + "file_type": "code", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L50", + "id": "ui_test_status_bar_segment_test_footer_staging_warns_when_pending", + "community": 52, + "norm_label": "test_footer_staging_warns_when_pending()" + }, + { + "label": "test_footer_segments_defaults_are_safe()", + "file_type": "code", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L59", + "id": "ui_test_status_bar_segment_test_footer_segments_defaults_are_safe", + "community": 52, + "norm_label": "test_footer_segments_defaults_are_safe()" + }, + { + "label": "Unit tests for the footer status-bar segment derivation (Phase 5). The :func:`d", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L1", + "id": "ui_test_status_bar_segment_rationale_1", + "community": 52, + "norm_label": "unit tests for the footer status-bar segment derivation (phase 5). the :func:`d" + }, + { + "label": "No findings, LIMS reachable, nothing staged -> every segment normal.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L20", + "id": "ui_test_status_bar_segment_rationale_20", + "community": 52, + "norm_label": "no findings, lims reachable, nothing staged -> every segment normal." + }, + { + "label": "A hard-tier finding flips Validator to WARNING (Frontend \u00a73.5.5).", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L33", + "id": "ui_test_status_bar_segment_rationale_33", + "community": 52, + "norm_label": "a hard-tier finding flips validator to warning (frontend \u00a73.5.5)." + }, + { + "label": "An unreachable LIMS endpoint flips LIMS to DANGER.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L43", + "id": "ui_test_status_bar_segment_rationale_43", + "community": 52, + "norm_label": "an unreachable lims endpoint flips lims to danger." + }, + { + "label": "Runs pending clearance flip Staging to WARNING.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L51", + "id": "ui_test_status_bar_segment_rationale_51", + "community": 52, + "norm_label": "runs pending clearance flip staging to warning." + }, + { + "label": "Called with no args (a half-wired backend) every segment is normal.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L60", + "id": "ui_test_status_bar_segment_rationale_60", + "community": 52, + "norm_label": "called with no args (a half-wired backend) every segment is normal." + }, + { + "label": "test_empty_state.py", + "file_type": "code", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L1", + "id": "tests_unit_ui_test_empty_state_py", + "community": 288, + "norm_label": "test_empty_state.py" + }, + { + "label": "_walk()", + "file_type": "code", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L15", + "id": "ui_test_empty_state_walk", + "community": 288, + "norm_label": "_walk()" + }, + { + "label": "_by_testid()", + "file_type": "code", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L22", + "id": "ui_test_empty_state_by_testid", + "community": 288, + "norm_label": "_by_testid()" + }, + { + "label": "_texts()", + "file_type": "code", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L26", + "id": "ui_test_empty_state_texts", + "community": 288, + "norm_label": "_texts()" + }, + { + "label": "test_empty_state_carries_testid_and_message()", + "file_type": "code", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L30", + "id": "ui_test_empty_state_test_empty_state_carries_testid_and_message", + "community": 288, + "norm_label": "test_empty_state_carries_testid_and_message()" + }, + { + "label": "test_empty_state_renders_the_icon()", + "file_type": "code", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L42", + "id": "ui_test_empty_state_test_empty_state_renders_the_icon", + "community": 288, + "norm_label": "test_empty_state_renders_the_icon()" + }, + { + "label": "Unit tests for the shared empty-state placeholder (Phase 5). The helper renders", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L1", + "id": "ui_test_empty_state_rationale_1", + "community": 288, + "norm_label": "unit tests for the shared empty-state placeholder (phase 5). the helper renders" + }, + { + "label": "The placeholder keeps the caller's testid (once) and shows the hint.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L31", + "id": "ui_test_empty_state_rationale_31", + "community": 288, + "norm_label": "the placeholder keeps the caller's testid (once) and shows the hint." + }, + { + "label": "The icon name reaches the rendered icon element.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L43", + "id": "ui_test_empty_state_rationale_43", + "community": 288, + "norm_label": "the icon name reaches the rendered icon element." + }, { "label": "test_sync_status_icon.py", "file_type": "code", "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L1", "id": "tests_unit_ui_test_sync_status_icon_py", - "community": 143, + "community": 205, "norm_label": "test_sync_status_icon.py" }, { @@ -7830,7 +8055,7 @@ "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L11", "id": "ui_test_sync_status_icon_test_strict_default_still_raises_on_unknown", - "community": 143, + "community": 205, "norm_label": "test_strict_default_still_raises_on_unknown()" }, { @@ -7839,7 +8064,7 @@ "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L17", "id": "ui_test_sync_status_icon_test_strict_explicit_raises_on_unknown", - "community": 143, + "community": 205, "norm_label": "test_strict_explicit_raises_on_unknown()" }, { @@ -7848,7 +8073,7 @@ "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L22", "id": "ui_test_sync_status_icon_test_tolerant_mode_returns_neutral_for_unknown", - "community": 143, + "community": 205, "norm_label": "test_tolerant_mode_returns_neutral_for_unknown()" }, { @@ -7857,7 +8082,7 @@ "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L32", "id": "ui_test_sync_status_icon_test_tolerant_mode_handles_none", - "community": 143, + "community": 205, "norm_label": "test_tolerant_mode_handles_none()" }, { @@ -7866,7 +8091,7 @@ "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L40", "id": "ui_test_sync_status_icon_test_tolerant_mode_still_returns_real_props_for_known", - "community": 143, + "community": 205, "norm_label": "test_tolerant_mode_still_returns_real_props_for_known()" }, { @@ -7875,7 +8100,7 @@ "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L47", "id": "ui_test_sync_status_icon_test_neutral_and_normal_props_share_key_shape", - "community": 143, + "community": 205, "norm_label": "test_neutral_and_normal_props_share_key_shape()" }, { @@ -7884,7 +8109,7 @@ "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L1", "id": "ui_test_sync_status_icon_rationale_1", - "community": 143, + "community": 205, "norm_label": "unit tests for sync_status_icon tolerant mode (redesign \u00a74.5, oq-5)." }, { @@ -7893,7 +8118,7 @@ "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L12", "id": "ui_test_sync_status_icon_rationale_12", - "community": 143, + "community": 205, "norm_label": "the original contract is preserved: strict (default) raises." }, { @@ -7902,7 +8127,7 @@ "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L23", "id": "ui_test_sync_status_icon_rationale_23", - "community": 143, + "community": 205, "norm_label": "strict=false yields neutral props (muted dash) instead of raising." }, { @@ -7911,7 +8136,7 @@ "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L33", "id": "ui_test_sync_status_icon_rationale_33", - "community": 143, + "community": 205, "norm_label": "strict=false accepts none (optional per-file / per-folder status)." }, { @@ -7920,7 +8145,7 @@ "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L41", "id": "ui_test_sync_status_icon_rationale_41", - "community": 143, + "community": 205, "norm_label": "a recognised status is unaffected by strict=false." }, { @@ -7929,7 +8154,7 @@ "source_file": "tests/unit/ui/test_sync_status_icon.py", "source_location": "L48", "id": "ui_test_sync_status_icon_rationale_48", - "community": 143, + "community": 205, "norm_label": "both return paths expose the same keys so callers treat them alike." }, { @@ -7938,7 +8163,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L1", "id": "tests_unit_ui_test_templates_page_py", - "community": 120, + "community": 129, "norm_label": "test_templates_page.py" }, { @@ -7947,7 +8172,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L35", "id": "ui_test_templates_page_test_create_template_scaffolds_dir_with_manifest_and_content", - "community": 120, + "community": 129, "norm_label": "test_create_template_scaffolds_dir_with_manifest_and_content()" }, { @@ -7956,7 +8181,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L50", "id": "ui_test_templates_page_test_create_template_strips_whitespace_from_name", - "community": 120, + "community": 129, "norm_label": "test_create_template_strips_whitespace_from_name()" }, { @@ -7965,7 +8190,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L55", "id": "ui_test_templates_page_test_create_template_writes_description_into_manifest", - "community": 120, + "community": 129, "norm_label": "test_create_template_writes_description_into_manifest()" }, { @@ -7974,7 +8199,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L69", "id": "ui_test_templates_page_test_create_run_template_records_run_scope", - "community": 120, + "community": 129, "norm_label": "test_create_run_template_records_run_scope()" }, { @@ -7983,7 +8208,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L81", "id": "ui_test_templates_page_test_create_project_template_omits_run_scope_key", - "community": 120, + "community": 129, "norm_label": "test_create_project_template_omits_run_scope_key()" }, { @@ -7992,7 +8217,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L92", "id": "ui_test_templates_page_test_create_template_rejects_empty_name", - "community": 120, + "community": 129, "norm_label": "test_create_template_rejects_empty_name()" }, { @@ -8001,7 +8226,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L97", "id": "ui_test_templates_page_test_create_template_rejects_unknown_type", - "community": 120, + "community": 129, "norm_label": "test_create_template_rejects_unknown_type()" }, { @@ -8010,7 +8235,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L102", "id": "ui_test_templates_page_test_create_run_template_requires_run_scope", - "community": 120, + "community": 129, "norm_label": "test_create_run_template_requires_run_scope()" }, { @@ -8019,7 +8244,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L107", "id": "ui_test_templates_page_test_create_run_template_rejects_invalid_run_scope", - "community": 120, + "community": 129, "norm_label": "test_create_run_template_rejects_invalid_run_scope()" }, { @@ -8028,7 +8253,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L112", "id": "ui_test_templates_page_test_create_template_rejects_duplicate_name", - "community": 120, + "community": 129, "norm_label": "test_create_template_rejects_duplicate_name()" }, { @@ -8037,7 +8262,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L123", "id": "ui_test_templates_page_test_scaffolded_project_template_resolves_with_engine", - "community": 120, + "community": 129, "norm_label": "test_scaffolded_project_template_resolves_with_engine()" }, { @@ -8046,7 +8271,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L139", "id": "ui_test_templates_page_test_scaffolded_run_template_resolves_with_engine", - "community": 120, + "community": 129, "norm_label": "test_scaffolded_run_template_resolves_with_engine()" }, { @@ -8055,7 +8280,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L156", "id": "ui_test_templates_page_test_list_templates_returns_empty_for_missing_dir", - "community": 120, + "community": 129, "norm_label": "test_list_templates_returns_empty_for_missing_dir()" }, { @@ -8064,7 +8289,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L160", "id": "ui_test_templates_page_test_list_templates_returns_empty_for_dir_with_no_templates", - "community": 120, + "community": 129, "norm_label": "test_list_templates_returns_empty_for_dir_with_no_templates()" }, { @@ -8073,7 +8298,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L166", "id": "ui_test_templates_page_test_list_templates_summarizes_each_template", - "community": 120, + "community": 129, "norm_label": "test_list_templates_summarizes_each_template()" }, { @@ -8082,7 +8307,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L189", "id": "ui_test_templates_page_test_list_templates_is_sorted", - "community": 120, + "community": 129, "norm_label": "test_list_templates_is_sorted()" }, { @@ -8091,7 +8316,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L199", "id": "ui_test_templates_page_test_list_templates_skips_dirs_without_manifest", - "community": 120, + "community": 129, "norm_label": "test_list_templates_skips_dirs_without_manifest()" }, { @@ -8100,7 +8325,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L209", "id": "ui_test_templates_page_test_list_templates_filters_by_template_type", - "community": 120, + "community": 129, "norm_label": "test_list_templates_filters_by_template_type()" }, { @@ -8109,7 +8334,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L225", "id": "ui_test_templates_page_test_list_templates_skips_malformed_manifest", - "community": 120, + "community": 129, "norm_label": "test_list_templates_skips_malformed_manifest()" }, { @@ -8118,7 +8343,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L237", "id": "ui_test_templates_page_test_list_templates_skips_non_mapping_manifest", - "community": 120, + "community": 129, "norm_label": "test_list_templates_skips_non_mapping_manifest()" }, { @@ -8127,7 +8352,7 @@ "source_file": "tests/unit/ui/test_templates_page.py", "source_location": "L1", "id": "ui_test_templates_page_rationale_1", - "community": 120, + "community": 129, "norm_label": "tests for the template-manager page helpers. ``render_template_manager`` render" }, { @@ -8136,7 +8361,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L1", "id": "tests_unit_ui_test_keyboard_py", - "community": 275, + "community": 279, "norm_label": "test_keyboard.py" }, { @@ -8145,7 +8370,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L26", "id": "ui_test_keyboard_test_all_documented_shortcuts_in_registry", - "community": 355, + "community": 356, "norm_label": "test_all_documented_shortcuts_in_registry()" }, { @@ -8154,7 +8379,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L43", "id": "ui_test_keyboard_test_new_project_combo_macos_and_other", - "community": 155, + "community": 165, "norm_label": "test_new_project_combo_macos_and_other()" }, { @@ -8163,7 +8388,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L51", "id": "ui_test_keyboard_test_new_run_combo_macos_and_other", - "community": 155, + "community": 165, "norm_label": "test_new_run_combo_macos_and_other()" }, { @@ -8172,7 +8397,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L59", "id": "ui_test_keyboard_test_new_test_run_combo_macos_and_other", - "community": 155, + "community": 165, "norm_label": "test_new_test_run_combo_macos_and_other()" }, { @@ -8181,7 +8406,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L67", "id": "ui_test_keyboard_test_open_settings_uses_comma_key", - "community": 155, + "community": 165, "norm_label": "test_open_settings_uses_comma_key()" }, { @@ -8190,7 +8415,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L75", "id": "ui_test_keyboard_test_refresh_tree_combo", - "community": 275, + "community": 279, "norm_label": "test_refresh_tree_combo()" }, { @@ -8199,7 +8424,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L83", "id": "ui_test_keyboard_test_open_problems_combo", - "community": 155, + "community": 165, "norm_label": "test_open_problems_combo()" }, { @@ -8208,7 +8433,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L91", "id": "ui_test_keyboard_test_focus_tree_search_is_unmodified_slash", - "community": 155, + "community": 165, "norm_label": "test_focus_tree_search_is_unmodified_slash()" }, { @@ -8217,7 +8442,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L99", "id": "ui_test_keyboard_test_wizard_next_uses_enter_with_modifier", - "community": 155, + "community": 165, "norm_label": "test_wizard_next_uses_enter_with_modifier()" }, { @@ -8226,7 +8451,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L107", "id": "ui_test_keyboard_test_wizard_cancel_uses_escape", - "community": 155, + "community": 165, "norm_label": "test_wizard_cancel_uses_escape()" }, { @@ -8235,7 +8460,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L115", "id": "ui_test_keyboard_test_combo_for_current_os_returns_other_on_linux", - "community": 354, + "community": 357, "norm_label": "test_combo_for_current_os_returns_other_on_linux()" }, { @@ -8244,7 +8469,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L123", "id": "ui_test_keyboard_test_combo_for_current_os_returns_macos_on_darwin", - "community": 354, + "community": 357, "norm_label": "test_combo_for_current_os_returns_macos_on_darwin()" }, { @@ -8253,7 +8478,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L131", "id": "ui_test_keyboard_test_resolve_finds_known_combo_on_linux", - "community": 275, + "community": 279, "norm_label": "test_resolve_finds_known_combo_on_linux()" }, { @@ -8262,7 +8487,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L139", "id": "ui_test_keyboard_test_resolve_returns_none_for_unknown_combo", - "community": 275, + "community": 279, "norm_label": "test_resolve_returns_none_for_unknown_combo()" }, { @@ -8271,7 +8496,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L145", "id": "ui_test_keyboard_test_get_binding_raises_for_unknown", - "community": 155, + "community": 165, "norm_label": "test_get_binding_raises_for_unknown()" }, { @@ -8280,7 +8505,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L155", "id": "ui_test_keyboard_test_registry_register_and_dispatch", - "community": 253, + "community": 257, "norm_label": "test_registry_register_and_dispatch()" }, { @@ -8289,7 +8514,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L165", "id": "ui_test_keyboard_test_registry_dispatch_returns_false_when_unbound", - "community": 253, + "community": 257, "norm_label": "test_registry_dispatch_returns_false_when_unbound()" }, { @@ -8298,7 +8523,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L172", "id": "ui_test_keyboard_test_registry_double_register_raises", - "community": 253, + "community": 257, "norm_label": "test_registry_double_register_raises()" }, { @@ -8307,7 +8532,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L181", "id": "ui_test_keyboard_test_keycombo_matches_returns_true_for_same_modifiers", - "community": 275, + "community": 279, "norm_label": "test_keycombo_matches_returns_true_for_same_modifiers()" }, { @@ -8316,7 +8541,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L189", "id": "ui_test_keyboard_test_descriptions_match_spec", - "community": 355, + "community": 356, "norm_label": "test_descriptions_match_spec()" }, { @@ -8325,7 +8550,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L1", "id": "ui_test_keyboard_rationale_1", - "community": 275, + "community": 279, "norm_label": "unit tests for :mod:`exlab_wizard.ui.keyboard`. the registry is intentionally s" }, { @@ -8334,7 +8559,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L27", "id": "ui_test_keyboard_rationale_27", - "community": 355, + "community": 356, "norm_label": "every frontend \u00a73.7 row has a shortcutbinding." }, { @@ -8343,7 +8568,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L44", "id": "ui_test_keyboard_rationale_44", - "community": 155, + "community": 165, "norm_label": "``cmd+n`` on macos, ``ctrl+n`` elsewhere." }, { @@ -8352,7 +8577,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L52", "id": "ui_test_keyboard_rationale_52", - "community": 155, + "community": 165, "norm_label": "``cmd+shift+n`` / ``ctrl+shift+n``." }, { @@ -8361,7 +8586,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L60", "id": "ui_test_keyboard_rationale_60", - "community": 155, + "community": 165, "norm_label": "``cmd+shift+t`` / ``ctrl+shift+t``." }, { @@ -8370,7 +8595,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L68", "id": "ui_test_keyboard_rationale_68", - "community": 155, + "community": 165, "norm_label": "``cmd+,`` / ``ctrl+,``." }, { @@ -8379,7 +8604,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L76", "id": "ui_test_keyboard_rationale_76", - "community": 275, + "community": 279, "norm_label": "``cmd+r`` / ``ctrl+r``." }, { @@ -8388,7 +8613,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L84", "id": "ui_test_keyboard_rationale_84", - "community": 155, + "community": 165, "norm_label": "``cmd+shift+p`` / ``ctrl+shift+p``." }, { @@ -8397,7 +8622,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L92", "id": "ui_test_keyboard_rationale_92", - "community": 155, + "community": 165, "norm_label": "``/`` focuses the tree search box." }, { @@ -8406,7 +8631,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L100", "id": "ui_test_keyboard_rationale_100", - "community": 155, + "community": 165, "norm_label": "``cmd+enter`` / ``ctrl+enter`` advances the wizard." }, { @@ -8415,7 +8640,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L108", "id": "ui_test_keyboard_rationale_108", - "community": 155, + "community": 165, "norm_label": "esc cancels the wizard." }, { @@ -8424,7 +8649,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L116", "id": "ui_test_keyboard_rationale_116", - "community": 354, + "community": 357, "norm_label": "on non-darwin we return ``other``." }, { @@ -8433,7 +8658,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L124", "id": "ui_test_keyboard_rationale_124", - "community": 354, + "community": 357, "norm_label": "on darwin we return ``macos``." }, { @@ -8442,7 +8667,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L132", "id": "ui_test_keyboard_rationale_132", - "community": 275, + "community": 279, "norm_label": "resolver returns the right shortcut id on non-darwin." }, { @@ -8451,7 +8676,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L140", "id": "ui_test_keyboard_rationale_140", - "community": 275, + "community": 279, "norm_label": "unknown combos resolve to ``none``." }, { @@ -8460,7 +8685,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L146", "id": "ui_test_keyboard_rationale_146", - "community": 155, + "community": 165, "norm_label": "``get_binding`` raises ``keyerror`` for an unknown shortcut id." }, { @@ -8469,7 +8694,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L156", "id": "ui_test_keyboard_rationale_156", - "community": 253, + "community": 257, "norm_label": "``shortcutregistry`` dispatches the registered handler exactly once." }, { @@ -8478,7 +8703,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L166", "id": "ui_test_keyboard_rationale_166", - "community": 253, + "community": 257, "norm_label": "dispatching an unbound shortcut returns ``false`` and runs no handler." }, { @@ -8487,7 +8712,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L173", "id": "ui_test_keyboard_rationale_173", - "community": 253, + "community": 257, "norm_label": "two handlers per shortcut is forbidden." }, { @@ -8496,7 +8721,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L182", "id": "ui_test_keyboard_rationale_182", - "community": 275, + "community": 279, "norm_label": "``keycombo.matches`` is exact-match across modifiers and key." }, { @@ -8505,7 +8730,7 @@ "source_file": "tests/unit/ui/test_keyboard.py", "source_location": "L190", "id": "ui_test_keyboard_rationale_190", - "community": 355, + "community": 356, "norm_label": "each binding has a non-empty description (frontend \u00a73.7)." }, { @@ -8514,7 +8739,7 @@ "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L1", "id": "tests_unit_ui_test_dynamic_form_py", - "community": 197, + "community": 194, "norm_label": "test_dynamic_form.py" }, { @@ -8523,7 +8748,7 @@ "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L32", "id": "ui_test_dynamic_form_test_template_questions_skips_underscore_keys", - "community": 197, + "community": 194, "norm_label": "test_template_questions_skips_underscore_keys()" }, { @@ -8532,7 +8757,7 @@ "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L41", "id": "ui_test_dynamic_form_test_template_questions_long_form_types", - "community": 197, + "community": 194, "norm_label": "test_template_questions_long_form_types()" }, { @@ -8541,7 +8766,7 @@ "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L59", "id": "ui_test_dynamic_form_test_template_questions_choice_from_list_and_dict", - "community": 197, + "community": 194, "norm_label": "test_template_questions_choice_from_list_and_dict()" }, { @@ -8550,7 +8775,7 @@ "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L72", "id": "ui_test_dynamic_form_test_template_questions_short_form_infers_kind", - "community": 197, + "community": 194, "norm_label": "test_template_questions_short_form_infers_kind()" }, { @@ -8559,7 +8784,7 @@ "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L93", "id": "ui_test_dynamic_form_test_render_question_field_seeds_default_into_answers", - "community": 255, + "community": 259, "norm_label": "test_render_question_field_seeds_default_into_answers()" }, { @@ -8568,7 +8793,7 @@ "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L103", "id": "ui_test_dynamic_form_test_render_question_field_preserves_existing_answer", - "community": 255, + "community": 259, "norm_label": "test_render_question_field_preserves_existing_answer()" }, { @@ -8577,7 +8802,7 @@ "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L118", "id": "ui_test_dynamic_form_equipment_kwargs", - "community": 197, + "community": 194, "norm_label": "_equipment_kwargs()" }, { @@ -8586,7 +8811,7 @@ "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L130", "id": "ui_test_dynamic_form_test_build_equipment_nas_has_no_transport", - "community": 197, + "community": 194, "norm_label": "test_build_equipment_nas_has_no_transport()" }, { @@ -8595,7 +8820,7 @@ "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L139", "id": "ui_test_dynamic_form_test_build_equipment_stage_has_no_per_equipment_transport", - "community": 197, + "community": 194, "norm_label": "test_build_equipment_stage_has_no_per_equipment_transport()" }, { @@ -8604,7 +8829,7 @@ "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L150", "id": "ui_test_dynamic_form_test_build_equipment_rejects_bad_id", - "community": 197, + "community": 194, "norm_label": "test_build_equipment_rejects_bad_id()" }, { @@ -8613,7 +8838,7 @@ "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L1", "id": "ui_test_dynamic_form_rationale_1", - "community": 197, + "community": 194, "norm_label": "unit tests for the frontend-polish helpers. covers the pure logic behind the th" }, { @@ -8622,7 +8847,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L1", "id": "tests_unit_ui_test_file_list_py", - "community": 169, + "community": 139, "norm_label": "test_file_list.py" }, { @@ -8631,7 +8856,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L20", "id": "ui_test_file_list_walk", - "community": 211, + "community": 147, "norm_label": "_walk()" }, { @@ -8640,7 +8865,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L33", "id": "ui_test_file_list_rows", - "community": 211, + "community": 147, "norm_label": "_rows()" }, { @@ -8649,7 +8874,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L38", "id": "ui_test_file_list_row_by_path", - "community": 211, + "community": 147, "norm_label": "_row_by_path()" }, { @@ -8658,7 +8883,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L42", "id": "ui_test_file_list_click", - "community": 377, + "community": 147, "norm_label": "_click()" }, { @@ -8667,7 +8892,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L51", "id": "ui_test_file_list_entry", - "community": 169, + "community": 139, "norm_label": "_entry()" }, { @@ -8676,7 +8901,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L64", "id": "ui_test_file_list_test_diff_detects_additions", - "community": 169, + "community": 139, "norm_label": "test_diff_detects_additions()" }, { @@ -8685,7 +8910,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L74", "id": "ui_test_file_list_test_diff_detects_removals", - "community": 169, + "community": 139, "norm_label": "test_diff_detects_removals()" }, { @@ -8694,7 +8919,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L84", "id": "ui_test_file_list_test_diff_detects_size_change_as_modification", - "community": 169, + "community": 139, "norm_label": "test_diff_detects_size_change_as_modification()" }, { @@ -8703,7 +8928,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L94", "id": "ui_test_file_list_test_diff_detects_sync_status_change_as_modification", - "community": 169, + "community": 139, "norm_label": "test_diff_detects_sync_status_change_as_modification()" }, { @@ -8712,7 +8937,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L102", "id": "ui_test_file_list_test_diff_unchanged_is_empty", - "community": 169, + "community": 139, "norm_label": "test_diff_unchanged_is_empty()" }, { @@ -8721,7 +8946,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L115", "id": "ui_test_file_list_test_file_list_entry_defaults_keep_local_and_tombstone_false", - "community": 378, + "community": 139, "norm_label": "test_file_list_entry_defaults_keep_local_and_tombstone_false()" }, { @@ -8730,7 +8955,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L122", "id": "ui_test_file_list_test_diff_detects_keep_local_change_as_modification", - "community": 379, + "community": 201, "norm_label": "test_diff_detects_keep_local_change_as_modification()" }, { @@ -8739,7 +8964,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L130", "id": "ui_test_file_list_test_diff_detects_tombstone_change_as_modification", - "community": 381, + "community": 201, "norm_label": "test_diff_detects_tombstone_change_as_modification()" }, { @@ -8748,7 +8973,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L138", "id": "ui_test_file_list_test_keep_local_action_constant_is_distinct", - "community": 380, + "community": 372, "norm_label": "test_keep_local_action_constant_is_distinct()" }, { @@ -8757,7 +8982,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L143", "id": "ui_test_file_list_test_render_file_list_keep_local_menu_and_tombstone", - "community": 376, + "community": 373, "norm_label": "test_render_file_list_keep_local_menu_and_tombstone()" }, { @@ -8766,7 +8991,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L193", "id": "ui_test_file_list_test_row_bg_selected_wins_over_new", - "community": 169, + "community": 139, "norm_label": "test_row_bg_selected_wins_over_new()" }, { @@ -8775,7 +9000,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L200", "id": "ui_test_file_list_test_row_bg_new_wins_over_tombstone_and_zebra", - "community": 169, + "community": 139, "norm_label": "test_row_bg_new_wins_over_tombstone_and_zebra()" }, { @@ -8784,7 +9009,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L212", "id": "ui_test_file_list_test_row_bg_tombstone_suppresses_zebra_keeps_dim", - "community": 169, + "community": 139, "norm_label": "test_row_bg_tombstone_suppresses_zebra_keeps_dim()" }, { @@ -8793,7 +9018,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L224", "id": "ui_test_file_list_test_row_bg_zebra_on_odd_index_only", - "community": 169, + "community": 139, "norm_label": "test_row_bg_zebra_on_odd_index_only()" }, { @@ -8802,7 +9027,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L231", "id": "ui_test_file_list_test_row_bg_zebra_parity_is_index_based", - "community": 169, + "community": 139, "norm_label": "test_row_bg_zebra_parity_is_index_based()" }, { @@ -8811,7 +9036,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L236", "id": "ui_test_file_list_test_row_bg_selected_tombstone_keeps_both_treatments", - "community": 169, + "community": 139, "norm_label": "test_row_bg_selected_tombstone_keeps_both_treatments()" }, { @@ -8820,7 +9045,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L244", "id": "ui_test_file_list_test_row_bg_plain_even_row_is_empty", - "community": 169, + "community": 139, "norm_label": "test_row_bg_plain_even_row_is_empty()" }, { @@ -8829,7 +9054,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L253", "id": "ui_test_file_list_selection_state", - "community": 211, + "community": 147, "norm_label": "_selection_state()" }, { @@ -8838,7 +9063,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L271", "id": "ui_test_file_list_test_render_marks_selected_row_only", - "community": 211, + "community": 147, "norm_label": "test_render_marks_selected_row_only()" }, { @@ -8847,7 +9072,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L284", "id": "ui_test_file_list_test_render_tombstone_row_is_dimmed_and_marked", - "community": 211, + "community": 147, "norm_label": "test_render_tombstone_row_is_dimmed_and_marked()" }, { @@ -8856,7 +9081,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L293", "id": "ui_test_file_list_test_on_select_fires_for_file_and_folder", - "community": 377, + "community": 147, "norm_label": "test_on_select_fires_for_file_and_folder()" }, { @@ -8865,7 +9090,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L306", "id": "ui_test_file_list_test_no_click_listener_when_on_select_absent", - "community": 211, + "community": 147, "norm_label": "test_no_click_listener_when_on_select_absent()" }, { @@ -8874,7 +9099,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L1", "id": "ui_test_file_list_rationale_1", - "community": 169, + "community": 139, "norm_label": "unit tests for ``ui/components/file_list``. redesign \u00a74.3, \u00a75." }, { @@ -8883,7 +9108,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L21", "id": "ui_test_file_list_rationale_21", - "community": 211, + "community": 147, "norm_label": "yield ``element`` and every descendant across all its slots. nicegui render" }, { @@ -8892,7 +9117,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L34", "id": "ui_test_file_list_rationale_34", - "community": 211, + "community": 147, "norm_label": "return the rendered ``file-list-row`` elements under ``container``." }, { @@ -8901,7 +9126,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L43", "id": "ui_test_file_list_rationale_43", - "community": 377, + "community": 147, "norm_label": "invoke ``element``'s registered click handler (simulates a single-click)." }, { @@ -8910,7 +9135,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L116", "id": "ui_test_file_list_rationale_116", - "community": 378, + "community": 139, "norm_label": "a bare entry defaults ``keep_local`` and ``tombstone`` to false." }, { @@ -8919,7 +9144,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L123", "id": "ui_test_file_list_rationale_123", - "community": 379, + "community": 201, "norm_label": "flipping ``keep_local`` is a modification (drives a re-render)." }, { @@ -8928,7 +9153,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L131", "id": "ui_test_file_list_rationale_131", - "community": 381, + "community": 201, "norm_label": "a file transitioning to a tombstone is a modification." }, { @@ -8937,7 +9162,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L139", "id": "ui_test_file_list_rationale_139", - "community": 380, + "community": 372, "norm_label": "``file_context_keep_local`` is a distinct discriminator value." }, { @@ -8946,7 +9171,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L144", "id": "ui_test_file_list_rationale_144", - "community": 376, + "community": 373, "norm_label": "the renderer wires the keep-local menu item and tombstone row. exercises th" }, { @@ -8955,7 +9180,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L272", "id": "ui_test_file_list_rationale_272", - "community": 211, + "community": 147, "norm_label": "the row whose path matches ``selected_path`` carries the selected fill." }, { @@ -8964,7 +9189,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L285", "id": "ui_test_file_list_rationale_285", - "community": 211, + "community": 147, "norm_label": "a tombstone row carries the data-tombstone attr + dim/italic decoration." }, { @@ -8973,7 +9198,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L294", "id": "ui_test_file_list_rationale_294", - "community": 377, + "community": 147, "norm_label": "single-click selection fires ``on_select`` for files and folders." }, { @@ -8982,7 +9207,7 @@ "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L307", "id": "ui_test_file_list_rationale_307", - "community": 211, + "community": 147, "norm_label": "selection is opt-in: with no ``on_select`` the rows wire no click handler." }, { @@ -8991,133 +9216,151 @@ "source_file": "tests/unit/ui/test_theme.py", "source_location": "L1", "id": "tests_unit_ui_test_theme_py", - "community": 117, + "community": 70, "norm_label": "test_theme.py" }, { - "label": "test_root_css_contains_primary_palette()", + "label": "test_root_css_includes_compact_density_rule()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", "source_location": "L13", + "id": "ui_test_theme_test_root_css_includes_compact_density_rule", + "community": 70, + "norm_label": "test_root_css_includes_compact_density_rule()" + }, + { + "label": "test_root_css_includes_tree_selection_rule()", + "file_type": "code", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L22", + "id": "ui_test_theme_test_root_css_includes_tree_selection_rule", + "community": 70, + "norm_label": "test_root_css_includes_tree_selection_rule()" + }, + { + "label": "test_root_css_contains_primary_palette()", + "file_type": "code", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L32", "id": "ui_test_theme_test_root_css_contains_primary_palette", - "community": 117, + "community": 70, "norm_label": "test_root_css_contains_primary_palette()" }, { "label": "test_root_css_contains_okabe_ito_palette()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L28", + "source_location": "L47", "id": "ui_test_theme_test_root_css_contains_okabe_ito_palette", - "community": 117, + "community": 70, "norm_label": "test_root_css_contains_okabe_ito_palette()" }, { "label": "test_root_css_contains_ui_refresh_surface_tokens()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L43", + "source_location": "L62", "id": "ui_test_theme_test_root_css_contains_ui_refresh_surface_tokens", - "community": 117, + "community": 70, "norm_label": "test_root_css_contains_ui_refresh_surface_tokens()" }, { "label": "test_root_css_emits_previously_undefined_referenced_vars()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L56", + "source_location": "L75", "id": "ui_test_theme_test_root_css_emits_previously_undefined_referenced_vars", - "community": 117, + "community": 70, "norm_label": "test_root_css_emits_previously_undefined_referenced_vars()" }, { "label": "test_root_css_contains_semantic_aliases()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L95", + "source_location": "L114", "id": "ui_test_theme_test_root_css_contains_semantic_aliases", - "community": 117, + "community": 70, "norm_label": "test_root_css_contains_semantic_aliases()" }, { "label": "test_root_css_contains_typography_tokens()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L103", + "source_location": "L122", "id": "ui_test_theme_test_root_css_contains_typography_tokens", - "community": 117, + "community": 70, "norm_label": "test_root_css_contains_typography_tokens()" }, { "label": "test_root_css_contains_spacing_scale()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L111", + "source_location": "L130", "id": "ui_test_theme_test_root_css_contains_spacing_scale", - "community": 117, + "community": 70, "norm_label": "test_root_css_contains_spacing_scale()" }, { "label": "test_root_css_contains_radius_tokens()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L117", + "source_location": "L136", "id": "ui_test_theme_test_root_css_contains_radius_tokens", - "community": 117, + "community": 70, "norm_label": "test_root_css_contains_radius_tokens()" }, { "label": "test_root_css_contains_shadow_tokens()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L124", + "source_location": "L143", "id": "ui_test_theme_test_root_css_contains_shadow_tokens", - "community": 117, + "community": 70, "norm_label": "test_root_css_contains_shadow_tokens()" }, { "label": "test_root_css_navy_tinted_shadows()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L133", + "source_location": "L152", "id": "ui_test_theme_test_root_css_navy_tinted_shadows", - "community": 117, + "community": 70, "norm_label": "test_root_css_navy_tinted_shadows()" }, { "label": "test_root_css_motion_tokens()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L140", + "source_location": "L159", "id": "ui_test_theme_test_root_css_motion_tokens", - "community": 117, + "community": 70, "norm_label": "test_root_css_motion_tokens()" }, { "label": "test_root_css_starts_with_root_block()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L146", + "source_location": "L165", "id": "ui_test_theme_test_root_css_starts_with_root_block", - "community": 117, + "community": 70, "norm_label": "test_root_css_starts_with_root_block()" }, { "label": "test_root_css_includes_body_resets()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L153", + "source_location": "L172", "id": "ui_test_theme_test_root_css_includes_body_resets", - "community": 117, + "community": 70, "norm_label": "test_root_css_includes_body_resets()" }, { "label": "test_resolve_assets_dir_points_at_repo_assets_in_source_layout()", "file_type": "code", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L162", + "source_location": "L181", "id": "ui_test_theme_test_resolve_assets_dir_points_at_repo_assets_in_source_layout", - "community": 117, + "community": 70, "norm_label": "test_resolve_assets_dir_points_at_repo_assets_in_source_layout()" }, { @@ -9126,61 +9369,79 @@ "source_file": "tests/unit/ui/test_theme.py", "source_location": "L1", "id": "ui_test_theme_rationale_1", - "community": 117, + "community": 70, "norm_label": "unit tests for :mod:`exlab_wizard.ui.theme`. the theme module renders the ``:ro" }, + { + "label": "Phase 5 / \u00a74.8: the compact-density rule scopes file-row padding to the .exl", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L14", + "id": "ui_test_theme_rationale_14", + "community": 70, + "norm_label": "phase 5 / \u00a74.8: the compact-density rule scopes file-row padding to the .exl" + }, + { + "label": "Phase 5 / OQ-6: the selected tree node gets the same fill + accent bar as a", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L23", + "id": "ui_test_theme_rationale_23", + "community": 70, + "norm_label": "phase 5 / oq-6: the selected tree node gets the same fill + accent bar as a" + }, { "label": "The main-window refresh tokens are emitted into the :root block.", "file_type": "rationale", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L44", - "id": "ui_test_theme_rationale_44", - "community": 117, + "source_location": "L63", + "id": "ui_test_theme_rationale_63", + "community": 70, "norm_label": "the main-window refresh tokens are emitted into the :root block." }, { "label": "Regression guard: every var(--\u2026) referenced by a UI component is emitted. T", "file_type": "rationale", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L57", - "id": "ui_test_theme_rationale_57", - "community": 117, + "source_location": "L76", + "id": "ui_test_theme_rationale_76", + "community": 70, "norm_label": "regression guard: every var(--...) referenced by a ui component is emitted. t" }, { "label": "All shadows are navy-tinted (DESIGN.md \u00a704).", "file_type": "rationale", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L134", - "id": "ui_test_theme_rationale_134", - "community": 117, + "source_location": "L153", + "id": "ui_test_theme_rationale_153", + "community": 70, "norm_label": "all shadows are navy-tinted (design.md \u00a704)." }, { "label": "The block opens with ``:root {`` per DESIGN.md \u00a707.", "file_type": "rationale", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L147", - "id": "ui_test_theme_rationale_147", - "community": 117, + "source_location": "L166", + "id": "ui_test_theme_rationale_166", + "community": 70, "norm_label": "the block opens with ``:root {`` per design.md \u00a707." }, { "label": "A body / heading / mono reset block follows the ``:root {}``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L154", - "id": "ui_test_theme_rationale_154", - "community": 117, + "source_location": "L173", + "id": "ui_test_theme_rationale_173", + "community": 70, "norm_label": "a body / heading / mono reset block follows the ``:root {}``." }, { "label": "In source layout, the resolver returns ``/assets/``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_theme.py", - "source_location": "L163", - "id": "ui_test_theme_rationale_163", - "community": 117, + "source_location": "L182", + "id": "ui_test_theme_rationale_182", + "community": 70, "norm_label": "in source layout, the resolver returns ``/assets/``." }, { @@ -9189,7 +9450,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L1", "id": "tests_unit_ui_test_settings_nas_remote_py", - "community": 31, + "community": 32, "norm_label": "test_settings_nas_remote.py" }, { @@ -9198,7 +9459,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L36", "id": "ui_test_settings_nas_remote_nas_equipment", - "community": 31, + "community": 32, "norm_label": "_nas_equipment()" }, { @@ -9207,7 +9468,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L47", "id": "ui_test_settings_nas_remote_stage_equipment", - "community": 31, + "community": 32, "norm_label": "_stage_equipment()" }, { @@ -9216,7 +9477,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L59", "id": "ui_test_settings_nas_remote_config_with", - "community": 31, + "community": 32, "norm_label": "_config_with()" }, { @@ -9225,7 +9486,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L73", "id": "ui_test_settings_nas_remote_testids", - "community": 31, + "community": 32, "norm_label": "_testids()" }, { @@ -9234,7 +9495,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L81", "id": "ui_test_settings_nas_remote_section_body", - "community": 31, + "community": 32, "norm_label": "_section_body()" }, { @@ -9243,7 +9504,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L90", "id": "ui_test_settings_nas_remote_section_testids", - "community": 31, + "community": 32, "norm_label": "_section_testids()" }, { @@ -9252,7 +9513,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L95", "id": "ui_test_settings_nas_remote_text_of", - "community": 31, + "community": 32, "norm_label": "_text_of()" }, { @@ -9261,7 +9522,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L114", "id": "ui_test_settings_nas_remote_find", - "community": 31, + "community": 32, "norm_label": "_find()" }, { @@ -9270,7 +9531,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L121", "id": "ui_test_settings_nas_remote_find_all", - "community": 31, + "community": 32, "norm_label": "_find_all()" }, { @@ -9279,7 +9540,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L129", "id": "ui_test_settings_nas_remote_click_handler", - "community": 31, + "community": 32, "norm_label": "_click_handler()" }, { @@ -9288,7 +9549,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L148", "id": "ui_test_settings_nas_remote_click", - "community": 31, + "community": 32, "norm_label": "_click()" }, { @@ -9297,7 +9558,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L154", "id": "ui_test_settings_nas_remote_draft_of", - "community": 31, + "community": 32, "norm_label": "_draft_of()" }, { @@ -9306,7 +9567,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L166", "id": "ui_test_settings_nas_remote_test_sections_omit_nas_remote_without_nas_equipment", - "community": 31, + "community": 32, "norm_label": "test_sections_omit_nas_remote_without_nas_equipment()" }, { @@ -9315,7 +9576,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L174", "id": "ui_test_settings_nas_remote_test_sections_insert_nas_remote_after_equipment", - "community": 31, + "community": 32, "norm_label": "test_sections_insert_nas_remote_after_equipment()" }, { @@ -9324,7 +9585,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L188", "id": "ui_test_settings_nas_remote_test_section_renders_configured_remote_and_base_root", - "community": 31, + "community": 32, "norm_label": "test_section_renders_configured_remote_and_base_root()" }, { @@ -9333,7 +9594,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L204", "id": "ui_test_settings_nas_remote_test_section_has_no_password_input", - "community": 31, + "community": 32, "norm_label": "test_section_has_no_password_input()" }, { @@ -9342,7 +9603,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L220", "id": "ui_test_settings_nas_remote_test_section_has_test_connection_control", - "community": 31, + "community": 32, "norm_label": "test_section_has_test_connection_control()" }, { @@ -9351,7 +9612,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L232", "id": "ui_test_settings_nas_remote_test_status_badge_found_when_remote_available", - "community": 31, + "community": 32, "norm_label": "test_status_badge_found_when_remote_available()" }, { @@ -9360,7 +9621,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L245", "id": "ui_test_settings_nas_remote_test_status_badge_not_found_when_remote_absent", - "community": 31, + "community": 32, "norm_label": "test_status_badge_not_found_when_remote_absent()" }, { @@ -9369,7 +9630,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L259", "id": "ui_test_settings_nas_remote_test_nav_entry_present_when_nas_equipment_exists", - "community": 31, + "community": 32, "norm_label": "test_nav_entry_present_when_nas_equipment_exists()" }, { @@ -9378,7 +9639,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L270", "id": "ui_test_settings_nas_remote_test_nav_entry_absent_for_stage_only_config", - "community": 31, + "community": 32, "norm_label": "test_nav_entry_absent_for_stage_only_config()" }, { @@ -9387,7 +9648,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L285", "id": "ui_test_settings_nas_remote_test_test_connection_handler_invokes_callback_and_renders_panel", - "community": 31, + "community": 32, "norm_label": "test_test_connection_handler_invokes_callback_and_renders_panel()" }, { @@ -9396,7 +9657,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L312", "id": "ui_test_settings_nas_remote_test_test_connection_handler_awaits_coroutine_result", - "community": 31, + "community": 32, "norm_label": "test_test_connection_handler_awaits_coroutine_result()" }, { @@ -9405,7 +9666,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L340", "id": "ui_test_settings_nas_remote_test_test_connection_handler_no_op_without_callback", - "community": 31, + "community": 32, "norm_label": "test_test_connection_handler_no_op_without_callback()" }, { @@ -9414,7 +9675,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L360", "id": "ui_test_settings_nas_remote_test_save_emits_validated_config", - "community": 31, + "community": 32, "norm_label": "test_save_emits_validated_config()" }, { @@ -9423,7 +9684,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L372", "id": "ui_test_settings_nas_remote_test_save_is_noop_when_no_handler_wired", - "community": 31, + "community": 32, "norm_label": "test_save_is_noop_when_no_handler_wired()" }, { @@ -9432,7 +9693,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L382", "id": "ui_test_settings_nas_remote_test_save_swallows_validation_error_and_does_not_emit", - "community": 31, + "community": 32, "norm_label": "test_save_swallows_validation_error_and_does_not_emit()" }, { @@ -9441,7 +9702,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L403", "id": "ui_test_settings_nas_remote_test_discard_invokes_handler_with_state", - "community": 31, + "community": 32, "norm_label": "test_discard_invokes_handler_with_state()" }, { @@ -9450,7 +9711,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L421", "id": "ui_test_settings_nas_remote_test_nav_click_selects_section_and_invokes_callback", - "community": 31, + "community": 32, "norm_label": "test_nav_click_selects_section_and_invokes_callback()" }, { @@ -9459,7 +9720,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L435", "id": "ui_test_settings_nas_remote_test_nav_click_without_callback_does_not_raise", - "community": 31, + "community": 32, "norm_label": "test_nav_click_without_callback_does_not_raise()" }, { @@ -9468,7 +9729,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L451", "id": "ui_test_settings_nas_remote_test_equipment_add_appends_row", - "community": 31, + "community": 32, "norm_label": "test_equipment_add_appends_row()" }, { @@ -9477,7 +9738,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L471", "id": "ui_test_settings_nas_remote_test_equipment_add_rejects_duplicate_id", - "community": 31, + "community": 32, "norm_label": "test_equipment_add_rejects_duplicate_id()" }, { @@ -9486,7 +9747,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L488", "id": "ui_test_settings_nas_remote_test_equipment_add_rejects_invalid_id", - "community": 31, + "community": 32, "norm_label": "test_equipment_add_rejects_invalid_id()" }, { @@ -9495,7 +9756,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L511", "id": "ui_test_settings_nas_remote_test_scan_ext_chip_remove_drops_entry", - "community": 31, + "community": 32, "norm_label": "test_scan_ext_chip_remove_drops_entry()" }, { @@ -9504,7 +9765,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L525", "id": "ui_test_settings_nas_remote_test_scan_ext_chip_reset_restores_defaults", - "community": 31, + "community": 32, "norm_label": "test_scan_ext_chip_reset_restores_defaults()" }, { @@ -9513,7 +9774,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L541", "id": "ui_test_settings_nas_remote_test_scan_ext_chip_add_validates_leading_dot", - "community": 31, + "community": 32, "norm_label": "test_scan_ext_chip_add_validates_leading_dot()" }, { @@ -9522,7 +9783,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L571", "id": "ui_test_settings_nas_remote_test_operators_chip_add_appends_value", - "community": 31, + "community": 32, "norm_label": "test_operators_chip_add_appends_value()" }, { @@ -9549,7 +9810,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L602", "id": "ui_test_settings_nas_remote_fire_change", - "community": 31, + "community": 32, "norm_label": "_fire_change()" }, { @@ -9558,7 +9819,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L607", "id": "ui_test_settings_nas_remote_test_autostart_toggle_invokes_setter", - "community": 31, + "community": 32, "norm_label": "test_autostart_toggle_invokes_setter()" }, { @@ -9567,7 +9828,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L620", "id": "ui_test_settings_nas_remote_test_autostart_toggle_reverts_when_setter_disagrees", - "community": 31, + "community": 32, "norm_label": "test_autostart_toggle_reverts_when_setter_disagrees()" }, { @@ -9576,7 +9837,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L641", "id": "ui_test_settings_nas_remote_test_autostart_disabled_when_no_setter_wired", - "community": 31, + "community": 32, "norm_label": "test_autostart_disabled_when_no_setter_wired()" }, { @@ -9585,7 +9846,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L654", "id": "ui_test_settings_nas_remote_test_quit_disabled_when_no_handler_wired", - "community": 31, + "community": 32, "norm_label": "test_quit_disabled_when_no_handler_wired()" }, { @@ -9594,7 +9855,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L664", "id": "ui_test_settings_nas_remote_test_quit_confirm_dialog_runs_callback", - "community": 31, + "community": 32, "norm_label": "test_quit_confirm_dialog_runs_callback()" }, { @@ -9603,7 +9864,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L691", "id": "ui_test_settings_nas_remote_test_render_returns_payload_dict_when_nicegui_unavailable", - "community": 31, + "community": 32, "norm_label": "test_render_returns_payload_dict_when_nicegui_unavailable()" }, { @@ -9612,7 +9873,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L1", "id": "ui_test_settings_nas_remote_rationale_1", - "community": 31, + "community": 32, "norm_label": "tests for the settings nas-remote section (rclone.conf migration). the section" }, { @@ -9621,7 +9882,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L82", "id": "ui_test_settings_nas_remote_rationale_82", - "community": 31, + "community": 32, "norm_label": "return the rendered body container for ``section`` (or the page)." }, { @@ -9630,7 +9891,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L91", "id": "ui_test_settings_nas_remote_rationale_91", - "community": 31, + "community": 32, "norm_label": "testids confined to one section body (the whole page renders all)." }, { @@ -9639,7 +9900,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L130", "id": "ui_test_settings_nas_remote_rationale_130", - "community": 31, + "community": 32, "norm_label": "return the user callback registered for ``event_type`` on a widget. ``on_cl" }, { @@ -9648,7 +9909,7 @@ "source_file": "tests/unit/ui/test_settings_nas_remote.py", "source_location": "L155", "id": "ui_test_settings_nas_remote_rationale_155", - "community": 31, + "community": 32, "norm_label": "pull the in-progress draft out of the save handler's closure." }, { @@ -9657,7 +9918,7 @@ "source_file": "tests/unit/ui/test_breadcrumb.py", "source_location": "L1", "id": "tests_unit_ui_test_breadcrumb_py", - "community": 227, + "community": 223, "norm_label": "test_breadcrumb.py" }, { @@ -9666,7 +9927,7 @@ "source_file": "tests/unit/ui/test_breadcrumb.py", "source_location": "L11", "id": "ui_test_breadcrumb_test_segments_from_none_returns_empty", - "community": 227, + "community": 223, "norm_label": "test_segments_from_none_returns_empty()" }, { @@ -9675,7 +9936,7 @@ "source_file": "tests/unit/ui/test_breadcrumb.py", "source_location": "L15", "id": "ui_test_breadcrumb_test_segments_from_empty_returns_empty", - "community": 227, + "community": 223, "norm_label": "test_segments_from_empty_returns_empty()" }, { @@ -9684,7 +9945,7 @@ "source_file": "tests/unit/ui/test_breadcrumb.py", "source_location": "L19", "id": "ui_test_breadcrumb_test_segments_for_run_node", - "community": 227, + "community": 223, "norm_label": "test_segments_for_run_node()" }, { @@ -9693,7 +9954,7 @@ "source_file": "tests/unit/ui/test_breadcrumb.py", "source_location": "L32", "id": "ui_test_breadcrumb_test_segments_strip_empty_components", - "community": 227, + "community": 223, "norm_label": "test_segments_strip_empty_components()" }, { @@ -9702,7 +9963,7 @@ "source_file": "tests/unit/ui/test_breadcrumb.py", "source_location": "L1", "id": "ui_test_breadcrumb_rationale_1", - "community": 227, + "community": 223, "norm_label": "unit tests for ``ui/components/breadcrumb``. redesign \u00a74.7 / decision 7a." }, { @@ -9711,7 +9972,7 @@ "source_file": "tests/unit/ui/test_breadcrumb.py", "source_location": "L33", "id": "ui_test_breadcrumb_rationale_33", - "community": 227, + "community": 223, "norm_label": "a double-slash or trailing slash doesn't produce empty segments." }, { @@ -9720,7 +9981,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L1", "id": "tests_unit_ui_test_sync_rollup_py", - "community": 178, + "community": 183, "norm_label": "test_sync_rollup.py" }, { @@ -9729,7 +9990,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L15", "id": "ui_test_sync_rollup_test_empty_input_returns_none", - "community": 178, + "community": 183, "norm_label": "test_empty_input_returns_none()" }, { @@ -9738,7 +9999,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L19", "id": "ui_test_sync_rollup_test_all_none_returns_none", - "community": 178, + "community": 183, "norm_label": "test_all_none_returns_none()" }, { @@ -9747,7 +10008,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L23", "id": "ui_test_sync_rollup_test_unknown_values_ignored", - "community": 178, + "community": 183, "norm_label": "test_unknown_values_ignored()" }, { @@ -9756,7 +10017,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L27", "id": "ui_test_sync_rollup_test_single_status_rolls_up_to_itself", - "community": 178, + "community": 183, "norm_label": "test_single_status_rolls_up_to_itself()" }, { @@ -9765,7 +10026,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L31", "id": "ui_test_sync_rollup_test_failed_dominates_everything", - "community": 178, + "community": 183, "norm_label": "test_failed_dominates_everything()" }, { @@ -9774,7 +10035,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L35", "id": "ui_test_sync_rollup_test_blocked_beats_pending_synced_cleaned", - "community": 178, + "community": 183, "norm_label": "test_blocked_beats_pending_synced_cleaned()" }, { @@ -9783,7 +10044,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L39", "id": "ui_test_sync_rollup_test_pending_beats_synced_and_cleaned", - "community": 178, + "community": 183, "norm_label": "test_pending_beats_synced_and_cleaned()" }, { @@ -9792,7 +10053,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L43", "id": "ui_test_sync_rollup_test_synced_beats_cleaned", - "community": 178, + "community": 183, "norm_label": "test_synced_beats_cleaned()" }, { @@ -9801,7 +10062,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L47", "id": "ui_test_sync_rollup_test_cleaned_is_lowest", - "community": 178, + "community": 183, "norm_label": "test_cleaned_is_lowest()" }, { @@ -9810,7 +10071,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L51", "id": "ui_test_sync_rollup_test_none_and_unknown_excluded_but_known_survives", - "community": 178, + "community": 183, "norm_label": "test_none_and_unknown_excluded_but_known_survives()" }, { @@ -9819,7 +10080,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L55", "id": "ui_test_sync_rollup_test_full_severity_order", - "community": 178, + "community": 183, "norm_label": "test_full_severity_order()" }, { @@ -9828,7 +10089,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L63", "id": "ui_test_sync_rollup_test_accepts_syncstatus_enum_members_directly", - "community": 178, + "community": 183, "norm_label": "test_accepts_syncstatus_enum_members_directly()" }, { @@ -9837,7 +10098,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L1", "id": "ui_test_sync_rollup_rationale_1", - "community": 178, + "community": 183, "norm_label": "unit tests for the folder-level sync-status rollup (redesign \u00a74.6)." }, { @@ -9846,7 +10107,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L56", "id": "ui_test_sync_rollup_rationale_56", - "community": 178, + "community": 183, "norm_label": "failed > blocked > pending > synced > cleaned: each prefix's rollup is its f" }, { @@ -9855,7 +10116,7 @@ "source_file": "tests/unit/ui/test_sync_rollup.py", "source_location": "L64", "id": "ui_test_sync_rollup_rationale_64", - "community": 178, + "community": 183, "norm_label": "syncstatus is a strenum, so passing members (not .value strings) works. gua" }, { @@ -9864,7 +10125,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L1", "id": "tests_unit_ui_test_factories_smoke_py", - "community": 43, + "community": 66, "norm_label": "test_factories_smoke.py" }, { @@ -9873,7 +10134,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L50", "id": "ui_test_factories_smoke_slot", - "community": 43, + "community": 66, "norm_label": "_slot()" }, { @@ -9882,7 +10143,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L56", "id": "ui_test_factories_smoke_test_smoke_mode_badge_renders_in_slot", - "community": 43, + "community": 66, "norm_label": "test_smoke_mode_badge_renders_in_slot()" }, { @@ -9891,7 +10152,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L65", "id": "ui_test_factories_smoke_test_smoke_test_run_badge_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_test_run_badge_renders()" }, { @@ -9900,7 +10161,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L71", "id": "ui_test_factories_smoke_test_smoke_override_badge_renders_with_callback", - "community": 43, + "community": 66, "norm_label": "test_smoke_override_badge_renders_with_callback()" }, { @@ -9909,7 +10170,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L81", "id": "ui_test_factories_smoke_test_smoke_sync_status_icon_renders_each_state", - "community": 43, + "community": 66, "norm_label": "test_smoke_sync_status_icon_renders_each_state()" }, { @@ -9918,7 +10179,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L97", "id": "ui_test_factories_smoke_test_smoke_session_progress_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_session_progress_renders()" }, { @@ -9927,7 +10188,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L112", "id": "ui_test_factories_smoke_test_smoke_credential_field_renders_each_state", - "community": 43, + "community": 66, "norm_label": "test_smoke_credential_field_renders_each_state()" }, { @@ -9936,7 +10197,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L128", "id": "ui_test_factories_smoke_credential_testids", - "community": 43, + "community": 66, "norm_label": "_credential_testids()" }, { @@ -9945,7 +10206,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L138", "id": "ui_test_factories_smoke_test_credential_field_editing_state_renders_a_password_input", - "community": 43, + "community": 66, "norm_label": "test_credential_field_editing_state_renders_a_password_input()" }, { @@ -9954,7 +10215,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L160", "id": "ui_test_factories_smoke_test_credential_field_not_set_state_renders_set_button_without_input", - "community": 43, + "community": 66, "norm_label": "test_credential_field_not_set_state_renders_set_button_without_input()" }, { @@ -9963,7 +10224,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L174", "id": "ui_test_factories_smoke_test_credential_field_set_state_renders_replace_and_clear_buttons", - "community": 43, + "community": 66, "norm_label": "test_credential_field_set_state_renders_replace_and_clear_buttons()" }, { @@ -9972,7 +10233,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L188", "id": "ui_test_factories_smoke_test_smoke_test_connection_panel_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_test_connection_panel_renders()" }, { @@ -9981,7 +10242,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L204", "id": "ui_test_factories_smoke_test_smoke_filter_chips_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_filter_chips_renders()" }, { @@ -9990,7 +10251,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L214", "id": "ui_test_factories_smoke_test_smoke_status_bar_segment_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_status_bar_segment_renders()" }, { @@ -9999,7 +10260,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L233", "id": "ui_test_factories_smoke_test_smoke_banner_stack_renders_with_active_banners", - "community": 43, + "community": 353, "norm_label": "test_smoke_banner_stack_renders_with_active_banners()" }, { @@ -10008,7 +10269,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L247", "id": "ui_test_factories_smoke_test_smoke_operations_modal_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_operations_modal_renders()" }, { @@ -10017,7 +10278,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L277", "id": "ui_test_factories_smoke_test_smoke_bandwidth_schedule_editor_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_bandwidth_schedule_editor_renders()" }, { @@ -10026,7 +10287,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L301", "id": "ui_test_factories_smoke_test_smoke_validation_summary_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_validation_summary_renders()" }, { @@ -10035,7 +10296,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L326", "id": "ui_test_factories_smoke_test_smoke_tree_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_tree_renders()" }, { @@ -10044,7 +10305,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L348", "id": "ui_test_factories_smoke_test_smoke_welcome_page_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_welcome_page_renders()" }, { @@ -10053,7 +10314,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L356", "id": "ui_test_factories_smoke_test_smoke_file_explorer_page_renders_setup_complete", - "community": 43, + "community": 66, "norm_label": "test_smoke_file_explorer_page_renders_setup_complete()" }, { @@ -10062,7 +10323,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L373", "id": "ui_test_factories_smoke_test_smoke_file_explorer_page_renders_setup_incomplete", - "community": 43, + "community": 353, "norm_label": "test_smoke_file_explorer_page_renders_setup_incomplete()" }, { @@ -10071,7 +10332,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L389", "id": "ui_test_factories_smoke_test_smoke_wizard_project_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_wizard_project_renders()" }, { @@ -10080,7 +10341,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L397", "id": "ui_test_factories_smoke_test_smoke_wizard_run_renders_test_mode", - "community": 43, + "community": 66, "norm_label": "test_smoke_wizard_run_renders_test_mode()" }, { @@ -10089,7 +10350,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L405", "id": "ui_test_factories_smoke_test_smoke_wizard_run_renders_experimental_mode", - "community": 43, + "community": 66, "norm_label": "test_smoke_wizard_run_renders_experimental_mode()" }, { @@ -10098,7 +10359,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L413", "id": "ui_test_factories_smoke_test_smoke_settings_page_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_settings_page_renders()" }, { @@ -10107,7 +10368,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L422", "id": "ui_test_factories_smoke_test_smoke_settings_page_each_section_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_settings_page_each_section_renders()" }, { @@ -10116,7 +10377,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L432", "id": "ui_test_factories_smoke_test_smoke_settings_page_setup_incomplete_auto_selects_first", - "community": 43, + "community": 66, "norm_label": "test_smoke_settings_page_setup_incomplete_auto_selects_first()" }, { @@ -10125,7 +10386,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L446", "id": "ui_test_factories_smoke_test_settings_lims_section_renders_credential_field_with_e2e_hooks", - "community": 43, + "community": 66, "norm_label": "test_settings_lims_section_renders_credential_field_with_e2e_hooks()" }, { @@ -10134,7 +10395,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L461", "id": "ui_test_factories_smoke_test_settings_lims_section_credential_field_opens_set_when_password_present", - "community": 43, + "community": 66, "norm_label": "test_settings_lims_section_credential_field_opens_set_when_password_present()" }, { @@ -10143,7 +10404,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L475", "id": "ui_test_factories_smoke_test_smoke_problems_page_renders", - "community": 43, + "community": 66, "norm_label": "test_smoke_problems_page_renders()" }, { @@ -10152,7 +10413,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L507", "id": "ui_test_factories_smoke_test_smoke_problems_page_renders_empty_state", - "community": 43, + "community": 66, "norm_label": "test_smoke_problems_page_renders_empty_state()" }, { @@ -10161,7 +10422,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L520", "id": "ui_test_factories_smoke_test_smoke_register_theme_returns_css", - "community": 43, + "community": 66, "norm_label": "test_smoke_register_theme_returns_css()" }, { @@ -10170,7 +10431,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L525", "id": "ui_test_factories_smoke_test_smoke_bind_global_shortcuts_does_not_raise", - "community": 43, + "community": 66, "norm_label": "test_smoke_bind_global_shortcuts_does_not_raise()" }, { @@ -10179,7 +10440,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L1", "id": "ui_test_factories_smoke_rationale_1", - "community": 43, + "community": 66, "norm_label": "smoke tests that invoke the nicegui factory functions. the factory functions cr" }, { @@ -10188,7 +10449,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L51", "id": "ui_test_factories_smoke_rationale_51", - "community": 43, + "community": 66, "norm_label": "return a nicegui slot we can use as a parent for factory calls." }, { @@ -10197,7 +10458,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L129", "id": "ui_test_factories_smoke_rationale_129", - "community": 43, + "community": 66, "norm_label": "collect every ``data-testid`` in an element's subtree." }, { @@ -10206,7 +10467,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L139", "id": "ui_test_factories_smoke_rationale_139", - "community": 43, + "community": 66, "norm_label": "regression: the editing state must expose an inline password input." }, { @@ -10215,7 +10476,7 @@ "source_file": "tests/unit/ui/test_factories_smoke.py", "source_location": "L447", "id": "ui_test_factories_smoke_rationale_447", - "community": 43, + "community": 66, "norm_label": "the lims section must expose the password credential row." }, { @@ -10224,7 +10485,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L1", "id": "tests_unit_ui_test_design_py", - "community": 328, + "community": 301, "norm_label": "test_design.py" }, { @@ -10233,7 +10494,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L14", "id": "ui_test_design_test_primary_palette_matches_designmd", - "community": 328, + "community": 301, "norm_label": "test_primary_palette_matches_designmd()" }, { @@ -10242,7 +10503,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L29", "id": "ui_test_design_test_ui_refresh_surface_tokens_match_designmd", - "community": 391, + "community": 301, "norm_label": "test_ui_refresh_surface_tokens_match_designmd()" }, { @@ -10251,7 +10512,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L48", "id": "ui_test_design_test_okabe_ito_palette_matches_designmd", - "community": 391, + "community": 301, "norm_label": "test_okabe_ito_palette_matches_designmd()" }, { @@ -10260,7 +10521,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L61", "id": "ui_test_design_test_semantic_aliases_are_okabe_ito", - "community": 421, + "community": 462, "norm_label": "test_semantic_aliases_are_okabe_ito()" }, { @@ -10269,7 +10530,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L70", "id": "ui_test_design_test_warning_token_is_oi_orange", - "community": 430, + "community": 468, "norm_label": "test_warning_token_is_oi_orange()" }, { @@ -10278,7 +10539,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L76", "id": "ui_test_design_test_typography_uses_frontend_override", - "community": 328, + "community": 470, "norm_label": "test_typography_uses_frontend_override()" }, { @@ -10287,7 +10548,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L86", "id": "ui_test_design_test_type_scale_matches_designmd", - "community": 426, + "community": 458, "norm_label": "test_type_scale_matches_designmd()" }, { @@ -10296,7 +10557,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L100", "id": "ui_test_design_test_spacing_scale_4px_grid", - "community": 422, + "community": 465, "norm_label": "test_spacing_scale_4px_grid()" }, { @@ -10305,7 +10566,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L117", "id": "ui_test_design_test_radius_tokens_match_designmd", - "community": 431, + "community": 463, "norm_label": "test_radius_tokens_match_designmd()" }, { @@ -10314,7 +10575,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L126", "id": "ui_test_design_test_shadows_are_navy_tinted", - "community": 428, + "community": 461, "norm_label": "test_shadows_are_navy_tinted()" }, { @@ -10323,7 +10584,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L133", "id": "ui_test_design_test_motion_tokens_match_designmd", - "community": 420, + "community": 459, "norm_label": "test_motion_tokens_match_designmd()" }, { @@ -10332,7 +10593,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L140", "id": "ui_test_design_test_okabe_ito_series_order_is_fixed", - "community": 424, + "community": 457, "norm_label": "test_okabe_ito_series_order_is_fixed()" }, { @@ -10341,7 +10602,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L154", "id": "ui_test_design_test_vermilion_is_last_in_series", - "community": 423, + "community": 460, "norm_label": "test_vermilion_is_last_in_series()" }, { @@ -10350,7 +10611,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L160", "id": "ui_test_design_test_no_blue_collision_in_series_first_six", - "community": 425, + "community": 466, "norm_label": "test_no_blue_collision_in_series_first_six()" }, { @@ -10359,7 +10620,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L171", "id": "ui_test_design_test_badge_text_variants_are_wcag_aa", - "community": 432, + "community": 464, "norm_label": "test_badge_text_variants_are_wcag_aa()" }, { @@ -10368,7 +10629,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L183", "id": "ui_test_design_test_alert_text_variants_match_designmd", - "community": 429, + "community": 469, "norm_label": "test_alert_text_variants_match_designmd()" }, { @@ -10377,7 +10638,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L194", "id": "ui_test_design_test_yellow_is_present_but_only_for_fills", - "community": 427, + "community": 467, "norm_label": "test_yellow_is_present_but_only_for_fills()" }, { @@ -10386,7 +10647,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L1", "id": "ui_test_design_rationale_1", - "community": 328, + "community": 301, "norm_label": "token-equality tests for :mod:`exlab_wizard.ui.design`. the tests assert each c" }, { @@ -10395,7 +10656,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L15", "id": "ui_test_design_rationale_15", - "community": 328, + "community": 301, "norm_label": "primary palette hexes are verbatim from design.md \u00a701." }, { @@ -10404,7 +10665,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L30", "id": "ui_test_design_rationale_30", - "community": 391, + "community": 301, "norm_label": "main-window refresh surface tokens (design.md \u00a702 ui chrome palette). sever" }, { @@ -10413,7 +10674,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L49", "id": "ui_test_design_rationale_49", - "community": 391, + "community": 301, "norm_label": "okabe-ito hexes are verbatim from design.md \u00a701." }, { @@ -10422,7 +10683,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L62", "id": "ui_test_design_rationale_62", - "community": 421, + "community": 462, "norm_label": "semantic tokens alias the okabe-ito palette per design.md \u00a701." }, { @@ -10431,7 +10692,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L71", "id": "ui_test_design_rationale_71", - "community": 430, + "community": 468, "norm_label": "frontend \u00a72.1.4: warning is canonically ``--oi-orange``." }, { @@ -10440,7 +10701,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L77", "id": "ui_test_design_rationale_77", - "community": 328, + "community": 470, "norm_label": "frontend \u00a72.1.3 overrides dm sans / dm mono with ibm plex / system mono." }, { @@ -10449,7 +10710,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L87", "id": "ui_test_design_rationale_87", - "community": 426, + "community": 458, "norm_label": "type scale tokens are verbatim from design.md \u00a702." }, { @@ -10458,7 +10719,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L101", "id": "ui_test_design_rationale_101", - "community": 422, + "community": 465, "norm_label": "spacing tokens follow the 4px grid (design.md \u00a703)." }, { @@ -10467,7 +10728,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L118", "id": "ui_test_design_rationale_118", - "community": 431, + "community": 463, "norm_label": "border radius tokens (design.md \u00a704)." }, { @@ -10476,7 +10737,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L127", "id": "ui_test_design_rationale_127", - "community": 428, + "community": 461, "norm_label": "all shadow definitions use ``rgba(0,54,96,...)`` (design.md \u00a704)." }, { @@ -10485,7 +10746,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L134", "id": "ui_test_design_rationale_134", - "community": 420, + "community": 459, "norm_label": "motion tokens (design.md \u00a707)." }, { @@ -10494,7 +10755,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L141", "id": "ui_test_design_rationale_141", - "community": 424, + "community": 457, "norm_label": "series order is fixed (design.md absolute constraint)." }, { @@ -10503,7 +10764,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L155", "id": "ui_test_design_rationale_155", - "community": 423, + "community": 460, "norm_label": "vermilion is reserved for the error / alert series (design.md \u00a706)." }, { @@ -10512,7 +10773,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L161", "id": "ui_test_design_rationale_161", - "community": 425, + "community": 466, "norm_label": "frontend rules (design.md): series 5 is oi_blue but only after 4 prior series." }, { @@ -10521,7 +10782,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L172", "id": "ui_test_design_rationale_172", - "community": 432, + "community": 464, "norm_label": "badge text variants are the documented darkened hexes (design.md \u00a705)." }, { @@ -10530,7 +10791,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L184", "id": "ui_test_design_rationale_184", - "community": 429, + "community": 469, "norm_label": "alert text variants are the documented hexes (design.md \u00a705)." }, { @@ -10539,7 +10800,7 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L195", "id": "ui_test_design_rationale_195", - "community": 427, + "community": 467, "norm_label": "``#f0e442`` is exposed as a token but never used for chrome. the chip strip" }, { @@ -10548,7 +10809,7 @@ "source_file": "tests/unit/ui/test_travelling_badge.py", "source_location": "L1", "id": "tests_unit_ui_test_travelling_badge_py", - "community": 138, + "community": 143, "norm_label": "test_travelling_badge.py" }, { @@ -10557,7 +10818,7 @@ "source_file": "tests/unit/ui/test_travelling_badge.py", "source_location": "L17", "id": "ui_test_travelling_badge_hard", - "community": 138, + "community": 143, "norm_label": "_hard()" }, { @@ -10566,7 +10827,7 @@ "source_file": "tests/unit/ui/test_travelling_badge.py", "source_location": "L21", "id": "ui_test_travelling_badge_soft", - "community": 138, + "community": 143, "norm_label": "_soft()" }, { @@ -10575,7 +10836,7 @@ "source_file": "tests/unit/ui/test_travelling_badge.py", "source_location": "L25", "id": "ui_test_travelling_badge_test_badge_on_root_when_all_collapsed", - "community": 138, + "community": 143, "norm_label": "test_badge_on_root_when_all_collapsed()" }, { @@ -10584,7 +10845,7 @@ "source_file": "tests/unit/ui/test_travelling_badge.py", "source_location": "L34", "id": "ui_test_travelling_badge_test_badge_travels_inward_as_nodes_expand", - "community": 138, + "community": 143, "norm_label": "test_badge_travels_inward_as_nodes_expand()" }, { @@ -10593,7 +10854,7 @@ "source_file": "tests/unit/ui/test_travelling_badge.py", "source_location": "L41", "id": "ui_test_travelling_badge_test_badge_lands_on_leaf_when_fully_expanded", - "community": 138, + "community": 143, "norm_label": "test_badge_lands_on_leaf_when_fully_expanded()" }, { @@ -10602,7 +10863,7 @@ "source_file": "tests/unit/ui/test_travelling_badge.py", "source_location": "L52", "id": "ui_test_travelling_badge_test_red_beats_amber_when_aggregated_on_same_node", - "community": 138, + "community": 143, "norm_label": "test_red_beats_amber_when_aggregated_on_same_node()" }, { @@ -10611,7 +10872,7 @@ "source_file": "tests/unit/ui/test_travelling_badge.py", "source_location": "L62", "id": "ui_test_travelling_badge_test_amber_only_when_no_hard_findings", - "community": 138, + "community": 143, "norm_label": "test_amber_only_when_no_hard_findings()" }, { @@ -10620,7 +10881,7 @@ "source_file": "tests/unit/ui/test_travelling_badge.py", "source_location": "L68", "id": "ui_test_travelling_badge_test_two_equipment_get_independent_badges", - "community": 138, + "community": 143, "norm_label": "test_two_equipment_get_independent_badges()" }, { @@ -10629,7 +10890,7 @@ "source_file": "tests/unit/ui/test_travelling_badge.py", "source_location": "L1", "id": "ui_test_travelling_badge_rationale_1", - "community": 138, + "community": 143, "norm_label": "unit tests for the travelling problem-badge pure function. gui/orchestrator red" }, { @@ -10638,7 +10899,7 @@ "source_file": "tests/unit/ui/test_travelling_badge.py", "source_location": "L26", "id": "ui_test_travelling_badge_rationale_26", - "community": 138, + "community": 143, "norm_label": "all collapsed: the badge lives on the shallowest collapsed ancestor \u2014 the ro" }, { @@ -10647,7 +10908,7 @@ "source_file": "tests/unit/ui/test_travelling_badge.py", "source_location": "L35", "id": "ui_test_travelling_badge_rationale_35", - "community": 138, + "community": 143, "norm_label": "expanding the equipment node moves the badge to the project." }, { @@ -10656,7 +10917,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L1", "id": "tests_unit_ui_test_wizard_project_page_py", - "community": 95, + "community": 100, "norm_label": "test_wizard_project_page.py" }, { @@ -10665,7 +10926,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L30", "id": "ui_test_wizard_project_page_test_can_advance_equipment_step_requires_selection", - "community": 95, + "community": 100, "norm_label": "test_can_advance_equipment_step_requires_selection()" }, { @@ -10674,7 +10935,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L37", "id": "ui_test_wizard_project_page_test_can_advance_variables_step_always_true", - "community": 95, + "community": 100, "norm_label": "test_can_advance_variables_step_always_true()" }, { @@ -10683,7 +10944,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L45", "id": "ui_test_wizard_project_page_test_can_advance_confirm_step_always_true", - "community": 95, + "community": 100, "norm_label": "test_can_advance_confirm_step_always_true()" }, { @@ -10692,7 +10953,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L49", "id": "ui_test_wizard_project_page_test_can_advance_default_step_is_lims_project", - "community": 95, + "community": 100, "norm_label": "test_can_advance_default_step_is_lims_project()" }, { @@ -10701,7 +10962,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L58", "id": "ui_test_wizard_project_page_test_can_advance_readme_blocks_on_partial_core_fields", - "community": 95, + "community": 100, "norm_label": "test_can_advance_readme_blocks_on_partial_core_fields()" }, { @@ -10710,7 +10971,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L71", "id": "ui_test_wizard_project_page_test_disk_space_message_none_when_unknown", - "community": 95, + "community": 100, "norm_label": "test_disk_space_message_none_when_unknown()" }, { @@ -10719,7 +10980,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L76", "id": "ui_test_wizard_project_page_test_disk_space_message_none_when_ample", - "community": 95, + "community": 100, "norm_label": "test_disk_space_message_none_when_ample()" }, { @@ -10728,7 +10989,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L81", "id": "ui_test_wizard_project_page_test_disk_space_message_present_just_below_threshold", - "community": 95, + "community": 100, "norm_label": "test_disk_space_message_present_just_below_threshold()" }, { @@ -10737,7 +10998,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L92", "id": "ui_test_wizard_project_page_test_state_lims_project_name_defaults_empty_and_is_settable", - "community": 95, + "community": 100, "norm_label": "test_state_lims_project_name_defaults_empty_and_is_settable()" }, { @@ -10746,7 +11007,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L104", "id": "ui_test_wizard_project_page_test_render_project_wizard_with_choices_does_not_raise", - "community": 95, + "community": 100, "norm_label": "test_render_project_wizard_with_choices_does_not_raise()" }, { @@ -10755,7 +11016,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L114", "id": "ui_test_wizard_project_page_test_render_project_wizard_with_empty_choices_does_not_raise", - "community": 95, + "community": 100, "norm_label": "test_render_project_wizard_with_empty_choices_does_not_raise()" }, { @@ -10764,7 +11025,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L123", "id": "ui_test_wizard_project_page_test_render_project_wizard_defaults_state_when_omitted", - "community": 95, + "community": 100, "norm_label": "test_render_project_wizard_defaults_state_when_omitted()" }, { @@ -10773,7 +11034,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L128", "id": "ui_test_wizard_project_page_test_wizard_project_step_titles_cover_every_step", - "community": 95, + "community": 100, "norm_label": "test_wizard_project_step_titles_cover_every_step()" }, { @@ -10782,7 +11043,7 @@ "source_file": "tests/unit/ui/test_wizard_project_page.py", "source_location": "L1", "id": "ui_test_wizard_project_page_rationale_1", - "community": 95, + "community": 100, "norm_label": "tests for the new project wizard helpers (gaps not covered by test_pages). ``te" }, { @@ -10791,7 +11052,7 @@ "source_file": "tests/unit/ui/test_folder_feed.py", "source_location": "L1", "id": "tests_unit_ui_test_folder_feed_py", - "community": 91, + "community": 97, "norm_label": "test_folder_feed.py" }, { @@ -10800,7 +11061,7 @@ "source_file": "tests/unit/ui/test_folder_feed.py", "source_location": "L18", "id": "ui_test_folder_feed_test_folder_feed_start_then_stop_calls_fetch_at_least_once", - "community": 91, + "community": 97, "norm_label": "test_folder_feed_start_then_stop_calls_fetch_at_least_once()" }, { @@ -10809,7 +11070,7 @@ "source_file": "tests/unit/ui/test_folder_feed.py", "source_location": "L34", "id": "ui_test_folder_feed_test_folder_feed_switching_paths_stops_previous", - "community": 91, + "community": 97, "norm_label": "test_folder_feed_switching_paths_stops_previous()" }, { @@ -10818,7 +11079,7 @@ "source_file": "tests/unit/ui/test_folder_feed.py", "source_location": "L53", "id": "ui_test_folder_feed_test_folder_feed_pause_skips_fetch", - "community": 91, + "community": 97, "norm_label": "test_folder_feed_pause_skips_fetch()" }, { @@ -10827,7 +11088,7 @@ "source_file": "tests/unit/ui/test_folder_feed.py", "source_location": "L73", "id": "ui_test_folder_feed_test_refresh_coordinator_coalesces_within_window", - "community": 91, + "community": 97, "norm_label": "test_refresh_coordinator_coalesces_within_window()" }, { @@ -10836,7 +11097,7 @@ "source_file": "tests/unit/ui/test_folder_feed.py", "source_location": "L1", "id": "ui_test_folder_feed_rationale_1", - "community": 91, + "community": 97, "norm_label": "unit tests for the folder-feed + refresh-coordinator client modules. gui/orches" }, { @@ -10845,7 +11106,7 @@ "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L1", "id": "tests_unit_lims_test_catalogue_py", - "community": 158, + "community": 137, "norm_label": "test_catalogue.py" }, { @@ -10854,7 +11115,7 @@ "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L14", "id": "lims_test_catalogue_make_catalogue", - "community": 158, + "community": 137, "norm_label": "_make_catalogue()" }, { @@ -10863,7 +11124,7 @@ "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L36", "id": "lims_test_catalogue_test_round_trip_via_write_then_read", - "community": 158, + "community": 137, "norm_label": "test_round_trip_via_write_then_read()" }, { @@ -10872,7 +11133,7 @@ "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L48", "id": "lims_test_catalogue_test_read_missing_file_raises", - "community": 158, + "community": 137, "norm_label": "test_read_missing_file_raises()" }, { @@ -10881,7 +11142,7 @@ "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L53", "id": "lims_test_catalogue_test_read_invalid_json_raises", - "community": 158, + "community": 137, "norm_label": "test_read_invalid_json_raises()" }, { @@ -10890,7 +11151,7 @@ "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L60", "id": "lims_test_catalogue_test_read_non_object_raises", - "community": 158, + "community": 137, "norm_label": "test_read_non_object_raises()" }, { @@ -10899,7 +11160,7 @@ "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L67", "id": "lims_test_catalogue_test_schema_version_mismatch_treated_as_absent", - "community": 158, + "community": 137, "norm_label": "test_schema_version_mismatch_treated_as_absent()" }, { @@ -10908,7 +11169,7 @@ "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L85", "id": "lims_test_catalogue_test_endpoint_mismatch_raises", - "community": 158, + "community": 137, "norm_label": "test_endpoint_mismatch_raises()" }, { @@ -10917,7 +11178,7 @@ "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L93", "id": "lims_test_catalogue_test_write_creates_parent_directory", - "community": 158, + "community": 137, "norm_label": "test_write_creates_parent_directory()" }, { @@ -10926,7 +11187,7 @@ "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L100", "id": "lims_test_catalogue_test_write_atomic_replaces_previous_file", - "community": 158, + "community": 137, "norm_label": "test_write_atomic_replaces_previous_file()" }, { @@ -10935,7 +11196,7 @@ "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L121", "id": "lims_test_catalogue_test_read_handles_missing_projects_array", - "community": 158, + "community": 137, "norm_label": "test_read_handles_missing_projects_array()" }, { @@ -10944,7 +11205,7 @@ "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L1", "id": "lims_test_catalogue_rationale_1", - "community": 158, + "community": 137, "norm_label": "tests for the offline lims-project catalogue i/o. backend spec \u00a77.2.9." }, { @@ -10953,7 +11214,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L1", "id": "tests_unit_lims_test_keyring_store_py", - "community": 24, + "community": 26, "norm_label": "test_keyring_store.py" }, { @@ -10962,7 +11223,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L25", "id": "lims_test_keyring_store_inmemorykeyring", - "community": 24, + "community": 26, "norm_label": "_inmemorykeyring" }, { @@ -10971,7 +11232,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L30", "id": "lims_test_keyring_store_inmemorykeyring_init", - "community": 24, + "community": 26, "norm_label": ".__init__()" }, { @@ -10980,7 +11241,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L33", "id": "lims_test_keyring_store_inmemorykeyring_get_password", - "community": 24, + "community": 26, "norm_label": ".get_password()" }, { @@ -10989,7 +11250,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L36", "id": "lims_test_keyring_store_inmemorykeyring_set_password", - "community": 24, + "community": 26, "norm_label": ".set_password()" }, { @@ -10998,7 +11259,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L39", "id": "lims_test_keyring_store_inmemorykeyring_delete_password", - "community": 24, + "community": 26, "norm_label": ".delete_password()" }, { @@ -11007,7 +11268,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L45", "id": "lims_test_keyring_store_brokenkeyring", - "community": 24, + "community": 26, "norm_label": "_brokenkeyring" }, { @@ -11016,7 +11277,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L50", "id": "lims_test_keyring_store_brokenkeyring_get_password", - "community": 24, + "community": 26, "norm_label": ".get_password()" }, { @@ -11025,7 +11286,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L53", "id": "lims_test_keyring_store_brokenkeyring_set_password", - "community": 24, + "community": 26, "norm_label": ".set_password()" }, { @@ -11034,7 +11295,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L56", "id": "lims_test_keyring_store_brokenkeyring_delete_password", - "community": 24, + "community": 26, "norm_label": ".delete_password()" }, { @@ -11043,7 +11304,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L61", "id": "lims_test_keyring_store_swap_keyring", - "community": 24, + "community": 26, "norm_label": "_swap_keyring()" }, { @@ -11052,7 +11313,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L70", "id": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", - "community": 24, + "community": 26, "norm_label": "test_set_get_delete_via_os_keyring()" }, { @@ -11061,7 +11322,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L79", "id": "lims_test_keyring_store_test_get_returns_none_for_missing", - "community": 24, + "community": 26, "norm_label": "test_get_returns_none_for_missing()" }, { @@ -11070,7 +11331,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L85", "id": "lims_test_keyring_store_test_delete_missing_is_silent", - "community": 24, + "community": 26, "norm_label": "test_delete_missing_is_silent()" }, { @@ -11079,7 +11340,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L93", "id": "lims_test_keyring_store_test_is_keyring_available_true", - "community": 24, + "community": 26, "norm_label": "test_is_keyring_available_true()" }, { @@ -11088,7 +11349,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L99", "id": "lims_test_keyring_store_test_is_keyring_available_false_on_broken_backend", - "community": 24, + "community": 26, "norm_label": "test_is_keyring_available_false_on_broken_backend()" }, { @@ -11097,7 +11358,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L105", "id": "lims_test_keyring_store_test_fallback_round_trip", - "community": 24, + "community": 26, "norm_label": "test_fallback_round_trip()" }, { @@ -11106,7 +11367,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L122", "id": "lims_test_keyring_store_test_fallback_delete", - "community": 24, + "community": 26, "norm_label": "test_fallback_delete()" }, { @@ -11115,7 +11376,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L138", "id": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises", - "community": 24, + "community": 26, "norm_label": "test_fallback_wrong_passphrase_raises()" }, { @@ -11124,7 +11385,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L155", "id": "lims_test_keyring_store_test_fallback_no_passphrase_raises", - "community": 24, + "community": 26, "norm_label": "test_fallback_no_passphrase_raises()" }, { @@ -11133,7 +11394,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L162", "id": "lims_test_keyring_store_test_fallback_empty_passphrase_raises", - "community": 24, + "community": 26, "norm_label": "test_fallback_empty_passphrase_raises()" }, { @@ -11142,7 +11403,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L169", "id": "lims_test_keyring_store_test_fallback_file_format_integrity", - "community": 24, + "community": 26, "norm_label": "test_fallback_file_format_integrity()" }, { @@ -11151,7 +11412,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L185", "id": "lims_test_keyring_store_test_fallback_corrupt_file_raises", - "community": 24, + "community": 26, "norm_label": "test_fallback_corrupt_file_raises()" }, { @@ -11160,7 +11421,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L198", "id": "lims_test_keyring_store_test_fallback_unsupported_version_raises", - "community": 24, + "community": 26, "norm_label": "test_fallback_unsupported_version_raises()" }, { @@ -11169,7 +11430,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L212", "id": "lims_test_keyring_store_test_fallback_missing_fields_raises", - "community": 24, + "community": 26, "norm_label": "test_fallback_missing_fields_raises()" }, { @@ -11178,7 +11439,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L224", "id": "lims_test_keyring_store_test_fallback_set_then_overwrite", - "community": 24, + "community": 26, "norm_label": "test_fallback_set_then_overwrite()" }, { @@ -11187,7 +11448,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L236", "id": "lims_test_keyring_store_test_keyring_set_failure_falls_back", - "community": 24, + "community": 26, "norm_label": "test_keyring_set_failure_falls_back()" }, { @@ -11196,7 +11457,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L249", "id": "lims_test_keyring_store_test_is_keyring_available_false_on_unexpected_exception", - "community": 24, + "community": 26, "norm_label": "test_is_keyring_available_false_on_unexpected_exception()" }, { @@ -11205,7 +11466,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L269", "id": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file", - "community": 24, + "community": 26, "norm_label": "test_fallback_get_when_no_secrets_file()" }, { @@ -11214,7 +11475,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L281", "id": "lims_test_keyring_store_test_fallback_delete_when_no_file", - "community": 24, + "community": 26, "norm_label": "test_fallback_delete_when_no_file()" }, { @@ -11223,7 +11484,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L292", "id": "lims_test_keyring_store_test_fallback_delete_when_username_absent", - "community": 24, + "community": 26, "norm_label": "test_fallback_delete_when_username_absent()" }, { @@ -11232,7 +11493,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L306", "id": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises", - "community": 24, + "community": 26, "norm_label": "test_load_fallback_unreadable_path_raises()" }, { @@ -11241,7 +11502,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L324", "id": "lims_test_keyring_store_test_fallback_plaintext_must_be_object", - "community": 24, + "community": 26, "norm_label": "test_fallback_plaintext_must_be_object()" }, { @@ -11250,7 +11511,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L360", "id": "lims_test_keyring_store_test_envelope_must_be_object", - "community": 24, + "community": 26, "norm_label": "test_envelope_must_be_object()" }, { @@ -11259,7 +11520,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L373", "id": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", - "community": 24, + "community": 26, "norm_label": "test_get_consults_fallback_when_keyring_missing()" }, { @@ -11268,7 +11529,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L1", "id": "lims_test_keyring_store_rationale_1", - "community": 24, + "community": 26, "norm_label": "tests for :class:`exlab_wizard.lims.keyring_store.keyringstore`. the os-keyring" }, { @@ -11277,7 +11538,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L26", "id": "lims_test_keyring_store_rationale_26", - "community": 24, + "community": 26, "norm_label": "trivial in-memory keyring backend used to drive the os-keyring path." }, { @@ -11286,7 +11547,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L46", "id": "lims_test_keyring_store_rationale_46", - "community": 24, + "community": 26, "norm_label": "keyring backend that raises on every operation." }, { @@ -11295,7 +11556,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L106", "id": "lims_test_keyring_store_rationale_106", - "community": 24, + "community": 26, "norm_label": "set + get via the encrypted fallback (no os keyring)." }, { @@ -11304,7 +11565,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L170", "id": "lims_test_keyring_store_rationale_170", - "community": 24, + "community": 26, "norm_label": "the fallback file is a json envelope with version, salt, ciphertext." }, { @@ -11313,7 +11574,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L225", "id": "lims_test_keyring_store_rationale_225", - "community": 24, + "community": 26, "norm_label": "a second ``set_password`` overwrites the prior secret." }, { @@ -11322,7 +11583,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L237", "id": "lims_test_keyring_store_rationale_237", - "community": 24, + "community": 26, "norm_label": "when the os keyring set fails, the encrypted-at-rest write is used and a sub" }, { @@ -11331,7 +11592,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L250", "id": "lims_test_keyring_store_rationale_250", - "community": 24, + "community": 26, "norm_label": "a backend raising a non-keyringerror is also treated as unavailable." }, { @@ -11340,7 +11601,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L270", "id": "lims_test_keyring_store_rationale_270", - "community": 24, + "community": 26, "norm_label": "``get_password`` returns none (not error) when keyring is broken and the fal" }, { @@ -11349,7 +11610,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L282", "id": "lims_test_keyring_store_rationale_282", - "community": 24, + "community": 26, "norm_label": "deleting against a broken keyring with no fallback file is silent." }, { @@ -11358,7 +11619,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L293", "id": "lims_test_keyring_store_rationale_293", - "community": 24, + "community": 26, "norm_label": "deleting a missing username in the fallback file is silent." }, { @@ -11367,7 +11628,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L307", "id": "lims_test_keyring_store_rationale_307", - "community": 24, + "community": 26, "norm_label": "an oserror during fallback read surfaces as keyringunavailableerror." }, { @@ -11376,7 +11637,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L325", "id": "lims_test_keyring_store_rationale_325", - "community": 24, + "community": 26, "norm_label": "if the decrypted plaintext is a non-object json value, the read raises." }, { @@ -11385,7 +11646,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L361", "id": "lims_test_keyring_store_rationale_361", - "community": 24, + "community": 26, "norm_label": "a json list at the envelope layer is rejected as malformed." }, { @@ -11394,7 +11655,7 @@ "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L374", "id": "lims_test_keyring_store_rationale_374", - "community": 24, + "community": 26, "norm_label": "if the os keyring returns none but the fallback file exists, the fallback is" }, { @@ -11403,7 +11664,7 @@ "source_file": "tests/unit/lims/__init__.py", "source_location": "L1", "id": "tests_unit_lims_init_py", - "community": 433, + "community": 471, "norm_label": "__init__.py" }, { @@ -11412,7 +11673,7 @@ "source_file": "src/exlab_wizard/lims/__init__.py", "source_location": "L1", "id": "lims_init_rationale_1", - "community": 433, + "community": 471, "norm_label": "lims integration package. backend spec \u00a77.2 + \u00a77.4. public surface: - :class:`" }, { @@ -11421,7 +11682,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L1", "id": "tests_unit_lims_test_client_py", - "community": 121, + "community": 127, "norm_label": "test_client.py" }, { @@ -11430,7 +11691,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L22", "id": "lims_test_client_make_client", - "community": 121, + "community": 127, "norm_label": "_make_client()" }, { @@ -11439,7 +11700,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L35", "id": "lims_test_client_test_login_happy_path", - "community": 121, + "community": 127, "norm_label": "test_login_happy_path()" }, { @@ -11448,7 +11709,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L48", "id": "lims_test_client_test_login_uses_explicit_password_over_provider", - "community": 121, + "community": 127, "norm_label": "test_login_uses_explicit_password_over_provider()" }, { @@ -11457,7 +11718,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L59", "id": "lims_test_client_test_login_wrong_password_raises", - "community": 121, + "community": 127, "norm_label": "test_login_wrong_password_raises()" }, { @@ -11466,7 +11727,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L69", "id": "lims_test_client_test_login_with_no_password_raises_config_error", - "community": 121, + "community": 127, "norm_label": "test_login_with_no_password_raises_config_error()" }, { @@ -11475,7 +11736,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L79", "id": "lims_test_client_test_list_projects_returns_typed_rows", - "community": 121, + "community": 127, "norm_label": "test_list_projects_returns_typed_rows()" }, { @@ -11484,7 +11745,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L93", "id": "lims_test_client_test_list_projects_status_filter", - "community": 121, + "community": 127, "norm_label": "test_list_projects_status_filter()" }, { @@ -11493,7 +11754,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L122", "id": "lims_test_client_test_get_project_by_uid", - "community": 121, + "community": 127, "norm_label": "test_get_project_by_uid()" }, { @@ -11502,7 +11763,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L134", "id": "lims_test_client_test_get_project_by_short_id", - "community": 121, + "community": 127, "norm_label": "test_get_project_by_short_id()" }, { @@ -11511,7 +11772,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L146", "id": "lims_test_client_test_get_project_404_returns_none", - "community": 121, + "community": 127, "norm_label": "test_get_project_404_returns_none()" }, { @@ -11520,7 +11781,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L157", "id": "lims_test_client_test_get_me", - "community": 121, + "community": 127, "norm_label": "test_get_me()" }, { @@ -11529,7 +11790,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L169", "id": "lims_test_client_test_health_check_ok", - "community": 121, + "community": 127, "norm_label": "test_health_check_ok()" }, { @@ -11538,7 +11799,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L182", "id": "lims_test_client_test_health_check_failure_returns_status", - "community": 121, + "community": 127, "norm_label": "test_health_check_failure_returns_status()" }, { @@ -11547,7 +11808,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L197", "id": "lims_test_client_test_relogin_after_401", - "community": 121, + "community": 127, "norm_label": "test_relogin_after_401()" }, { @@ -11556,7 +11817,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L213", "id": "lims_test_client_test_health_check_returns_non200_status", - "community": 121, + "community": 127, "norm_label": "test_health_check_returns_non200_status()" }, { @@ -11565,7 +11826,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L243", "id": "lims_test_client_test_endpoint_strips_trailing_slash", - "community": 84, + "community": 98, "norm_label": "test_endpoint_strips_trailing_slash()" }, { @@ -11574,7 +11835,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L1", "id": "lims_test_client_rationale_1", - "community": 121, + "community": 127, "norm_label": "tests for :class:`exlab_wizard.lims.client.limsclient`. each test wires the cli" }, { @@ -11583,7 +11844,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L183", "id": "lims_test_client_rationale_183", - "community": 121, + "community": 127, "norm_label": "``health_check`` must not raise. per backend spec \u00a77.2.3." }, { @@ -11592,7 +11853,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L198", "id": "lims_test_client_rationale_198", - "community": 121, + "community": 127, "norm_label": "when the lims invalidates the cookie mid-flight, the client transparently re" }, { @@ -11601,7 +11862,7 @@ "source_file": "tests/unit/lims/test_client.py", "source_location": "L214", "id": "lims_test_client_rationale_214", - "community": 121, + "community": 127, "norm_label": "when the lims returns a non-2xx status, ``health_check`` returns ``ok=false`" }, { @@ -11610,7 +11871,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L1", "id": "tests_unit_lims_test_cache_py", - "community": 122, + "community": 128, "norm_label": "test_cache.py" }, { @@ -11619,7 +11880,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L19", "id": "lims_test_cache_project", - "community": 122, + "community": 128, "norm_label": "_project()" }, { @@ -11628,7 +11889,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L39", "id": "lims_test_cache_test_init_creates_table_idempotent", - "community": 122, + "community": 128, "norm_label": "test_init_creates_table_idempotent()" }, { @@ -11637,7 +11898,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L47", "id": "lims_test_cache_test_upsert_many_then_list", - "community": 122, + "community": 128, "norm_label": "test_upsert_many_then_list()" }, { @@ -11646,7 +11907,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L59", "id": "lims_test_cache_test_upsert_many_empty_is_noop", - "community": 122, + "community": 128, "norm_label": "test_upsert_many_empty_is_noop()" }, { @@ -11655,7 +11916,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L70", "id": "lims_test_cache_test_upsert_updates_existing_row", - "community": 122, + "community": 128, "norm_label": "test_upsert_updates_existing_row()" }, { @@ -11664,7 +11925,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L95", "id": "lims_test_cache_test_get_project_by_uid_or_short_id", - "community": 122, + "community": 128, "norm_label": "test_get_project_by_uid_or_short_id()" }, { @@ -11673,7 +11934,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L108", "id": "lims_test_cache_test_get_project_missing_returns_none", - "community": 122, + "community": 128, "norm_label": "test_get_project_missing_returns_none()" }, { @@ -11682,7 +11943,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L118", "id": "lims_test_cache_test_list_projects_status_filter", - "community": 122, + "community": 128, "norm_label": "test_list_projects_status_filter()" }, { @@ -11691,7 +11952,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L135", "id": "lims_test_cache_test_is_fresh_true_when_within_ttl", - "community": 122, + "community": 128, "norm_label": "test_is_fresh_true_when_within_ttl()" }, { @@ -11700,7 +11961,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L145", "id": "lims_test_cache_test_is_fresh_false_when_stale", - "community": 122, + "community": 128, "norm_label": "test_is_fresh_false_when_stale()" }, { @@ -11709,7 +11970,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L156", "id": "lims_test_cache_test_is_fresh_false_when_empty", - "community": 122, + "community": 128, "norm_label": "test_is_fresh_false_when_empty()" }, { @@ -11718,7 +11979,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L165", "id": "lims_test_cache_test_is_fresh_handles_zulu_suffix", - "community": 122, + "community": 128, "norm_label": "test_is_fresh_handles_zulu_suffix()" }, { @@ -11727,7 +11988,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L179", "id": "lims_test_cache_test_is_fresh_ignores_invalid_timestamp", - "community": 122, + "community": 128, "norm_label": "test_is_fresh_ignores_invalid_timestamp()" }, { @@ -11736,7 +11997,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L192", "id": "lims_test_cache_test_endpoint_isolates_rows", - "community": 122, + "community": 128, "norm_label": "test_endpoint_isolates_rows()" }, { @@ -11745,7 +12006,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L206", "id": "lims_test_cache_test_require_conn_before_init_raises", - "community": 122, + "community": 128, "norm_label": "test_require_conn_before_init_raises()" }, { @@ -11754,7 +12015,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L212", "id": "lims_test_cache_test_close_is_idempotent", - "community": 122, + "community": 128, "norm_label": "test_close_is_idempotent()" }, { @@ -11763,7 +12024,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L220", "id": "lims_test_cache_test_is_fresh_handles_naive_timestamp", - "community": 122, + "community": 128, "norm_label": "test_is_fresh_handles_naive_timestamp()" }, { @@ -11772,7 +12033,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L1", "id": "lims_test_cache_rationale_1", - "community": 122, + "community": 128, "norm_label": "tests for :class:`exlab_wizard.lims.cache.limscache`. the cache is the \u00a77.2.4 s" }, { @@ -11781,7 +12042,7 @@ "source_file": "tests/unit/lims/test_cache.py", "source_location": "L221", "id": "lims_test_cache_rationale_221", - "community": 122, + "community": 128, "norm_label": "a naive iso timestamp (no offset) is treated as utc by the cache." }, { @@ -11790,7 +12051,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L1", "id": "tests_unit_validator_test_engine_creation_py", - "community": 32, + "community": 36, "norm_label": "test_engine_creation.py" }, { @@ -11799,7 +12060,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L38", "id": "validator_test_engine_creation_clean_input", - "community": 32, + "community": 36, "norm_label": "_clean_input()" }, { @@ -11808,7 +12069,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L85", "id": "validator_test_engine_creation_test_split_path_segments_posix_path", - "community": 32, + "community": 36, "norm_label": "test_split_path_segments_posix_path()" }, { @@ -11817,7 +12078,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L90", "id": "validator_test_engine_creation_test_split_path_segments_windows_path", - "community": 32, + "community": 36, "norm_label": "test_split_path_segments_windows_path()" }, { @@ -11826,7 +12087,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L96", "id": "validator_test_engine_creation_test_split_path_segments_empty_string", - "community": 32, + "community": 36, "norm_label": "test_split_path_segments_empty_string()" }, { @@ -11835,7 +12096,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L100", "id": "validator_test_engine_creation_test_split_path_segments_drops_trailing_slash", - "community": 32, + "community": 36, "norm_label": "test_split_path_segments_drops_trailing_slash()" }, { @@ -11844,7 +12105,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L110", "id": "validator_test_engine_creation_test_validator_default_config_uses_spec_defaults", - "community": 32, + "community": 36, "norm_label": "test_validator_default_config_uses_spec_defaults()" }, { @@ -11853,7 +12114,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L119", "id": "validator_test_engine_creation_test_validator_accepts_explicit_config", - "community": 133, + "community": 211, "norm_label": "test_validator_accepts_explicit_config()" }, { @@ -11862,7 +12123,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L131", "id": "validator_test_engine_creation_test_clean_input_returns_empty_list", - "community": 32, + "community": 36, "norm_label": "test_clean_input_returns_empty_list()" }, { @@ -11871,7 +12132,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L136", "id": "validator_test_engine_creation_test_clean_input_with_test_run_returns_empty_list", - "community": 32, + "community": 36, "norm_label": "test_clean_input_with_test_run_returns_empty_list()" }, { @@ -11880,7 +12141,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L152", "id": "validator_test_engine_creation_test_unresolved_placeholder_in_path_segment_triggers_finding", - "community": 32, + "community": 36, "norm_label": "test_unresolved_placeholder_in_path_segment_triggers_finding()" }, { @@ -11889,7 +12150,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L167", "id": "validator_test_engine_creation_test_unresolved_placeholder_in_file_name_triggers_finding", - "community": 32, + "community": 36, "norm_label": "test_unresolved_placeholder_in_file_name_triggers_finding()" }, { @@ -11898,7 +12159,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L183", "id": "validator_test_engine_creation_test_leftover_jinja_marker_in_file_content_triggers_finding", - "community": 32, + "community": 36, "norm_label": "test_leftover_jinja_marker_in_file_content_triggers_finding()" }, { @@ -11907,7 +12168,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L195", "id": "validator_test_engine_creation_test_illegal_filesystem_character_in_file_name_triggers_finding", - "community": 32, + "community": 36, "norm_label": "test_illegal_filesystem_character_in_file_name_triggers_finding()" }, { @@ -11916,7 +12177,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L211", "id": "validator_test_engine_creation_test_reserved_filesystem_name_triggers_finding", - "community": 32, + "community": 36, "norm_label": "test_reserved_filesystem_name_triggers_finding()" }, { @@ -11925,7 +12186,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L225", "id": "validator_test_engine_creation_test_run_leaf_with_test_run_kind_triggers_mode_prefix_mismatch", - "community": 32, + "community": 36, "norm_label": "test_run_leaf_with_test_run_kind_triggers_mode_prefix_mismatch()" }, { @@ -11934,7 +12195,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L238", "id": "validator_test_engine_creation_test_test_run_leaf_with_experimental_run_kind_triggers_mode_prefix_mismatch", - "community": 32, + "community": 36, "norm_label": "test_test_run_leaf_with_experimental_run_kind_triggers_mode_prefix_mismatch()" }, { @@ -11943,7 +12204,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L254", "id": "validator_test_engine_creation_test_missing_required_field_triggers_soft_tier_finding", - "community": 32, + "community": 36, "norm_label": "test_missing_required_field_triggers_soft_tier_finding()" }, { @@ -11952,7 +12213,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L272", "id": "validator_test_engine_creation_test_required_field_present_does_not_trigger_finding", - "community": 32, + "community": 36, "norm_label": "test_required_field_present_does_not_trigger_finding()" }, { @@ -11961,7 +12222,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L288", "id": "validator_test_engine_creation_test_malformed_yaml_front_matter_triggers_soft_tier_finding", - "community": 32, + "community": 36, "norm_label": "test_malformed_yaml_front_matter_triggers_soft_tier_finding()" }, { @@ -11970,7 +12231,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L304", "id": "validator_test_engine_creation_test_no_readme_md_skips_front_matter_rule", - "community": 32, + "community": 36, "norm_label": "test_no_readme_md_skips_front_matter_rule()" }, { @@ -11979,7 +12240,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L320", "id": "validator_test_engine_creation_test_multiple_findings_aggregate_in_one_call", - "community": 32, + "community": 36, "norm_label": "test_multiple_findings_aggregate_in_one_call()" }, { @@ -11988,7 +12249,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L342", "id": "validator_test_engine_creation_test_findings_are_sorted_with_hard_tier_first", - "community": 32, + "community": 36, "norm_label": "test_findings_are_sorted_with_hard_tier_first()" }, { @@ -11997,7 +12258,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L366", "id": "validator_test_engine_creation_test_findings_sorted_lexicographically_within_same_tier", - "community": 32, + "community": 36, "norm_label": "test_findings_sorted_lexicographically_within_same_tier()" }, { @@ -12006,7 +12267,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L386", "id": "validator_test_engine_creation_test_findings_carry_run_path_from_proposed_path", - "community": 32, + "community": 36, "norm_label": "test_findings_carry_run_path_from_proposed_path()" }, { @@ -12015,7 +12276,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L395", "id": "validator_test_engine_creation_test_findings_default_audit_flags_to_false", - "community": 32, + "community": 36, "norm_label": "test_findings_default_audit_flags_to_false()" }, { @@ -12024,7 +12285,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L408", "id": "validator_test_engine_creation_test_findings_are_finding_instances", - "community": 32, + "community": 36, "norm_label": "test_findings_are_finding_instances()" }, { @@ -12033,7 +12294,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L424", "id": "validator_test_engine_creation_test_creation_validation_input_is_frozen", - "community": 32, + "community": 36, "norm_label": "test_creation_validation_input_is_frozen()" }, { @@ -12042,7 +12303,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L431", "id": "validator_test_engine_creation_test_creation_validation_input_defaults", - "community": 517, + "community": 53, "norm_label": "test_creation_validation_input_defaults()" }, { @@ -12051,7 +12312,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L1", "id": "validator_test_engine_creation_rationale_1", - "community": 32, + "community": 36, "norm_label": "unit tests for ``exlab_wizard.validator.engine`` -- creation-time mode. the eng" }, { @@ -12060,7 +12321,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L39", "id": "validator_test_engine_creation_rationale_39", - "community": 32, + "community": 36, "norm_label": "a creation-time input that should produce zero findings. the proposed path" }, { @@ -12069,7 +12330,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L111", "id": "validator_test_engine_creation_rationale_111", - "community": 32, + "community": 36, "norm_label": "default validatorconfig matches the \u00a79 documented defaults." }, { @@ -12078,7 +12339,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L137", "id": "validator_test_engine_creation_rationale_137", - "community": 32, + "community": 36, "norm_label": "test-mode input with testruns/ parent and testrun_ leaf passes." }, { @@ -12087,7 +12348,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L153", "id": "validator_test_engine_creation_rationale_153", - "community": 32, + "community": 36, "norm_label": "an angle-bracket identifier in a path segment fires \u00a78.1.1." }, { @@ -12096,7 +12357,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L196", "id": "validator_test_engine_creation_rationale_196", - "community": 32, + "community": 36, "norm_label": "a windows-illegal char in a file name fires \u00a78.1.2." }, { @@ -12105,7 +12366,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L212", "id": "validator_test_engine_creation_rationale_212", - "community": 32, + "community": 36, "norm_label": "a windows-reserved file base name (con, nul, ...) fires \u00a78.1.2." }, { @@ -12114,7 +12375,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L226", "id": "validator_test_engine_creation_rationale_226", - "community": 32, + "community": 36, "norm_label": "a ``run_`` leaf paired with ``run_kind='test'`` fires \u00a78.1.3." }, { @@ -12123,7 +12384,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L239", "id": "validator_test_engine_creation_rationale_239", - "community": 32, + "community": 36, "norm_label": "a ``testrun_`` leaf with ``run_kind='experimental'`` fires \u00a78.1.3." }, { @@ -12132,7 +12393,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L255", "id": "validator_test_engine_creation_rationale_255", - "community": 32, + "community": 36, "norm_label": "a required field absent from readme_fields fires \u00a78.1.5." }, { @@ -12141,7 +12402,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L273", "id": "validator_test_engine_creation_rationale_273", - "community": 32, + "community": 36, "norm_label": "when the required field is present in readme_fields, no finding." }, { @@ -12150,7 +12411,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L289", "id": "validator_test_engine_creation_rationale_289", - "community": 32, + "community": 36, "norm_label": "an unterminated front-matter block fires \u00a78.1.1's malformed soft rule." }, { @@ -12159,7 +12420,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L305", "id": "validator_test_engine_creation_rationale_305", - "community": 32, + "community": 36, "norm_label": "front-matter rule does not run if readme.md is absent from inputs." }, { @@ -12168,7 +12429,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L321", "id": "validator_test_engine_creation_rationale_321", - "community": 32, + "community": 36, "norm_label": "a single bundle that trips multiple rules surfaces all findings." }, { @@ -12177,7 +12438,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L343", "id": "validator_test_engine_creation_rationale_343", - "community": 32, + "community": 36, "norm_label": "the output is sorted with hard-tier findings before soft." }, { @@ -12186,7 +12447,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L367", "id": "validator_test_engine_creation_rationale_367", - "community": 32, + "community": 36, "norm_label": "within one tier, findings sort by (rule, offending_path)." }, { @@ -12195,7 +12456,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L387", "id": "validator_test_engine_creation_rationale_387", - "community": 32, + "community": 36, "norm_label": "engine stamps run_path on every finding from the input." }, { @@ -12204,7 +12465,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L396", "id": "validator_test_engine_creation_rationale_396", - "community": 32, + "community": 36, "norm_label": "audit-only flags default to false at creation time." }, { @@ -12213,7 +12474,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L409", "id": "validator_test_engine_creation_rationale_409", - "community": 32, + "community": 36, "norm_label": "the engine returns :class:`finding` instances (not dicts)." }, { @@ -12222,7 +12483,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L425", "id": "validator_test_engine_creation_rationale_425", - "community": 32, + "community": 36, "norm_label": "the input bundle is a frozen dataclass for determinism." }, { @@ -12231,7 +12492,7 @@ "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L432", "id": "validator_test_engine_creation_rationale_432", - "community": 517, + "community": 53, "norm_label": "every field except proposed_path is optional with a safe default." }, { @@ -12240,7 +12501,7 @@ "source_file": "tests/unit/validator/test_engine_reconfigure.py", "source_location": "L1", "id": "tests_unit_validator_test_engine_reconfigure_py", - "community": 133, + "community": 211, "norm_label": "test_engine_reconfigure.py" }, { @@ -12249,7 +12510,7 @@ "source_file": "tests/unit/validator/test_engine_reconfigure.py", "source_location": "L16", "id": "validator_test_engine_reconfigure_test_reconfigure_refreshes_scan_limits_and_roots", - "community": 133, + "community": 211, "norm_label": "test_reconfigure_refreshes_scan_limits_and_roots()" }, { @@ -12258,7 +12519,7 @@ "source_file": "tests/unit/validator/test_engine_reconfigure.py", "source_location": "L35", "id": "validator_test_engine_reconfigure_test_reconfigure_defaults_to_empty_roots", - "community": 133, + "community": 211, "norm_label": "test_reconfigure_defaults_to_empty_roots()" }, { @@ -12267,7 +12528,7 @@ "source_file": "tests/unit/validator/test_engine_reconfigure.py", "source_location": "L1", "id": "validator_test_engine_reconfigure_rationale_1", - "community": 133, + "community": 211, "norm_label": "unit tests for ``validator.reconfigure`` (live config reload). the settings dia" }, { @@ -12276,7 +12537,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L1", "id": "tests_unit_validator_test_findings_py", - "community": 92, + "community": 91, "norm_label": "test_findings.py" }, { @@ -12285,7 +12546,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L23", "id": "validator_test_findings_make_finding", - "community": 92, + "community": 91, "norm_label": "_make_finding()" }, { @@ -12294,7 +12555,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L45", "id": "validator_test_findings_test_finding_instantiation_with_all_fields", - "community": 92, + "community": 91, "norm_label": "test_finding_instantiation_with_all_fields()" }, { @@ -12303,7 +12564,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L58", "id": "validator_test_findings_test_finding_minimum_required_fields", - "community": 92, + "community": 91, "norm_label": "test_finding_minimum_required_fields()" }, { @@ -12312,7 +12573,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L74", "id": "validator_test_findings_test_finding_is_frozen", - "community": 92, + "community": 91, "norm_label": "test_finding_is_frozen()" }, { @@ -12321,7 +12582,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L86", "id": "validator_test_findings_test_to_dict_contains_all_spec_keys", - "community": 92, + "community": 91, "norm_label": "test_to_dict_contains_all_spec_keys()" }, { @@ -12330,7 +12591,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L103", "id": "validator_test_findings_test_to_dict_values_match_field_values", - "community": 92, + "community": 91, "norm_label": "test_to_dict_values_match_field_values()" }, { @@ -12339,7 +12600,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L113", "id": "validator_test_findings_test_to_dict_from_dict_round_trip_identity", - "community": 92, + "community": 91, "norm_label": "test_to_dict_from_dict_round_trip_identity()" }, { @@ -12348,7 +12609,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L119", "id": "validator_test_findings_test_from_dict_accepts_minimal_payload", - "community": 92, + "community": 91, "norm_label": "test_from_dict_accepts_minimal_payload()" }, { @@ -12357,7 +12618,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L135", "id": "validator_test_findings_test_from_dict_ignores_unknown_keys", - "community": 92, + "community": 91, "norm_label": "test_from_dict_ignores_unknown_keys()" }, { @@ -12366,7 +12627,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L149", "id": "validator_test_findings_test_to_dict_preserves_none_matched_token", - "community": 92, + "community": 91, "norm_label": "test_to_dict_preserves_none_matched_token()" }, { @@ -12375,7 +12636,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L169", "id": "validator_test_findings_test_finding_is_hashable", - "community": 92, + "community": 91, "norm_label": "test_finding_is_hashable()" }, { @@ -12384,7 +12645,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L176", "id": "validator_test_findings_test_findings_in_set_dedupe_by_value", - "community": 92, + "community": 91, "norm_label": "test_findings_in_set_dedupe_by_value()" }, { @@ -12393,7 +12654,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L184", "id": "validator_test_findings_test_findings_in_set_distinguish_by_value", - "community": 92, + "community": 91, "norm_label": "test_findings_in_set_distinguish_by_value()" }, { @@ -12402,7 +12663,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L198", "id": "validator_test_findings_test_findings_can_be_sorted_by_to_dict_key", - "community": 92, + "community": 91, "norm_label": "test_findings_can_be_sorted_by_to_dict_key()" }, { @@ -12411,7 +12672,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L206", "id": "validator_test_findings_test_findings_sort_by_tier_then_rule_then_path", - "community": 92, + "community": 91, "norm_label": "test_findings_sort_by_tier_then_rule_then_path()" }, { @@ -12420,7 +12681,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L224", "id": "validator_test_findings_test_equality_with_same_field_values", - "community": 92, + "community": 91, "norm_label": "test_equality_with_same_field_values()" }, { @@ -12429,7 +12690,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L230", "id": "validator_test_findings_test_inequality_when_one_field_differs", - "community": 92, + "community": 91, "norm_label": "test_inequality_when_one_field_differs()" }, { @@ -12438,7 +12699,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L236", "id": "validator_test_findings_test_finding_equality_is_not_identity", - "community": 92, + "community": 91, "norm_label": "test_finding_equality_is_not_identity()" }, { @@ -12447,7 +12708,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L243", "id": "validator_test_findings_test_audit_mode_flags_round_trip", - "community": 92, + "community": 91, "norm_label": "test_audit_mode_flags_round_trip()" }, { @@ -12456,7 +12717,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L1", "id": "validator_test_findings_rationale_1", - "community": 92, + "community": 91, "norm_label": "unit tests for ``exlab_wizard.validator.findings``. the :class:`finding` datacl" }, { @@ -12465,7 +12726,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L24", "id": "validator_test_findings_rationale_24", - "community": 92, + "community": 91, "norm_label": "return a canonical finding matching the \u00a711.8 example payload." }, { @@ -12474,7 +12735,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L59", "id": "validator_test_findings_rationale_59", - "community": 92, + "community": 91, "norm_label": "the five non-default fields are required; the rest default." }, { @@ -12483,7 +12744,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L75", "id": "validator_test_findings_rationale_75", - "community": 92, + "community": 91, "norm_label": "findings are frozen so they can be hashed / put in sets." }, { @@ -12492,7 +12753,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L120", "id": "validator_test_findings_rationale_120", - "community": 92, + "community": 91, "norm_label": "optional fields default if missing from the payload." }, { @@ -12501,7 +12762,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L136", "id": "validator_test_findings_rationale_136", - "community": 92, + "community": 91, "norm_label": "unknown keys in a future-minor payload are not lethal." }, { @@ -12510,7 +12771,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L150", "id": "validator_test_findings_rationale_150", - "community": 92, + "community": 91, "norm_label": "``matched_token`` of ``none`` survives the round-trip as ``none``." }, { @@ -12519,7 +12780,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L177", "id": "validator_test_findings_rationale_177", - "community": 92, + "community": 91, "norm_label": "two findings with identical field values collapse in a set." }, { @@ -12528,7 +12789,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L185", "id": "validator_test_findings_rationale_185", - "community": 92, + "community": 91, "norm_label": "different field values produce distinct set entries." }, { @@ -12537,7 +12798,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L199", "id": "validator_test_findings_rationale_199", - "community": 92, + "community": 91, "norm_label": "findings sort lexicographically when keyed by their dict shape." }, { @@ -12546,7 +12807,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L207", "id": "validator_test_findings_rationale_207", - "community": 92, + "community": 91, "norm_label": "the expected three-key sort produces hard-first ordering." }, { @@ -12555,7 +12816,7 @@ "source_file": "tests/unit/validator/test_findings.py", "source_location": "L244", "id": "validator_test_findings_rationale_244", - "community": 92, + "community": 91, "norm_label": "the audit-mode-only flags (synced_under_prior_policy / override_active) surv" }, { @@ -12564,7 +12825,7 @@ "source_file": "tests/unit/validator/__init__.py", "source_location": "L1", "id": "tests_unit_validator_init_py", - "community": 434, + "community": 472, "norm_label": "__init__.py" }, { @@ -12573,7 +12834,7 @@ "source_file": "src/exlab_wizard/validator/__init__.py", "source_location": "L1", "id": "validator_init_rationale_1", - "community": 434, + "community": 472, "norm_label": "validator engine package. backend spec \u00a78." }, { @@ -12582,7 +12843,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L1", "id": "tests_unit_validator_test_rules_py", - "community": 159, + "community": 148, "norm_label": "test_rules.py" }, { @@ -12591,7 +12852,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L37", "id": "validator_test_rules_test_angle_bracket_token_in_segment_fires", - "community": 159, + "community": 148, "norm_label": "test_angle_bracket_token_in_segment_fires()" }, { @@ -12600,7 +12861,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L64", "id": "validator_test_rules_test_non_token_angle_brackets_pass", - "community": 159, + "community": 148, "norm_label": "test_non_token_angle_brackets_pass()" }, { @@ -12609,7 +12870,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L75", "id": "validator_test_rules_test_jinja_var_marker_in_filename_fires", - "community": 159, + "community": 148, "norm_label": "test_jinja_var_marker_in_filename_fires()" }, { @@ -12618,7 +12879,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L88", "id": "validator_test_rules_test_jinja_block_marker_in_content_fires", - "community": 159, + "community": 148, "norm_label": "test_jinja_block_marker_in_content_fires()" }, { @@ -12627,7 +12888,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L101", "id": "validator_test_rules_test_unresolved_placeholder_in_content_fires", - "community": 159, + "community": 148, "norm_label": "test_unresolved_placeholder_in_content_fires()" }, { @@ -12636,7 +12897,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L110", "id": "validator_test_rules_test_no_findings_on_clean_inputs", - "community": 159, + "community": 148, "norm_label": "test_no_findings_on_clean_inputs()" }, { @@ -12645,7 +12906,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L119", "id": "validator_test_rules_test_large_text_file_skipped_from_content_scan", - "community": 159, + "community": 148, "norm_label": "test_large_text_file_skipped_from_content_scan()" }, { @@ -12654,7 +12915,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L131", "id": "validator_test_rules_test_under_size_cap_content_is_scanned", - "community": 159, + "community": 148, "norm_label": "test_under_size_cap_content_is_scanned()" }, { @@ -12663,7 +12924,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L142", "id": "validator_test_rules_test_multiple_matches_in_same_input_each_yield_finding", - "community": 159, + "community": 148, "norm_label": "test_multiple_matches_in_same_input_each_yield_finding()" }, { @@ -12672,7 +12933,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L152", "id": "validator_test_rules_test_empty_file_contents_dict_is_path_only_scan", - "community": 159, + "community": 148, "norm_label": "test_empty_file_contents_dict_is_path_only_scan()" }, { @@ -12681,7 +12942,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L180", "id": "validator_test_rules_test_windows_illegal_char_in_segment_fires", - "community": 228, + "community": 148, "norm_label": "test_windows_illegal_char_in_segment_fires()" }, { @@ -12690,7 +12951,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L191", "id": "validator_test_rules_test_nul_byte_in_name_fires", - "community": 228, + "community": 148, "norm_label": "test_nul_byte_in_name_fires()" }, { @@ -12699,7 +12960,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L200", "id": "validator_test_rules_test_low_ascii_control_char_fires", - "community": 228, + "community": 148, "norm_label": "test_low_ascii_control_char_fires()" }, { @@ -12708,7 +12969,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L210", "id": "validator_test_rules_test_trailing_dot_fires", - "community": 228, + "community": 148, "norm_label": "test_trailing_dot_fires()" }, { @@ -12717,7 +12978,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L218", "id": "validator_test_rules_test_trailing_space_fires", - "community": 228, + "community": 148, "norm_label": "test_trailing_space_fires()" }, { @@ -12726,7 +12987,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L237", "id": "validator_test_rules_test_normal_names_pass", - "community": 228, + "community": 148, "norm_label": "test_normal_names_pass()" }, { @@ -12735,7 +12996,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L245", "id": "validator_test_rules_test_findings_have_hard_tier", - "community": 228, + "community": 148, "norm_label": "test_findings_have_hard_tier()" }, { @@ -12744,7 +13005,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L276", "id": "validator_test_rules_test_reserved_name_fires", - "community": 399, + "community": 236, "norm_label": "test_reserved_name_fires()" }, { @@ -12753,7 +13014,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L297", "id": "validator_test_rules_test_non_reserved_name_passes", - "community": 399, + "community": 236, "norm_label": "test_non_reserved_name_passes()" }, { @@ -12762,7 +13023,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L320", "id": "validator_test_rules_test_unsafe_project_name_fires", - "community": 400, + "community": 236, "norm_label": "test_unsafe_project_name_fires()" }, { @@ -12771,7 +13032,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L340", "id": "validator_test_rules_test_safe_project_name_passes", - "community": 400, + "community": 236, "norm_label": "test_safe_project_name_passes()" }, { @@ -12780,7 +13041,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L349", "id": "validator_test_rules_test_experimental_with_run_prefix_under_runs_parent_passes", - "community": 258, + "community": 252, "norm_label": "test_experimental_with_run_prefix_under_runs_parent_passes()" }, { @@ -12789,7 +13050,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L359", "id": "validator_test_rules_test_experimental_with_run_prefix_at_project_level_fires", - "community": 258, + "community": 252, "norm_label": "test_experimental_with_run_prefix_at_project_level_fires()" }, { @@ -12798,7 +13059,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L372", "id": "validator_test_rules_test_experimental_with_test_run_prefix_fires", - "community": 258, + "community": 252, "norm_label": "test_experimental_with_test_run_prefix_fires()" }, { @@ -12807,7 +13068,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L382", "id": "validator_test_rules_test_experimental_under_test_runs_parent_fires", - "community": 258, + "community": 252, "norm_label": "test_experimental_under_test_runs_parent_fires()" }, { @@ -12816,7 +13077,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L391", "id": "validator_test_rules_test_test_with_test_run_prefix_under_test_runs_passes", - "community": 258, + "community": 252, "norm_label": "test_test_with_test_run_prefix_under_test_runs_passes()" }, { @@ -12825,7 +13086,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L400", "id": "validator_test_rules_test_test_with_run_prefix_fires", - "community": 258, + "community": 252, "norm_label": "test_test_with_run_prefix_fires()" }, { @@ -12834,7 +13095,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L409", "id": "validator_test_rules_test_test_with_test_run_prefix_but_wrong_parent_fires", - "community": 258, + "community": 252, "norm_label": "test_test_with_test_run_prefix_but_wrong_parent_fires()" }, { @@ -12843,7 +13104,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L418", "id": "validator_test_rules_test_run_kind_none_returns_no_findings", - "community": 258, + "community": 252, "norm_label": "test_run_kind_none_returns_no_findings()" }, { @@ -12852,7 +13113,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L432", "id": "validator_test_rules_test_project_without_creation_json_fires", - "community": 332, + "community": 329, "norm_label": "test_project_without_creation_json_fires()" }, { @@ -12861,7 +13122,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L439", "id": "validator_test_rules_test_run_without_creation_json_fires", - "community": 332, + "community": 329, "norm_label": "test_run_without_creation_json_fires()" }, { @@ -12870,7 +13131,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L445", "id": "validator_test_rules_test_equipment_without_creation_json_does_not_fire", - "community": 332, + "community": 329, "norm_label": "test_equipment_without_creation_json_does_not_fire()" }, { @@ -12879,7 +13140,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L450", "id": "validator_test_rules_test_project_with_creation_json_passes", - "community": 332, + "community": 329, "norm_label": "test_project_with_creation_json_passes()" }, { @@ -12888,7 +13149,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L455", "id": "validator_test_rules_test_run_with_creation_json_passes", - "community": 332, + "community": 329, "norm_label": "test_run_with_creation_json_passes()" }, { @@ -12951,7 +13212,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L541", "id": "validator_test_rules_test_well_formed_front_matter_passes", - "community": 159, + "community": 302, "norm_label": "test_well_formed_front_matter_passes()" }, { @@ -12960,7 +13221,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L546", "id": "validator_test_rules_test_unterminated_front_matter_fires", - "community": 159, + "community": 302, "norm_label": "test_unterminated_front_matter_fires()" }, { @@ -12969,7 +13230,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L554", "id": "validator_test_rules_test_malformed_yaml_in_block_fires", - "community": 159, + "community": 302, "norm_label": "test_malformed_yaml_in_block_fires()" }, { @@ -12978,7 +13239,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L562", "id": "validator_test_rules_test_no_front_matter_passes", - "community": 159, + "community": 302, "norm_label": "test_no_front_matter_passes()" }, { @@ -12987,7 +13248,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L567", "id": "validator_test_rules_test_empty_content_passes", - "community": 159, + "community": 302, "norm_label": "test_empty_content_passes()" }, { @@ -12996,7 +13257,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L571", "id": "validator_test_rules_test_front_matter_with_nested_yaml_passes", - "community": 159, + "community": 302, "norm_label": "test_front_matter_with_nested_yaml_passes()" }, { @@ -13005,7 +13266,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L1", "id": "validator_test_rules_rationale_1", - "community": 159, + "community": 148, "norm_label": "tests for ``exlab_wizard.validator.rules``. backend spec \u00a78.1. covers each \u00a78.1" }, { @@ -13014,7 +13275,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L350", "id": "validator_test_rules_rationale_350", - "community": 258, + "community": 252, "norm_label": "redesign \u00a73.4: experimental run leaf parented by ``runs`` is valid." }, { @@ -13023,7 +13284,7 @@ "source_file": "tests/unit/validator/test_rules.py", "source_location": "L360", "id": "validator_test_rules_rationale_360", - "community": 258, + "community": 252, "norm_label": "redesign \u00a73.4: a misplaced ``run_*`` directly under the project (not under `" }, { @@ -13032,7 +13293,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1", "id": "tests_unit_validator_test_engine_audit_py", - "community": 104, + "community": 119, "norm_label": "test_engine_audit.py" }, { @@ -13041,7 +13302,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L46", "id": "validator_test_engine_audit_build_creation_json_dict", - "community": 89, + "community": 93, "norm_label": "_build_creation_json_dict()" }, { @@ -13050,7 +13311,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L87", "id": "validator_test_engine_audit_write_creation_json", - "community": 89, + "community": 93, "norm_label": "_write_creation_json()" }, { @@ -13059,7 +13320,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L96", "id": "validator_test_engine_audit_make_clean_tree", - "community": 88, + "community": 92, "norm_label": "_make_clean_tree()" }, { @@ -13068,7 +13329,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L140", "id": "validator_test_engine_audit_make_validator", - "community": 88, + "community": 92, "norm_label": "_make_validator()" }, { @@ -13077,7 +13338,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L164", "id": "validator_test_engine_audit_by_rule", - "community": 187, + "community": 206, "norm_label": "_by_rule()" }, { @@ -13086,7 +13347,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L173", "id": "validator_test_engine_audit_test_audit_clean_tree_returns_empty_list", - "community": 88, + "community": 92, "norm_label": "test_audit_clean_tree_returns_empty_list()" }, { @@ -13095,7 +13356,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L181", "id": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan", - "community": 187, + "community": 206, "norm_label": "test_audit_project_missing_creation_json_returns_orphan()" }, { @@ -13104,7 +13365,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L202", "id": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan", - "community": 187, + "community": 206, "norm_label": "test_audit_run_missing_creation_json_returns_orphan()" }, { @@ -13113,7 +13374,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L219", "id": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding", - "community": 506, + "community": 206, "norm_label": "test_audit_unsafe_project_name_returns_soft_finding()" }, { @@ -13122,7 +13383,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L238", "id": "validator_test_engine_audit_test_audit_clean_project_name_has_no_unsafe_finding", - "community": 187, + "community": 206, "norm_label": "test_audit_clean_project_name_has_no_unsafe_finding()" }, { @@ -13131,7 +13392,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L246", "id": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind", - "community": 187, + "community": 93, "norm_label": "test_audit_mode_prefix_mismatch_run_with_test_kind()" }, { @@ -13140,7 +13401,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L268", "id": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name", - "community": 89, + "community": 206, "norm_label": "test_audit_unresolved_placeholder_in_directory_name()" }, { @@ -13149,7 +13410,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L291", "id": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden", - "community": 187, + "community": 206, "norm_label": "test_audit_override_active_flag_set_when_problem_class_overridden()" }, { @@ -13158,7 +13419,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L324", "id": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run", - "community": 187, + "community": 525, "norm_label": "test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run()" }, { @@ -13167,7 +13428,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L348", "id": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run", - "community": 187, + "community": 526, "norm_label": "test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run()" }, { @@ -13176,7 +13437,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L374", "id": "validator_test_engine_audit_test_audit_respects_content_scan_max_mib_cap", - "community": 88, + "community": 92, "norm_label": "test_audit_respects_content_scan_max_mib_cap()" }, { @@ -13185,7 +13446,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L398", "id": "validator_test_engine_audit_test_audit_respects_extensions_allowlist", - "community": 88, + "community": 92, "norm_label": "test_audit_respects_extensions_allowlist()" }, { @@ -13194,7 +13455,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L417", "id": "validator_test_engine_audit_test_audit_detects_binary_files_via_null_byte_sniff", - "community": 88, + "community": 92, "norm_label": "test_audit_detects_binary_files_via_null_byte_sniff()" }, { @@ -13203,7 +13464,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L436", "id": "validator_test_engine_audit_test_audit_scans_text_file_content_when_within_limits", - "community": 88, + "community": 92, "norm_label": "test_audit_scans_text_file_content_when_within_limits()" }, { @@ -13212,7 +13473,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L452", "id": "validator_test_engine_audit_test_audit_findings_are_sorted_by_tier_then_rule_then_offending_path", - "community": 89, + "community": 93, "norm_label": "test_audit_findings_are_sorted_by_tier_then_rule_then_offending_path()" }, { @@ -13221,7 +13482,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L474", "id": "validator_test_engine_audit_test_query_problems_is_alias_for_audit", - "community": 88, + "community": 92, "norm_label": "test_query_problems_is_alias_for_audit()" }, { @@ -13230,7 +13491,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L487", "id": "validator_test_engine_audit_test_audit_scope_equipment_id_resolves_to_configured_root", - "community": 89, + "community": 93, "norm_label": "test_audit_scope_equipment_id_resolves_to_configured_root()" }, { @@ -13239,7 +13500,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L524", "id": "validator_test_engine_audit_test_audit_scope_project_path_walks_one_subtree", - "community": 89, + "community": 93, "norm_label": "test_audit_scope_project_path_walks_one_subtree()" }, { @@ -13248,7 +13509,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L549", "id": "validator_test_engine_audit_test_audit_scope_all_walks_every_configured_equipment", - "community": 89, + "community": 93, "norm_label": "test_audit_scope_all_walks_every_configured_equipment()" }, { @@ -13257,7 +13518,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L584", "id": "validator_test_engine_audit_test_audit_scope_unknown_equipment_id_returns_empty", - "community": 104, + "community": 119, "norm_label": "test_audit_scope_unknown_equipment_id_returns_empty()" }, { @@ -13266,7 +13527,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L591", "id": "validator_test_engine_audit_test_audit_skips_cache_directory_contents", - "community": 88, + "community": 92, "norm_label": "test_audit_skips_cache_directory_contents()" }, { @@ -13275,7 +13536,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L607", "id": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active", - "community": 187, + "community": 206, "norm_label": "test_audit_revoked_override_does_not_set_override_active()" }, { @@ -13284,7 +13545,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L644", "id": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_file_name", - "community": 88, + "community": 92, "norm_label": "test_audit_unresolved_placeholder_in_file_name()" }, { @@ -13293,7 +13554,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L660", "id": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged", - "community": 187, + "community": 206, "norm_label": "test_audit_test_run_with_experimental_kind_flagged()" }, { @@ -13302,7 +13563,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L680", "id": "validator_test_engine_audit_test_audit_returns_list_of_finding_dataclass_instances", - "community": 89, + "community": 93, "norm_label": "test_audit_returns_list_of_finding_dataclass_instances()" }, { @@ -13311,7 +13572,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L695", "id": "validator_test_engine_audit_test_audit_includes_staging_root_when_orchestrator_on", - "community": 89, + "community": 93, "norm_label": "test_audit_includes_staging_root_when_orchestrator_on()" }, { @@ -13320,7 +13581,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L722", "id": "validator_test_engine_audit_test_audit_findings_carry_full_section_11_8_shape", - "community": 89, + "community": 93, "norm_label": "test_audit_findings_carry_full_section_11_8_shape()" }, { @@ -13329,7 +13590,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L760", "id": "validator_test_engine_audit_test_audit_unknown_scope_kind_raises_value_error", - "community": 104, + "community": 119, "norm_label": "test_audit_unknown_scope_kind_raises_value_error()" }, { @@ -13338,7 +13599,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L767", "id": "validator_test_engine_audit_test_audit_root_does_not_exist_returns_empty", - "community": 104, + "community": 119, "norm_label": "test_audit_root_does_not_exist_returns_empty()" }, { @@ -13347,7 +13608,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L775", "id": "validator_test_engine_audit_test_audit_root_is_a_file_returns_empty", - "community": 104, + "community": 119, "norm_label": "test_audit_root_is_a_file_returns_empty()" }, { @@ -13356,7 +13617,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L783", "id": "validator_test_engine_audit_test_audit_handles_unreadable_directory", - "community": 104, + "community": 119, "norm_label": "test_audit_handles_unreadable_directory()" }, { @@ -13365,7 +13626,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L803", "id": "validator_test_engine_audit_test_audit_other_level_subfolder_under_project", - "community": 89, + "community": 93, "norm_label": "test_audit_other_level_subfolder_under_project()" }, { @@ -13374,7 +13635,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L819", "id": "validator_test_engine_audit_test_audit_other_under_test_runs_unknown_leaf", - "community": 89, + "community": 93, "norm_label": "test_audit_other_under_test_runs_unknown_leaf()" }, { @@ -13383,7 +13644,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L835", "id": "validator_test_engine_audit_test_audit_deeply_nested_other_subfolder", - "community": 88, + "community": 92, "norm_label": "test_audit_deeply_nested_other_subfolder()" }, { @@ -13392,7 +13653,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L854", "id": "validator_test_engine_audit_test_audit_creation_json_unreadable", - "community": 88, + "community": 92, "norm_label": "test_audit_creation_json_unreadable()" }, { @@ -13401,7 +13662,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L876", "id": "validator_test_engine_audit_test_audit_creation_json_malformed_raw_decode", - "community": 88, + "community": 92, "norm_label": "test_audit_creation_json_malformed_raw_decode()" }, { @@ -13410,7 +13671,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L888", "id": "validator_test_engine_audit_test_audit_creation_json_missing_required_struct_field", - "community": 89, + "community": 93, "norm_label": "test_audit_creation_json_missing_required_struct_field()" }, { @@ -13419,7 +13680,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L908", "id": "validator_test_engine_audit_test_audit_readme_fields_json_decode_failure", - "community": 88, + "community": 92, "norm_label": "test_audit_readme_fields_json_decode_failure()" }, { @@ -13428,7 +13689,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L920", "id": "validator_test_engine_audit_test_audit_missing_required_field_with_required_ids", - "community": 89, + "community": 93, "norm_label": "test_audit_missing_required_field_with_required_ids()" }, { @@ -13437,7 +13698,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L956", "id": "validator_test_engine_audit_test_audit_missing_required_field_required_ids_not_a_list", - "community": 89, + "community": 93, "norm_label": "test_audit_missing_required_field_required_ids_not_a_list()" }, { @@ -13446,7 +13707,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L991", "id": "validator_test_engine_audit_test_audit_content_scan_skips_test_runs_marker_file", - "community": 89, + "community": 93, "norm_label": "test_audit_content_scan_skips_test_runs_marker_file()" }, { @@ -13455,7 +13716,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1021", "id": "validator_test_engine_audit_test_audit_content_scan_eligibility_returns_false_on_stat_failure", - "community": 88, + "community": 92, "norm_label": "test_audit_content_scan_eligibility_returns_false_on_stat_failure()" }, { @@ -13464,7 +13725,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1048", "id": "validator_test_engine_audit_test_audit_read_text_for_scan_handles_oserror", - "community": 88, + "community": 92, "norm_label": "test_audit_read_text_for_scan_handles_oserror()" }, { @@ -13473,7 +13734,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1075", "id": "validator_test_engine_audit_test_classify_level_value_error_returns_other", - "community": 104, + "community": 119, "norm_label": "test_classify_level_value_error_returns_other()" }, { @@ -13482,7 +13743,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1089", "id": "validator_test_engine_audit_test_finding_sort_unknown_tier_sorts_after_committed_tiers", - "community": 104, + "community": 119, "norm_label": "test_finding_sort_unknown_tier_sorts_after_committed_tiers()" }, { @@ -13491,7 +13752,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1113", "id": "validator_test_engine_audit_test_level_for_orphan_returns_none_for_unmapped_levels", - "community": 401, + "community": 422, "norm_label": "test_level_for_orphan_returns_none_for_unmapped_levels()" }, { @@ -13500,7 +13761,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1122", "id": "validator_test_engine_audit_test_validator_from_config_builds_engine", - "community": 104, + "community": 211, "norm_label": "test_validator_from_config_builds_engine()" }, { @@ -13509,7 +13770,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1140", "id": "validator_test_engine_audit_test_validator_from_config_orchestrator_disabled", - "community": 104, + "community": 119, "norm_label": "test_validator_from_config_orchestrator_disabled()" }, { @@ -13518,7 +13779,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1154", "id": "validator_test_engine_audit_test_validator_from_config_no_orchestrator_attr", - "community": 104, + "community": 119, "norm_label": "test_validator_from_config_no_orchestrator_attr()" }, { @@ -13527,7 +13788,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1165", "id": "validator_test_engine_audit_test_classify_level_unrelated_dir_returns_other", - "community": 104, + "community": 119, "norm_label": "test_classify_level_unrelated_dir_returns_other()" }, { @@ -13536,7 +13797,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1175", "id": "validator_test_engine_audit_test_compute_run_path_unrelated_other_returns_input", - "community": 104, + "community": 119, "norm_label": "test_compute_run_path_unrelated_other_returns_input()" }, { @@ -13545,7 +13806,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1187", "id": "validator_test_engine_audit_test_compute_run_path_root_other_returns_root", - "community": 104, + "community": 119, "norm_label": "test_compute_run_path_root_other_returns_root()" }, { @@ -13554,7 +13815,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1", "id": "validator_test_engine_audit_rationale_1", - "community": 104, + "community": 119, "norm_label": "unit tests for ``validator.audit`` and ``validator.query_problems``. backend sp" }, { @@ -13563,7 +13824,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L56", "id": "validator_test_engine_audit_rationale_56", - "community": 89, + "community": 93, "norm_label": "build the wire-form ``creation.json`` dict for a fixture tree." }, { @@ -13572,7 +13833,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L88", "id": "validator_test_engine_audit_rationale_88", - "community": 89, + "community": 93, "norm_label": "write the wire-form ``creation.json`` under ``/.exlab-wizard``." }, { @@ -13581,7 +13842,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L106", "id": "validator_test_engine_audit_rationale_106", - "community": 88, + "community": 92, "norm_label": "build a single-equipment / single-project / single-run clean tree. returns" }, { @@ -13590,7 +13851,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L148", "id": "validator_test_engine_audit_rationale_148", - "community": 88, + "community": 92, "norm_label": "construct a :class:`validator` for tests with a single equipment root." }, { @@ -13599,7 +13860,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L174", "id": "validator_test_engine_audit_rationale_174", - "community": 88, + "community": 92, "norm_label": "a well-formed equipment / project / run tree produces no findings." }, { @@ -13608,7 +13869,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L182", "id": "validator_test_engine_audit_rationale_182", - "community": 187, + "community": 206, "norm_label": "a project directory with no ``creation.json`` produces one orphan finding." }, { @@ -13617,7 +13878,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L203", "id": "validator_test_engine_audit_rationale_203", - "community": 187, + "community": 206, "norm_label": "a run directory with no ``creation.json`` produces one orphan finding." }, { @@ -13626,7 +13887,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L220", "id": "validator_test_engine_audit_rationale_220", - "community": 506, + "community": 206, "norm_label": "a project directory whose name is not a safe path segment (\u00a73.2) produces a" }, { @@ -13635,7 +13896,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L239", "id": "validator_test_engine_audit_rationale_239", - "community": 187, + "community": 206, "norm_label": "a human-readable project name (spaces and all) is a safe segment." }, { @@ -13644,7 +13905,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L247", "id": "validator_test_engine_audit_rationale_247", - "community": 187, + "community": 93, "norm_label": "a ``run_*`` leaf whose creation.json says ``run_kind=\"test\"`` is flagged." }, { @@ -13653,7 +13914,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L269", "id": "validator_test_engine_audit_rationale_269", - "community": 89, + "community": 206, "norm_label": "a directory name containing ```` produces a finding." }, { @@ -13662,7 +13923,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L294", "id": "validator_test_engine_audit_rationale_294", - "community": 187, + "community": 206, "norm_label": "an active override with matching ``problem_class`` flips ``override_active``." }, { @@ -13671,7 +13932,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L327", "id": "validator_test_engine_audit_rationale_327", - "community": 187, + "community": 525, "norm_label": "synced run + hard finding -> ``synced_under_prior_policy=true``." }, { @@ -13680,7 +13941,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L351", "id": "validator_test_engine_audit_rationale_351", - "community": 187, + "community": 526, "norm_label": "cleaned run + hard finding -> ``synced_under_prior_policy=true``. a ``clean" }, { @@ -13689,7 +13950,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L375", "id": "validator_test_engine_audit_rationale_375", - "community": 88, + "community": 92, "norm_label": "a large file with a placeholder is not scanned for content." }, { @@ -13698,7 +13959,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L399", "id": "validator_test_engine_audit_rationale_399", - "community": 88, + "community": 92, "norm_label": "a ``.bin`` file is skipped from content scanning by the extension gate." }, { @@ -13707,7 +13968,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L418", "id": "validator_test_engine_audit_rationale_418", - "community": 88, + "community": 92, "norm_label": "a ``.txt`` file with a nul byte is treated as binary and skipped." }, { @@ -13716,7 +13977,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L437", "id": "validator_test_engine_audit_rationale_437", - "community": 88, + "community": 92, "norm_label": "a small ``.txt`` file inside the run directory is scanned for placeholders." }, { @@ -13725,7 +13986,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L455", "id": "validator_test_engine_audit_rationale_455", - "community": 89, + "community": 93, "norm_label": "hard-tier findings come first; ties break on rule then offending_path." }, { @@ -13734,7 +13995,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L475", "id": "validator_test_engine_audit_rationale_475", - "community": 88, + "community": 92, "norm_label": "``query_problems`` returns the same list as ``audit``." }, { @@ -13743,7 +14004,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L488", "id": "validator_test_engine_audit_rationale_488", - "community": 89, + "community": 93, "norm_label": "``{\"kind\": \"equipment_id\", ...}`` walks only the matching subtree." }, { @@ -13752,7 +14013,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L525", "id": "validator_test_engine_audit_rationale_525", - "community": 89, + "community": 93, "norm_label": "``{\"kind\": \"project_path\", ...}`` walks the supplied path only." }, { @@ -13761,7 +14022,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L550", "id": "validator_test_engine_audit_rationale_550", - "community": 89, + "community": 93, "norm_label": "``{\"kind\": \"all\"}`` aggregates findings across every equipment root." }, { @@ -13770,7 +14031,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L585", "id": "validator_test_engine_audit_rationale_585", - "community": 104, + "community": 119, "norm_label": "an ``equipment_id`` not in the map produces an empty result, not an error." }, { @@ -13779,7 +14040,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L592", "id": "validator_test_engine_audit_rationale_592", - "community": 88, + "community": 92, "norm_label": "the walk does not apply \u00a78.1 rules to ``.exlab-wizard`` contents." }, { @@ -13788,7 +14049,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L608", "id": "validator_test_engine_audit_rationale_608", - "community": 187, + "community": 206, "norm_label": "a tombstone-revoked override does not flip ``override_active``." }, { @@ -13797,7 +14058,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L645", "id": "validator_test_engine_audit_rationale_645", - "community": 88, + "community": 92, "norm_label": "a file name containing ```` produces a finding." }, { @@ -13806,7 +14067,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L661", "id": "validator_test_engine_audit_rationale_661", - "community": 187, + "community": 206, "norm_label": "a ``testrun_*`` leaf with ``run_kind=\"experimental\"`` triggers mismatch." }, { @@ -13815,7 +14076,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L681", "id": "validator_test_engine_audit_rationale_681", - "community": 89, + "community": 93, "norm_label": "every entry in the result is a :class:`finding` instance." }, { @@ -13824,7 +14085,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L696", "id": "validator_test_engine_audit_rationale_696", - "community": 89, + "community": 93, "norm_label": "``\"all\"`` scope walks the staging root when one is configured." }, { @@ -13833,7 +14094,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L726", "id": "validator_test_engine_audit_rationale_726", - "community": 89, + "community": 93, "norm_label": "every finding has the documented \u00a711.8 fields populated." }, { @@ -13842,7 +14103,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L761", "id": "validator_test_engine_audit_rationale_761", - "community": 104, + "community": 119, "norm_label": "an unrecognised ``scope.kind`` raises ``valueerror`` (defensive guard)." }, { @@ -13851,7 +14112,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L768", "id": "validator_test_engine_audit_rationale_768", - "community": 104, + "community": 119, "norm_label": "walking a missing root produces no findings (silent skip)." }, { @@ -13860,7 +14121,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L776", "id": "validator_test_engine_audit_rationale_776", - "community": 104, + "community": 119, "norm_label": "walking a root that is a regular file (not a directory) returns []." }, { @@ -13869,7 +14130,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L784", "id": "validator_test_engine_audit_rationale_784", - "community": 104, + "community": 119, "norm_label": "a ``permissionerror`` from ``os.scandir`` does not crash the walk." }, { @@ -13878,7 +14139,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L804", "id": "validator_test_engine_audit_rationale_804", - "community": 89, + "community": 93, "norm_label": "a project subfolder that is not a ``run_*`` / ``testruns`` is \"other\"." }, { @@ -13887,7 +14148,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L820", "id": "validator_test_engine_audit_rationale_820", - "community": 89, + "community": 93, "norm_label": "a non-``testrun_`` leaf under ``testruns/`` is classified as \"other\"." }, { @@ -13896,7 +14157,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L836", "id": "validator_test_engine_audit_rationale_836", - "community": 88, + "community": 92, "norm_label": "a subfolder under a run is classified as \"other\"; rules still walk into it." }, { @@ -13905,7 +14166,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L858", "id": "validator_test_engine_audit_rationale_858", - "community": 88, + "community": 92, "norm_label": "a ``creation.json`` that raises ``oserror`` on read is treated as absent." }, { @@ -13914,7 +14175,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L877", "id": "validator_test_engine_audit_rationale_877", - "community": 88, + "community": 92, "norm_label": "a ``creation.json`` with invalid json bytes is treated as absent." }, { @@ -13923,7 +14184,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L889", "id": "validator_test_engine_audit_rationale_889", - "community": 89, + "community": 93, "norm_label": "a ``creation.json`` valid as raw dict but failing creationjson decode." }, { @@ -13932,7 +14193,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L909", "id": "validator_test_engine_audit_rationale_909", - "community": 88, + "community": 92, "norm_label": "a malformed ``readme_fields.json`` is silently skipped (no crash)." }, { @@ -13941,7 +14202,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L921", "id": "validator_test_engine_audit_rationale_921", - "community": 89, + "community": 93, "norm_label": "audit picks up missing required readme fields when stamped on creation.json." }, { @@ -13950,7 +14211,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L957", "id": "validator_test_engine_audit_rationale_957", - "community": 89, + "community": 93, "norm_label": "``required_readme_field_ids`` that is not a list is ignored." }, { @@ -13959,7 +14220,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L992", "id": "validator_test_engine_audit_rationale_992", - "community": 89, + "community": 93, "norm_label": "the ``test_runs.json`` marker file is exempt from content scanning." }, { @@ -13968,7 +14229,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1025", "id": "validator_test_engine_audit_rationale_1025", - "community": 88, + "community": 92, "norm_label": "if ``stat()`` raises oserror, the file is skipped from content scanning." }, { @@ -13977,7 +14238,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1052", "id": "validator_test_engine_audit_rationale_1052", - "community": 88, + "community": 92, "norm_label": "if ``open(rb)`` raises oserror, the file is silently skipped." }, { @@ -13986,7 +14247,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1076", "id": "validator_test_engine_audit_rationale_1076", - "community": 104, + "community": 119, "norm_label": "a directory outside the equipment root resolves to \"other\" (defensive)." }, { @@ -13995,7 +14256,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1090", "id": "validator_test_engine_audit_rationale_1090", - "community": 104, + "community": 119, "norm_label": "a finding with an unknown tier sorts after both hard and soft." }, { @@ -14004,7 +14265,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1114", "id": "validator_test_engine_audit_rationale_1114", - "community": 401, + "community": 422, "norm_label": "``_level_for_orphan`` returns none for non-project / non-run levels." }, { @@ -14013,7 +14274,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1123", "id": "validator_test_engine_audit_rationale_1123", - "community": 104, + "community": 211, "norm_label": "``validator.from_config`` projects fields out of a config-shaped object." }, { @@ -14022,7 +14283,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1141", "id": "validator_test_engine_audit_rationale_1141", - "community": 104, + "community": 119, "norm_label": "when ``orchestrator.enabled`` is false, no staging root is wired in." }, { @@ -14031,7 +14292,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1155", "id": "validator_test_engine_audit_rationale_1155", - "community": 104, + "community": 119, "norm_label": "``orchestrator`` attribute absent on the config also works (default none)." }, { @@ -14040,7 +14301,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1166", "id": "validator_test_engine_audit_rationale_1166", - "community": 104, + "community": 119, "norm_label": "``_classify_level`` returns \"other\" for dirs outside the equipment root." }, { @@ -14049,7 +14310,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1176", "id": "validator_test_engine_audit_rationale_1176", - "community": 104, + "community": 119, "norm_label": "``_compute_run_path`` returns ``str(directory)`` for unrelated paths." }, { @@ -14058,7 +14319,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L1188", "id": "validator_test_engine_audit_rationale_1188", - "community": 104, + "community": 119, "norm_label": "``_compute_run_path`` for the equipment root itself with ``other``." }, { @@ -14067,7 +14328,7 @@ "source_file": "tests/unit/validator/test_engine_audit.py", "source_location": "L187", "id": "validator_test_engine_audit_rationale_187", - "community": 104, + "community": 119, "norm_label": "# note: deliberately no creation.json at the project level." }, { @@ -14076,7 +14337,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L1", "id": "tests_unit_cache_test_log_writer_py", - "community": 33, + "community": 34, "norm_label": "test_log_writer.py" }, { @@ -14085,7 +14346,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L33", "id": "cache_test_log_writer_test_format_log_line_with_all_tags_matches_spec_example", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_with_all_tags_matches_spec_example()" }, { @@ -14094,7 +14355,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L52", "id": "cache_test_log_writer_test_format_log_line_with_run_id_includes_run_tag", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_with_run_id_includes_run_tag()" }, { @@ -14103,7 +14364,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L70", "id": "cache_test_log_writer_test_format_log_line_omits_unset_tags", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_omits_unset_tags()" }, { @@ -14112,7 +14373,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L86", "id": "cache_test_log_writer_test_format_log_line_partial_tags_skipped_individually", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_partial_tags_skipped_individually()" }, { @@ -14121,7 +14382,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L102", "id": "cache_test_log_writer_test_format_log_line_level_is_padded_to_five_chars", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_level_is_padded_to_five_chars()" }, { @@ -14130,7 +14391,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L115", "id": "cache_test_log_writer_test_format_log_line_timestamp_is_zero_padded_iso_with_z", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_timestamp_is_zero_padded_iso_with_z()" }, { @@ -14139,7 +14400,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L123", "id": "cache_test_log_writer_test_format_log_line_naive_datetime_treated_as_utc", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_naive_datetime_treated_as_utc()" }, { @@ -14148,7 +14409,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L130", "id": "cache_test_log_writer_test_format_log_line_aware_non_utc_datetime_converts_to_utc", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_aware_non_utc_datetime_converts_to_utc()" }, { @@ -14157,7 +14418,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L142", "id": "cache_test_log_writer_test_format_log_line_short_message_unchanged", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_short_message_unchanged()" }, { @@ -14166,7 +14427,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L152", "id": "cache_test_log_writer_test_format_log_line_truncates_long_messages_with_marker", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_truncates_long_messages_with_marker()" }, { @@ -14175,7 +14436,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L165", "id": "cache_test_log_writer_test_format_log_line_truncation_preserves_prefix_and_tags", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_truncation_preserves_prefix_and_tags()" }, { @@ -14184,7 +14445,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L179", "id": "cache_test_log_writer_test_format_log_line_truncation_at_exact_boundary", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_truncation_at_exact_boundary()" }, { @@ -14193,7 +14454,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L199", "id": "cache_test_log_writer_test_append_log_line_creates_parent_cache_dir", - "community": 33, + "community": 34, "norm_label": "test_append_log_line_creates_parent_cache_dir()" }, { @@ -14202,7 +14463,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L208", "id": "cache_test_log_writer_test_append_log_line_writes_single_line_with_newline", - "community": 33, + "community": 34, "norm_label": "test_append_log_line_writes_single_line_with_newline()" }, { @@ -14211,7 +14472,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L215", "id": "cache_test_log_writer_test_append_log_line_appends_to_existing_file", - "community": 33, + "community": 34, "norm_label": "test_append_log_line_appends_to_existing_file()" }, { @@ -14220,7 +14481,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L225", "id": "cache_test_log_writer_test_append_log_line_concurrent_writes_do_not_interleave", - "community": 33, + "community": 34, "norm_label": "test_append_log_line_concurrent_writes_do_not_interleave()" }, { @@ -14229,7 +14490,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L255", "id": "cache_test_log_writer_test_append_log_line_idempotent_directory_creation", - "community": 33, + "community": 34, "norm_label": "test_append_log_line_idempotent_directory_creation()" }, { @@ -14238,7 +14499,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L268", "id": "cache_test_log_writer_test_format_log_line_truncation_prefix_alone_too_big_emits_marker_only", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_truncation_prefix_alone_too_big_emits_marker_only()" }, { @@ -14247,7 +14508,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L286", "id": "cache_test_log_writer_test_format_log_line_truncation_prefix_alone_exhausts_budget", - "community": 33, + "community": 34, "norm_label": "test_format_log_line_truncation_prefix_alone_exhausts_budget()" }, { @@ -14256,7 +14517,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L1", "id": "cache_test_log_writer_rationale_1", - "community": 33, + "community": 34, "norm_label": "unit tests for ``exlab_wizard.cache.log_writer``. the line shape is committed b" }, { @@ -14265,7 +14526,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L34", "id": "cache_test_log_writer_rationale_34", - "community": 33, + "community": 34, "norm_label": "the rendered line must match the \u00a711.5 example shape verbatim." }, { @@ -14274,7 +14535,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L53", "id": "cache_test_log_writer_rationale_53", - "community": 33, + "community": 34, "norm_label": "when ``run_id`` is set the ``[run:..]`` tag appears after ``[kind:..]``." }, { @@ -14283,7 +14544,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L71", "id": "cache_test_log_writer_rationale_71", - "community": 33, + "community": 34, "norm_label": "tags whose argument is ``none`` are absent from the output entirely." }, { @@ -14292,7 +14553,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L87", "id": "cache_test_log_writer_rationale_87", - "community": 33, + "community": 34, "norm_label": "only the tags whose values are supplied appear; others are skipped." }, { @@ -14301,7 +14562,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L103", "id": "cache_test_log_writer_rationale_103", - "community": 33, + "community": 34, "norm_label": "levels shorter than 5 chars are padded with trailing spaces." }, { @@ -14310,7 +14571,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L116", "id": "cache_test_log_writer_rationale_116", - "community": 33, + "community": 34, "norm_label": "single-digit fields render as ``04`` etc. and end in ``z``." }, { @@ -14319,7 +14580,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L124", "id": "cache_test_log_writer_rationale_124", - "community": 33, + "community": 34, "norm_label": "a naive datetime is assumed already-utc and rendered with ``z``." }, { @@ -14328,7 +14589,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L131", "id": "cache_test_log_writer_rationale_131", - "community": 33, + "community": 34, "norm_label": "aware datetimes in non-utc zones are converted to utc before rendering." }, { @@ -14337,7 +14598,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L143", "id": "cache_test_log_writer_rationale_143", - "community": 33, + "community": 34, "norm_label": "lines well under the cap are returned without a truncation marker." }, { @@ -14346,7 +14607,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L153", "id": "cache_test_log_writer_rationale_153", - "community": 33, + "community": 34, "norm_label": "a message that pushes the line past log_line_max_bytes is truncated." }, { @@ -14355,7 +14616,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L166", "id": "cache_test_log_writer_rationale_166", - "community": 33, + "community": 34, "norm_label": "truncation trims the message body, never the prefix or tags." }, { @@ -14364,7 +14625,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L180", "id": "cache_test_log_writer_rationale_180", - "community": 33, + "community": 34, "norm_label": "a line whose utf-8 length equals log_line_max_bytes is not truncated." }, { @@ -14373,7 +14634,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L200", "id": "cache_test_log_writer_rationale_200", - "community": 33, + "community": 34, "norm_label": "parent ``.exlab-wizard`` directory is created if missing." }, { @@ -14382,7 +14643,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L216", "id": "cache_test_log_writer_rationale_216", - "community": 33, + "community": 34, "norm_label": "multi-write: each call appends after prior content." }, { @@ -14391,7 +14652,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L226", "id": "cache_test_log_writer_rationale_226", - "community": 33, + "community": 34, "norm_label": "n concurrent threads each writing one short line must produce n intact lines" }, { @@ -14400,7 +14661,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L256", "id": "cache_test_log_writer_rationale_256", - "community": 33, + "community": 34, "norm_label": "calling append twice does not fail even though the dir already exists." }, { @@ -14409,7 +14670,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L271", "id": "cache_test_log_writer_rationale_271", - "community": 33, + "community": 34, "norm_label": "when the cap is so small that even the truncation marker alone exceeds it, t" }, { @@ -14418,7 +14679,7 @@ "source_file": "tests/unit/cache/test_log_writer.py", "source_location": "L289", "id": "cache_test_log_writer_rationale_289", - "community": 33, + "community": 34, "norm_label": "when the prefix itself is longer than the budget but smaller than the cap (i" }, { @@ -14427,7 +14688,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L1", "id": "tests_unit_cache_test_creation_writer_py", - "community": 72, + "community": 83, "norm_label": "test_creation_writer.py" }, { @@ -14436,7 +14697,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L48", "id": "cache_test_creation_writer_build_minimal_payload", - "community": 72, + "community": 83, "norm_label": "_build_minimal_payload()" }, { @@ -14445,7 +14706,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L74", "id": "cache_test_creation_writer_writer", - "community": 72, + "community": 83, "norm_label": "writer()" }, { @@ -14454,7 +14715,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L79", "id": "cache_test_creation_writer_creation_path", - "community": 72, + "community": 83, "norm_label": "creation_path()" }, { @@ -14463,7 +14724,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L89", "id": "cache_test_creation_writer_test_write_creation_emits_valid_current_version_file", - "community": 72, + "community": 83, "norm_label": "test_write_creation_emits_valid_current_version_file()" }, { @@ -14472,7 +14733,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L101", "id": "cache_test_creation_writer_test_write_creation_pins_schema_version_to_writer_default", - "community": 72, + "community": 83, "norm_label": "test_write_creation_pins_schema_version_to_writer_default()" }, { @@ -14481,7 +14742,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L117", "id": "cache_test_creation_writer_test_update_creation_atomic_mutates_target_field", - "community": 72, + "community": 83, "norm_label": "test_update_creation_atomic_mutates_target_field()" }, { @@ -14490,7 +14751,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L133", "id": "cache_test_creation_writer_test_update_creation_atomic_preserves_unknown_top_level_fields", - "community": 72, + "community": 83, "norm_label": "test_update_creation_atomic_preserves_unknown_top_level_fields()" }, { @@ -14499,7 +14760,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L152", "id": "cache_test_creation_writer_test_update_creation_atomic_appends_validation_override", - "community": 72, + "community": 83, "norm_label": "test_update_creation_atomic_appends_validation_override()" }, { @@ -14508,7 +14769,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L178", "id": "cache_test_creation_writer_test_update_creation_atomic_serializes_concurrent_calls", - "community": 72, + "community": 83, "norm_label": "test_update_creation_atomic_serializes_concurrent_calls()" }, { @@ -14517,7 +14778,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L219", "id": "cache_test_creation_writer_test_read_creation_snapshot_returns_typed_struct", - "community": 72, + "community": 83, "norm_label": "test_read_creation_snapshot_returns_typed_struct()" }, { @@ -14526,7 +14787,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L229", "id": "cache_test_creation_writer_test_read_creation_snapshot_supports_concurrent_readers", - "community": 72, + "community": 83, "norm_label": "test_read_creation_snapshot_supports_concurrent_readers()" }, { @@ -14535,7 +14796,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L247", "id": "cache_test_creation_writer_test_reading_2_0_file_raises_schema_major_mismatch", - "community": 72, + "community": 83, "norm_label": "test_reading_2_0_file_raises_schema_major_mismatch()" }, { @@ -14544,7 +14805,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L260", "id": "cache_test_creation_writer_test_reading_malformed_schema_version_raises_schema_major_mismatch", - "community": 72, + "community": 83, "norm_label": "test_reading_malformed_schema_version_raises_schema_major_mismatch()" }, { @@ -14553,7 +14814,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L273", "id": "cache_test_creation_writer_test_reading_1_0_file_applies_documented_defaults", - "community": 72, + "community": 83, "norm_label": "test_reading_1_0_file_applies_documented_defaults()" }, { @@ -14562,7 +14823,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L312", "id": "cache_test_creation_writer_test_reading_1_7_file_backfills_lims_project_subfields", - "community": 72, + "community": 83, "norm_label": "test_reading_1_7_file_backfills_lims_project_subfields()" }, { @@ -14571,7 +14832,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L345", "id": "cache_test_creation_writer_test_writer_bumps_schema_version_on_mutation_of_old_minor", - "community": 72, + "community": 83, "norm_label": "test_writer_bumps_schema_version_on_mutation_of_old_minor()" }, { @@ -14580,7 +14841,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L382", "id": "cache_test_creation_writer_test_writing_always_emits_current_schema_version", - "community": 72, + "community": 83, "norm_label": "test_writing_always_emits_current_schema_version()" }, { @@ -14589,7 +14850,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L397", "id": "cache_test_creation_writer_test_select_active_overrides_returns_empty_for_empty_input", - "community": 128, + "community": 152, "norm_label": "test_select_active_overrides_returns_empty_for_empty_input()" }, { @@ -14598,7 +14859,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L401", "id": "cache_test_creation_writer_test_select_active_overrides_keeps_unrevoked_unexpired_entries", - "community": 128, + "community": 152, "norm_label": "test_select_active_overrides_keeps_unrevoked_unexpired_entries()" }, { @@ -14607,7 +14868,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L418", "id": "cache_test_creation_writer_test_select_active_overrides_drops_revoked_entry", - "community": 128, + "community": 152, "norm_label": "test_select_active_overrides_drops_revoked_entry()" }, { @@ -14616,7 +14877,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L443", "id": "cache_test_creation_writer_test_select_active_overrides_drops_expired_entry", - "community": 128, + "community": 152, "norm_label": "test_select_active_overrides_drops_expired_entry()" }, { @@ -14625,7 +14886,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L473", "id": "cache_test_creation_writer_test_select_active_overrides_uses_explicit_now_for_determinism", - "community": 128, + "community": 152, "norm_label": "test_select_active_overrides_uses_explicit_now_for_determinism()" }, { @@ -14634,7 +14895,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L493", "id": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id", - "community": 128, + "community": 152, "norm_label": "test_select_active_overrides_ignores_tombstone_for_unknown_id()" }, { @@ -14643,7 +14904,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L519", "id": "cache_test_creation_writer_test_select_active_overrides_treats_malformed_expires_at_as_expired", - "community": 128, + "community": 152, "norm_label": "test_select_active_overrides_treats_malformed_expires_at_as_expired()" }, { @@ -14652,7 +14913,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L539", "id": "cache_test_creation_writer_test_round_trip_preserves_plugins_applied_with_isolation", - "community": 72, + "community": 83, "norm_label": "test_round_trip_preserves_plugins_applied_with_isolation()" }, { @@ -14661,7 +14922,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L566", "id": "cache_test_creation_writer_test_reading_file_with_missing_required_field_raises_validation_error", - "community": 72, + "community": 83, "norm_label": "test_reading_file_with_missing_required_field_raises_validation_error()" }, { @@ -14670,7 +14931,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L579", "id": "cache_test_creation_writer_test_select_active_overrides_skips_tombstone_with_null_revokes_target", - "community": 128, + "community": 152, "norm_label": "test_select_active_overrides_skips_tombstone_with_null_revokes_target()" }, { @@ -14679,7 +14940,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L609", "id": "cache_test_creation_writer_test_select_active_overrides_naive_expires_at_is_treated_as_utc", - "community": 128, + "community": 152, "norm_label": "test_select_active_overrides_naive_expires_at_is_treated_as_utc()" }, { @@ -14688,7 +14949,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L629", "id": "cache_test_creation_writer_test_reading_file_missing_schema_version_raises_schema_major_mismatch", - "community": 72, + "community": 83, "norm_label": "test_reading_file_missing_schema_version_raises_schema_major_mismatch()" }, { @@ -14697,7 +14958,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L640", "id": "cache_test_creation_writer_test_update_creation_atomic_backfills_missing_override_id", - "community": 72, + "community": 83, "norm_label": "test_update_creation_atomic_backfills_missing_override_id()" }, { @@ -14706,7 +14967,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L1", "id": "cache_test_creation_writer_rationale_1", - "community": 72, + "community": 83, "norm_label": "tests for the atomic ``creation.json`` writer in ``exlab_wizard.cache.creation_w" }, { @@ -14715,7 +14976,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L104", "id": "cache_test_creation_writer_rationale_104", - "community": 72, + "community": 83, "norm_label": "even if the caller hands us an old version, the writer pins to current." }, { @@ -14724,7 +14985,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L136", "id": "cache_test_creation_writer_rationale_136", - "community": 72, + "community": 83, "norm_label": "forward-compat: a v0.7 writer must not drop fields a v0.8 writer added." }, { @@ -14733,7 +14994,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L181", "id": "cache_test_creation_writer_rationale_181", - "community": 72, + "community": 83, "norm_label": "two simultaneous mutators on the same path must serialize. this is a small-" }, { @@ -14742,7 +15003,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L232", "id": "cache_test_creation_writer_rationale_232", - "community": 72, + "community": 83, "norm_label": "multiple lock_sh readers must not block each other." }, { @@ -14751,7 +15012,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L263", "id": "cache_test_creation_writer_rationale_263", - "community": 72, + "community": 83, "norm_label": "a non-major.minor string must surface as the same structured error rather th" }, { @@ -14760,7 +15021,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L276", "id": "cache_test_creation_writer_rationale_276", - "community": 72, + "community": 83, "norm_label": "spec \u00a711.3 history: a 1.0 file predates ``run_kind``, ``validation_overrides" }, { @@ -14769,7 +15030,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L315", "id": "cache_test_creation_writer_rationale_315", - "community": 72, + "community": 83, "norm_label": "1.7 -> 1.8 added ``lims_project.source`` and ``lims_project.cache_freshness_" }, { @@ -14778,7 +15039,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L348", "id": "cache_test_creation_writer_rationale_348", - "community": 72, + "community": 83, "norm_label": "spec \u00a711.9.3 rule 3: on mutation, an older-minor file is rewritten at the wr" }, { @@ -14787,7 +15048,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L385", "id": "cache_test_creation_writer_rationale_385", - "community": 72, + "community": 83, "norm_label": "spec \u00a711.9.3 rule 1: a writer at version r always writes r for new files." }, { @@ -14796,7 +15057,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L474", "id": "cache_test_creation_writer_rationale_474", - "community": 128, + "community": 152, "norm_label": "the matching algorithm uses ``now=`` for deterministic tests; the same fixtu" }, { @@ -14805,7 +15066,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L494", "id": "cache_test_creation_writer_rationale_494", - "community": 128, + "community": 152, "norm_label": "spec \u00a711.3: orphan tombstones are logged warn but have no effect." }, { @@ -14814,7 +15075,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L520", "id": "cache_test_creation_writer_rationale_520", - "community": 128, + "community": 152, "norm_label": "fail-safe: a malformed ``expires_at`` re-engages the gate." }, { @@ -14823,7 +15084,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L580", "id": "cache_test_creation_writer_rationale_580", - "community": 128, + "community": 152, "norm_label": "a tombstone with no ``revokes`` key is silently skipped (no-op). spec \u00a711.3" }, { @@ -14832,7 +15093,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L610", "id": "cache_test_creation_writer_rationale_610", - "community": 128, + "community": 152, "norm_label": "``_is_future``'s naive-datetime branch attaches utc and compares against ``n" }, { @@ -14841,7 +15102,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L632", "id": "cache_test_creation_writer_rationale_632", - "community": 72, + "community": 83, "norm_label": "a file without a ``schema_version`` field is treated as a major mismatch --" }, { @@ -14850,7 +15111,7 @@ "source_file": "tests/unit/cache/test_creation_writer.py", "source_location": "L643", "id": "cache_test_creation_writer_rationale_643", - "community": 72, + "community": 83, "norm_label": "pre-1.6 files may carry override entries without an ``id``. the migration he" }, { @@ -14859,7 +15120,7 @@ "source_file": "tests/unit/cache/__init__.py", "source_location": "L1", "id": "tests_unit_cache_init_py", - "community": 93, + "community": 6, "norm_label": "__init__.py" }, { @@ -14868,7 +15129,7 @@ "source_file": "src/exlab_wizard/cache/__init__.py", "source_location": "L1", "id": "cache_init_rationale_1", - "community": 93, + "community": 6, "norm_label": "cache package. backend spec \u00a711." }, { @@ -14877,7 +15138,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L1", "id": "tests_unit_cache_test_equipment_py", - "community": 46, + "community": 57, "norm_label": "test_equipment.py" }, { @@ -14886,7 +15147,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L35", "id": "cache_test_equipment_make_equipment_payload", - "community": 46, + "community": 57, "norm_label": "_make_equipment_payload()" }, { @@ -14895,7 +15156,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L62", "id": "cache_test_equipment_make_test_runs_payload", - "community": 46, + "community": 57, "norm_label": "_make_test_runs_payload()" }, { @@ -14904,7 +15165,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L83", "id": "cache_test_equipment_test_write_equipment_produces_valid_v1_file", - "community": 46, + "community": 57, "norm_label": "test_write_equipment_produces_valid_v1_file()" }, { @@ -14913,7 +15174,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L104", "id": "cache_test_equipment_test_write_equipment_creates_parent_cache_dir", - "community": 46, + "community": 57, "norm_label": "test_write_equipment_creates_parent_cache_dir()" }, { @@ -14922,7 +15183,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L114", "id": "cache_test_equipment_test_write_equipment_preserves_first_seen_at_on_rewrite", - "community": 46, + "community": 57, "norm_label": "test_write_equipment_preserves_first_seen_at_on_rewrite()" }, { @@ -14931,7 +15192,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L131", "id": "cache_test_equipment_test_write_equipment_updates_last_modified_at_on_rewrite", - "community": 46, + "community": 57, "norm_label": "test_write_equipment_updates_last_modified_at_on_rewrite()" }, { @@ -14940,7 +15201,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L146", "id": "cache_test_equipment_test_read_equipment_round_trips", - "community": 46, + "community": 57, "norm_label": "test_read_equipment_round_trips()" }, { @@ -14949,7 +15210,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L163", "id": "cache_test_equipment_test_read_equipment_raises_when_file_missing", - "community": 46, + "community": 57, "norm_label": "test_read_equipment_raises_when_file_missing()" }, { @@ -14958,7 +15219,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L171", "id": "cache_test_equipment_test_write_equipment_corrupt_existing_file_recovers", - "community": 46, + "community": 57, "norm_label": "test_write_equipment_corrupt_existing_file_recovers()" }, { @@ -14967,7 +15228,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L193", "id": "cache_test_equipment_test_write_test_runs_marker_creates_v1_file", - "community": 46, + "community": 57, "norm_label": "test_write_test_runs_marker_creates_v1_file()" }, { @@ -14976,7 +15237,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L206", "id": "cache_test_equipment_test_write_test_runs_marker_creates_parent_dir", - "community": 46, + "community": 57, "norm_label": "test_write_test_runs_marker_creates_parent_dir()" }, { @@ -14985,7 +15246,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L215", "id": "cache_test_equipment_test_write_test_runs_marker_is_idempotent", - "community": 46, + "community": 57, "norm_label": "test_write_test_runs_marker_is_idempotent()" }, { @@ -14994,7 +15255,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L239", "id": "cache_test_equipment_test_write_test_runs_marker_concurrent_first_writes_safe", - "community": 46, + "community": 57, "norm_label": "test_write_test_runs_marker_concurrent_first_writes_safe()" }, { @@ -15003,7 +15264,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L266", "id": "cache_test_equipment_test_read_test_runs_marker_round_trips", - "community": 46, + "community": 57, "norm_label": "test_read_test_runs_marker_round_trips()" }, { @@ -15012,7 +15273,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L282", "id": "cache_test_equipment_test_require_schema_major_raises_on_none_version", - "community": 66, + "community": 117, "norm_label": "test_require_schema_major_raises_on_none_version()" }, { @@ -15021,7 +15282,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L291", "id": "cache_test_equipment_test_require_schema_major_raises_on_empty_version", - "community": 66, + "community": 117, "norm_label": "test_require_schema_major_raises_on_empty_version()" }, { @@ -15030,7 +15291,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L300", "id": "cache_test_equipment_test_require_schema_major_raises_on_garbage_version", - "community": 66, + "community": 117, "norm_label": "test_require_schema_major_raises_on_garbage_version()" }, { @@ -15039,7 +15300,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L309", "id": "cache_test_equipment_test_require_schema_major_passes_on_same_major", - "community": 66, + "community": 117, "norm_label": "test_require_schema_major_passes_on_same_major()" }, { @@ -15048,7 +15309,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L319", "id": "cache_test_equipment_test_read_equipment_skips_check_for_malformed_json", - "community": 46, + "community": 57, "norm_label": "test_read_equipment_skips_check_for_malformed_json()" }, { @@ -15057,7 +15318,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L332", "id": "cache_test_equipment_test_read_equipment_skips_check_when_schema_version_missing", - "community": 46, + "community": 57, "norm_label": "test_read_equipment_skips_check_when_schema_version_missing()" }, { @@ -15066,7 +15327,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L1", "id": "cache_test_equipment_rationale_1", - "community": 46, + "community": 57, "norm_label": "unit tests for ``exlab_wizard.cache.equipment``. the schemas come from ``exlab_" }, { @@ -15075,7 +15336,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L44", "id": "cache_test_equipment_rationale_44", - "community": 46, + "community": 57, "norm_label": "build a :class:`equipmentjson` payload for tests. timestamps are stamped by" }, { @@ -15084,7 +15345,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L84", "id": "cache_test_equipment_rationale_84", - "community": 46, + "community": 57, "norm_label": "first write produces a parseable v1.0 file with both timestamps stamped." }, { @@ -15093,7 +15354,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L105", "id": "cache_test_equipment_rationale_105", - "community": 46, + "community": 57, "norm_label": "parent ``.exlab-wizard`` is auto-created if missing." }, { @@ -15102,7 +15363,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L115", "id": "cache_test_equipment_rationale_115", - "community": 46, + "community": 57, "norm_label": "re-writing an existing file keeps the original ``first_seen_at``." }, { @@ -15111,7 +15372,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L132", "id": "cache_test_equipment_rationale_132", - "community": 46, + "community": 57, "norm_label": "``last_modified_at`` advances on every write; ``first_seen_at`` is frozen." }, { @@ -15120,7 +15381,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L147", "id": "cache_test_equipment_rationale_147", - "community": 46, + "community": 57, "norm_label": "a round-trip write \u2192 read returns an equivalent payload." }, { @@ -15129,7 +15390,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L172", "id": "cache_test_equipment_rationale_172", - "community": 46, + "community": 57, "norm_label": "a corrupt existing file is rewritten cleanly; first_seen_at is fresh. the \u00a7" }, { @@ -15138,7 +15399,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L216", "id": "cache_test_equipment_rationale_216", - "community": 46, + "community": 57, "norm_label": "second write is a no-op even when the input payload differs. per \u00a711.4.2: s" }, { @@ -15147,7 +15408,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L240", "id": "cache_test_equipment_rationale_240", - "community": 46, + "community": 57, "norm_label": "concurrent first-time writes do not corrupt the file. two coroutines race t" }, { @@ -15156,7 +15417,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L267", "id": "cache_test_equipment_rationale_267", - "community": 46, + "community": 57, "norm_label": "round-trip: write -> read returns an equivalent payload." }, { @@ -15165,7 +15426,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L283", "id": "cache_test_equipment_rationale_283", - "community": 66, + "community": 117, "norm_label": "an absent or ``none`` ``schema_version`` is a major-mismatch case." }, { @@ -15174,7 +15435,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L292", "id": "cache_test_equipment_rationale_292", - "community": 66, + "community": 117, "norm_label": "empty string is treated like ``none`` (no parseable major)." }, { @@ -15183,7 +15444,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L301", "id": "cache_test_equipment_rationale_301", - "community": 66, + "community": 117, "norm_label": "a non-``major.minor`` string is treated as a major-mismatch case." }, { @@ -15192,7 +15453,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L310", "id": "cache_test_equipment_rationale_310", - "community": 66, + "community": 117, "norm_label": "same major (different minor) is allowed." }, { @@ -15201,7 +15462,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L320", "id": "cache_test_equipment_rationale_320", - "community": 46, + "community": 57, "norm_label": "the ``_check_schema_major_from_bytes`` helper silently ignores malformed jso" }, { @@ -15210,7 +15471,7 @@ "source_file": "tests/unit/cache/test_equipment.py", "source_location": "L335", "id": "cache_test_equipment_rationale_335", - "community": 46, + "community": 57, "norm_label": "a file with no ``schema_version`` falls through to the typed decoder (which" }, { @@ -15219,7 +15480,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L1", "id": "tests_unit_cache_test_sync_state_writer_py", - "community": 5, + "community": 6, "norm_label": "test_sync_state_writer.py" }, { @@ -15228,7 +15489,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L25", "id": "cache_test_sync_state_writer_state_path", - "community": 5, + "community": 6, "norm_label": "_state_path()" }, { @@ -15237,7 +15498,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L34", "id": "cache_test_sync_state_writer_test_read_when_absent_returns_empty_state", - "community": 5, + "community": 6, "norm_label": "test_read_when_absent_returns_empty_state()" }, { @@ -15246,7 +15507,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L52", "id": "cache_test_sync_state_writer_test_upsert_file_creates_a_record", - "community": 5, + "community": 6, "norm_label": "test_upsert_file_creates_a_record()" }, { @@ -15255,7 +15516,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L72", "id": "cache_test_sync_state_writer_test_upsert_file_updates_existing_record", - "community": 5, + "community": 6, "norm_label": "test_upsert_file_updates_existing_record()" }, { @@ -15264,7 +15525,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L90", "id": "cache_test_sync_state_writer_test_upsert_file_preserves_keep_local", - "community": 5, + "community": 6, "norm_label": "test_upsert_file_preserves_keep_local()" }, { @@ -15273,7 +15534,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L112", "id": "cache_test_sync_state_writer_test_set_keep_local_creates_record_if_absent", - "community": 5, + "community": 6, "norm_label": "test_set_keep_local_creates_record_if_absent()" }, { @@ -15282,7 +15543,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L123", "id": "cache_test_sync_state_writer_test_set_keep_local_toggles_and_preserves_sync_fields", - "community": 5, + "community": 6, "norm_label": "test_set_keep_local_toggles_and_preserves_sync_fields()" }, { @@ -15291,7 +15552,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L148", "id": "cache_test_sync_state_writer_test_mark_cleared_sets_cleared_at", - "community": 5, + "community": 6, "norm_label": "test_mark_cleared_sets_cleared_at()" }, { @@ -15300,7 +15561,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L163", "id": "cache_test_sync_state_writer_test_mark_cleared_on_absent_file_creates_state", - "community": 5, + "community": 6, "norm_label": "test_mark_cleared_on_absent_file_creates_state()" }, { @@ -15309,7 +15570,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L172", "id": "cache_test_sync_state_writer_test_mutators_create_missing_exlab_wizard_dir", - "community": 5, + "community": 6, "norm_label": "test_mutators_create_missing_exlab_wizard_dir()" }, { @@ -15318,7 +15579,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L203", "id": "cache_test_sync_state_writer_test_rollup_state_syncing_when_empty", - "community": 5, + "community": 6, "norm_label": "test_rollup_state_syncing_when_empty()" }, { @@ -15327,7 +15588,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L208", "id": "cache_test_sync_state_writer_test_rollup_state_syncing_when_some_unverified", - "community": 229, + "community": 6, "norm_label": "test_rollup_state_syncing_when_some_unverified()" }, { @@ -15336,7 +15597,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L219", "id": "cache_test_sync_state_writer_test_rollup_state_synced_when_all_verified", - "community": 229, + "community": 6, "norm_label": "test_rollup_state_synced_when_all_verified()" }, { @@ -15345,7 +15606,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L230", "id": "cache_test_sync_state_writer_test_rollup_state_cleared_takes_precedence_over_unverified", - "community": 229, + "community": 6, "norm_label": "test_rollup_state_cleared_takes_precedence_over_unverified()" }, { @@ -15354,7 +15615,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L244", "id": "cache_test_sync_state_writer_test_sync_state_json_round_trips_through_msgspec", - "community": 229, + "community": 6, "norm_label": "test_sync_state_json_round_trips_through_msgspec()" }, { @@ -15363,7 +15624,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L272", "id": "cache_test_sync_state_writer_test_read_raises_on_schema_major_mismatch", - "community": 5, + "community": 6, "norm_label": "test_read_raises_on_schema_major_mismatch()" }, { @@ -15372,7 +15633,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L302", "id": "cache_test_sync_state_writer_test_concurrent_upserts_on_distinct_files_both_survive", - "community": 5, + "community": 6, "norm_label": "test_concurrent_upserts_on_distinct_files_both_survive()" }, { @@ -15381,7 +15642,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L1", "id": "cache_test_sync_state_writer_rationale_1", - "community": 5, + "community": 6, "norm_label": "unit tests for ``exlab_wizard.cache.sync_state_writer``. covers the operator-fr" }, { @@ -15390,7 +15651,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L173", "id": "cache_test_sync_state_writer_rationale_173", - "community": 5, + "community": 6, "norm_label": "each blocking mutator mkdir's the run's ``.exlab-wizard/`` cache dir. s2 ro" }, { @@ -15399,7 +15660,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L273", "id": "cache_test_sync_state_writer_rationale_273", - "community": 5, + "community": 6, "norm_label": "a file at a different schema major than the writer is rejected. the writer" }, { @@ -15408,7 +15669,7 @@ "source_file": "tests/unit/cache/test_sync_state_writer.py", "source_location": "L303", "id": "cache_test_sync_state_writer_rationale_303", - "community": 5, + "community": 6, "norm_label": "two concurrent ``upsert_file`` calls on the same run, distinct paths. the `" }, { @@ -15417,7 +15678,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L1", "id": "tests_unit_config_test_loader_py", - "community": 13, + "community": 174, "norm_label": "test_loader.py" }, { @@ -15426,7 +15687,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L46", "id": "config_test_loader_test_load_config_complete_yaml", - "community": 13, + "community": 174, "norm_label": "test_load_config_complete_yaml()" }, { @@ -15435,7 +15696,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L84", "id": "config_test_loader_test_load_config_missing_file_raises", - "community": 13, + "community": 174, "norm_label": "test_load_config_missing_file_raises()" }, { @@ -15444,7 +15705,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L92", "id": "config_test_loader_test_load_config_invalid_yaml_raises", - "community": 13, + "community": 174, "norm_label": "test_load_config_invalid_yaml_raises()" }, { @@ -15453,7 +15714,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L101", "id": "config_test_loader_test_load_config_top_level_not_mapping_raises", - "community": 13, + "community": 174, "norm_label": "test_load_config_top_level_not_mapping_raises()" }, { @@ -15462,7 +15723,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L109", "id": "config_test_loader_test_load_config_validation_error_raises_config_error", - "community": 13, + "community": 174, "norm_label": "test_load_config_validation_error_raises_config_error()" }, { @@ -15471,7 +15732,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L124", "id": "config_test_loader_test_load_config_from_text_empty_returns_empty_config", - "community": 13, + "community": 108, "norm_label": "test_load_config_from_text_empty_returns_empty_config()" }, { @@ -15480,7 +15741,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L133", "id": "config_test_loader_test_load_config_unreadable_path_raises_config_error", - "community": 13, + "community": 174, "norm_label": "test_load_config_unreadable_path_raises_config_error()" }, { @@ -15489,7 +15750,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L155", "id": "config_test_loader_test_save_config_atomic", - "community": 13, + "community": 174, "norm_label": "test_save_config_atomic()" }, { @@ -15498,7 +15759,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L167", "id": "config_test_loader_test_save_config_preserves_comments_round_trip", - "community": 13, + "community": 174, "norm_label": "test_save_config_preserves_comments_round_trip()" }, { @@ -15507,7 +15768,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L181", "id": "config_test_loader_test_save_config_preserves_key_order", - "community": 13, + "community": 174, "norm_label": "test_save_config_preserves_key_order()" }, { @@ -15516,7 +15777,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L197", "id": "config_test_loader_test_save_config_creates_parent_dirs", - "community": 13, + "community": 174, "norm_label": "test_save_config_creates_parent_dirs()" }, { @@ -15525,7 +15786,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L207", "id": "config_test_loader_test_save_config_without_original_text_writes_fresh", - "community": 13, + "community": 174, "norm_label": "test_save_config_without_original_text_writes_fresh()" }, { @@ -15534,7 +15795,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L226", "id": "config_test_loader_test_dump_config_round_trip", - "community": 13, + "community": 268, "norm_label": "test_dump_config_round_trip()" }, { @@ -15543,7 +15804,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L282", "id": "config_test_loader_test_test_mode_unset_leaves_equipment_ids_unchanged", - "community": 13, + "community": 108, "norm_label": "test_test_mode_unset_leaves_equipment_ids_unchanged()" }, { @@ -15552,7 +15813,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L289", "id": "config_test_loader_test_test_mode_enabled_prefixes_every_equipment_id", - "community": 13, + "community": 108, "norm_label": "test_test_mode_enabled_prefixes_every_equipment_id()" }, { @@ -15561,7 +15822,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L302", "id": "config_test_loader_test_test_mode_is_idempotent_on_already_prefixed_ids", - "community": 13, + "community": 108, "norm_label": "test_test_mode_is_idempotent_on_already_prefixed_ids()" }, { @@ -15570,7 +15831,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L324", "id": "config_test_loader_test_test_mode_preserves_unique_id_invariant", - "community": 13, + "community": 108, "norm_label": "test_test_mode_preserves_unique_id_invariant()" }, { @@ -15579,7 +15840,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L340", "id": "config_test_loader_test_test_mode_truthy_values_trigger_prefix", - "community": 13, + "community": 108, "norm_label": "test_test_mode_truthy_values_trigger_prefix()" }, { @@ -15588,7 +15849,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L352", "id": "config_test_loader_test_test_mode_falsy_values_do_not_trigger_prefix", - "community": 13, + "community": 108, "norm_label": "test_test_mode_falsy_values_do_not_trigger_prefix()" }, { @@ -15597,7 +15858,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L361", "id": "config_test_loader_test_test_mode_unset_via_delenv_does_not_trigger_prefix", - "community": 13, + "community": 108, "norm_label": "test_test_mode_unset_via_delenv_does_not_trigger_prefix()" }, { @@ -15606,7 +15867,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L370", "id": "config_test_loader_test_apply_test_mode_prefix_helper_is_a_pure_function", - "community": 13, + "community": 108, "norm_label": "test_apply_test_mode_prefix_helper_is_a_pure_function()" }, { @@ -15615,7 +15876,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L389", "id": "config_test_loader_test_loader_round_trips_nas_block", - "community": 13, + "community": 174, "norm_label": "test_loader_round_trips_nas_block()" }, { @@ -15624,7 +15885,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L412", "id": "config_test_loader_test_load_config_uses_ruamel_round_trip", - "community": 13, + "community": 174, "norm_label": "test_load_config_uses_ruamel_round_trip()" }, { @@ -15633,7 +15894,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L1", "id": "config_test_loader_rationale_1", - "community": 13, + "community": 174, "norm_label": "tests for ``exlab_wizard.config.loader``. backend spec \u00a79. the loader is the si" }, { @@ -15642,7 +15903,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L283", "id": "config_test_loader_rationale_283", - "community": 13, + "community": 108, "norm_label": "the default code path is a no-op: no env var, no rewrite." }, { @@ -15651,7 +15912,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L290", "id": "config_test_loader_rationale_290", - "community": 13, + "community": 108, "norm_label": "a truthy env value rewrites every id with the canonical prefix." }, { @@ -15660,7 +15921,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L305", "id": "config_test_loader_rationale_305", - "community": 13, + "community": 108, "norm_label": "an already-``test_``-prefixed id must not be re-prefixed." }, { @@ -15669,7 +15930,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L325", "id": "config_test_loader_rationale_325", - "community": 13, + "community": 108, "norm_label": "the transformed config still passes config.model_validate." }, { @@ -15678,7 +15939,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L343", "id": "config_test_loader_rationale_343", - "community": 13, + "community": 108, "norm_label": "every accepted spelling flips the loader on (case-insensitive)." }, { @@ -15687,7 +15948,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L355", "id": "config_test_loader_rationale_355", - "community": 13, + "community": 108, "norm_label": "falsy / unrecognized values leave the loaded config untouched." }, { @@ -15696,7 +15957,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L364", "id": "config_test_loader_rationale_364", - "community": 13, + "community": 108, "norm_label": "an absent env var (not just empty) leaves the config untouched." }, { @@ -15705,7 +15966,7 @@ "source_file": "tests/unit/config/test_loader.py", "source_location": "L373", "id": "config_test_loader_rationale_373", - "community": 13, + "community": 108, "norm_label": "``apply_test_mode_prefix`` itself ignores the env var. the env-var check is" }, { @@ -15714,7 +15975,7 @@ "source_file": "tests/unit/config/__init__.py", "source_location": "L1", "id": "tests_unit_config_init_py", - "community": 435, + "community": 474, "norm_label": "__init__.py" }, { @@ -15723,7 +15984,7 @@ "source_file": "src/exlab_wizard/config/__init__.py", "source_location": "L1", "id": "config_init_rationale_1", - "community": 435, + "community": 474, "norm_label": "config package. backend spec \u00a79." }, { @@ -15732,7 +15993,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L1", "id": "tests_unit_config_test_models_py", - "community": 6, + "community": 4, "norm_label": "test_models.py" }, { @@ -15741,7 +16002,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L46", "id": "config_test_models_equipment_dict", - "community": 6, + "community": 4, "norm_label": "_equipment_dict()" }, { @@ -15750,7 +16011,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L59", "id": "config_test_models_full_config_dict", - "community": 112, + "community": 212, "norm_label": "_full_config_dict()" }, { @@ -15759,7 +16020,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L172", "id": "config_test_models_test_paths_config_defaults_are_empty_strings", - "community": 6, + "community": 4, "norm_label": "test_paths_config_defaults_are_empty_strings()" }, { @@ -15768,7 +16029,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L179", "id": "config_test_models_test_paths_config_rejects_unknown_keys", - "community": 6, + "community": 4, "norm_label": "test_paths_config_rejects_unknown_keys()" }, { @@ -15777,7 +16038,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L189", "id": "config_test_models_test_lims_config_defaults", - "community": 6, + "community": 4, "norm_label": "test_lims_config_defaults()" }, { @@ -15786,7 +16047,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L197", "id": "config_test_models_test_lims_config_rejects_negative_cache_ttl_hours", - "community": 6, + "community": 4, "norm_label": "test_lims_config_rejects_negative_cache_ttl_hours()" }, { @@ -15795,7 +16056,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L202", "id": "config_test_models_test_lims_config_zero_cache_ttl_is_allowed", - "community": 6, + "community": 4, "norm_label": "test_lims_config_zero_cache_ttl_is_allowed()" }, { @@ -15804,7 +16065,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L213", "id": "config_test_models_test_readme_default_field_minimal_string_field", - "community": 166, + "community": 4, "norm_label": "test_readme_default_field_minimal_string_field()" }, { @@ -15813,7 +16074,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L220", "id": "config_test_models_test_readme_default_field_id_must_match_template_question_id_pattern", - "community": 166, + "community": 4, "norm_label": "test_readme_default_field_id_must_match_template_question_id_pattern()" }, { @@ -15822,7 +16083,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L225", "id": "config_test_models_test_readme_default_field_id_rejects_leading_digit", - "community": 166, + "community": 4, "norm_label": "test_readme_default_field_id_rejects_leading_digit()" }, { @@ -15831,7 +16092,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L230", "id": "config_test_models_test_readme_default_field_label_must_be_non_empty", - "community": 166, + "community": 4, "norm_label": "test_readme_default_field_label_must_be_non_empty()" }, { @@ -15840,7 +16101,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L235", "id": "config_test_models_test_readme_default_field_rejects_unknown_type", - "community": 166, + "community": 4, "norm_label": "test_readme_default_field_rejects_unknown_type()" }, { @@ -15849,7 +16110,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L240", "id": "config_test_models_test_readme_choice_field_requires_options", - "community": 166, + "community": 4, "norm_label": "test_readme_choice_field_requires_options()" }, { @@ -15858,7 +16119,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L246", "id": "config_test_models_test_readme_choice_field_rejects_empty_options_list", - "community": 166, + "community": 4, "norm_label": "test_readme_choice_field_rejects_empty_options_list()" }, { @@ -15867,7 +16128,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L251", "id": "config_test_models_test_readme_choice_field_accepts_non_empty_options", - "community": 166, + "community": 4, "norm_label": "test_readme_choice_field_accepts_non_empty_options()" }, { @@ -15876,7 +16137,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L256", "id": "config_test_models_test_readme_non_choice_field_does_not_require_options", - "community": 166, + "community": 4, "norm_label": "test_readme_non_choice_field_does_not_require_options()" }, { @@ -15885,7 +16146,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L268", "id": "config_test_models_test_readme_config_default_is_empty_list", - "community": 79, + "community": 38, "norm_label": "test_readme_config_default_is_empty_list()" }, { @@ -15894,7 +16155,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L278", "id": "config_test_models_test_bandwidth_window_happy_path", - "community": 6, + "community": 4, "norm_label": "test_bandwidth_window_happy_path()" }, { @@ -15903,7 +16164,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L285", "id": "config_test_models_test_bandwidth_window_rejects_empty_days_list", - "community": 6, + "community": 4, "norm_label": "test_bandwidth_window_rejects_empty_days_list()" }, { @@ -15912,7 +16173,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L290", "id": "config_test_models_test_bandwidth_window_rejects_invalid_day", - "community": 6, + "community": 4, "norm_label": "test_bandwidth_window_rejects_invalid_day()" }, { @@ -15921,7 +16182,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L295", "id": "config_test_models_test_bandwidth_window_from_must_be_before_to", - "community": 6, + "community": 4, "norm_label": "test_bandwidth_window_from_must_be_before_to()" }, { @@ -15930,7 +16191,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L300", "id": "config_test_models_test_bandwidth_window_equal_from_and_to_is_invalid", - "community": 6, + "community": 4, "norm_label": "test_bandwidth_window_equal_from_and_to_is_invalid()" }, { @@ -15939,7 +16200,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L306", "id": "config_test_models_test_bandwidth_window_rejects_non_hhmm_time", - "community": 6, + "community": 4, "norm_label": "test_bandwidth_window_rejects_non_hhmm_time()" }, { @@ -15948,7 +16209,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L311", "id": "config_test_models_test_bandwidth_window_rejects_invalid_hour", - "community": 6, + "community": 4, "norm_label": "test_bandwidth_window_rejects_invalid_hour()" }, { @@ -15957,7 +16218,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L316", "id": "config_test_models_test_bandwidth_window_rejects_invalid_minute", - "community": 6, + "community": 4, "norm_label": "test_bandwidth_window_rejects_invalid_minute()" }, { @@ -15966,7 +16227,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L326", "id": "config_test_models_test_bandwidth_config_defaults", - "community": 6, + "community": 4, "norm_label": "test_bandwidth_config_defaults()" }, { @@ -15975,7 +16236,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L332", "id": "config_test_models_test_bandwidth_config_rejects_zero_upload_mbps", - "community": 6, + "community": 4, "norm_label": "test_bandwidth_config_rejects_zero_upload_mbps()" }, { @@ -15984,7 +16245,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L337", "id": "config_test_models_test_bandwidth_config_rejects_negative_upload_mbps", - "community": 6, + "community": 4, "norm_label": "test_bandwidth_config_rejects_negative_upload_mbps()" }, { @@ -15993,7 +16254,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L342", "id": "config_test_models_test_bandwidth_config_accepts_positive_upload_mbps", - "community": 6, + "community": 4, "norm_label": "test_bandwidth_config_accepts_positive_upload_mbps()" }, { @@ -16002,7 +16263,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L352", "id": "config_test_models_test_equipment_id_regex_accepts_canonical_form", - "community": 6, + "community": 4, "norm_label": "test_equipment_id_regex_accepts_canonical_form()" }, { @@ -16011,7 +16272,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L357", "id": "config_test_models_test_equipment_id_rejects_lowercase", - "community": 6, + "community": 4, "norm_label": "test_equipment_id_rejects_lowercase()" }, { @@ -16020,7 +16281,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L362", "id": "config_test_models_test_equipment_id_rejects_hyphen", - "community": 6, + "community": 4, "norm_label": "test_equipment_id_rejects_hyphen()" }, { @@ -16029,7 +16290,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L367", "id": "config_test_models_test_equipment_id_rejects_leading_digit", - "community": 6, + "community": 4, "norm_label": "test_equipment_id_rejects_leading_digit()" }, { @@ -16038,7 +16299,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L372", "id": "config_test_models_test_equipment_id_rejects_too_long", - "community": 6, + "community": 4, "norm_label": "test_equipment_id_rejects_too_long()" }, { @@ -16047,7 +16308,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L378", "id": "config_test_models_test_equipment_id_accepts_max_length", - "community": 6, + "community": 4, "norm_label": "test_equipment_id_accepts_max_length()" }, { @@ -16056,7 +16317,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L384", "id": "config_test_models_test_equipment_config_rejects_removed_completeness_fields", - "community": 6, + "community": 4, "norm_label": "test_equipment_config_rejects_removed_completeness_fields()" }, { @@ -16065,7 +16326,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L395", "id": "config_test_models_test_equipment_label_must_be_non_empty", - "community": 6, + "community": 4, "norm_label": "test_equipment_label_must_be_non_empty()" }, { @@ -16074,7 +16335,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L402", "id": "config_test_models_test_equipment_local_root_must_be_non_empty", - "community": 6, + "community": 4, "norm_label": "test_equipment_local_root_must_be_non_empty()" }, { @@ -16083,7 +16344,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L409", "id": "config_test_models_test_equipment_nas_root_must_be_non_empty", - "community": 6, + "community": 4, "norm_label": "test_equipment_nas_root_must_be_non_empty()" }, { @@ -16092,7 +16353,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L416", "id": "config_test_models_test_equipment_rejects_removed_orchestrator_staging_transport", - "community": 6, + "community": 4, "norm_label": "test_equipment_rejects_removed_orchestrator_staging_transport()" }, { @@ -16101,7 +16362,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L435", "id": "config_test_models_test_sync_mode_defaults_to_nas_when_absent", - "community": 6, + "community": 4, "norm_label": "test_sync_mode_defaults_to_nas_when_absent()" }, { @@ -16110,7 +16371,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L440", "id": "config_test_models_test_nas_mode_equipment_needs_no_transport_block", - "community": 6, + "community": 4, "norm_label": "test_nas_mode_equipment_needs_no_transport_block()" }, { @@ -16119,7 +16380,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L456", "id": "config_test_models_test_nas_mode_equipment_rejects_stray_transport_block", - "community": 6, + "community": 4, "norm_label": "test_nas_mode_equipment_rejects_stray_transport_block()" }, { @@ -16128,7 +16389,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L471", "id": "config_test_models_test_sync_mode_stage_needs_no_per_equipment_block", - "community": 6, + "community": 4, "norm_label": "test_sync_mode_stage_needs_no_per_equipment_block()" }, { @@ -16137,7 +16398,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L481", "id": "config_test_models_test_sync_mode_stage_rejects_stray_transport_block", - "community": 6, + "community": 4, "norm_label": "test_sync_mode_stage_rejects_stray_transport_block()" }, { @@ -16146,7 +16407,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L491", "id": "config_test_models_test_sync_mode_serializes_to_string", - "community": 6, + "community": 4, "norm_label": "test_sync_mode_serializes_to_string()" }, { @@ -16155,7 +16416,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L499", "id": "config_test_models_test_sync_mode_rejects_unknown_value", - "community": 6, + "community": 4, "norm_label": "test_sync_mode_rejects_unknown_value()" }, { @@ -16164,7 +16425,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L506", "id": "config_test_models_test_sync_mode_stage_round_trip_via_dict", - "community": 6, + "community": 4, "norm_label": "test_sync_mode_stage_round_trip_via_dict()" }, { @@ -16173,7 +16434,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L522", "id": "config_test_models_test_nas_cleanup_defaults", - "community": 351, + "community": 37, "norm_label": "test_nas_cleanup_defaults()" }, { @@ -16182,7 +16443,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L530", "id": "config_test_models_test_nas_cleanup_min_verify_passes_at_least_one", - "community": 351, + "community": 37, "norm_label": "test_nas_cleanup_min_verify_passes_at_least_one()" }, { @@ -16191,7 +16452,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L535", "id": "config_test_models_test_nas_cleanup_min_age_hours_non_negative", - "community": 351, + "community": 37, "norm_label": "test_nas_cleanup_min_age_hours_non_negative()" }, { @@ -16200,7 +16461,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L545", "id": "config_test_models_test_logging_level_normalized_to_uppercase", - "community": 271, + "community": 19, "norm_label": "test_logging_level_normalized_to_uppercase()" }, { @@ -16209,7 +16470,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L550", "id": "config_test_models_test_logging_level_rejects_unknown", - "community": 271, + "community": 19, "norm_label": "test_logging_level_rejects_unknown()" }, { @@ -16218,7 +16479,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L555", "id": "config_test_models_test_logging_level_accepts_all_canonical_values", - "community": 271, + "community": 19, "norm_label": "test_logging_level_accepts_all_canonical_values()" }, { @@ -16227,7 +16488,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L561", "id": "config_test_models_test_logging_level_strips_whitespace_and_normalizes", - "community": 271, + "community": 19, "norm_label": "test_logging_level_strips_whitespace_and_normalizes()" }, { @@ -16236,7 +16497,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L566", "id": "config_test_models_test_logging_level_rejects_non_string", - "community": 6, + "community": 4, "norm_label": "test_logging_level_rejects_non_string()" }, { @@ -16245,7 +16506,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L576", "id": "config_test_models_test_logging_level_rejects_non_string_directly", - "community": 271, + "community": 19, "norm_label": "test_logging_level_rejects_non_string_directly()" }, { @@ -16254,7 +16515,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L584", "id": "config_test_models_test_logging_central_log_max_mb_at_least_one", - "community": 271, + "community": 19, "norm_label": "test_logging_central_log_max_mb_at_least_one()" }, { @@ -16263,7 +16524,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L589", "id": "config_test_models_test_logging_central_log_keep_at_least_one", - "community": 271, + "community": 19, "norm_label": "test_logging_central_log_keep_at_least_one()" }, { @@ -16272,7 +16533,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L599", "id": "config_test_models_test_operators_config_defaults_to_empty_allowlist", - "community": 370, + "community": 38, "norm_label": "test_operators_config_defaults_to_empty_allowlist()" }, { @@ -16281,7 +16542,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L604", "id": "config_test_models_test_operators_config_accepts_arbitrary_strings", - "community": 370, + "community": 38, "norm_label": "test_operators_config_accepts_arbitrary_strings()" }, { @@ -16290,7 +16551,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L614", "id": "config_test_models_test_validator_config_defaults", - "community": 133, + "community": 211, "norm_label": "test_validator_config_defaults()" }, { @@ -16299,7 +16560,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L621", "id": "config_test_models_test_validator_content_scan_max_mib_at_least_one", - "community": 133, + "community": 211, "norm_label": "test_validator_content_scan_max_mib_at_least_one()" }, { @@ -16308,7 +16569,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L626", "id": "config_test_models_test_validator_extensions_must_start_with_dot", - "community": 133, + "community": 211, "norm_label": "test_validator_extensions_must_start_with_dot()" }, { @@ -16317,7 +16578,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L631", "id": "config_test_models_test_validator_extensions_rejects_dotless_among_others", - "community": 133, + "community": 211, "norm_label": "test_validator_extensions_rejects_dotless_among_others()" }, { @@ -16326,7 +16587,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L641", "id": "config_test_models_test_plugins_config_default_allow_network_false", - "community": 79, + "community": 423, "norm_label": "test_plugins_config_default_allow_network_false()" }, { @@ -16335,7 +16596,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L651", "id": "config_test_models_test_sync_config_defaults", - "community": 166, + "community": 292, "norm_label": "test_sync_config_defaults()" }, { @@ -16344,7 +16605,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L660", "id": "config_test_models_test_sync_config_retry_attempts_non_negative", - "community": 166, + "community": 292, "norm_label": "test_sync_config_retry_attempts_non_negative()" }, { @@ -16353,7 +16614,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L665", "id": "config_test_models_test_sync_config_quiescence_minutes_at_least_one", - "community": 166, + "community": 292, "norm_label": "test_sync_config_quiescence_minutes_at_least_one()" }, { @@ -16362,7 +16623,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L670", "id": "config_test_models_test_sync_config_poll_interval_seconds_at_least_one", - "community": 166, + "community": 292, "norm_label": "test_sync_config_poll_interval_seconds_at_least_one()" }, { @@ -16371,7 +16632,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L675", "id": "config_test_models_test_sync_config_accepts_custom_quiescence_settings", - "community": 166, + "community": 292, "norm_label": "test_sync_config_accepts_custom_quiescence_settings()" }, { @@ -16380,7 +16641,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L686", "id": "config_test_models_test_sync_config_ignore_globs_default_is_independent_per_instance", - "community": 166, + "community": 292, "norm_label": "test_sync_config_ignore_globs_default_is_independent_per_instance()" }, { @@ -16389,7 +16650,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L699", "id": "config_test_models_test_orchestrator_staging_cleanup_defaults", - "community": 6, + "community": 13, "norm_label": "test_orchestrator_staging_cleanup_defaults()" }, { @@ -16398,7 +16659,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L705", "id": "config_test_models_test_orchestrator_staging_cleanup_scheduled_requires_positive_hours", - "community": 6, + "community": 13, "norm_label": "test_orchestrator_staging_cleanup_scheduled_requires_positive_hours()" }, { @@ -16407,7 +16668,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L711", "id": "config_test_models_test_orchestrator_staging_cleanup_rejects_unknown_mode", - "community": 6, + "community": 13, "norm_label": "test_orchestrator_staging_cleanup_rejects_unknown_mode()" }, { @@ -16416,7 +16677,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L721", "id": "config_test_models_test_orchestrator_config_defaults", - "community": 437, + "community": 493, "norm_label": "test_orchestrator_config_defaults()" }, { @@ -16425,7 +16686,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L733", "id": "config_test_models_test_orchestrator_config_staging_remote_validates_with_perf_defaults", - "community": 6, + "community": 4, "norm_label": "test_orchestrator_config_staging_remote_validates_with_perf_defaults()" }, { @@ -16434,7 +16695,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L744", "id": "config_test_models_test_stage_mode_equipment_validates_without_staging_block", - "community": 507, + "community": 4, "norm_label": "test_stage_mode_equipment_validates_without_staging_block()" }, { @@ -16443,7 +16704,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L762", "id": "config_test_models_test_config_fully_default_is_valid", - "community": 6, + "community": 4, "norm_label": "test_config_fully_default_is_valid()" }, { @@ -16452,7 +16713,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L772", "id": "config_test_models_test_unique_equipment_ids_required", - "community": 6, + "community": 4, "norm_label": "test_unique_equipment_ids_required()" }, { @@ -16461,7 +16722,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L784", "id": "config_test_models_test_distinct_equipment_ids_accepted", - "community": 112, + "community": 212, "norm_label": "test_distinct_equipment_ids_accepted()" }, { @@ -16470,7 +16731,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L795", "id": "config_test_models_test_orchestrator_legacy_enabled_field_rejected", - "community": 436, + "community": 492, "norm_label": "test_orchestrator_legacy_enabled_field_rejected()" }, { @@ -16479,7 +16740,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L811", "id": "config_test_models_test_orchestrator_label_and_staging_root_load_independently", - "community": 438, + "community": 494, "norm_label": "test_orchestrator_label_and_staging_root_load_independently()" }, { @@ -16488,7 +16749,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L826", "id": "config_test_models_test_orchestrator_with_both_fields_is_valid", - "community": 6, + "community": 4, "norm_label": "test_orchestrator_with_both_fields_is_valid()" }, { @@ -16497,7 +16758,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L840", "id": "config_test_models_test_config_rejects_unknown_top_level_key", - "community": 6, + "community": 4, "norm_label": "test_config_rejects_unknown_top_level_key()" }, { @@ -16506,7 +16767,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L850", "id": "config_test_models_test_full_config_round_trip_via_dict", - "community": 112, + "community": 212, "norm_label": "test_full_config_round_trip_via_dict()" }, { @@ -16515,7 +16776,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L871", "id": "config_test_models_test_round_trip_preserves_bandwidth_alias_for_from", - "community": 112, + "community": 212, "norm_label": "test_round_trip_preserves_bandwidth_alias_for_from()" }, { @@ -16524,7 +16785,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L885", "id": "config_test_models_test_config_with_equipment_appended_seeds_from_none", - "community": 250, + "community": 261, "norm_label": "test_config_with_equipment_appended_seeds_from_none()" }, { @@ -16533,7 +16794,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L893", "id": "config_test_models_test_config_with_equipment_appended_preserves_existing_state", - "community": 250, + "community": 261, "norm_label": "test_config_with_equipment_appended_preserves_existing_state()" }, { @@ -16542,7 +16803,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L905", "id": "config_test_models_test_config_with_equipment_appended_rejects_duplicate_id", - "community": 250, + "community": 261, "norm_label": "test_config_with_equipment_appended_rejects_duplicate_id()" }, { @@ -16551,7 +16812,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L919", "id": "config_test_models_test_nas_config_defaults", - "community": 6, + "community": 4, "norm_label": "test_nas_config_defaults()" }, { @@ -16560,7 +16821,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L930", "id": "config_test_models_test_nas_config_rejects_nonpositive_perf", - "community": 6, + "community": 4, "norm_label": "test_nas_config_rejects_nonpositive_perf()" }, { @@ -16569,7 +16830,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L937", "id": "config_test_models_test_config_has_default_nas_block", - "community": 6, + "community": 4, "norm_label": "test_config_has_default_nas_block()" }, { @@ -16578,7 +16839,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L1", "id": "config_test_models_rationale_1", - "community": 6, + "community": 4, "norm_label": "unit tests for ``exlab_wizard.config.models``. pydantic models that mirror ``co" }, { @@ -16587,7 +16848,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L50", "id": "config_test_models_rationale_50", - "community": 6, + "community": 4, "norm_label": "build a valid equipmentconfig dict with sensible defaults." }, { @@ -16596,7 +16857,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L60", "id": "config_test_models_rationale_60", - "community": 112, + "community": 212, "norm_label": "full config dict mirroring the \u00a79 example. used by round-trip tests." }, { @@ -16605,7 +16866,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L385", "id": "config_test_models_rationale_385", - "community": 6, + "community": 4, "norm_label": "the operator-free quiescence redesign drops the per-equipment completeness-s" }, { @@ -16614,7 +16875,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L417", "id": "config_test_models_rationale_417", - "community": 6, + "community": 4, "norm_label": "rclone.conf migration (phase 8): the per-equipment staging-transport block i" }, { @@ -16623,7 +16884,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L441", "id": "config_test_models_rationale_441", - "community": 6, + "community": 4, "norm_label": "rclone.conf migration: nas-mode carries no per-equipment connection. the ``" }, { @@ -16632,7 +16893,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L457", "id": "config_test_models_rationale_457", - "community": 6, + "community": 4, "norm_label": "rclone.conf migration: a stray ``transport`` key is now forbidden." }, { @@ -16641,7 +16902,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L472", "id": "config_test_models_rationale_472", - "community": 6, + "community": 4, "norm_label": "rclone.conf migration (phase 8): stage-mode no longer requires (or accepts)" }, { @@ -16650,7 +16911,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L507", "id": "config_test_models_rationale_507", - "community": 6, + "community": 4, "norm_label": "build a stage-mode equipmentconfig from a dict, dump it, compare." }, { @@ -16659,7 +16920,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L722", "id": "config_test_models_rationale_722", - "community": 437, + "community": 493, "norm_label": "redesign \u00a73.1: the ``enabled`` toggle is removed; ``label`` and ``staging_ro" }, { @@ -16668,7 +16929,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L734", "id": "config_test_models_rationale_734", - "community": 6, + "community": 4, "norm_label": "rclone.conf migration (phase 8): the orchestrator stage hop is a named rclon" }, { @@ -16677,7 +16938,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L745", "id": "config_test_models_rationale_745", - "community": 507, + "community": 4, "norm_label": "rclone.conf migration (phase 8): a stage-mode equipment validates with only" }, { @@ -16686,7 +16947,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L796", "id": "config_test_models_rationale_796", - "community": 436, + "community": 492, "norm_label": "redesign \u00a73.1: the ``enabled`` toggle is removed; old configs that carry it" }, { @@ -16695,7 +16956,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L812", "id": "config_test_models_rationale_812", - "community": 438, + "community": 494, "norm_label": "they can be empty at load time (the setup-incomplete gate trips, not the pyd" }, { @@ -16704,7 +16965,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L851", "id": "config_test_models_rationale_851", - "community": 112, + "community": 212, "norm_label": "build a config from a \u00a79-shaped dict, dump it, and compare. ``model_dump()`" }, { @@ -16713,7 +16974,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L886", "id": "config_test_models_rationale_886", - "community": 250, + "community": 261, "norm_label": "a ``none`` config (fresh install) yields a default config + the device." }, { @@ -16722,7 +16983,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L894", "id": "config_test_models_rationale_894", - "community": 250, + "community": 261, "norm_label": "appending keeps prior equipment and other config sections, unmutated." }, { @@ -16731,7 +16992,7 @@ "source_file": "tests/unit/config/test_models.py", "source_location": "L906", "id": "config_test_models_rationale_906", - "community": 250, + "community": 261, "norm_label": "a device whose id already exists raises configerror, not a silent merge." }, { @@ -16740,7 +17001,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L1", "id": "tests_unit_plugins_test_registry_py", - "community": 4, + "community": 7, "norm_label": "test_registry.py" }, { @@ -16749,7 +17010,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L35", "id": "plugins_test_registry_write_plugin", - "community": 4, + "community": 7, "norm_label": "_write_plugin()" }, { @@ -16758,7 +17019,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L89", "id": "plugins_test_registry_test_loads_a_valid_plugin", - "community": 4, + "community": 7, "norm_label": "test_loads_a_valid_plugin()" }, { @@ -16767,7 +17028,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L106", "id": "plugins_test_registry_test_loaded_record_carries_isolation_block", - "community": 4, + "community": 7, "norm_label": "test_loaded_record_carries_isolation_block()" }, { @@ -16776,7 +17037,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L118", "id": "plugins_test_registry_test_required_and_optional_variables_round_trip", - "community": 4, + "community": 7, "norm_label": "test_required_and_optional_variables_round_trip()" }, { @@ -16785,7 +17046,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L140", "id": "plugins_test_registry_test_rejects_plugin_directory_without_manifest", - "community": 4, + "community": 7, "norm_label": "test_rejects_plugin_directory_without_manifest()" }, { @@ -16794,7 +17055,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L152", "id": "plugins_test_registry_test_rejects_plugin_with_malformed_yaml", - "community": 4, + "community": 7, "norm_label": "test_rejects_plugin_with_malformed_yaml()" }, { @@ -16803,7 +17064,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L164", "id": "plugins_test_registry_test_rejects_plugin_missing_required_field", - "community": 4, + "community": 7, "norm_label": "test_rejects_plugin_missing_required_field()" }, { @@ -16812,7 +17073,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L174", "id": "plugins_test_registry_test_rejects_plugin_with_unsupported_api_version", - "community": 4, + "community": 7, "norm_label": "test_rejects_plugin_with_unsupported_api_version()" }, { @@ -16821,7 +17082,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L184", "id": "plugins_test_registry_test_rejects_plugin_with_invalid_name", - "community": 4, + "community": 7, "norm_label": "test_rejects_plugin_with_invalid_name()" }, { @@ -16830,7 +17091,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L202", "id": "plugins_test_registry_test_rejects_plugin_with_timeout_above_cap", - "community": 4, + "community": 7, "norm_label": "test_rejects_plugin_with_timeout_above_cap()" }, { @@ -16839,7 +17100,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L211", "id": "plugins_test_registry_test_rejects_plugin_with_memory_above_cap", - "community": 4, + "community": 7, "norm_label": "test_rejects_plugin_with_memory_above_cap()" }, { @@ -16848,7 +17109,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L220", "id": "plugins_test_registry_test_rejects_supported_extensions_when_not_a_list_of_strings", - "community": 4, + "community": 7, "norm_label": "test_rejects_supported_extensions_when_not_a_list_of_strings()" }, { @@ -16857,7 +17118,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L238", "id": "plugins_test_registry_test_rejects_network_plugin_when_allow_network_false", - "community": 4, + "community": 7, "norm_label": "test_rejects_network_plugin_when_allow_network_false()" }, { @@ -16866,7 +17127,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L247", "id": "plugins_test_registry_test_loads_network_plugin_when_allow_network_true", - "community": 4, + "community": 7, "norm_label": "test_loads_network_plugin_when_allow_network_true()" }, { @@ -16875,7 +17136,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L263", "id": "plugins_test_registry_test_lab_dir_wins_on_name_collision", - "community": 4, + "community": 7, "norm_label": "test_lab_dir_wins_on_name_collision()" }, { @@ -16884,7 +17145,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L278", "id": "plugins_test_registry_test_bundled_only_when_no_lab_collision", - "community": 4, + "community": 7, "norm_label": "test_bundled_only_when_no_lab_collision()" }, { @@ -16893,7 +17154,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L292", "id": "plugins_test_registry_test_lab_only_plugins_are_loaded_too", - "community": 4, + "community": 7, "norm_label": "test_lab_only_plugins_are_loaded_too()" }, { @@ -16902,7 +17163,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L311", "id": "plugins_test_registry_test_reload_replaces_previous_state", - "community": 4, + "community": 7, "norm_label": "test_reload_replaces_previous_state()" }, { @@ -16911,7 +17172,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L326", "id": "plugins_test_registry_test_reload_returns_registry_report_dataclass", - "community": 4, + "community": 7, "norm_label": "test_reload_returns_registry_report_dataclass()" }, { @@ -16920,7 +17181,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L340", "id": "plugins_test_registry_test_get_returns_none_for_unknown_plugin", - "community": 4, + "community": 7, "norm_label": "test_get_returns_none_for_unknown_plugin()" }, { @@ -16929,7 +17190,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L346", "id": "plugins_test_registry_test_list_all_returns_records_sorted_by_name", - "community": 4, + "community": 7, "norm_label": "test_list_all_returns_records_sorted_by_name()" }, { @@ -16938,7 +17199,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L357", "id": "plugins_test_registry_test_list_all_returns_record_instances", - "community": 4, + "community": 7, "norm_label": "test_list_all_returns_record_instances()" }, { @@ -16947,7 +17208,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L372", "id": "plugins_test_registry_test_candidates_for_matches_by_extension", - "community": 4, + "community": 7, "norm_label": "test_candidates_for_matches_by_extension()" }, { @@ -16956,7 +17217,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L392", "id": "plugins_test_registry_test_candidates_for_excludes_plugins_with_zero_matches", - "community": 4, + "community": 7, "norm_label": "test_candidates_for_excludes_plugins_with_zero_matches()" }, { @@ -16965,7 +17226,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L402", "id": "plugins_test_registry_test_candidates_for_returns_pluginplan_instances", - "community": 4, + "community": 7, "norm_label": "test_candidates_for_returns_pluginplan_instances()" }, { @@ -16974,7 +17235,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L414", "id": "plugins_test_registry_test_candidates_for_supports_multi_extension_plugin", - "community": 4, + "community": 7, "norm_label": "test_candidates_for_supports_multi_extension_plugin()" }, { @@ -16983,7 +17244,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L430", "id": "plugins_test_registry_test_registry_with_no_dirs_loads_nothing", - "community": 4, + "community": 7, "norm_label": "test_registry_with_no_dirs_loads_nothing()" }, { @@ -16992,7 +17253,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L438", "id": "plugins_test_registry_test_registry_skips_files_in_root", - "community": 4, + "community": 7, "norm_label": "test_registry_skips_files_in_root()" }, { @@ -17001,7 +17262,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L450", "id": "plugins_test_registry_test_registry_handles_nonexistent_dir", - "community": 4, + "community": 7, "norm_label": "test_registry_handles_nonexistent_dir()" }, { @@ -17010,7 +17271,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L465", "id": "plugins_test_registry_test_registry_accepts_isolation_at_cap_boundary", - "community": 4, + "community": 7, "norm_label": "test_registry_accepts_isolation_at_cap_boundary()" }, { @@ -17019,7 +17280,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L473", "id": "plugins_test_registry_test_pluginplan_dataclass_shape", - "community": 4, + "community": 7, "norm_label": "test_pluginplan_dataclass_shape()" }, { @@ -17028,7 +17289,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L484", "id": "plugins_test_registry_test_pluginrecord_dataclass_shape", - "community": 4, + "community": 7, "norm_label": "test_pluginrecord_dataclass_shape()" }, { @@ -17037,7 +17298,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L1", "id": "plugins_test_registry_rationale_1", - "community": 4, + "community": 7, "norm_label": "tests for ``exlab_wizard.plugins.registry`` -- manifest-driven discovery. pin t" }, { @@ -17046,7 +17307,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L50", "id": "plugins_test_registry_rationale_50", - "community": 4, + "community": 7, "norm_label": "write a minimal plugin scaffold and return the plugin directory." }, { @@ -17055,7 +17316,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L439", "id": "plugins_test_registry_rationale_439", - "community": 4, + "community": 7, "norm_label": "a non-directory entry inside the plugin root must be ignored, not crashed on." }, { @@ -17064,7 +17325,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L451", "id": "plugins_test_registry_rationale_451", - "community": 4, + "community": 7, "norm_label": "a configured plugin root that doesn't exist is treated as empty (no crash)." }, { @@ -17073,7 +17334,7 @@ "source_file": "tests/unit/plugins/test_registry.py", "source_location": "L474", "id": "plugins_test_registry_rationale_474", - "community": 4, + "community": 7, "norm_label": "pluginplan exposes ``record`` and ``matching_files`` as named attributes." }, { @@ -17082,7 +17343,7 @@ "source_file": "tests/unit/plugins/__init__.py", "source_location": "L1", "id": "tests_unit_plugins_init_py", - "community": 371, + "community": 374, "norm_label": "__init__.py" }, { @@ -17091,7 +17352,7 @@ "source_file": "src/exlab_wizard/plugins/__init__.py", "source_location": "L1", "id": "plugins_init_rationale_1", - "community": 371, + "community": 374, "norm_label": "plugins package. backend spec \u00a76. re-exports the public plugin contract surface" }, { @@ -17100,7 +17361,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L1", "id": "tests_unit_plugins_test_base_py", - "community": 85, + "community": 149, "norm_label": "test_base.py" }, { @@ -17109,7 +17370,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L34", "id": "plugins_test_base_minimalplugin", - "community": 85, + "community": 149, "norm_label": "_minimalplugin" }, { @@ -17118,7 +17379,7 @@ "source_file": "", "source_location": "", "id": "plugin", - "community": 85, + "community": 277, "norm_label": "plugin" }, { @@ -17127,7 +17388,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L42", "id": "plugins_test_base_minimalplugin_can_handle", - "community": 85, + "community": 149, "norm_label": ".can_handle()" }, { @@ -17136,7 +17397,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L45", "id": "plugins_test_base_minimalplugin_transform", - "community": 85, + "community": 149, "norm_label": ".transform()" }, { @@ -17145,7 +17406,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L49", "id": "plugins_test_base_make_ctx", - "community": 85, + "community": 149, "norm_label": "_make_ctx()" }, { @@ -17154,7 +17415,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L71", "id": "plugins_test_base_test_plugin_abc_cannot_be_instantiated_directly", - "community": 85, + "community": 277, "norm_label": "test_plugin_abc_cannot_be_instantiated_directly()" }, { @@ -17163,7 +17424,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L76", "id": "plugins_test_base_test_plugin_subclass_missing_can_handle_is_abstract", - "community": 85, + "community": 149, "norm_label": "test_plugin_subclass_missing_can_handle_is_abstract()" }, { @@ -17172,7 +17433,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L89", "id": "plugins_test_base_test_plugin_subclass_missing_transform_is_abstract", - "community": 85, + "community": 149, "norm_label": "test_plugin_subclass_missing_transform_is_abstract()" }, { @@ -17181,7 +17442,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L102", "id": "plugins_test_base_test_minimal_plugin_can_be_instantiated", - "community": 85, + "community": 149, "norm_label": "test_minimal_plugin_can_be_instantiated()" }, { @@ -17190,7 +17451,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L113", "id": "plugins_test_base_test_default_validate_variables_returns_empty_when_no_required", - "community": 85, + "community": 149, "norm_label": "test_default_validate_variables_returns_empty_when_no_required()" }, { @@ -17199,7 +17460,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L118", "id": "plugins_test_base_test_default_validate_variables_reports_missing_required", - "community": 85, + "community": 149, "norm_label": "test_default_validate_variables_reports_missing_required()" }, { @@ -17208,7 +17469,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L128", "id": "plugins_test_base_test_default_validate_variables_reports_empty_string_as_missing", - "community": 85, + "community": 530, "norm_label": "test_default_validate_variables_reports_empty_string_as_missing()" }, { @@ -17217,7 +17478,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L140", "id": "plugins_test_base_test_default_validate_variables_lists_all_missing", - "community": 85, + "community": 149, "norm_label": "test_default_validate_variables_lists_all_missing()" }, { @@ -17226,7 +17487,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L154", "id": "plugins_test_base_test_pre_transform_all_default_is_noop", - "community": 85, + "community": 149, "norm_label": "test_pre_transform_all_default_is_noop()" }, { @@ -17235,7 +17496,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L160", "id": "plugins_test_base_test_post_transform_all_default_is_noop", - "community": 85, + "community": 149, "norm_label": "test_post_transform_all_default_is_noop()" }, { @@ -17244,7 +17505,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L166", "id": "plugins_test_base_test_on_plugin_failure_default_is_noop", - "community": 85, + "community": 149, "norm_label": "test_on_plugin_failure_default_is_noop()" }, { @@ -17253,7 +17514,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L173", "id": "plugins_test_base_test_describe_changes_default_returns_single_modify_change", - "community": 85, + "community": 149, "norm_label": "test_describe_changes_default_returns_single_modify_change()" }, { @@ -17262,7 +17523,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L189", "id": "plugins_test_base_test_filechange_is_frozen_dataclass", - "community": 58, + "community": 330, "norm_label": "test_filechange_is_frozen_dataclass()" }, { @@ -17271,7 +17532,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L195", "id": "plugins_test_base_test_filechange_default_detail_is_empty_dict", - "community": 58, + "community": 330, "norm_label": "test_filechange_default_detail_is_empty_dict()" }, { @@ -17280,7 +17541,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L200", "id": "plugins_test_base_test_filechange_accepts_detail_payload", - "community": 58, + "community": 330, "norm_label": "test_filechange_accepts_detail_payload()" }, { @@ -17289,7 +17550,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L215", "id": "plugins_test_base_test_plugincontext_is_frozen_dataclass", - "community": 85, + "community": 149, "norm_label": "test_plugincontext_is_frozen_dataclass()" }, { @@ -17298,7 +17559,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L221", "id": "plugins_test_base_test_plugincontext_carries_full_session_metadata", - "community": 85, + "community": 149, "norm_label": "test_plugincontext_carries_full_session_metadata()" }, { @@ -17307,7 +17568,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L244", "id": "plugins_test_base_test_pluginerror_reexport_is_canonical_class", - "community": 85, + "community": 529, "norm_label": "test_pluginerror_reexport_is_canonical_class()" }, { @@ -17316,7 +17577,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L249", "id": "plugins_test_base_test_plugininputrequired_reexport_is_canonical_class", - "community": 85, + "community": 149, "norm_label": "test_plugininputrequired_reexport_is_canonical_class()" }, { @@ -17325,7 +17586,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L253", "id": "plugins_test_base_test_plugininputrequired_carries_fields_and_reason", - "community": 85, + "community": 15, "norm_label": "test_plugininputrequired_carries_fields_and_reason()" }, { @@ -17334,7 +17595,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L266", "id": "plugins_test_base_test_plugin_api_version_defaults_to_one", - "community": 85, + "community": 531, "norm_label": "test_plugin_api_version_defaults_to_one()" }, { @@ -17343,7 +17604,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L271", "id": "plugins_test_base_test_plugin_required_variables_default_is_empty_list", - "community": 85, + "community": 149, "norm_label": "test_plugin_required_variables_default_is_empty_list()" }, { @@ -17352,7 +17613,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L275", "id": "plugins_test_base_test_plugin_optional_variables_default_is_empty_list", - "community": 85, + "community": 149, "norm_label": "test_plugin_optional_variables_default_is_empty_list()" }, { @@ -17361,7 +17622,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L1", "id": "plugins_test_base_rationale_1", - "community": 85, + "community": 149, "norm_label": "tests for ``exlab_wizard.plugins.base`` -- the plugin contract base class. pin" }, { @@ -17370,7 +17631,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L35", "id": "plugins_test_base_rationale_35", - "community": 85, + "community": 149, "norm_label": "concrete subclass with only the two abstract methods implemented." }, { @@ -17379,7 +17640,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L103", "id": "plugins_test_base_rationale_103", - "community": 85, + "community": 149, "norm_label": "a subclass with both abstract methods implemented is instantiable." }, { @@ -17388,7 +17649,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L129", "id": "plugins_test_base_rationale_129", - "community": 85, + "community": 530, "norm_label": "an empty string is treated as a missing value (per spec: 'missing or empty')." }, { @@ -17397,7 +17658,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L245", "id": "plugins_test_base_rationale_245", - "community": 85, + "community": 529, "norm_label": "the plugins package re-exports the same class object as ``errors``." }, { @@ -17406,7 +17667,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L254", "id": "plugins_test_base_rationale_254", - "community": 85, + "community": 15, "norm_label": "plugininputrequired stores both the field list and the operator-readable reason." }, { @@ -17415,7 +17676,7 @@ "source_file": "tests/unit/plugins/test_base.py", "source_location": "L267", "id": "plugins_test_base_rationale_267", - "community": 85, + "community": 531, "norm_label": "the class-level api_version default matches the host's current version." }, { @@ -17424,7 +17685,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L1", "id": "tests_unit_plugins_test_logger_py", - "community": 44, + "community": 20, "norm_label": "test_logger.py" }, { @@ -17433,7 +17694,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L33", "id": "plugins_test_logger_test_host_plugin_logger_forwards_info_to_stdlib_logger", - "community": 44, + "community": 20, "norm_label": "test_host_plugin_logger_forwards_info_to_stdlib_logger()" }, { @@ -17442,7 +17703,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L44", "id": "plugins_test_logger_test_host_plugin_logger_forwards_debug", - "community": 44, + "community": 20, "norm_label": "test_host_plugin_logger_forwards_debug()" }, { @@ -17451,7 +17712,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L51", "id": "plugins_test_logger_test_host_plugin_logger_forwards_warning", - "community": 44, + "community": 20, "norm_label": "test_host_plugin_logger_forwards_warning()" }, { @@ -17460,7 +17721,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L58", "id": "plugins_test_logger_test_host_plugin_logger_forwards_error", - "community": 44, + "community": 20, "norm_label": "test_host_plugin_logger_forwards_error()" }, { @@ -17469,7 +17730,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L65", "id": "plugins_test_logger_test_host_plugin_logger_passes_structured_fields_via_extra", - "community": 44, + "community": 20, "norm_label": "test_host_plugin_logger_passes_structured_fields_via_extra()" }, { @@ -17478,7 +17739,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L77", "id": "plugins_test_logger_test_host_plugin_logger_uses_default_logger_name_when_unspecified", - "community": 44, + "community": 20, "norm_label": "test_host_plugin_logger_uses_default_logger_name_when_unspecified()" }, { @@ -17487,7 +17748,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L94", "id": "plugins_test_logger_test_worker_plugin_logger_emits_json_frame_to_stream", - "community": 44, + "community": 20, "norm_label": "test_worker_plugin_logger_emits_json_frame_to_stream()" }, { @@ -17496,7 +17757,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L106", "id": "plugins_test_logger_test_worker_plugin_logger_each_level_emits_correct_level_string", - "community": 44, + "community": 20, "norm_label": "test_worker_plugin_logger_each_level_emits_correct_level_string()" }, { @@ -17505,7 +17766,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L119", "id": "plugins_test_logger_test_worker_plugin_logger_emits_one_frame_per_call", - "community": 44, + "community": 20, "norm_label": "test_worker_plugin_logger_emits_one_frame_per_call()" }, { @@ -17514,7 +17775,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L129", "id": "plugins_test_logger_test_worker_plugin_logger_emits_empty_context_when_no_fields", - "community": 44, + "community": 20, "norm_label": "test_worker_plugin_logger_emits_empty_context_when_no_fields()" }, { @@ -17523,7 +17784,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L137", "id": "plugins_test_logger_test_worker_plugin_logger_default_stream_is_stderr", - "community": 44, + "community": 20, "norm_label": "test_worker_plugin_logger_default_stream_is_stderr()" }, { @@ -17532,7 +17793,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L153", "id": "plugins_test_logger_test_plugin_log_frame_fields_are_pinned", - "community": 44, + "community": 20, "norm_label": "test_plugin_log_frame_fields_are_pinned()" }, { @@ -17541,7 +17802,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L160", "id": "plugins_test_logger_test_plugin_log_frame_default_context_is_empty_dict", - "community": 44, + "community": 20, "norm_label": "test_plugin_log_frame_default_context_is_empty_dict()" }, { @@ -17550,7 +17811,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L1", "id": "plugins_test_logger_rationale_1", - "community": 44, + "community": 20, "norm_label": "tests for ``exlab_wizard.plugins.logger`` -- structured plugin log shim. pin bo" }, { @@ -17559,7 +17820,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L68", "id": "plugins_test_logger_rationale_68", - "community": 44, + "community": 20, "norm_label": "structured ``**fields`` arrive on the logrecord as ``record.context``." }, { @@ -17568,7 +17829,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L80", "id": "plugins_test_logger_rationale_80", - "community": 44, + "community": 20, "norm_label": "construction without ``name`` falls back to ``exlab_wizard.plugins``." }, { @@ -17577,7 +17838,7 @@ "source_file": "tests/unit/plugins/test_logger.py", "source_location": "L138", "id": "plugins_test_logger_rationale_138", - "community": 44, + "community": 20, "norm_label": "without an explicit stream, the worker writes to ``sys.stderr``." }, { @@ -17586,7 +17847,7 @@ "source_file": "tests/unit/constants/test_schema_versions.py", "source_location": "L1", "id": "tests_unit_constants_test_schema_versions_py", - "community": 264, + "community": 269, "norm_label": "test_schema_versions.py" }, { @@ -17595,7 +17856,7 @@ "source_file": "tests/unit/constants/test_schema_versions.py", "source_location": "L13", "id": "constants_test_schema_versions_test_creation_json_version_is_pinned", - "community": 264, + "community": 269, "norm_label": "test_creation_json_version_is_pinned()" }, { @@ -17604,7 +17865,7 @@ "source_file": "tests/unit/constants/test_schema_versions.py", "source_location": "L18", "id": "constants_test_schema_versions_test_readme_fields_json_version_is_pinned", - "community": 264, + "community": 269, "norm_label": "test_readme_fields_json_version_is_pinned()" }, { @@ -17613,7 +17874,7 @@ "source_file": "tests/unit/constants/test_schema_versions.py", "source_location": "L23", "id": "constants_test_schema_versions_test_sync_state_json_version_is_pinned", - "community": 264, + "community": 269, "norm_label": "test_sync_state_json_version_is_pinned()" }, { @@ -17622,7 +17883,7 @@ "source_file": "tests/unit/constants/test_schema_versions.py", "source_location": "L28", "id": "constants_test_schema_versions_test_equipment_json_version_is_pinned", - "community": 264, + "community": 269, "norm_label": "test_equipment_json_version_is_pinned()" }, { @@ -17631,7 +17892,7 @@ "source_file": "tests/unit/constants/test_schema_versions.py", "source_location": "L33", "id": "constants_test_schema_versions_test_test_runs_json_version_is_pinned", - "community": 264, + "community": 269, "norm_label": "test_test_runs_json_version_is_pinned()" }, { @@ -17640,7 +17901,7 @@ "source_file": "tests/unit/constants/test_schema_versions.py", "source_location": "L38", "id": "constants_test_schema_versions_test_offline_catalogue_version_is_pinned", - "community": 264, + "community": 269, "norm_label": "test_offline_catalogue_version_is_pinned()" }, { @@ -17649,7 +17910,7 @@ "source_file": "tests/unit/constants/test_schema_versions.py", "source_location": "L43", "id": "constants_test_schema_versions_test_readme_front_matter_schema_version_is_pinned", - "community": 264, + "community": 269, "norm_label": "test_readme_front_matter_schema_version_is_pinned()" }, { @@ -17658,7 +17919,7 @@ "source_file": "tests/unit/constants/test_schema_versions.py", "source_location": "L48", "id": "constants_test_schema_versions_test_all_schema_versions_are_strings", - "community": 264, + "community": 269, "norm_label": "test_all_schema_versions_are_strings()" }, { @@ -17667,7 +17928,7 @@ "source_file": "tests/unit/constants/test_schema_versions.py", "source_location": "L63", "id": "constants_test_schema_versions_test_schema_versions_re_exported_from_package", - "community": 264, + "community": 269, "norm_label": "test_schema_versions_re_exported_from_package()" }, { @@ -17676,7 +17937,7 @@ "source_file": "tests/unit/constants/test_schema_versions.py", "source_location": "L1", "id": "constants_test_schema_versions_rationale_1", - "community": 264, + "community": 269, "norm_label": "verify the literal values pinned in ``schema_versions``. each schema-version co" }, { @@ -17685,7 +17946,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L1", "id": "tests_unit_constants_test_patterns_py", - "community": 50, + "community": 62, "norm_label": "test_patterns.py" }, { @@ -17694,7 +17955,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L19", "id": "constants_test_patterns_test_equipment_id_regex_literal", - "community": 50, + "community": 62, "norm_label": "test_equipment_id_regex_literal()" }, { @@ -17703,7 +17964,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L23", "id": "constants_test_patterns_test_equipment_id_pattern_is_compiled", - "community": 50, + "community": 62, "norm_label": "test_equipment_id_pattern_is_compiled()" }, { @@ -17712,7 +17973,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L28", "id": "constants_test_patterns_test_equipment_id_pattern_accepts_valid_ids", - "community": 50, + "community": 62, "norm_label": "test_equipment_id_pattern_accepts_valid_ids()" }, { @@ -17721,7 +17982,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L41", "id": "constants_test_patterns_test_equipment_id_pattern_rejects_invalid_ids", - "community": 50, + "community": 62, "norm_label": "test_equipment_id_pattern_rejects_invalid_ids()" }, { @@ -17730,7 +17991,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L56", "id": "constants_test_patterns_test_equipment_id_max_length", - "community": 50, + "community": 62, "norm_label": "test_equipment_id_max_length()" }, { @@ -17739,7 +18000,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L66", "id": "constants_test_patterns_test_placeholder_angle_bracket_regex_literal", - "community": 50, + "community": 62, "norm_label": "test_placeholder_angle_bracket_regex_literal()" }, { @@ -17748,7 +18009,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L70", "id": "constants_test_patterns_test_placeholder_angle_bracket_pattern_finds_tokens", - "community": 50, + "community": 62, "norm_label": "test_placeholder_angle_bracket_pattern_finds_tokens()" }, { @@ -17757,7 +18018,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L76", "id": "constants_test_patterns_test_placeholder_angle_bracket_pattern_ignores_non_tokens", - "community": 50, + "community": 62, "norm_label": "test_placeholder_angle_bracket_pattern_ignores_non_tokens()" }, { @@ -17766,7 +18027,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L83", "id": "constants_test_patterns_test_placeholder_jinja_var_regex_literal", - "community": 50, + "community": 62, "norm_label": "test_placeholder_jinja_var_regex_literal()" }, { @@ -17775,7 +18036,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L87", "id": "constants_test_patterns_test_placeholder_jinja_var_pattern_finds_markers", - "community": 50, + "community": 62, "norm_label": "test_placeholder_jinja_var_pattern_finds_markers()" }, { @@ -17784,7 +18045,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L93", "id": "constants_test_patterns_test_placeholder_jinja_var_pattern_ignores_plain_text", - "community": 50, + "community": 62, "norm_label": "test_placeholder_jinja_var_pattern_ignores_plain_text()" }, { @@ -17793,7 +18054,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L98", "id": "constants_test_patterns_test_placeholder_jinja_block_regex_literal", - "community": 50, + "community": 62, "norm_label": "test_placeholder_jinja_block_regex_literal()" }, { @@ -17802,7 +18063,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L102", "id": "constants_test_patterns_test_placeholder_jinja_block_pattern_finds_blocks", - "community": 50, + "community": 62, "norm_label": "test_placeholder_jinja_block_pattern_finds_blocks()" }, { @@ -17811,7 +18072,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L108", "id": "constants_test_patterns_test_placeholder_jinja_block_pattern_ignores_unrelated_content", - "community": 50, + "community": 62, "norm_label": "test_placeholder_jinja_block_pattern_ignores_unrelated_content()" }, { @@ -17820,7 +18081,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L117", "id": "constants_test_patterns_test_project_short_id_regex_literal", - "community": 50, + "community": 62, "norm_label": "test_project_short_id_regex_literal()" }, { @@ -17829,7 +18090,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L121", "id": "constants_test_patterns_test_project_short_id_pattern_accepts", - "community": 50, + "community": 62, "norm_label": "test_project_short_id_pattern_accepts()" }, { @@ -17838,7 +18099,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L126", "id": "constants_test_patterns_test_project_short_id_pattern_rejects", - "community": 50, + "community": 62, "norm_label": "test_project_short_id_pattern_rejects()" }, { @@ -17847,7 +18108,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L137", "id": "constants_test_patterns_test_template_question_id_regex_literal", - "community": 50, + "community": 62, "norm_label": "test_template_question_id_regex_literal()" }, { @@ -17856,7 +18117,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L141", "id": "constants_test_patterns_test_template_question_id_pattern_accepts", - "community": 50, + "community": 62, "norm_label": "test_template_question_id_pattern_accepts()" }, { @@ -17865,7 +18126,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L146", "id": "constants_test_patterns_test_template_question_id_pattern_rejects", - "community": 50, + "community": 62, "norm_label": "test_template_question_id_pattern_rejects()" }, { @@ -17874,7 +18135,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L156", "id": "constants_test_patterns_test_plugin_name_regex_literal", - "community": 50, + "community": 62, "norm_label": "test_plugin_name_regex_literal()" }, { @@ -17883,7 +18144,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L160", "id": "constants_test_patterns_test_plugin_name_pattern_accepts", - "community": 50, + "community": 62, "norm_label": "test_plugin_name_pattern_accepts()" }, { @@ -17892,7 +18153,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L165", "id": "constants_test_patterns_test_plugin_name_pattern_rejects", - "community": 50, + "community": 62, "norm_label": "test_plugin_name_pattern_rejects()" }, { @@ -17901,7 +18162,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L175", "id": "constants_test_patterns_test_run_date_strftime_literal", - "community": 50, + "community": 62, "norm_label": "test_run_date_strftime_literal()" }, { @@ -17910,7 +18171,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L181", "id": "constants_test_patterns_test_run_date_strftime_round_trip", - "community": 50, + "community": 62, "norm_label": "test_run_date_strftime_round_trip()" }, { @@ -17919,7 +18180,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L193", "id": "constants_test_patterns_test_run_dir_prefix_literal", - "community": 50, + "community": 62, "norm_label": "test_run_dir_prefix_literal()" }, { @@ -17928,7 +18189,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L197", "id": "constants_test_patterns_test_test_run_dir_prefix_literal", - "community": 50, + "community": 62, "norm_label": "test_test_run_dir_prefix_literal()" }, { @@ -17937,7 +18198,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L201", "id": "constants_test_patterns_test_test_runs_dir_name_literal", - "community": 50, + "community": 62, "norm_label": "test_test_runs_dir_name_literal()" }, { @@ -17946,7 +18207,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L210", "id": "constants_test_patterns_test_windows_reserved_names_membership", - "community": 50, + "community": 62, "norm_label": "test_windows_reserved_names_membership()" }, { @@ -17955,7 +18216,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L220", "id": "constants_test_patterns_test_windows_reserved_names_is_frozenset", - "community": 50, + "community": 62, "norm_label": "test_windows_reserved_names_is_frozenset()" }, { @@ -17964,7 +18225,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L224", "id": "constants_test_patterns_test_windows_reserved_names_size", - "community": 50, + "community": 62, "norm_label": "test_windows_reserved_names_size()" }, { @@ -17973,7 +18234,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L229", "id": "constants_test_patterns_test_windows_reserved_names_are_uppercase", - "community": 50, + "community": 62, "norm_label": "test_windows_reserved_names_are_uppercase()" }, { @@ -17982,7 +18243,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L236", "id": "constants_test_patterns_test_windows_reserved_names_case_insensitive_check", - "community": 50, + "community": 62, "norm_label": "test_windows_reserved_names_case_insensitive_check()" }, { @@ -17991,7 +18252,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L248", "id": "constants_test_patterns_test_windows_illegal_chars_literal", - "community": 50, + "community": 62, "norm_label": "test_windows_illegal_chars_literal()" }, { @@ -18000,7 +18261,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L253", "id": "constants_test_patterns_test_windows_illegal_chars_membership", - "community": 50, + "community": 62, "norm_label": "test_windows_illegal_chars_membership()" }, { @@ -18009,7 +18270,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L258", "id": "constants_test_patterns_test_windows_illegal_chars_excludes_safe", - "community": 50, + "community": 62, "norm_label": "test_windows_illegal_chars_excludes_safe()" }, { @@ -18018,7 +18279,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L268", "id": "constants_test_patterns_test_patterns_re_exported_from_package", - "community": 50, + "community": 62, "norm_label": "test_patterns_re_exported_from_package()" }, { @@ -18027,7 +18288,7 @@ "source_file": "tests/unit/constants/test_patterns.py", "source_location": "L1", "id": "constants_test_patterns_rationale_1", - "community": 50, + "community": 62, "norm_label": "verify the regex literals plus filename-rule constants. each regex is exercised" }, { @@ -18036,7 +18297,7 @@ "source_file": "tests/unit/constants/__init__.py", "source_location": "L1", "id": "tests_unit_constants_init_py", - "community": 439, + "community": 475, "norm_label": "__init__.py" }, { @@ -18045,7 +18306,7 @@ "source_file": "src/exlab_wizard/constants/__init__.py", "source_location": "L1", "id": "constants_init_rationale_1", - "community": 439, + "community": 475, "norm_label": "public re-exports for the ``exlab_wizard.constants`` package. callers should im" }, { @@ -18054,7 +18315,7 @@ "source_file": "tests/unit/constants/test_enum_literal_alignment.py", "source_location": "L1", "id": "tests_unit_constants_test_enum_literal_alignment_py", - "community": 440, + "community": 476, "norm_label": "test_enum_literal_alignment.py" }, { @@ -18063,7 +18324,7 @@ "source_file": "tests/unit/constants/test_enum_literal_alignment.py", "source_location": "L63", "id": "constants_test_enum_literal_alignment_test_enum_values_match_expected_literal_set", - "community": 440, + "community": 476, "norm_label": "test_enum_values_match_expected_literal_set()" }, { @@ -18072,7 +18333,7 @@ "source_file": "tests/unit/constants/test_enum_literal_alignment.py", "source_location": "L1", "id": "constants_test_enum_literal_alignment_rationale_1", - "community": 440, + "community": 476, "norm_label": "assert that ``strenum`` value sets match their sibling ``literal`` aliases. per" }, { @@ -18081,7 +18342,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L1", "id": "tests_unit_constants_test_enums_py", - "community": 63, + "community": 73, "norm_label": "test_enums.py" }, { @@ -18090,7 +18351,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L15", "id": "constants_test_enums_test_run_kind_values", - "community": 63, + "community": 73, "norm_label": "test_run_kind_values()" }, { @@ -18099,7 +18360,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L23", "id": "constants_test_enums_test_run_kind_is_str", - "community": 63, + "community": 73, "norm_label": "test_run_kind_is_str()" }, { @@ -18108,7 +18369,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L30", "id": "constants_test_enums_test_sync_status_values", - "community": 63, + "community": 73, "norm_label": "test_sync_status_values()" }, { @@ -18117,7 +18378,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L47", "id": "constants_test_enums_test_tier_values", - "community": 63, + "community": 73, "norm_label": "test_tier_values()" }, { @@ -18126,7 +18387,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L55", "id": "constants_test_enums_test_problem_class_values", - "community": 63, + "community": 73, "norm_label": "test_problem_class_values()" }, { @@ -18135,7 +18396,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L80", "id": "constants_test_enums_test_finding_kind_values", - "community": 63, + "community": 73, "norm_label": "test_finding_kind_values()" }, { @@ -18144,7 +18405,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L93", "id": "constants_test_enums_test_template_type_values", - "community": 63, + "community": 73, "norm_label": "test_template_type_values()" }, { @@ -18153,7 +18414,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L102", "id": "constants_test_enums_test_run_scope_values", - "community": 63, + "community": 73, "norm_label": "test_run_scope_values()" }, { @@ -18162,7 +18423,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L111", "id": "constants_test_enums_test_lims_project_status_values_pascal_case", - "community": 63, + "community": 73, "norm_label": "test_lims_project_status_values_pascal_case()" }, { @@ -18171,7 +18432,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L126", "id": "constants_test_enums_test_lims_project_source_values", - "community": 63, + "community": 73, "norm_label": "test_lims_project_source_values()" }, { @@ -18180,7 +18441,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L139", "id": "constants_test_enums_test_ingest_state_enum_is_removed", - "community": 63, + "community": 73, "norm_label": "test_ingest_state_enum_is_removed()" }, { @@ -18189,7 +18450,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L145", "id": "constants_test_enums_test_run_sync_state_values", - "community": 63, + "community": 73, "norm_label": "test_run_sync_state_values()" }, { @@ -18198,7 +18459,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L151", "id": "constants_test_enums_test_setup_state_values", - "community": 63, + "community": 73, "norm_label": "test_setup_state_values()" }, { @@ -18207,7 +18468,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L173", "id": "constants_test_enums_test_nas_remote_setup_members_exist", - "community": 63, + "community": 73, "norm_label": "test_nas_remote_setup_members_exist()" }, { @@ -18216,7 +18477,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L180", "id": "constants_test_enums_test_transport_type_enum_removed", - "community": 63, + "community": 73, "norm_label": "test_transport_type_enum_removed()" }, { @@ -18225,7 +18486,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L186", "id": "constants_test_enums_test_completeness_signal_enum_removed", - "community": 63, + "community": 73, "norm_label": "test_completeness_signal_enum_removed()" }, { @@ -18234,7 +18495,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L191", "id": "constants_test_enums_test_staging_cleanup_mode_values", - "community": 63, + "community": 73, "norm_label": "test_staging_cleanup_mode_values()" }, { @@ -18243,7 +18504,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L199", "id": "constants_test_enums_test_plugin_status_values", - "community": 63, + "community": 73, "norm_label": "test_plugin_status_values()" }, { @@ -18252,7 +18513,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L216", "id": "constants_test_enums_test_creation_level_values", - "community": 63, + "community": 73, "norm_label": "test_creation_level_values()" }, { @@ -18261,7 +18522,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L224", "id": "constants_test_enums_test_field_type_values", - "community": 63, + "community": 73, "norm_label": "test_field_type_values()" }, { @@ -18270,7 +18531,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L235", "id": "constants_test_enums_test_bandwidth_day_values", - "community": 63, + "community": 73, "norm_label": "test_bandwidth_day_values()" }, { @@ -18279,7 +18540,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L243", "id": "constants_test_enums_test_session_kind_values", - "community": 63, + "community": 73, "norm_label": "test_session_kind_values()" }, { @@ -18288,7 +18549,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L251", "id": "constants_test_enums_test_next_action_values", - "community": 63, + "community": 73, "norm_label": "test_next_action_values()" }, { @@ -18297,7 +18558,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L259", "id": "constants_test_enums_test_audit_scope_kind_values", - "community": 63, + "community": 73, "norm_label": "test_audit_scope_kind_values()" }, { @@ -18306,7 +18567,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L268", "id": "constants_test_enums_test_directory_level_values", - "community": 63, + "community": 73, "norm_label": "test_directory_level_values()" }, { @@ -18315,7 +18576,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L276", "id": "constants_test_enums_test_platform_values", - "community": 63, + "community": 73, "norm_label": "test_platform_values()" }, { @@ -18324,7 +18585,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L284", "id": "constants_test_enums_test_setup_next_action_values", - "community": 63, + "community": 73, "norm_label": "test_setup_next_action_values()" }, { @@ -18333,7 +18594,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L292", "id": "constants_test_enums_test_sync_handle_state_values", - "community": 63, + "community": 73, "norm_label": "test_sync_handle_state_values()" }, { @@ -18342,7 +18603,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L300", "id": "constants_test_enums_test_plugin_source_root_values", - "community": 63, + "community": 73, "norm_label": "test_plugin_source_root_values()" }, { @@ -18351,7 +18612,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L308", "id": "constants_test_enums_test_tree_project_status_values", - "community": 63, + "community": 73, "norm_label": "test_tree_project_status_values()" }, { @@ -18360,7 +18621,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L316", "id": "constants_test_enums_test_enums_re_exported_from_package", - "community": 63, + "community": 73, "norm_label": "test_enums_re_exported_from_package()" }, { @@ -18369,7 +18630,7 @@ "source_file": "tests/unit/constants/test_enums.py", "source_location": "L1", "id": "constants_test_enums_rationale_1", - "community": 63, + "community": 73, "norm_label": "verify the ``strenum`` value strings match the design spec verbatim. these enum" }, { @@ -18378,7 +18639,7 @@ "source_file": "tests/unit/constants/test_keyring.py", "source_location": "L1", "id": "tests_unit_constants_test_keyring_py", - "community": 283, + "community": 289, "norm_label": "test_keyring.py" }, { @@ -18387,7 +18648,7 @@ "source_file": "tests/unit/constants/test_keyring.py", "source_location": "L13", "id": "constants_test_keyring_test_keyring_service_literal", - "community": 283, + "community": 289, "norm_label": "test_keyring_service_literal()" }, { @@ -18396,7 +18657,7 @@ "source_file": "tests/unit/constants/test_keyring.py", "source_location": "L18", "id": "constants_test_keyring_test_keyring_username_lims_literal", - "community": 283, + "community": 289, "norm_label": "test_keyring_username_lims_literal()" }, { @@ -18405,7 +18666,7 @@ "source_file": "tests/unit/constants/test_keyring.py", "source_location": "L23", "id": "constants_test_keyring_test_nas_keyring_username_removed", - "community": 283, + "community": 289, "norm_label": "test_nas_keyring_username_removed()" }, { @@ -18414,7 +18675,7 @@ "source_file": "tests/unit/constants/test_keyring.py", "source_location": "L31", "id": "constants_test_keyring_test_keyring_re_exported_from_package", - "community": 283, + "community": 289, "norm_label": "test_keyring_re_exported_from_package()" }, { @@ -18423,7 +18684,7 @@ "source_file": "tests/unit/constants/test_keyring.py", "source_location": "L1", "id": "constants_test_keyring_rationale_1", - "community": 283, + "community": 289, "norm_label": "verify the keyring service / username conventions. these literals are committed" }, { @@ -18432,7 +18693,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L1", "id": "tests_unit_constants_test_limits_py", - "community": 118, + "community": 126, "norm_label": "test_limits.py" }, { @@ -18441,7 +18702,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L12", "id": "constants_test_limits_test_plugin_timeout_max_seconds", - "community": 118, + "community": 126, "norm_label": "test_plugin_timeout_max_seconds()" }, { @@ -18450,7 +18711,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L17", "id": "constants_test_limits_test_plugin_memory_max_mb", - "community": 118, + "community": 126, "norm_label": "test_plugin_memory_max_mb()" }, { @@ -18459,7 +18720,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L22", "id": "constants_test_limits_test_plugin_validation_cpu_seconds", - "community": 118, + "community": 126, "norm_label": "test_plugin_validation_cpu_seconds()" }, { @@ -18468,7 +18729,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L27", "id": "constants_test_limits_test_plugin_validation_memory_mb", - "community": 118, + "community": 126, "norm_label": "test_plugin_validation_memory_mb()" }, { @@ -18477,7 +18738,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L32", "id": "constants_test_limits_test_plugin_validation_wall_seconds", - "community": 118, + "community": 126, "norm_label": "test_plugin_validation_wall_seconds()" }, { @@ -18486,7 +18747,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L37", "id": "constants_test_limits_test_plugin_rlimit_nofile", - "community": 118, + "community": 126, "norm_label": "test_plugin_rlimit_nofile()" }, { @@ -18495,7 +18756,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L42", "id": "constants_test_limits_test_plugin_ipc_frame_cap_bytes_is_one_mib", - "community": 118, + "community": 126, "norm_label": "test_plugin_ipc_frame_cap_bytes_is_one_mib()" }, { @@ -18504,7 +18765,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L48", "id": "constants_test_limits_test_plugin_api_version", - "community": 118, + "community": 126, "norm_label": "test_plugin_api_version()" }, { @@ -18513,7 +18774,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L54", "id": "constants_test_limits_test_plugin_supported_api_versions", - "community": 118, + "community": 126, "norm_label": "test_plugin_supported_api_versions()" }, { @@ -18522,7 +18783,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L62", "id": "constants_test_limits_test_plugin_forbidden_path_prefixes", - "community": 118, + "community": 126, "norm_label": "test_plugin_forbidden_path_prefixes()" }, { @@ -18531,7 +18792,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L72", "id": "constants_test_limits_test_label_max_length", - "community": 118, + "community": 126, "norm_label": "test_label_max_length()" }, { @@ -18540,7 +18801,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L77", "id": "constants_test_limits_test_objective_max_length", - "community": 118, + "community": 126, "norm_label": "test_objective_max_length()" }, { @@ -18549,7 +18810,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L82", "id": "constants_test_limits_test_validator_binary_detect_bytes", - "community": 118, + "community": 126, "norm_label": "test_validator_binary_detect_bytes()" }, { @@ -18558,7 +18819,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L87", "id": "constants_test_limits_test_log_line_max_bytes", - "community": 118, + "community": 126, "norm_label": "test_log_line_max_bytes()" }, { @@ -18567,7 +18828,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L92", "id": "constants_test_limits_test_session_gc_after_seconds", - "community": 118, + "community": 126, "norm_label": "test_session_gc_after_seconds()" }, { @@ -18576,7 +18837,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L97", "id": "constants_test_limits_test_audit_refresh_seconds", - "community": 118, + "community": 126, "norm_label": "test_audit_refresh_seconds()" }, { @@ -18585,7 +18846,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L102", "id": "constants_test_limits_test_quit_drain_timeout_seconds", - "community": 118, + "community": 126, "norm_label": "test_quit_drain_timeout_seconds()" }, { @@ -18594,7 +18855,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L107", "id": "constants_test_limits_test_sigterm_drain_timeout_seconds", - "community": 118, + "community": 126, "norm_label": "test_sigterm_drain_timeout_seconds()" }, { @@ -18603,7 +18864,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L112", "id": "constants_test_limits_test_tray_status_refresh_seconds", - "community": 118, + "community": 126, "norm_label": "test_tray_status_refresh_seconds()" }, { @@ -18612,7 +18873,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L117", "id": "constants_test_limits_test_worker_timeout_grace_seconds", - "community": 118, + "community": 126, "norm_label": "test_worker_timeout_grace_seconds()" }, { @@ -18621,7 +18882,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L122", "id": "constants_test_limits_test_window_default_size", - "community": 118, + "community": 126, "norm_label": "test_window_default_size()" }, { @@ -18630,7 +18891,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L128", "id": "constants_test_limits_test_notification_coalesce_seconds", - "community": 118, + "community": 126, "norm_label": "test_notification_coalesce_seconds()" }, { @@ -18639,7 +18900,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L133", "id": "constants_test_limits_test_disk_space_preflight_mib", - "community": 118, + "community": 126, "norm_label": "test_disk_space_preflight_mib()" }, { @@ -18648,7 +18909,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L138", "id": "constants_test_limits_test_limits_re_exported_from_package", - "community": 118, + "community": 126, "norm_label": "test_limits_re_exported_from_package()" }, { @@ -18657,7 +18918,7 @@ "source_file": "tests/unit/constants/test_limits.py", "source_location": "L1", "id": "constants_test_limits_rationale_1", - "community": 118, + "community": 126, "norm_label": "verify the numeric limits and policy ceilings. each value here is hard-coded pe" }, { @@ -18666,7 +18927,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L1", "id": "tests_unit_constants_test_filenames_py", - "community": 173, + "community": 184, "norm_label": "test_filenames.py" }, { @@ -18675,7 +18936,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L12", "id": "constants_test_filenames_test_cache_dir_name", - "community": 173, + "community": 184, "norm_label": "test_cache_dir_name()" }, { @@ -18684,7 +18945,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L17", "id": "constants_test_filenames_test_creation_json_name", - "community": 173, + "community": 184, "norm_label": "test_creation_json_name()" }, { @@ -18693,7 +18954,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L22", "id": "constants_test_filenames_test_readme_fields_json_name", - "community": 173, + "community": 184, "norm_label": "test_readme_fields_json_name()" }, { @@ -18702,7 +18963,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L27", "id": "constants_test_filenames_test_equipment_json_name", - "community": 173, + "community": 184, "norm_label": "test_equipment_json_name()" }, { @@ -18711,7 +18972,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L32", "id": "constants_test_filenames_test_sync_state_filename", - "community": 173, + "community": 184, "norm_label": "test_sync_state_filename()" }, { @@ -18720,7 +18981,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L37", "id": "constants_test_filenames_test_test_runs_json_name", - "community": 173, + "community": 184, "norm_label": "test_test_runs_json_name()" }, { @@ -18729,7 +18990,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L42", "id": "constants_test_filenames_test_answers_file_name", - "community": 173, + "community": 184, "norm_label": "test_answers_file_name()" }, { @@ -18738,7 +18999,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L47", "id": "constants_test_filenames_test_log_file_template", - "community": 173, + "community": 184, "norm_label": "test_log_file_template()" }, { @@ -18747,7 +19008,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L52", "id": "constants_test_filenames_test_log_file_template_formats", - "community": 173, + "community": 184, "norm_label": "test_log_file_template_formats()" }, { @@ -18756,7 +19017,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L58", "id": "constants_test_filenames_test_readme_file_name", - "community": 173, + "community": 184, "norm_label": "test_readme_file_name()" }, { @@ -18765,7 +19026,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L63", "id": "constants_test_filenames_test_copier_manifest_name", - "community": 173, + "community": 184, "norm_label": "test_copier_manifest_name()" }, { @@ -18774,7 +19035,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L68", "id": "constants_test_filenames_test_plugin_manifest_name", - "community": 173, + "community": 184, "norm_label": "test_plugin_manifest_name()" }, { @@ -18783,7 +19044,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L73", "id": "constants_test_filenames_test_server_state_file", - "community": 173, + "community": 184, "norm_label": "test_server_state_file()" }, { @@ -18792,7 +19053,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L78", "id": "constants_test_filenames_test_lims_cache_db_name", - "community": 173, + "community": 184, "norm_label": "test_lims_cache_db_name()" }, { @@ -18801,7 +19062,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L83", "id": "constants_test_filenames_test_sync_queue_db_name", - "community": 173, + "community": 184, "norm_label": "test_sync_queue_db_name()" }, { @@ -18810,7 +19071,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L88", "id": "constants_test_filenames_test_central_log_file", - "community": 173, + "community": 184, "norm_label": "test_central_log_file()" }, { @@ -18819,7 +19080,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L93", "id": "constants_test_filenames_test_secrets_file", - "community": 173, + "community": 184, "norm_label": "test_secrets_file()" }, { @@ -18828,7 +19089,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L98", "id": "constants_test_filenames_test_filenames_re_exported_from_package", - "community": 173, + "community": 184, "norm_label": "test_filenames_re_exported_from_package()" }, { @@ -18837,7 +19098,7 @@ "source_file": "tests/unit/constants/test_filenames.py", "source_location": "L1", "id": "constants_test_filenames_rationale_1", - "community": 173, + "community": 184, "norm_label": "verify the canonical filename constants. these literals appear in directory lay" }, { @@ -18846,7 +19107,7 @@ "source_file": "tests/unit/io/test_yaml_files.py", "source_location": "L1", "id": "tests_unit_io_test_yaml_files_py", - "community": 4, + "community": 7, "norm_label": "test_yaml_files.py" }, { @@ -18855,7 +19116,7 @@ "source_file": "tests/unit/io/test_yaml_files.py", "source_location": "L13", "id": "io_test_yaml_files_test_load_yaml_manifest_returns_dict", - "community": 4, + "community": 7, "norm_label": "test_load_yaml_manifest_returns_dict()" }, { @@ -18864,7 +19125,7 @@ "source_file": "tests/unit/io/test_yaml_files.py", "source_location": "L19", "id": "io_test_yaml_files_test_load_yaml_manifest_empty_file_returns_empty_dict", - "community": 4, + "community": 7, "norm_label": "test_load_yaml_manifest_empty_file_returns_empty_dict()" }, { @@ -18873,7 +19134,7 @@ "source_file": "tests/unit/io/test_yaml_files.py", "source_location": "L25", "id": "io_test_yaml_files_test_load_yaml_manifest_non_dict_returns_empty_dict", - "community": 4, + "community": 7, "norm_label": "test_load_yaml_manifest_non_dict_returns_empty_dict()" }, { @@ -18882,7 +19143,7 @@ "source_file": "tests/unit/io/test_yaml_files.py", "source_location": "L32", "id": "io_test_yaml_files_test_load_yaml_manifest_propagates_yaml_error", - "community": 4, + "community": 7, "norm_label": "test_load_yaml_manifest_propagates_yaml_error()" }, { @@ -18891,7 +19152,7 @@ "source_file": "tests/unit/io/test_yaml_files.py", "source_location": "L39", "id": "io_test_yaml_files_test_load_yaml_manifest_missing_file_raises", - "community": 4, + "community": 7, "norm_label": "test_load_yaml_manifest_missing_file_raises()" }, { @@ -18900,7 +19161,7 @@ "source_file": "tests/unit/io/test_yaml_files.py", "source_location": "L1", "id": "io_test_yaml_files_rationale_1", - "community": 4, + "community": 7, "norm_label": "tests for ``exlab_wizard.io.yaml_files``." }, { @@ -18909,7 +19170,7 @@ "source_file": "tests/unit/io/test_yaml_files.py", "source_location": "L26", "id": "io_test_yaml_files_rationale_26", - "community": 4, + "community": 7, "norm_label": "a yaml file with a top-level scalar/list is not a manifest." }, { @@ -18918,7 +19179,7 @@ "source_file": "tests/unit/io/test_atomic_write.py", "source_location": "L1", "id": "tests_unit_io_test_atomic_write_py", - "community": 259, + "community": 262, "norm_label": "test_atomic_write.py" }, { @@ -18927,7 +19188,7 @@ "source_file": "tests/unit/io/test_atomic_write.py", "source_location": "L13", "id": "io_test_atomic_write_test_atomic_write_creates_file", - "community": 259, + "community": 262, "norm_label": "test_atomic_write_creates_file()" }, { @@ -18936,7 +19197,7 @@ "source_file": "tests/unit/io/test_atomic_write.py", "source_location": "L19", "id": "io_test_atomic_write_test_atomic_write_overwrites_existing", - "community": 259, + "community": 262, "norm_label": "test_atomic_write_overwrites_existing()" }, { @@ -18945,7 +19206,7 @@ "source_file": "tests/unit/io/test_atomic_write.py", "source_location": "L26", "id": "io_test_atomic_write_test_atomic_write_leaves_no_temp_file_on_success", - "community": 259, + "community": 262, "norm_label": "test_atomic_write_leaves_no_temp_file_on_success()" }, { @@ -18954,7 +19215,7 @@ "source_file": "tests/unit/io/test_atomic_write.py", "source_location": "L33", "id": "io_test_atomic_write_test_atomic_write_cleans_up_temp_on_replace_failure", - "community": 259, + "community": 262, "norm_label": "test_atomic_write_cleans_up_temp_on_replace_failure()" }, { @@ -18963,7 +19224,7 @@ "source_file": "tests/unit/io/test_atomic_write.py", "source_location": "L48", "id": "io_test_atomic_write_test_atomic_write_skip_fsync", - "community": 259, + "community": 262, "norm_label": "test_atomic_write_skip_fsync()" }, { @@ -18972,7 +19233,7 @@ "source_file": "tests/unit/io/test_atomic_write.py", "source_location": "L56", "id": "io_test_atomic_write_test_atomic_write_calls_fsync_by_default", - "community": 259, + "community": 262, "norm_label": "test_atomic_write_calls_fsync_by_default()" }, { @@ -18981,7 +19242,7 @@ "source_file": "tests/unit/io/test_atomic_write.py", "source_location": "L1", "id": "io_test_atomic_write_rationale_1", - "community": 259, + "community": 262, "norm_label": "tests for ``exlab_wizard.io.atomic_write``." }, { @@ -18990,7 +19251,7 @@ "source_file": "tests/unit/io/__init__.py", "source_location": "L1", "id": "tests_unit_io_init_py", - "community": 530, + "community": 554, "norm_label": "__init__.py" }, { @@ -18999,7 +19260,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L1", "id": "tests_unit_io_test_json_files_py", - "community": 66, + "community": 117, "norm_label": "test_json_files.py" }, { @@ -19008,7 +19269,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L18", "id": "io_test_json_files_dummy", - "community": 66, + "community": 117, "norm_label": "_dummy" }, { @@ -19017,7 +19278,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L23", "id": "io_test_json_files_test_require_schema_major_accepts_matching_major", - "community": 66, + "community": 117, "norm_label": "test_require_schema_major_accepts_matching_major()" }, { @@ -19026,7 +19287,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L27", "id": "io_test_json_files_test_require_schema_major_rejects_different_major", - "community": 66, + "community": 117, "norm_label": "test_require_schema_major_rejects_different_major()" }, { @@ -19035,7 +19296,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L34", "id": "io_test_json_files_test_require_schema_major_rejects_empty", - "community": 66, + "community": 117, "norm_label": "test_require_schema_major_rejects_empty()" }, { @@ -19044,7 +19305,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L39", "id": "io_test_json_files_test_require_schema_major_rejects_none", - "community": 66, + "community": 117, "norm_label": "test_require_schema_major_rejects_none()" }, { @@ -19053,7 +19314,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L44", "id": "io_test_json_files_test_require_schema_major_rejects_unparseable", - "community": 66, + "community": 117, "norm_label": "test_require_schema_major_rejects_unparseable()" }, { @@ -19062,7 +19323,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L49", "id": "io_test_json_files_test_read_msgspec_json_decodes_to_struct", - "community": 66, + "community": 231, "norm_label": "test_read_msgspec_json_decodes_to_struct()" }, { @@ -19071,7 +19332,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L57", "id": "io_test_json_files_test_read_msgspec_json_with_matching_major", - "community": 66, + "community": 231, "norm_label": "test_read_msgspec_json_with_matching_major()" }, { @@ -19080,7 +19341,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L64", "id": "io_test_json_files_test_read_msgspec_json_rejects_wrong_major", - "community": 66, + "community": 231, "norm_label": "test_read_msgspec_json_rejects_wrong_major()" }, { @@ -19089,7 +19350,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L71", "id": "io_test_json_files_test_read_msgspec_json_passes_through_malformed", - "community": 66, + "community": 231, "norm_label": "test_read_msgspec_json_passes_through_malformed()" }, { @@ -19098,7 +19359,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L79", "id": "io_test_json_files_test_read_msgspec_json_raw_returns_dict", - "community": 66, + "community": 117, "norm_label": "test_read_msgspec_json_raw_returns_dict()" }, { @@ -19107,7 +19368,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L86", "id": "io_test_json_files_test_read_msgspec_json_raw_with_matching_major", - "community": 66, + "community": 117, "norm_label": "test_read_msgspec_json_raw_with_matching_major()" }, { @@ -19116,7 +19377,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L93", "id": "io_test_json_files_test_read_msgspec_json_raw_rejects_wrong_major", - "community": 66, + "community": 117, "norm_label": "test_read_msgspec_json_raw_rejects_wrong_major()" }, { @@ -19125,7 +19386,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L100", "id": "io_test_json_files_test_read_msgspec_json_raw_skips_check_when_version_missing", - "community": 66, + "community": 117, "norm_label": "test_read_msgspec_json_raw_skips_check_when_version_missing()" }, { @@ -19134,7 +19395,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L1", "id": "io_test_json_files_rationale_1", - "community": 66, + "community": 117, "norm_label": "tests for ``exlab_wizard.io.json_files``." }, { @@ -19143,7 +19404,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L72", "id": "io_test_json_files_rationale_72", - "community": 66, + "community": 231, "norm_label": "malformed json should surface from msgspec, not the major-check." }, { @@ -19152,7 +19413,7 @@ "source_file": "tests/unit/io/test_json_files.py", "source_location": "L103", "id": "io_test_json_files_rationale_103", - "community": 66, + "community": 117, "norm_label": "a dict without schema_version must not be rejected (the typed decoder downst" }, { @@ -19161,7 +19422,7 @@ "source_file": "tests/unit/template/__init__.py", "source_location": "L1", "id": "tests_unit_template_init_py", - "community": 441, + "community": 477, "norm_label": "__init__.py" }, { @@ -19170,7 +19431,7 @@ "source_file": "src/exlab_wizard/template/__init__.py", "source_location": "L1", "id": "template_init_rationale_1", - "community": 441, + "community": 477, "norm_label": "template (copier) package. backend spec \u00a75." }, { @@ -19179,7 +19440,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L1", "id": "tests_unit_template_test_copier_driver_py", - "community": 61, + "community": 49, "norm_label": "test_copier_driver.py" }, { @@ -19188,7 +19449,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L59", "id": "template_test_copier_driver_test_core_readme_field_ids_pins_the_three_core_fields", - "community": 61, + "community": 49, "norm_label": "test_core_readme_field_ids_pins_the_three_core_fields()" }, { @@ -19197,7 +19458,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L70", "id": "template_test_copier_driver_test_resolve_project_basic_returns_resolved_template", - "community": 61, + "community": 49, "norm_label": "test_resolve_project_basic_returns_resolved_template()" }, { @@ -19206,7 +19467,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L90", "id": "template_test_copier_driver_test_resolve_run_basic_experimental_sets_run_scope_experimental", - "community": 61, + "community": 49, "norm_label": "test_resolve_run_basic_experimental_sets_run_scope_experimental()" }, { @@ -19215,7 +19476,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L100", "id": "template_test_copier_driver_test_resolve_run_basic_test_sets_run_scope_test", - "community": 61, + "community": 49, "norm_label": "test_resolve_run_basic_test_sets_run_scope_test()" }, { @@ -19224,7 +19485,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L108", "id": "template_test_copier_driver_test_resolve_run_basic_both_sets_run_scope_both", - "community": 61, + "community": 49, "norm_label": "test_resolve_run_basic_both_sets_run_scope_both()" }, { @@ -19233,7 +19494,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L121", "id": "template_test_copier_driver_test_resolve_missing_version_raises_template_load_error_mentioning_field", - "community": 61, + "community": 49, "norm_label": "test_resolve_missing_version_raises_template_load_error_mentioning_field()" }, { @@ -19242,7 +19503,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L130", "id": "template_test_copier_driver_test_resolve_redeclares_core_raises_core_field_redeclared_naming_offender", - "community": 61, + "community": 49, "norm_label": "test_resolve_redeclares_core_raises_core_field_redeclared_naming_offender()" }, { @@ -19251,7 +19512,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L138", "id": "template_test_copier_driver_test_resolve_redeclares_core_is_also_caught_as_template_load_error", - "community": 61, + "community": 49, "norm_label": "test_resolve_redeclares_core_is_also_caught_as_template_load_error()" }, { @@ -19260,7 +19521,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L146", "id": "template_test_copier_driver_test_resolve_missing_copier_yml_raises_template_load_error", - "community": 61, + "community": 49, "norm_label": "test_resolve_missing_copier_yml_raises_template_load_error()" }, { @@ -19269,7 +19530,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L156", "id": "template_test_copier_driver_test_resolve_scope_mismatch_raises_template_load_error", - "community": 61, + "community": 49, "norm_label": "test_resolve_scope_mismatch_raises_template_load_error()" }, { @@ -19278,7 +19539,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L165", "id": "template_test_copier_driver_test_resolve_run_template_missing_run_scope_raises", - "community": 61, + "community": 49, "norm_label": "test_resolve_run_template_missing_run_scope_raises()" }, { @@ -19287,7 +19548,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L179", "id": "template_test_copier_driver_test_resolve_run_template_invalid_run_scope_raises", - "community": 61, + "community": 49, "norm_label": "test_resolve_run_template_invalid_run_scope_raises()" }, { @@ -19296,7 +19557,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L198", "id": "template_test_copier_driver_test_resolve_with_tasks_does_not_raise", - "community": 61, + "community": 49, "norm_label": "test_resolve_with_tasks_does_not_raise()" }, { @@ -19305,7 +19566,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L208", "id": "template_test_copier_driver_test_resolve_with_tasks_emits_warning_log", - "community": 61, + "community": 49, "norm_label": "test_resolve_with_tasks_emits_warning_log()" }, { @@ -19314,7 +19575,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L227", "id": "template_test_copier_driver_test_render_project_basic_writes_readme", - "community": 61, + "community": 49, "norm_label": "test_render_project_basic_writes_readme()" }, { @@ -19323,7 +19584,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L245", "id": "template_test_copier_driver_test_render_project_basic_files_written_lists_the_readme", - "community": 61, + "community": 49, "norm_label": "test_render_project_basic_files_written_lists_the_readme()" }, { @@ -19332,7 +19593,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L263", "id": "template_test_copier_driver_test_render_with_tasks_silently_ignores_tasks_and_writes_file", - "community": 61, + "community": 49, "norm_label": "test_render_with_tasks_silently_ignores_tasks_and_writes_file()" }, { @@ -19341,7 +19602,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L288", "id": "template_test_copier_driver_test_render_into_dst_with_conflicting_files_raises", - "community": 61, + "community": 49, "norm_label": "test_render_into_dst_with_conflicting_files_raises()" }, { @@ -19350,7 +19611,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L322", "id": "template_test_copier_driver_test_render_calls_copier_run_copy_with_spec_kwargs", - "community": 61, + "community": 49, "norm_label": "test_render_calls_copier_run_copy_with_spec_kwargs()" }, { @@ -19359,7 +19620,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L350", "id": "template_test_copier_driver_test_resolve_unreadable_copier_yml_raises_template_load_error", - "community": 61, + "community": 49, "norm_label": "test_resolve_unreadable_copier_yml_raises_template_load_error()" }, { @@ -19368,7 +19629,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L371", "id": "template_test_copier_driver_test_resolve_malformed_yaml_raises_template_load_error", - "community": 61, + "community": 49, "norm_label": "test_resolve_malformed_yaml_raises_template_load_error()" }, { @@ -19377,7 +19638,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L387", "id": "template_test_copier_driver_test_resolve_empty_copier_yml_treats_manifest_as_empty_and_rejects_missing_type", - "community": 61, + "community": 49, "norm_label": "test_resolve_empty_copier_yml_treats_manifest_as_empty_and_rejects_missing_type()" }, { @@ -19386,7 +19647,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L403", "id": "template_test_copier_driver_test_resolve_non_mapping_yaml_raises_template_load_error", - "community": 61, + "community": 49, "norm_label": "test_resolve_non_mapping_yaml_raises_template_load_error()" }, { @@ -19395,7 +19656,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L421", "id": "template_test_copier_driver_test_resolve_missing_exlab_type_raises_template_load_error", - "community": 61, + "community": 49, "norm_label": "test_resolve_missing_exlab_type_raises_template_load_error()" }, { @@ -19404,7 +19665,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L436", "id": "template_test_copier_driver_test_resolve_invalid_exlab_type_value_raises_template_load_error", - "community": 61, + "community": 49, "norm_label": "test_resolve_invalid_exlab_type_value_raises_template_load_error()" }, { @@ -19413,7 +19674,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L461", "id": "template_test_copier_driver_test_resolve_readme_fields_with_non_core_entries_passes_through", - "community": 61, + "community": 49, "norm_label": "test_resolve_readme_fields_with_non_core_entries_passes_through()" }, { @@ -19422,7 +19683,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L488", "id": "template_test_copier_driver_test_resolve_readme_block_not_a_mapping_yields_empty_extra_fields", - "community": 61, + "community": 49, "norm_label": "test_resolve_readme_block_not_a_mapping_yields_empty_extra_fields()" }, { @@ -19431,7 +19692,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L505", "id": "template_test_copier_driver_test_resolve_readme_fields_not_a_list_yields_empty_extra_fields", - "community": 61, + "community": 49, "norm_label": "test_resolve_readme_fields_not_a_list_yields_empty_extra_fields()" }, { @@ -19440,7 +19701,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L532", "id": "template_test_copier_driver_test_resolve_non_string_description_falls_back_to_empty", - "community": 61, + "community": 49, "norm_label": "test_resolve_non_string_description_falls_back_to_empty()" }, { @@ -19449,7 +19710,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L548", "id": "template_test_copier_driver_test_resolve_plugin_order_preserved", - "community": 61, + "community": 49, "norm_label": "test_resolve_plugin_order_preserved()" }, { @@ -19458,7 +19719,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L567", "id": "template_test_copier_driver_test_resolve_non_list_plugin_order_falls_back_to_empty", - "community": 61, + "community": 49, "norm_label": "test_resolve_non_list_plugin_order_falls_back_to_empty()" }, { @@ -19467,7 +19728,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L587", "id": "template_test_copier_driver_test_render_snapshots_existing_regular_file_at_dst", - "community": 61, + "community": 49, "norm_label": "test_render_snapshots_existing_regular_file_at_dst()" }, { @@ -19476,7 +19737,7 @@ "source_file": "tests/unit/template/test_copier_driver.py", "source_location": "L1", "id": "template_test_copier_driver_rationale_1", - "community": 61, + "community": 49, "norm_label": "unit tests for ``exlab_wizard.template.copier_driver``. these tests pin the \u00a74." }, { @@ -19485,7 +19746,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L1", "id": "tests_unit_utils_test_time_py", - "community": 123, + "community": 134, "norm_label": "test_time.py" }, { @@ -19494,7 +19755,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L20", "id": "utils_test_time_test_utc_now_iso_format", - "community": 123, + "community": 134, "norm_label": "test_utc_now_iso_format()" }, { @@ -19503,7 +19764,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L25", "id": "utils_test_time_test_dt_to_iso_naive_assumed_utc", - "community": 123, + "community": 134, "norm_label": "test_dt_to_iso_naive_assumed_utc()" }, { @@ -19512,7 +19773,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L30", "id": "utils_test_time_test_dt_to_iso_utc_aware", - "community": 123, + "community": 134, "norm_label": "test_dt_to_iso_utc_aware()" }, { @@ -19521,7 +19782,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L35", "id": "utils_test_time_test_dt_to_iso_non_utc_zone_converts", - "community": 123, + "community": 134, "norm_label": "test_dt_to_iso_non_utc_zone_converts()" }, { @@ -19530,7 +19791,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L42", "id": "utils_test_time_test_parse_utc_iso_z_form", - "community": 123, + "community": 134, "norm_label": "test_parse_utc_iso_z_form()" }, { @@ -19539,7 +19800,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L47", "id": "utils_test_time_test_parse_utc_iso_offset_form", - "community": 123, + "community": 134, "norm_label": "test_parse_utc_iso_offset_form()" }, { @@ -19548,7 +19809,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L52", "id": "utils_test_time_test_parse_utc_iso_naive_input_tagged_utc", - "community": 123, + "community": 134, "norm_label": "test_parse_utc_iso_naive_input_tagged_utc()" }, { @@ -19557,7 +19818,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L57", "id": "utils_test_time_test_parse_utc_iso_round_trip_with_now", - "community": 123, + "community": 134, "norm_label": "test_parse_utc_iso_round_trip_with_now()" }, { @@ -19566,7 +19827,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L63", "id": "utils_test_time_test_parse_utc_iso_raises_on_garbage", - "community": 123, + "community": 134, "norm_label": "test_parse_utc_iso_raises_on_garbage()" }, { @@ -19575,7 +19836,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L68", "id": "utils_test_time_test_parse_utc_iso_or_none_handles_none", - "community": 123, + "community": 134, "norm_label": "test_parse_utc_iso_or_none_handles_none()" }, { @@ -19584,7 +19845,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L72", "id": "utils_test_time_test_parse_utc_iso_or_none_handles_empty", - "community": 123, + "community": 134, "norm_label": "test_parse_utc_iso_or_none_handles_empty()" }, { @@ -19593,7 +19854,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L76", "id": "utils_test_time_test_parse_utc_iso_or_none_handles_malformed", - "community": 123, + "community": 134, "norm_label": "test_parse_utc_iso_or_none_handles_malformed()" }, { @@ -19602,7 +19863,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L80", "id": "utils_test_time_test_parse_utc_iso_or_none_returns_datetime_for_valid", - "community": 123, + "community": 134, "norm_label": "test_parse_utc_iso_or_none_returns_datetime_for_valid()" }, { @@ -19611,7 +19872,7 @@ "source_file": "tests/unit/utils/test_time.py", "source_location": "L1", "id": "utils_test_time_rationale_1", - "community": 123, + "community": 134, "norm_label": "tests for ``exlab_wizard.utils.time``." }, { @@ -19620,7 +19881,7 @@ "source_file": "tests/unit/utils/__init__.py", "source_location": "L1", "id": "tests_unit_utils_init_py", - "community": 531, + "community": 555, "norm_label": "__init__.py" }, { @@ -19629,7 +19890,7 @@ "source_file": "tests/unit/utils/test_state.py", "source_location": "L1", "id": "tests_unit_utils_test_state_py", - "community": 22, + "community": 24, "norm_label": "test_state.py" }, { @@ -19638,7 +19899,7 @@ "source_file": "tests/unit/utils/test_state.py", "source_location": "L12", "id": "utils_test_state_state", - "community": 22, + "community": 24, "norm_label": "_state" }, { @@ -19647,7 +19908,7 @@ "source_file": "", "source_location": "", "id": "strenum", - "community": 19, + "community": 29, "norm_label": "strenum" }, { @@ -19656,7 +19917,7 @@ "source_file": "tests/unit/utils/test_state.py", "source_location": "L25", "id": "utils_test_state_test_allowed_transition_returns_none", - "community": 22, + "community": 24, "norm_label": "test_allowed_transition_returns_none()" }, { @@ -19665,7 +19926,7 @@ "source_file": "tests/unit/utils/test_state.py", "source_location": "L29", "id": "utils_test_state_test_disallowed_transition_raises", - "community": 22, + "community": 24, "norm_label": "test_disallowed_transition_raises()" }, { @@ -19674,7 +19935,7 @@ "source_file": "tests/unit/utils/test_state.py", "source_location": "L34", "id": "utils_test_state_test_terminal_transition_raises", - "community": 22, + "community": 24, "norm_label": "test_terminal_transition_raises()" }, { @@ -19683,7 +19944,7 @@ "source_file": "tests/unit/utils/test_state.py", "source_location": "L39", "id": "utils_test_state_test_unknown_source_raises", - "community": 22, + "community": 24, "norm_label": "test_unknown_source_raises()" }, { @@ -19692,7 +19953,7 @@ "source_file": "tests/unit/utils/test_state.py", "source_location": "L1", "id": "utils_test_state_rationale_1", - "community": 22, + "community": 24, "norm_label": "tests for ``exlab_wizard.utils.state``." }, { @@ -19701,7 +19962,7 @@ "source_file": "tests/unit/tray/test_storage_secret.py", "source_location": "L1", "id": "tests_unit_tray_test_storage_secret_py", - "community": 260, + "community": 263, "norm_label": "test_storage_secret.py" }, { @@ -19710,7 +19971,7 @@ "source_file": "tests/unit/tray/test_storage_secret.py", "source_location": "L23", "id": "tray_test_storage_secret_test_generates_secret_on_first_call", - "community": 260, + "community": 263, "norm_label": "test_generates_secret_on_first_call()" }, { @@ -19719,7 +19980,7 @@ "source_file": "tests/unit/tray/test_storage_secret.py", "source_location": "L31", "id": "tray_test_storage_secret_test_idempotent_across_calls", - "community": 260, + "community": 263, "norm_label": "test_idempotent_across_calls()" }, { @@ -19728,7 +19989,7 @@ "source_file": "tests/unit/tray/test_storage_secret.py", "source_location": "L38", "id": "tray_test_storage_secret_test_secret_file_mode_is_0600", - "community": 260, + "community": 263, "norm_label": "test_secret_file_mode_is_0600()" }, { @@ -19737,7 +19998,7 @@ "source_file": "tests/unit/tray/test_storage_secret.py", "source_location": "L45", "id": "tray_test_storage_secret_test_regenerates_on_empty_file", - "community": 260, + "community": 263, "norm_label": "test_regenerates_on_empty_file()" }, { @@ -19746,7 +20007,7 @@ "source_file": "tests/unit/tray/test_storage_secret.py", "source_location": "L53", "id": "tray_test_storage_secret_test_regenerates_on_whitespace_only_file", - "community": 260, + "community": 263, "norm_label": "test_regenerates_on_whitespace_only_file()" }, { @@ -19755,7 +20016,7 @@ "source_file": "tests/unit/tray/test_storage_secret.py", "source_location": "L61", "id": "tray_test_storage_secret_test_creates_state_dir_if_missing", - "community": 260, + "community": 263, "norm_label": "test_creates_state_dir_if_missing()" }, { @@ -19764,7 +20025,7 @@ "source_file": "tests/unit/tray/test_storage_secret.py", "source_location": "L1", "id": "tray_test_storage_secret_rationale_1", - "community": 260, + "community": 263, "norm_label": "tests for ``exlab_wizard.tray.storage_secret``. the secret backs nicegui's star" }, { @@ -19773,7 +20034,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L1", "id": "tests_unit_tray_test_dependencies_py", - "community": 48, + "community": 43, "norm_label": "test_dependencies.py" }, { @@ -19782,7 +20043,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L39", "id": "tray_test_dependencies_inmemorykeyring", - "community": 48, + "community": 43, "norm_label": "_inmemorykeyring" }, { @@ -19791,7 +20052,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L44", "id": "tray_test_dependencies_inmemorykeyring_init", - "community": 48, + "community": 43, "norm_label": ".__init__()" }, { @@ -19800,7 +20061,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L47", "id": "tray_test_dependencies_inmemorykeyring_get_password", - "community": 48, + "community": 43, "norm_label": ".get_password()" }, { @@ -19809,7 +20070,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L50", "id": "tray_test_dependencies_inmemorykeyring_set_password", - "community": 48, + "community": 43, "norm_label": ".set_password()" }, { @@ -19818,7 +20079,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L53", "id": "tray_test_dependencies_inmemorykeyring_delete_password", - "community": 48, + "community": 43, "norm_label": ".delete_password()" }, { @@ -19827,7 +20088,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L58", "id": "tray_test_dependencies_swap_keyring", - "community": 48, + "community": 43, "norm_label": "_swap_keyring()" }, { @@ -19836,7 +20097,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L67", "id": "tray_test_dependencies_test_build_production_dependencies_exposes_keyring_store", - "community": 14, + "community": 22, "norm_label": "test_build_production_dependencies_exposes_keyring_store()" }, { @@ -19854,7 +20115,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L108", "id": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored", - "community": 48, + "community": 43, "norm_label": "test_check_keyring_present_true_when_lims_password_stored()" }, { @@ -19863,7 +20124,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L125", "id": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username", - "community": 48, + "community": 43, "norm_label": "test_lims_client_password_provider_reads_keyring_under_lims_username()" }, { @@ -19872,7 +20133,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L147", "id": "tray_test_dependencies_nas_config_with_two_equipment", - "community": 48, + "community": 43, "norm_label": "_nas_config_with_two_equipment()" }, { @@ -19881,7 +20142,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L170", "id": "tray_test_dependencies_nas_config_with_remote", - "community": 48, + "community": 43, "norm_label": "_nas_config_with_remote()" }, { @@ -19908,7 +20169,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L185", "id": "tray_test_dependencies_test_make_equipment_probe_targets_nas_remote_not_keyring", - "community": 48, + "community": 43, "norm_label": "test_make_equipment_probe_targets_nas_remote_not_keyring()" }, { @@ -19917,7 +20178,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L217", "id": "tray_test_dependencies_test_make_equipment_probe_short_circuits_without_remote", - "community": 48, + "community": 43, "norm_label": "test_make_equipment_probe_short_circuits_without_remote()" }, { @@ -19926,7 +20187,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L231", "id": "tray_test_dependencies_test_make_equipment_probe_surfaces_about_failure", - "community": 48, + "community": 43, "norm_label": "test_make_equipment_probe_surfaces_about_failure()" }, { @@ -19935,7 +20196,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L258", "id": "tray_test_dependencies_test_nas_remote_available_reflects_listremotes", - "community": 48, + "community": 43, "norm_label": "test_nas_remote_available_reflects_listremotes()" }, { @@ -19944,7 +20205,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L1", "id": "tray_test_dependencies_rationale_1", - "community": 48, + "community": 43, "norm_label": "tests for the production dependency factory's keyring wiring. ``build_productio" }, { @@ -19953,7 +20214,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L40", "id": "tray_test_dependencies_rationale_40", - "community": 48, + "community": 43, "norm_label": "trivial in-memory keyring backend, mirroring the keyring-store tests." }, { @@ -19962,7 +20223,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L68", "id": "tray_test_dependencies_rationale_68", - "community": 14, + "community": 22, "norm_label": "the settings gui persists the lims password through deps.keyring_store." }, { @@ -19980,7 +20241,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L109", "id": "tray_test_dependencies_rationale_109", - "community": 48, + "community": 43, "norm_label": "the probe must look up the password under keyring_username_lims. regression" }, { @@ -19989,7 +20250,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L128", "id": "tray_test_dependencies_rationale_128", - "community": 48, + "community": 43, "norm_label": "the lims client's keyring provider resolves the stored password." }, { @@ -19998,7 +20259,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L148", "id": "tray_test_dependencies_rationale_148", - "community": 48, + "community": 43, "norm_label": "build a two-equipment nas-mode config for the nas-presence tests." }, { @@ -20007,7 +20268,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L171", "id": "tray_test_dependencies_rationale_171", - "community": 48, + "community": 43, "norm_label": "``_nas_config_with_two_equipment`` plus a configured ``nas:`` block." }, { @@ -20016,7 +20277,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L188", "id": "tray_test_dependencies_rationale_188", - "community": 48, + "community": 43, "norm_label": "the probe must call ``rclone about :`` and ignore the keyring." }, { @@ -20025,7 +20286,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L218", "id": "tray_test_dependencies_rationale_218", - "community": 48, + "community": 43, "norm_label": "no configured ``nas.remote`` must not spawn rclone." }, { @@ -20034,7 +20295,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L234", "id": "tray_test_dependencies_rationale_234", - "community": 48, + "community": 43, "norm_label": "a failing ``rclone about`` surfaces as ``ok=false`` with the reason." }, { @@ -20043,7 +20304,7 @@ "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L261", "id": "tray_test_dependencies_rationale_261", - "community": 48, + "community": 43, "norm_label": "boot-time hydration drives ``deps.nas_remote_available`` from listremotes." }, { @@ -20052,7 +20313,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L1", "id": "tests_unit_tray_test_icon_py", - "community": 99, + "community": 103, "norm_label": "test_icon.py" }, { @@ -20061,7 +20322,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L18", "id": "tray_test_icon_fakemenu", - "community": 99, + "community": 103, "norm_label": "_fakemenu" }, { @@ -20070,7 +20331,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L21", "id": "tray_test_icon_fakemenu_init", - "community": 99, + "community": 103, "norm_label": ".__init__()" }, { @@ -20079,7 +20340,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L25", "id": "tray_test_icon_fakemenuitem", - "community": 99, + "community": 103, "norm_label": "_fakemenuitem" }, { @@ -20088,7 +20349,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L26", "id": "tray_test_icon_fakemenuitem_init", - "community": 99, + "community": 103, "norm_label": ".__init__()" }, { @@ -20097,7 +20358,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L40", "id": "tray_test_icon_fakeicon", - "community": 99, + "community": 103, "norm_label": "_fakeicon" }, { @@ -20106,7 +20367,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L41", "id": "tray_test_icon_fakeicon_init", - "community": 99, + "community": 103, "norm_label": ".__init__()" }, { @@ -20115,7 +20376,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L48", "id": "tray_test_icon_fakepystray", - "community": 99, + "community": 103, "norm_label": "_fakepystray" }, { @@ -20124,7 +20385,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L54", "id": "tray_test_icon_test_build_icon_returns_icon_object", - "community": 99, + "community": 103, "norm_label": "test_build_icon_returns_icon_object()" }, { @@ -20133,7 +20394,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L71", "id": "tray_test_icon_test_open_menu_item_invokes_callback", - "community": 99, + "community": 103, "norm_label": "test_open_menu_item_invokes_callback()" }, { @@ -20142,7 +20403,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L85", "id": "tray_test_icon_test_quit_menu_item_invokes_callback", - "community": 99, + "community": 103, "norm_label": "test_quit_menu_item_invokes_callback()" }, { @@ -20151,7 +20412,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L99", "id": "tray_test_icon_test_status_label_callable", - "community": 99, + "community": 103, "norm_label": "test_status_label_callable()" }, { @@ -20160,7 +20421,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L112", "id": "tray_test_icon_test_callback_exception_is_swallowed", - "community": 99, + "community": 103, "norm_label": "test_callback_exception_is_swallowed()" }, { @@ -20169,7 +20430,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L127", "id": "tray_test_icon_test_default_icon_image_returns_pillow_image", - "community": 99, + "community": 103, "norm_label": "test_default_icon_image_returns_pillow_image()" }, { @@ -20178,7 +20439,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L133", "id": "tray_test_icon_test_lazy_pystray_import", - "community": 99, + "community": 103, "norm_label": "test_lazy_pystray_import()" }, { @@ -20187,7 +20448,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L148", "id": "tray_test_icon_test_separator_present", - "community": 99, + "community": 103, "norm_label": "test_separator_present()" }, { @@ -20196,7 +20457,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L158", "id": "tray_test_icon_test_import_pystray_returns_module", - "community": 99, + "community": 103, "norm_label": "test_import_pystray_returns_module()" }, { @@ -20205,7 +20466,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L1", "id": "tray_test_icon_rationale_1", - "community": 99, + "community": 103, "norm_label": "tests for :mod:`exlab_wizard.tray.icon`. backend spec \u00a74.3.2." }, { @@ -20214,7 +20475,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L134", "id": "tray_test_icon_rationale_134", - "community": 99, + "community": 103, "norm_label": "when ``pystray_module`` is omitted the lazy import path is taken." }, { @@ -20223,7 +20484,7 @@ "source_file": "tests/unit/tray/test_icon.py", "source_location": "L159", "id": "tray_test_icon_rationale_159", - "community": 99, + "community": 103, "norm_label": "the lazy-import helper imports pystray when called." }, { @@ -20232,7 +20493,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L1", "id": "tests_unit_tray_test_live_reload_py", - "community": 97, + "community": 101, "norm_label": "test_live_reload.py" }, { @@ -20241,7 +20502,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L38", "id": "tray_test_live_reload_stub_configure_logging", - "community": 97, + "community": 101, "norm_label": "_stub_configure_logging()" }, { @@ -20250,7 +20511,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L52", "id": "tray_test_live_reload_equipment", - "community": 97, + "community": 101, "norm_label": "_equipment()" }, { @@ -20259,7 +20520,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L61", "id": "tray_test_live_reload_config", - "community": 97, + "community": 101, "norm_label": "_config()" }, { @@ -20268,7 +20529,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L77", "id": "tray_test_live_reload_recordingcomponent", - "community": 134, + "community": 0, "norm_label": "_recordingcomponent" }, { @@ -20277,7 +20538,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L80", "id": "tray_test_live_reload_recordingcomponent_init", - "community": 134, + "community": 0, "norm_label": ".__init__()" }, { @@ -20286,7 +20547,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L84", "id": "tray_test_live_reload_recordingcomponent_apply_config", - "community": 134, + "community": 0, "norm_label": ".apply_config()" }, { @@ -20322,7 +20583,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L97", "id": "tray_test_live_reload_asyncstub", - "community": 134, + "community": 0, "norm_label": "_asyncstub" }, { @@ -20331,7 +20592,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L100", "id": "tray_test_live_reload_asyncstub_init", - "community": 134, + "community": 0, "norm_label": ".__init__()" }, { @@ -20340,7 +20601,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L107", "id": "tray_test_live_reload_asyncstub_start", - "community": 134, + "community": 0, "norm_label": ".start()" }, { @@ -20349,7 +20610,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L111", "id": "tray_test_live_reload_running_deps", - "community": 97, + "community": 101, "norm_label": "_running_deps()" }, { @@ -20358,7 +20619,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L127", "id": "tray_test_live_reload_test_reconfigures_existing_components_in_place", - "community": 97, + "community": 101, "norm_label": "test_reconfigures_existing_components_in_place()" }, { @@ -20367,7 +20628,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L141", "id": "tray_test_live_reload_test_skips_logging_reconfigure_when_unchanged", - "community": 97, + "community": 101, "norm_label": "test_skips_logging_reconfigure_when_unchanged()" }, { @@ -20376,7 +20637,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L147", "id": "tray_test_live_reload_test_component_failure_is_isolated", - "community": 97, + "community": 101, "norm_label": "test_component_failure_is_isolated()" }, { @@ -20385,7 +20646,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L173", "id": "tray_test_live_reload_test_rebuilds_lims_only_on_endpoint_change", - "community": 97, + "community": 101, "norm_label": "test_rebuilds_lims_only_on_endpoint_change()" }, { @@ -20394,7 +20655,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L192", "id": "tray_test_live_reload_test_rebuilds_plugin_host_only_on_dir_change", - "community": 97, + "community": 101, "norm_label": "test_rebuilds_plugin_host_only_on_dir_change()" }, { @@ -20403,7 +20664,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L217", "id": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install", - "community": 97, + "community": 101, "norm_label": "test_builds_and_starts_components_on_fresh_install()" }, { @@ -20412,7 +20673,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L1", "id": "tray_test_live_reload_rationale_1", - "community": 97, + "community": 101, "norm_label": "tests for the live config-reload coordinator (no tray relaunch). ``exlab_wizard" }, { @@ -20421,7 +20682,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L39", "id": "tray_test_live_reload_rationale_39", - "community": 97, + "community": 101, "norm_label": "stub the real logging reconfigure so tests don't churn global handlers. ret" }, { @@ -20430,7 +20691,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L78", "id": "tray_test_live_reload_rationale_78", - "community": 134, + "community": 0, "norm_label": "stub controller / nas_sync / poller recording ``apply_config`` calls." }, { @@ -20439,7 +20700,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L98", "id": "tray_test_live_reload_rationale_98", - "community": 134, + "community": 0, "norm_label": "fresh-built nas_sync / poller stub with async init / start." }, { @@ -20448,7 +20709,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L112", "id": "tray_test_live_reload_rationale_112", - "community": 97, + "community": 101, "norm_label": "build a deps bundle whose config-dependent components already exist." }, { @@ -20457,7 +20718,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L148", "id": "tray_test_live_reload_rationale_148", - "community": 97, + "community": 101, "norm_label": "one component raising must not abort the rest, and config still lands." }, { @@ -20466,7 +20727,7 @@ "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L220", "id": "tray_test_live_reload_rationale_220", - "community": 97, + "community": 101, "norm_label": "on a first save the absent components are built and their async bring-up is" }, { @@ -20475,7 +20736,7 @@ "source_file": "tests/unit/tray/__init__.py", "source_location": "L1", "id": "tests_unit_tray_init_py", - "community": 442, + "community": 478, "norm_label": "__init__.py" }, { @@ -20484,7 +20745,7 @@ "source_file": "src/exlab_wizard/tray/__init__.py", "source_location": "L1", "id": "tray_init_rationale_1", - "community": 442, + "community": 478, "norm_label": "tray application package. backend spec \u00a74.3.2. public api: * :class:`autostart" }, { @@ -20493,7 +20754,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L1", "id": "tests_unit_tray_test_status_py", - "community": 40, + "community": 47, "norm_label": "test_status.py" }, { @@ -20502,7 +20763,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L17", "id": "tray_test_status_stubstore", - "community": 40, + "community": 47, "norm_label": "_stubstore" }, { @@ -20511,7 +20772,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L18", "id": "tray_test_status_stubstore_init", - "community": 40, + "community": 47, "norm_label": ".__init__()" }, { @@ -20520,7 +20781,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L23", "id": "tray_test_status_stubsync", - "community": 40, + "community": 47, "norm_label": "_stubsync" }, { @@ -20529,7 +20790,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L24", "id": "tray_test_status_stubsync_init", - "community": 40, + "community": 47, "norm_label": ".__init__()" }, { @@ -20538,7 +20799,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L28", "id": "tray_test_status_test_format_status_idle", - "community": 40, + "community": 47, "norm_label": "test_format_status_idle()" }, { @@ -20547,7 +20808,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L33", "id": "tray_test_status_test_format_status_sync_jobs", - "community": 40, + "community": 47, "norm_label": "test_format_status_sync_jobs()" }, { @@ -20556,7 +20817,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L38", "id": "tray_test_status_test_format_status_single_job_uses_singular", - "community": 40, + "community": 47, "norm_label": "test_format_status_single_job_uses_singular()" }, { @@ -20565,7 +20826,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L43", "id": "tray_test_status_test_format_status_input_required_singular", - "community": 40, + "community": 47, "norm_label": "test_format_status_input_required_singular()" }, { @@ -20574,7 +20835,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L48", "id": "tray_test_status_test_format_status_input_required_plural", - "community": 40, + "community": 47, "norm_label": "test_format_status_input_required_plural()" }, { @@ -20583,7 +20844,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L53", "id": "tray_test_status_test_format_status_combines_sync_and_input_required", - "community": 40, + "community": 47, "norm_label": "test_format_status_combines_sync_and_input_required()" }, { @@ -20592,7 +20853,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L58", "id": "tray_test_status_test_snapshot_status_with_none_components", - "community": 40, + "community": 47, "norm_label": "test_snapshot_status_with_none_components()" }, { @@ -20601,7 +20862,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L65", "id": "tray_test_status_test_snapshot_status_reads_components", - "community": 40, + "community": 47, "norm_label": "test_snapshot_status_reads_components()" }, { @@ -20610,7 +20871,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L75", "id": "tray_test_status_test_snapshot_status_callable_attributes", - "community": 40, + "community": 47, "norm_label": "test_snapshot_status_callable_attributes()" }, { @@ -20619,7 +20880,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L84", "id": "tray_test_status_test_ticker_invokes_callback_on_first_tick", - "community": 40, + "community": 47, "norm_label": "test_ticker_invokes_callback_on_first_tick()" }, { @@ -20628,7 +20889,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L97", "id": "tray_test_status_test_ticker_does_not_invoke_callback_when_label_unchanged", - "community": 40, + "community": 47, "norm_label": "test_ticker_does_not_invoke_callback_when_label_unchanged()" }, { @@ -20637,7 +20898,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L109", "id": "tray_test_status_test_ticker_start_and_stop_idempotent", - "community": 40, + "community": 47, "norm_label": "test_ticker_start_and_stop_idempotent()" }, { @@ -20646,7 +20907,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L117", "id": "tray_test_status_test_ticker_callback_exception_is_swallowed", - "community": 40, + "community": 47, "norm_label": "test_ticker_callback_exception_is_swallowed()" }, { @@ -20655,7 +20916,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L127", "id": "tray_test_status_test_ticker_thread_runs", - "community": 40, + "community": 47, "norm_label": "test_ticker_thread_runs()" }, { @@ -20664,7 +20925,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L149", "id": "tray_test_status_test_default_refresh_matches_spec", - "community": 40, + "community": 47, "norm_label": "test_default_refresh_matches_spec()" }, { @@ -20673,7 +20934,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L154", "id": "tray_test_status_test_safe_int_handles_callable_that_raises", - "community": 40, + "community": 47, "norm_label": "test_safe_int_handles_callable_that_raises()" }, { @@ -20682,7 +20943,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L164", "id": "tray_test_status_test_safe_int_handles_non_numeric", - "community": 40, + "community": 47, "norm_label": "test_safe_int_handles_non_numeric()" }, { @@ -20691,7 +20952,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L1", "id": "tray_test_status_rationale_1", - "community": 40, + "community": 47, "norm_label": "tests for :mod:`exlab_wizard.tray.status`. backend spec \u00a74.3.2." }, { @@ -20700,7 +20961,7 @@ "source_file": "tests/unit/tray/test_status.py", "source_location": "L128", "id": "tray_test_status_rationale_128", - "community": 40, + "community": 47, "norm_label": "drive the ticker thread for a short window and confirm callback fires." }, { @@ -20709,7 +20970,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L1", "id": "tests_unit_tray_test_server_runner_py", - "community": 206, + "community": 27, "norm_label": "test_server_runner.py" }, { @@ -20718,7 +20979,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L21", "id": "tray_test_server_runner_fakeuvicornserver", - "community": 206, + "community": 27, "norm_label": "_fakeuvicornserver" }, { @@ -20727,7 +20988,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L24", "id": "tray_test_server_runner_fakeuvicornserver_init", - "community": 206, + "community": 27, "norm_label": ".__init__()" }, { @@ -20736,7 +20997,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L30", "id": "tray_test_server_runner_fakeuvicornserver_run", - "community": 206, + "community": 27, "norm_label": ".run()" }, { @@ -20745,7 +21006,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L44", "id": "tray_test_server_runner_make_runner", - "community": 206, + "community": 27, "norm_label": "_make_runner()" }, { @@ -20754,7 +21015,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L60", "id": "tray_test_server_runner_test_pick_free_port_returns_bindable_port", - "community": 74, + "community": 27, "norm_label": "test_pick_free_port_returns_bindable_port()" }, { @@ -20763,7 +21024,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L72", "id": "tray_test_server_runner_test_start_writes_server_json_atomically", - "community": 206, + "community": 27, "norm_label": "test_start_writes_server_json_atomically()" }, { @@ -20772,7 +21033,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L89", "id": "tray_test_server_runner_test_stop_deletes_state_file", - "community": 206, + "community": 27, "norm_label": "test_stop_deletes_state_file()" }, { @@ -20781,7 +21042,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L98", "id": "tray_test_server_runner_test_double_start_raises", - "community": 206, + "community": 27, "norm_label": "test_double_start_raises()" }, { @@ -20790,7 +21051,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L108", "id": "tray_test_server_runner_test_port_property_before_start_raises", - "community": 206, + "community": 27, "norm_label": "test_port_property_before_start_raises()" }, { @@ -20799,7 +21060,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L114", "id": "tray_test_server_runner_test_port_property_after_start", - "community": 206, + "community": 27, "norm_label": "test_port_property_after_start()" }, { @@ -20808,7 +21069,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L123", "id": "tray_test_server_runner_test_state_file_property_returns_expected_path", - "community": 206, + "community": 27, "norm_label": "test_state_file_property_returns_expected_path()" }, { @@ -20817,7 +21078,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L128", "id": "tray_test_server_runner_test_stop_is_idempotent", - "community": 206, + "community": 27, "norm_label": "test_stop_is_idempotent()" }, { @@ -20826,7 +21087,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L135", "id": "tray_test_server_runner_test_start_creates_state_dir_if_missing", - "community": 206, + "community": 27, "norm_label": "test_start_creates_state_dir_if_missing()" }, { @@ -20835,7 +21096,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L145", "id": "tray_test_server_runner_test_is_running_tracks_thread_lifecycle", - "community": 206, + "community": 27, "norm_label": "test_is_running_tracks_thread_lifecycle()" }, { @@ -20844,7 +21105,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L157", "id": "tray_test_server_runner_test_real_uvicorn_resolves_lazily", - "community": 74, + "community": 27, "norm_label": "test_real_uvicorn_resolves_lazily()" }, { @@ -20853,7 +21114,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L170", "id": "tray_test_server_runner_test_delete_state_file_handles_missing", - "community": 74, + "community": 27, "norm_label": "test_delete_state_file_handles_missing()" }, { @@ -20862,7 +21123,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L176", "id": "tray_test_server_runner_test_stop_handles_attribute_error_on_should_exit", - "community": 206, + "community": 27, "norm_label": "test_stop_handles_attribute_error_on_should_exit()" }, { @@ -20871,7 +21132,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L1", "id": "tray_test_server_runner_rationale_1", - "community": 206, + "community": 27, "norm_label": "tests for :mod:`exlab_wizard.tray.server_runner`. backend spec \u00a74.3.2." }, { @@ -20880,7 +21141,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L22", "id": "tray_test_server_runner_rationale_22", - "community": 206, + "community": 27, "norm_label": "fake :class:`uvicorn.server` that runs a tiny event loop." }, { @@ -20889,7 +21150,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L158", "id": "tray_test_server_runner_rationale_158", - "community": 74, + "community": 27, "norm_label": "the real ``_build_uvicorn`` defers the uvicorn import. we can call ``_build" }, { @@ -20898,7 +21159,7 @@ "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L177", "id": "tray_test_server_runner_rationale_177", - "community": 206, + "community": 27, "norm_label": "a custom server object missing ``should_exit`` is tolerated." }, { @@ -20907,7 +21168,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L1", "id": "tests_unit_tray_test_notifications_py", - "community": 36, + "community": 44, "norm_label": "test_notifications.py" }, { @@ -20916,7 +21177,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L19", "id": "tray_test_notifications_test_notify_calls_injected_callable", - "community": 36, + "community": 44, "norm_label": "test_notify_calls_injected_callable()" }, { @@ -20925,7 +21186,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L29", "id": "tray_test_notifications_test_notify_swallows_notifier_exceptions", - "community": 36, + "community": 44, "norm_label": "test_notify_swallows_notifier_exceptions()" }, { @@ -20934,7 +21195,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L37", "id": "tray_test_notifications_test_bus_emits_after_coalescing_window", - "community": 36, + "community": 44, "norm_label": "test_bus_emits_after_coalescing_window()" }, { @@ -20943,7 +21204,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L63", "id": "tray_test_notifications_test_bus_suppresses_when_window_foregrounded", - "community": 36, + "community": 44, "norm_label": "test_bus_suppresses_when_window_foregrounded()" }, { @@ -20952,7 +21213,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L74", "id": "tray_test_notifications_test_bus_separate_kinds_separate_buckets", - "community": 36, + "community": 44, "norm_label": "test_bus_separate_kinds_separate_buckets()" }, { @@ -20961,7 +21222,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L89", "id": "tray_test_notifications_test_bus_cancel_all_drops_pending", - "community": 36, + "community": 44, "norm_label": "test_bus_cancel_all_drops_pending()" }, { @@ -20970,7 +21231,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L102", "id": "tray_test_notifications_test_bus_emits_singleton_message_unchanged", - "community": 36, + "community": 44, "norm_label": "test_bus_emits_singleton_message_unchanged()" }, { @@ -20979,7 +21240,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L114", "id": "tray_test_notifications_test_coalescing_window_constant_matches_spec", - "community": 36, + "community": 44, "norm_label": "test_coalescing_window_constant_matches_spec()" }, { @@ -20988,7 +21249,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L118", "id": "tray_test_notifications_test_coalesced_message_plugin_input_required_plural", - "community": 36, + "community": 44, "norm_label": "test_coalesced_message_plugin_input_required_plural()" }, { @@ -20997,7 +21258,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L122", "id": "tray_test_notifications_test_coalesced_message_plugin_input_required_singular", - "community": 36, + "community": 44, "norm_label": "test_coalesced_message_plugin_input_required_singular()" }, { @@ -21006,7 +21267,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L126", "id": "tray_test_notifications_test_coalesced_message_sync_failed_plural", - "community": 36, + "community": 44, "norm_label": "test_coalesced_message_sync_failed_plural()" }, { @@ -21015,7 +21276,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L130", "id": "tray_test_notifications_test_coalesced_message_sync_failed_singular", - "community": 36, + "community": 44, "norm_label": "test_coalesced_message_sync_failed_singular()" }, { @@ -21024,7 +21285,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L134", "id": "tray_test_notifications_test_coalesced_message_unknown_kind", - "community": 36, + "community": 44, "norm_label": "test_coalesced_message_unknown_kind()" }, { @@ -21033,7 +21294,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L138", "id": "tray_test_notifications_test_bus_timer_fires_after_window", - "community": 36, + "community": 44, "norm_label": "test_bus_timer_fires_after_window()" }, { @@ -21042,7 +21303,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L153", "id": "tray_test_notifications_test_default_notifier_returns_callable", - "community": 36, + "community": 44, "norm_label": "test_default_notifier_returns_callable()" }, { @@ -21051,7 +21312,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L161", "id": "tray_test_notifications_test_noop_notifier_swallows_arbitrary_kwargs", - "community": 36, + "community": 44, "norm_label": "test_noop_notifier_swallows_arbitrary_kwargs()" }, { @@ -21060,7 +21321,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L168", "id": "tray_test_notifications_test_notify_uses_default_notifier_when_none", - "community": 36, + "community": 44, "norm_label": "test_notify_uses_default_notifier_when_none()" }, { @@ -21069,7 +21330,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L180", "id": "tray_test_notifications_test_flush_with_already_drained_bucket", - "community": 36, + "community": 44, "norm_label": "test_flush_with_already_drained_bucket()" }, { @@ -21078,7 +21339,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L1", "id": "tray_test_notifications_rationale_1", - "community": 36, + "community": 44, "norm_label": "tests for :mod:`exlab_wizard.tray.notifications`. backend spec \u00a715.7.3." }, { @@ -21087,7 +21348,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L139", "id": "tray_test_notifications_rationale_139", - "community": 36, + "community": 44, "norm_label": "drive the real timer with a tiny window." }, { @@ -21096,7 +21357,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L154", "id": "tray_test_notifications_rationale_154", - "community": 36, + "community": 44, "norm_label": "the default notifier resolves either to plyer or to the noop fallback." }, { @@ -21105,7 +21366,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L162", "id": "tray_test_notifications_rationale_162", - "community": 36, + "community": 44, "norm_label": "fallback notifier is keyword-tolerant." }, { @@ -21114,7 +21375,7 @@ "source_file": "tests/unit/tray/test_notifications.py", "source_location": "L181", "id": "tray_test_notifications_rationale_181", - "community": 36, + "community": 44, "norm_label": "``_flush`` is safe when the bucket has already been popped (race)." }, { @@ -21123,7 +21384,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L1", "id": "tests_unit_tray_test_quit_coordinator_py", - "community": 47, + "community": 58, "norm_label": "test_quit_coordinator.py" }, { @@ -21132,7 +21393,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L17", "id": "tray_test_quit_coordinator_stubserver", - "community": 47, + "community": 58, "norm_label": "_stubserver" }, { @@ -21141,7 +21402,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L18", "id": "tray_test_quit_coordinator_stubserver_init", - "community": 47, + "community": 58, "norm_label": ".__init__()" }, { @@ -21150,7 +21411,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L21", "id": "tray_test_quit_coordinator_stubserver_stop", - "community": 47, + "community": 58, "norm_label": ".stop()" }, { @@ -21159,7 +21420,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L25", "id": "tray_test_quit_coordinator_stubwindow", - "community": 47, + "community": 58, "norm_label": "_stubwindow" }, { @@ -21168,7 +21429,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L26", "id": "tray_test_quit_coordinator_stubwindow_init", - "community": 47, + "community": 58, "norm_label": ".__init__()" }, { @@ -21177,7 +21438,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L29", "id": "tray_test_quit_coordinator_stubwindow_close", - "community": 47, + "community": 58, "norm_label": ".close()" }, { @@ -21186,7 +21447,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L33", "id": "tray_test_quit_coordinator_counted", - "community": 47, + "community": 58, "norm_label": "_counted" }, { @@ -21195,7 +21456,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L34", "id": "tray_test_quit_coordinator_counted_init", - "community": 47, + "community": 58, "norm_label": ".__init__()" }, { @@ -21204,7 +21465,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L38", "id": "tray_test_quit_coordinator_make_coordinator", - "community": 47, + "community": 58, "norm_label": "_make_coordinator()" }, { @@ -21213,7 +21474,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L64", "id": "tray_test_quit_coordinator_test_idle_predicate_short_circuits", - "community": 47, + "community": 58, "norm_label": "test_idle_predicate_short_circuits()" }, { @@ -21222,7 +21483,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L72", "id": "tray_test_quit_coordinator_test_busy_predicate_times_out_and_force_quits", - "community": 47, + "community": 58, "norm_label": "test_busy_predicate_times_out_and_force_quits()" }, { @@ -21231,7 +21492,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L91", "id": "tray_test_quit_coordinator_test_busy_predicate_wait_resets_timer", - "community": 47, + "community": 58, "norm_label": "test_busy_predicate_wait_resets_timer()" }, { @@ -21240,7 +21501,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L111", "id": "tray_test_quit_coordinator_test_sigterm_uses_short_timeout", - "community": 47, + "community": 58, "norm_label": "test_sigterm_uses_short_timeout()" }, { @@ -21249,7 +21510,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L137", "id": "tray_test_quit_coordinator_test_quit_handles_missing_window_launcher", - "community": 47, + "community": 58, "norm_label": "test_quit_handles_missing_window_launcher()" }, { @@ -21258,7 +21519,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L152", "id": "tray_test_quit_coordinator_test_safe_count_handles_callable_attribute", - "community": 47, + "community": 58, "norm_label": "test_safe_count_handles_callable_attribute()" }, { @@ -21267,7 +21528,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L158", "id": "tray_test_quit_coordinator_test_safe_count_handles_callable_that_raises", - "community": 47, + "community": 58, "norm_label": "test_safe_count_handles_callable_that_raises()" }, { @@ -21276,7 +21537,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L168", "id": "tray_test_quit_coordinator_test_safe_count_handles_none_obj", - "community": 47, + "community": 58, "norm_label": "test_safe_count_handles_none_obj()" }, { @@ -21285,7 +21546,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L172", "id": "tray_test_quit_coordinator_test_safe_count_handles_non_numeric", - "community": 47, + "community": 58, "norm_label": "test_safe_count_handles_non_numeric()" }, { @@ -21294,7 +21555,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L179", "id": "tray_test_quit_coordinator_test_force_quit_prompt_exception_defaults_to_force", - "community": 47, + "community": 58, "norm_label": "test_force_quit_prompt_exception_defaults_to_force()" }, { @@ -21303,7 +21564,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L192", "id": "tray_test_quit_coordinator_test_default_timeout_constants_match_spec", - "community": 47, + "community": 58, "norm_label": "test_default_timeout_constants_match_spec()" }, { @@ -21312,7 +21573,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L199", "id": "tray_test_quit_coordinator_test_idle_predicate_returns_true_immediately", - "community": 47, + "community": 58, "norm_label": "test_idle_predicate_returns_true_immediately()" }, { @@ -21321,7 +21582,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L208", "id": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true", - "community": 47, + "community": 58, "norm_label": "test_predicate_eventually_becomes_true()" }, { @@ -21330,7 +21591,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L1", "id": "tray_test_quit_coordinator_rationale_1", - "community": 47, + "community": 58, "norm_label": "tests for :mod:`exlab_wizard.tray.quit_coordinator`. backend spec \u00a74.3.2." }, { @@ -21339,7 +21600,7 @@ "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L209", "id": "tray_test_quit_coordinator_rationale_209", - "community": 47, + "community": 58, "norm_label": "wait loop returns true when the predicate flips mid-wait." }, { @@ -21348,7 +21609,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L1", "id": "tests_unit_tray_test_window_launcher_py", - "community": 86, + "community": 88, "norm_label": "test_window_launcher.py" }, { @@ -21357,7 +21618,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L18", "id": "tray_test_window_launcher_python_window_argv", - "community": 86, + "community": 88, "norm_label": "_python_window_argv()" }, { @@ -21366,7 +21627,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L29", "id": "tray_test_window_launcher_test_open_spawns_subprocess", - "community": 86, + "community": 88, "norm_label": "test_open_spawns_subprocess()" }, { @@ -21375,7 +21636,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L42", "id": "tray_test_window_launcher_test_close_terminates_subprocess", - "community": 86, + "community": 88, "norm_label": "test_close_terminates_subprocess()" }, { @@ -21384,7 +21645,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L53", "id": "tray_test_window_launcher_test_close_is_idempotent", - "community": 86, + "community": 88, "norm_label": "test_close_is_idempotent()" }, { @@ -21393,7 +21654,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L60", "id": "tray_test_window_launcher_test_open_focuses_existing", - "community": 86, + "community": 88, "norm_label": "test_open_focuses_existing()" }, { @@ -21402,7 +21663,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L71", "id": "tray_test_window_launcher_test_resolve_window_executable_prefers_env_var", - "community": 86, + "community": 88, "norm_label": "test_resolve_window_executable_prefers_env_var()" }, { @@ -21411,7 +21672,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L76", "id": "tray_test_window_launcher_test_resolve_window_executable_uses_path", - "community": 86, + "community": 88, "norm_label": "test_resolve_window_executable_uses_path()" }, { @@ -21420,7 +21681,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L85", "id": "tray_test_window_launcher_test_resolve_window_executable_falls_back_to_module", - "community": 86, + "community": 88, "norm_label": "test_resolve_window_executable_falls_back_to_module()" }, { @@ -21429,7 +21690,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L95", "id": "tray_test_window_launcher_test_window_executable_override", - "community": 86, + "community": 88, "norm_label": "test_window_executable_override()" }, { @@ -21438,7 +21699,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L103", "id": "tray_test_window_launcher_test_argv_falls_through_resolve_helper", - "community": 86, + "community": 88, "norm_label": "test_argv_falls_through_resolve_helper()" }, { @@ -21447,7 +21708,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L113", "id": "tray_test_window_launcher_test_pid_is_none_before_open", - "community": 86, + "community": 88, "norm_label": "test_pid_is_none_before_open()" }, { @@ -21456,7 +21717,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L119", "id": "tray_test_window_launcher_test_close_kills_unresponsive_process", - "community": 86, + "community": 88, "norm_label": "test_close_kills_unresponsive_process()" }, { @@ -21465,7 +21726,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L1", "id": "tray_test_window_launcher_rationale_1", - "community": 86, + "community": 88, "norm_label": "tests for :mod:`exlab_wizard.tray.window_launcher`. backend spec \u00a74.3.2." }, { @@ -21474,7 +21735,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L19", "id": "tray_test_window_launcher_rationale_19", - "community": 86, + "community": 88, "norm_label": "return an argv that runs a tiny window stand-in (a sleep)." }, { @@ -21483,7 +21744,7 @@ "source_file": "tests/unit/tray/test_window_launcher.py", "source_location": "L104", "id": "tray_test_window_launcher_rationale_104", - "community": 86, + "community": 88, "norm_label": "default constructor with no override delegates to the resolver." }, { @@ -21492,7 +21753,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L1", "id": "tests_unit_tray_test_autostart_py", - "community": 73, + "community": 72, "norm_label": "test_autostart.py" }, { @@ -21501,7 +21762,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L24", "id": "tray_test_autostart_test_macos_register_writes_plist", - "community": 73, + "community": 72, "norm_label": "test_macos_register_writes_plist()" }, { @@ -21510,7 +21771,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L40", "id": "tray_test_autostart_test_macos_unregister_removes_plist", - "community": 73, + "community": 72, "norm_label": "test_macos_unregister_removes_plist()" }, { @@ -21519,7 +21780,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L51", "id": "tray_test_autostart_test_macos_register_is_idempotent", - "community": 73, + "community": 72, "norm_label": "test_macos_register_is_idempotent()" }, { @@ -21528,7 +21789,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L63", "id": "tray_test_autostart_test_linux_register_writes_systemd_and_desktop", - "community": 73, + "community": 72, "norm_label": "test_linux_register_writes_systemd_and_desktop()" }, { @@ -21537,7 +21798,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L80", "id": "tray_test_autostart_test_linux_unregister_removes_both_files", - "community": 73, + "community": 72, "norm_label": "test_linux_unregister_removes_both_files()" }, { @@ -21546,7 +21807,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L87", "id": "tray_test_autostart_test_linux_is_registered_when_only_desktop_present", - "community": 73, + "community": 72, "norm_label": "test_linux_is_registered_when_only_desktop_present()" }, { @@ -21555,7 +21816,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L100", "id": "tray_test_autostart_fakekey", - "community": 73, + "community": 271, "norm_label": "_fakekey" }, { @@ -21564,7 +21825,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L101", "id": "tray_test_autostart_fakekey_init", - "community": 73, + "community": 271, "norm_label": ".__init__()" }, { @@ -21573,7 +21834,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L105", "id": "tray_test_autostart_fakekey_enter", - "community": 73, + "community": 271, "norm_label": ".__enter__()" }, { @@ -21582,7 +21843,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L108", "id": "tray_test_autostart_fakekey_exit", - "community": 73, + "community": 271, "norm_label": ".__exit__()" }, { @@ -21591,7 +21852,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L112", "id": "tray_test_autostart_fakewinreg", - "community": 73, + "community": 271, "norm_label": "_fakewinreg" }, { @@ -21600,7 +21861,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L118", "id": "tray_test_autostart_fakewinreg_init", - "community": 73, + "community": 271, "norm_label": ".__init__()" }, { @@ -21609,7 +21870,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L122", "id": "tray_test_autostart_fakewinreg_openkey", - "community": 73, + "community": 271, "norm_label": ".openkey()" }, { @@ -21618,7 +21879,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L133", "id": "tray_test_autostart_fakewinreg_setvalueex", - "community": 73, + "community": 271, "norm_label": ".setvalueex()" }, { @@ -21627,7 +21888,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L145", "id": "tray_test_autostart_fakewinreg_queryvalueex", - "community": 73, + "community": 271, "norm_label": ".queryvalueex()" }, { @@ -21636,7 +21897,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L150", "id": "tray_test_autostart_fakewinreg_deletevalue", - "community": 73, + "community": 271, "norm_label": ".deletevalue()" }, { @@ -21645,7 +21906,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L155", "id": "tray_test_autostart_fake_winreg", - "community": 73, + "community": 271, "norm_label": "fake_winreg()" }, { @@ -21654,7 +21915,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L161", "id": "tray_test_autostart_test_windows_register_sets_run_value", - "community": 73, + "community": 72, "norm_label": "test_windows_register_sets_run_value()" }, { @@ -21663,7 +21924,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L173", "id": "tray_test_autostart_test_windows_unregister_deletes_run_value", - "community": 73, + "community": 72, "norm_label": "test_windows_unregister_deletes_run_value()" }, { @@ -21672,7 +21933,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L185", "id": "tray_test_autostart_test_windows_unregister_when_value_missing_is_safe", - "community": 73, + "community": 72, "norm_label": "test_windows_unregister_when_value_missing_is_safe()" }, { @@ -21681,7 +21942,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L193", "id": "tray_test_autostart_test_windows_open_key_handles_filenotfound_on_query", - "community": 73, + "community": 72, "norm_label": "test_windows_open_key_handles_filenotfound_on_query()" }, { @@ -21690,7 +21951,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L211", "id": "tray_test_autostart_test_silently_unlink_tolerates_missing", - "community": 101, + "community": 213, "norm_label": "test_silently_unlink_tolerates_missing()" }, { @@ -21699,7 +21960,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L223", "id": "tray_test_autostart_test_env_var_root_overrides_constructor", - "community": 73, + "community": 72, "norm_label": "test_env_var_root_overrides_constructor()" }, { @@ -21708,7 +21969,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L238", "id": "tray_test_autostart_test_executable_path_property", - "community": 73, + "community": 72, "norm_label": "test_executable_path_property()" }, { @@ -21717,7 +21978,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L244", "id": "tray_test_autostart_test_default_executable_falls_back_to_sys_executable", - "community": 73, + "community": 72, "norm_label": "test_default_executable_falls_back_to_sys_executable()" }, { @@ -21726,7 +21987,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L250", "id": "tray_test_autostart_test_detect_platform_returns_known_value", - "community": 73, + "community": 213, "norm_label": "test_detect_platform_returns_known_value()" }, { @@ -21735,7 +21996,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L255", "id": "tray_test_autostart_test_detect_platform_dispatch", - "community": 73, + "community": 213, "norm_label": "test_detect_platform_dispatch()" }, { @@ -21744,7 +22005,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L1", "id": "tray_test_autostart_rationale_1", - "community": 73, + "community": 72, "norm_label": "tests for :mod:`exlab_wizard.tray.autostart`. backend spec \u00a715.7." }, { @@ -21753,7 +22014,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L196", "id": "tray_test_autostart_rationale_196", - "community": 73, + "community": 72, "norm_label": "when ``openkey`` raises filenotfounderror, ``is_registered`` returns false." }, { @@ -21762,7 +22023,7 @@ "source_file": "tests/unit/tray/test_autostart.py", "source_location": "L212", "id": "tray_test_autostart_rationale_212", - "community": 101, + "community": 213, "norm_label": "internal helper tolerates a missing path without raising." }, { @@ -21771,7 +22032,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L1", "id": "tests_unit_tray_test_main_py", - "community": 20, + "community": 9, "norm_label": "test_main.py" }, { @@ -21780,7 +22041,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L15", "id": "tray_test_main_stubserverrunner", - "community": 20, + "community": 9, "norm_label": "_stubserverrunner" }, { @@ -21789,7 +22050,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L16", "id": "tray_test_main_stubserverrunner_init", - "community": 20, + "community": 9, "norm_label": ".__init__()" }, { @@ -21798,7 +22059,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L22", "id": "tray_test_main_stubserverrunner_start", - "community": 20, + "community": 9, "norm_label": ".start()" }, { @@ -21807,7 +22068,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L26", "id": "tray_test_main_stubserverrunner_stop", - "community": 20, + "community": 9, "norm_label": ".stop()" }, { @@ -21816,7 +22077,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L30", "id": "tray_test_main_stubwindowlauncher", - "community": 20, + "community": 9, "norm_label": "_stubwindowlauncher" }, { @@ -21825,7 +22086,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L31", "id": "tray_test_main_stubwindowlauncher_init", - "community": 20, + "community": 9, "norm_label": ".__init__()" }, { @@ -21834,7 +22095,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L35", "id": "tray_test_main_stubwindowlauncher_open", - "community": 20, + "community": 9, "norm_label": ".open()" }, { @@ -21843,7 +22104,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L38", "id": "tray_test_main_stubwindowlauncher_close", - "community": 20, + "community": 9, "norm_label": ".close()" }, { @@ -21852,7 +22113,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L42", "id": "tray_test_main_stubquitcoordinator", - "community": 20, + "community": 9, "norm_label": "_stubquitcoordinator" }, { @@ -21861,7 +22122,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L43", "id": "tray_test_main_stubquitcoordinator_init", - "community": 20, + "community": 9, "norm_label": ".__init__()" }, { @@ -21870,7 +22131,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L46", "id": "tray_test_main_stubquitcoordinator_quit", - "community": 20, + "community": 9, "norm_label": ".quit()" }, { @@ -21879,7 +22140,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L51", "id": "tray_test_main_stubstatusticker", - "community": 20, + "community": 9, "norm_label": "_stubstatusticker" }, { @@ -21888,7 +22149,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L52", "id": "tray_test_main_stubstatusticker_init", - "community": 20, + "community": 9, "norm_label": ".__init__()" }, { @@ -21897,7 +22158,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L57", "id": "tray_test_main_stubstatusticker_start", - "community": 20, + "community": 9, "norm_label": ".start()" }, { @@ -21906,7 +22167,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L60", "id": "tray_test_main_stubstatusticker_stop", - "community": 20, + "community": 9, "norm_label": ".stop()" }, { @@ -21915,7 +22176,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L63", "id": "tray_test_main_stubstatusticker_tick_once", - "community": 20, + "community": 9, "norm_label": ".tick_once()" }, { @@ -21924,7 +22185,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L68", "id": "tray_test_main_stubbus", - "community": 20, + "community": 9, "norm_label": "_stubbus" }, { @@ -21933,7 +22194,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L69", "id": "tray_test_main_stubbus_init", - "community": 20, + "community": 9, "norm_label": ".__init__()" }, { @@ -21942,7 +22203,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L72", "id": "tray_test_main_stubbus_cancel_all", - "community": 20, + "community": 9, "norm_label": ".cancel_all()" }, { @@ -21951,7 +22212,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L76", "id": "tray_test_main_stubautostart", - "community": 20, + "community": 9, "norm_label": "_stubautostart" }, { @@ -21960,7 +22221,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L80", "id": "tray_test_main_make_tray", - "community": 20, + "community": 9, "norm_label": "_make_tray()" }, { @@ -21969,7 +22230,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L91", "id": "tray_test_main_test_start_server_calls_runner", - "community": 20, + "community": 9, "norm_label": "test_start_server_calls_runner()" }, { @@ -21978,7 +22239,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L98", "id": "tray_test_main_test_open_window_delegates", - "community": 20, + "community": 9, "norm_label": "test_open_window_delegates()" }, { @@ -21987,7 +22248,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L104", "id": "tray_test_main_test_request_quit_runs_coordinator", - "community": 20, + "community": 9, "norm_label": "test_request_quit_runs_coordinator()" }, { @@ -21996,7 +22257,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L110", "id": "tray_test_main_test_request_quit_calls_icon_stop_when_set", - "community": 20, + "community": 9, "norm_label": "test_request_quit_calls_icon_stop_when_set()" }, { @@ -22005,7 +22266,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L118", "id": "tray_test_main_test_request_quit_handles_icon_stop_error", - "community": 20, + "community": 9, "norm_label": "test_request_quit_handles_icon_stop_error()" }, { @@ -22014,7 +22275,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L126", "id": "tray_test_main_test_shutdown_tears_components_down", - "community": 20, + "community": 9, "norm_label": "test_shutdown_tears_components_down()" }, { @@ -22023,7 +22284,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L135", "id": "tray_test_main_test_run_wires_icon_and_invokes_run_loop", - "community": 20, + "community": 9, "norm_label": "test_run_wires_icon_and_invokes_run_loop()" }, { @@ -22032,7 +22293,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L166", "id": "tray_test_main_test_build_default_components", - "community": 114, + "community": 110, "norm_label": "test_build_default_components()" }, { @@ -22041,7 +22302,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L178", "id": "tray_test_main_test_main_uses_run_helper", - "community": 20, + "community": 9, "norm_label": "test_main_uses_run_helper()" }, { @@ -22050,7 +22311,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L201", "id": "tray_test_main_test_main_handles_keyboard_interrupt", - "community": 20, + "community": 9, "norm_label": "test_main_handles_keyboard_interrupt()" }, { @@ -22059,7 +22320,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L218", "id": "tray_test_main_test_run_returns_one_on_icon_failure", - "community": 20, + "community": 9, "norm_label": "test_run_returns_one_on_icon_failure()" }, { @@ -22068,7 +22329,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L232", "id": "tray_test_main_test_request_quit_uses_running_loop_when_present", - "community": 20, + "community": 9, "norm_label": "test_request_quit_uses_running_loop_when_present()" }, { @@ -22077,7 +22338,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L269", "id": "tray_test_main_test_build_default_app", - "community": 20, + "community": 9, "norm_label": "test_build_default_app()" }, { @@ -22086,7 +22347,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L302", "id": "tray_test_main_test_build_default_components_falls_back_to_default_app", - "community": 20, + "community": 9, "norm_label": "test_build_default_components_falls_back_to_default_app()" }, { @@ -22095,7 +22356,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L314", "id": "tray_test_main_test_parse_argv_defaults_no_smoke", - "community": 218, + "community": 9, "norm_label": "test_parse_argv_defaults_no_smoke()" }, { @@ -22104,7 +22365,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L323", "id": "tray_test_main_test_parse_argv_smoke_flag", - "community": 218, + "community": 9, "norm_label": "test_parse_argv_smoke_flag()" }, { @@ -22113,7 +22374,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L331", "id": "tray_test_main_test_parse_argv_no_autostart_prompt_silently_accepted", - "community": 218, + "community": 9, "norm_label": "test_parse_argv_no_autostart_prompt_silently_accepted()" }, { @@ -22122,7 +22383,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L339", "id": "tray_test_main_test_run_smoke_starts_server_and_stops_on_signal", - "community": 20, + "community": 9, "norm_label": "test_run_smoke_starts_server_and_stops_on_signal()" }, { @@ -22131,7 +22392,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L376", "id": "tray_test_main_test_main_smoke_dispatches_to_run_smoke", - "community": 20, + "community": 9, "norm_label": "test_main_smoke_dispatches_to_run_smoke()" }, { @@ -22140,7 +22401,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L397", "id": "tray_test_main_test_parse_argv_version_flag", - "community": 218, + "community": 9, "norm_label": "test_parse_argv_version_flag()" }, { @@ -22149,7 +22410,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L405", "id": "tray_test_main_test_main_version_prints_version_and_exits_zero", - "community": 20, + "community": 9, "norm_label": "test_main_version_prints_version_and_exits_zero()" }, { @@ -22158,7 +22419,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L423", "id": "tray_test_main_test_parse_argv_defaults_no_test_flags", - "community": 218, + "community": 9, "norm_label": "test_parse_argv_defaults_no_test_flags()" }, { @@ -22167,7 +22428,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L432", "id": "tray_test_main_test_parse_argv_test_flag", - "community": 218, + "community": 9, "norm_label": "test_parse_argv_test_flag()" }, { @@ -22176,7 +22437,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L440", "id": "tray_test_main_test_parse_argv_test_with_samples", - "community": 218, + "community": 9, "norm_label": "test_parse_argv_test_with_samples()" }, { @@ -22185,7 +22446,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L448", "id": "tray_test_main_test_parse_argv_samples_without_test_errors", - "community": 218, + "community": 9, "norm_label": "test_parse_argv_samples_without_test_errors()" }, { @@ -22194,7 +22455,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L462", "id": "tray_test_main_test_mode_env", - "community": 20, + "community": 9, "norm_label": "test_mode_env()" }, { @@ -22203,7 +22464,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L487", "id": "tray_test_main_test_main_test_flag_sets_env_and_bootstraps_config", - "community": 13, + "community": 9, "norm_label": "test_main_test_flag_sets_env_and_bootstraps_config()" }, { @@ -22212,7 +22473,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L524", "id": "tray_test_main_test_main_test_does_not_overwrite_existing_config", - "community": 20, + "community": 9, "norm_label": "test_main_test_does_not_overwrite_existing_config()" }, { @@ -22221,16 +22482,25 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L539", "id": "tray_test_main_test_main_test_with_samples_adds_equipment", - "community": 13, + "community": 9, "norm_label": "test_main_test_with_samples_adds_equipment()" }, + { + "label": "test_main_test_with_samples_repeat_boot_is_noop()", + "file_type": "code", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L562", + "id": "tray_test_main_test_main_test_with_samples_repeat_boot_is_noop", + "community": 9, + "norm_label": "test_main_test_with_samples_repeat_boot_is_noop()" + }, { "label": "test_main_without_test_does_not_set_env()", "file_type": "code", "source_file": "tests/unit/tray/test_main.py", - "source_location": "L555", + "source_location": "L579", "id": "tray_test_main_test_main_without_test_does_not_set_env", - "community": 20, + "community": 9, "norm_label": "test_main_without_test_does_not_set_env()" }, { @@ -22239,7 +22509,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L1", "id": "tray_test_main_rationale_1", - "community": 20, + "community": 9, "norm_label": "tests for :mod:`exlab_wizard.tray.main`. backend spec \u00a74.3.2." }, { @@ -22248,7 +22518,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L179", "id": "tray_test_main_rationale_179", - "community": 20, + "community": 9, "norm_label": "``main()`` builds default components and calls :meth:`trayapp.run`." }, { @@ -22257,7 +22527,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L235", "id": "tray_test_main_rationale_235", - "community": 20, + "community": 9, "norm_label": "``asyncio.run`` raises runtimeerror when a loop is running. the tray's ``re" }, { @@ -22266,7 +22536,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L270", "id": "tray_test_main_rationale_270", - "community": 20, + "community": 9, "norm_label": "``_build_default_app`` builds deps, calls ``create_app``, mounts nicegui." }, { @@ -22275,7 +22545,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L305", "id": "tray_test_main_rationale_305", - "community": 20, + "community": 9, "norm_label": "when ``app`` is none, the helper calls ``_build_default_app``." }, { @@ -22284,7 +22554,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L315", "id": "tray_test_main_rationale_315", - "community": 218, + "community": 9, "norm_label": "no flags -> ``smoke`` is false, ``no_autostart_prompt`` is false." }, { @@ -22293,7 +22563,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L324", "id": "tray_test_main_rationale_324", - "community": 218, + "community": 9, "norm_label": "``--smoke`` sets the smoke flag." }, { @@ -22302,7 +22572,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L332", "id": "tray_test_main_rationale_332", - "community": 218, + "community": 9, "norm_label": "``--no-autostart-prompt`` is silently accepted (reserved)." }, { @@ -22311,7 +22581,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L342", "id": "tray_test_main_rationale_342", - "community": 20, + "community": 9, "norm_label": "``_run_smoke`` boots the server, blocks on a stop event, and stops cleanly." }, { @@ -22320,7 +22590,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L379", "id": "tray_test_main_rationale_379", - "community": 20, + "community": 9, "norm_label": "``main([\"--smoke\"])`` calls ``_run_smoke`` instead of the icon loop." }, { @@ -22329,7 +22599,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L398", "id": "tray_test_main_rationale_398", - "community": 218, + "community": 9, "norm_label": "``--version`` sets the version flag." }, { @@ -22338,7 +22608,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L408", "id": "tray_test_main_rationale_408", - "community": 20, + "community": 9, "norm_label": "``main([\"--version\"])`` prints the package version and returns 0." }, { @@ -22347,7 +22617,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L424", "id": "tray_test_main_rationale_424", - "community": 218, + "community": 9, "norm_label": "no flags -> both test-mode flags are false." }, { @@ -22356,7 +22626,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L451", "id": "tray_test_main_rationale_451", - "community": 218, + "community": 9, "norm_label": "``--add-test-samples`` alone must be rejected via parser.error (exit 2)." }, { @@ -22365,7 +22635,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L463", "id": "tray_test_main_rationale_463", - "community": 20, + "community": 9, "norm_label": "sandbox ``main([\"--test\", ...])`` into ``tmp_path``. redirects ``path.home(" }, { @@ -22374,7 +22644,7 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L488", "id": "tray_test_main_rationale_488", - "community": 13, + "community": 9, "norm_label": "``main([\"--test\"])`` sets exlab_wizard_test_mode=1 and writes a starter config." }, { @@ -22383,16 +22653,25 @@ "source_file": "tests/unit/tray/test_main.py", "source_location": "L525", "id": "tray_test_main_rationale_525", - "community": 20, + "community": 9, "norm_label": "re-running ``--test`` must preserve any edits the user made in-session." }, + { + "label": "A second ``--test --add-test-samples`` boot must neither re-seed nor wipe.", + "file_type": "rationale", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L563", + "id": "tray_test_main_rationale_563", + "community": 9, + "norm_label": "a second ``--test --add-test-samples`` boot must neither re-seed nor wipe." + }, { "label": "Sanity: running without --test leaves the env var unset and writes no test confi", "file_type": "rationale", "source_file": "tests/unit/tray/test_main.py", - "source_location": "L556", - "id": "tray_test_main_rationale_556", - "community": 20, + "source_location": "L580", + "id": "tray_test_main_rationale_580", + "community": 9, "norm_label": "sanity: running without --test leaves the env var unset and writes no test confi" }, { @@ -22401,7 +22680,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L1", "id": "tests_unit_readme_test_generator_py", - "community": 35, + "community": 48, "norm_label": "test_generator.py" }, { @@ -22410,7 +22689,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L57", "id": "readme_test_generator_system_fields", - "community": 35, + "community": 48, "norm_label": "_system_fields()" }, { @@ -22419,7 +22698,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L73", "id": "readme_test_generator_ctx", - "community": 35, + "community": 48, "norm_label": "_ctx()" }, { @@ -22428,7 +22707,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L99", "id": "readme_test_generator_generator", - "community": 96, + "community": 224, "norm_label": "generator()" }, { @@ -22437,7 +22716,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L109", "id": "readme_test_generator_test_generate_writes_both_files", - "community": 35, + "community": 48, "norm_label": "test_generate_writes_both_files()" }, { @@ -22446,7 +22725,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L118", "id": "readme_test_generator_test_readme_starts_with_yaml_front_matter", - "community": 35, + "community": 48, "norm_label": "test_readme_starts_with_yaml_front_matter()" }, { @@ -22455,7 +22734,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L135", "id": "readme_test_generator_test_readme_body_includes_label_and_objective", - "community": 35, + "community": 48, "norm_label": "test_readme_body_includes_label_and_objective()" }, { @@ -22464,7 +22743,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L148", "id": "readme_test_generator_test_readme_fields_json_round_trips", - "community": 35, + "community": 48, "norm_label": "test_readme_fields_json_round_trips()" }, { @@ -22473,7 +22752,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L192", "id": "readme_test_generator_test_empty_core_field_rejected", - "community": 35, + "community": 48, "norm_label": "test_empty_core_field_rejected()" }, { @@ -22482,7 +22761,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L201", "id": "readme_test_generator_test_label_over_max_length_rejected", - "community": 35, + "community": 48, "norm_label": "test_label_over_max_length_rejected()" }, { @@ -22491,7 +22770,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L208", "id": "readme_test_generator_test_objective_over_max_length_rejected", - "community": 35, + "community": 48, "norm_label": "test_objective_over_max_length_rejected()" }, { @@ -22500,7 +22779,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L222", "id": "readme_test_generator_test_required_template_field_missing_raises", - "community": 35, + "community": 48, "norm_label": "test_required_template_field_missing_raises()" }, { @@ -22509,7 +22788,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L231", "id": "readme_test_generator_test_required_config_field_missing_raises", - "community": 35, + "community": 48, "norm_label": "test_required_config_field_missing_raises()" }, { @@ -22518,7 +22797,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L247", "id": "readme_test_generator_test_duplicate_field_id_across_layers_raises", - "community": 35, + "community": 48, "norm_label": "test_duplicate_field_id_across_layers_raises()" }, { @@ -22527,7 +22806,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L263", "id": "readme_test_generator_test_custom_field_label_collides_with_template_id", - "community": 35, + "community": 48, "norm_label": "test_custom_field_label_collides_with_template_id()" }, { @@ -22536,7 +22815,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L281", "id": "readme_test_generator_test_core_field_redeclared_in_template_raises", - "community": 35, + "community": 48, "norm_label": "test_core_field_redeclared_in_template_raises()" }, { @@ -22545,7 +22824,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L290", "id": "readme_test_generator_test_core_field_redeclared_in_config_raises", - "community": 35, + "community": 48, "norm_label": "test_core_field_redeclared_in_config_raises()" }, { @@ -22554,7 +22833,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L304", "id": "readme_test_generator_test_project_level_system_run_is_none", - "community": 35, + "community": 48, "norm_label": "test_project_level_system_run_is_none()" }, { @@ -22563,7 +22842,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L313", "id": "readme_test_generator_test_run_level_experimental_run_name", - "community": 35, + "community": 48, "norm_label": "test_run_level_experimental_run_name()" }, { @@ -22572,7 +22851,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L322", "id": "readme_test_generator_test_run_level_test_run_name", - "community": 35, + "community": 48, "norm_label": "test_run_level_test_run_name()" }, { @@ -22581,7 +22860,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L336", "id": "readme_test_generator_test_string_type_accepts_string_rejects_int", - "community": 35, + "community": 48, "norm_label": "test_string_type_accepts_string_rejects_int()" }, { @@ -22590,7 +22869,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L354", "id": "readme_test_generator_test_text_type_accepts_multiline_rejects_list", - "community": 35, + "community": 48, "norm_label": "test_text_type_accepts_multiline_rejects_list()" }, { @@ -22599,7 +22878,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L370", "id": "readme_test_generator_test_choice_type_accepts_listed_rejects_other", - "community": 35, + "community": 48, "norm_label": "test_choice_type_accepts_listed_rejects_other()" }, { @@ -22608,7 +22887,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L386", "id": "readme_test_generator_test_choice_without_options_raises", - "community": 35, + "community": 48, "norm_label": "test_choice_without_options_raises()" }, { @@ -22617,7 +22896,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L396", "id": "readme_test_generator_test_date_type_accepts_iso8601_rejects_garbage", - "community": 35, + "community": 48, "norm_label": "test_date_type_accepts_iso8601_rejects_garbage()" }, { @@ -22626,7 +22905,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L419", "id": "readme_test_generator_test_date_type_rejects_non_string", - "community": 35, + "community": 48, "norm_label": "test_date_type_rejects_non_string()" }, { @@ -22635,7 +22914,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L429", "id": "readme_test_generator_test_boolean_type_accepts_bool_rejects_string", - "community": 35, + "community": 48, "norm_label": "test_boolean_type_accepts_bool_rejects_string()" }, { @@ -22644,7 +22923,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L449", "id": "readme_test_generator_test_unknown_field_type_raises", - "community": 35, + "community": 48, "norm_label": "test_unknown_field_type_raises()" }, { @@ -22653,7 +22932,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L459", "id": "readme_test_generator_test_choice_type_rejects_non_string_value", - "community": 35, + "community": 48, "norm_label": "test_choice_type_rejects_non_string_value()" }, { @@ -22662,7 +22941,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L476", "id": "readme_test_generator_test_generate_is_idempotent_byte_identical", - "community": 35, + "community": 48, "norm_label": "test_generate_is_idempotent_byte_identical()" }, { @@ -22671,7 +22950,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L512", "id": "readme_test_generator_test_generated_at_uses_z_suffix", - "community": 35, + "community": 48, "norm_label": "test_generated_at_uses_z_suffix()" }, { @@ -22680,7 +22959,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L520", "id": "readme_test_generator_test_cache_dir_created_on_demand", - "community": 35, + "community": 48, "norm_label": "test_cache_dir_created_on_demand()" }, { @@ -22689,7 +22968,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L529", "id": "readme_test_generator_test_value_without_declaration_skips_typecheck", - "community": 35, + "community": 48, "norm_label": "test_value_without_declaration_skips_typecheck()" }, { @@ -22698,7 +22977,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L546", "id": "readme_test_generator_test_optional_empty_field_is_skipped", - "community": 35, + "community": 48, "norm_label": "test_optional_empty_field_is_skipped()" }, { @@ -22707,7 +22986,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L556", "id": "readme_test_generator_test_required_field_present_with_none_raises", - "community": 35, + "community": 48, "norm_label": "test_required_field_present_with_none_raises()" }, { @@ -22716,7 +22995,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L569", "id": "readme_test_generator_test_generated_at_uses_z_for_naive_datetime", - "community": 35, + "community": 224, "norm_label": "test_generated_at_uses_z_for_naive_datetime()" }, { @@ -22725,7 +23004,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L1", "id": "readme_test_generator_rationale_1", - "community": 35, + "community": 48, "norm_label": "tests for :class:`exlab_wizard.readme.generator.readmegenerator`. pins the cont" }, { @@ -22734,7 +23013,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L479", "id": "readme_test_generator_rationale_479", - "community": 35, + "community": 48, "norm_label": "calling generate twice with the same context produces identical bytes." }, { @@ -22743,7 +23022,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L532", "id": "readme_test_generator_rationale_532", - "community": 35, + "community": 48, "norm_label": "a value whose id has no declaration is permitted (controller-side merge)." }, { @@ -22752,7 +23031,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L547", "id": "readme_test_generator_rationale_547", - "community": 35, + "community": 48, "norm_label": "an optional field with an empty value passes; type check is skipped." }, { @@ -22761,7 +23040,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L559", "id": "readme_test_generator_rationale_559", - "community": 35, + "community": 48, "norm_label": "``none`` is treated as absent for required fields." }, { @@ -22770,7 +23049,7 @@ "source_file": "tests/unit/readme/test_generator.py", "source_location": "L572", "id": "readme_test_generator_rationale_572", - "community": 35, + "community": 224, "norm_label": "naive datetimes are treated as already-utc (no timezone gymnastics)." }, { @@ -22779,7 +23058,7 @@ "source_file": "tests/unit/readme/__init__.py", "source_location": "L1", "id": "tests_unit_readme_init_py", - "community": 443, + "community": 479, "norm_label": "__init__.py" }, { @@ -22788,16 +23067,196 @@ "source_file": "src/exlab_wizard/readme/__init__.py", "source_location": "L1", "id": "readme_init_rationale_1", - "community": 443, + "community": 479, "norm_label": "readme generation package. backend spec \u00a710." }, + { + "label": "test_metadata_assembly.py", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L1", + "id": "tests_unit_controller_test_metadata_assembly_py", + "community": 25, + "norm_label": "test_metadata_assembly.py" + }, + { + "label": "_config()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L72", + "id": "controller_test_metadata_assembly_config", + "community": 25, + "norm_label": "_config()" + }, + { + "label": "_template_desc()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L92", + "id": "controller_test_metadata_assembly_template_desc", + "community": 25, + "norm_label": "_template_desc()" + }, + { + "label": "_sample_type_default()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L103", + "id": "controller_test_metadata_assembly_sample_type_default", + "community": 25, + "norm_label": "_sample_type_default()" + }, + { + "label": "test_build_readme_context_partitions_readme_extra()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L119", + "id": "controller_test_metadata_assembly_test_build_readme_context_partitions_readme_extra", + "community": 25, + "norm_label": "test_build_readme_context_partitions_readme_extra()" + }, + { + "label": "test_build_readme_context_system_and_level_for_run()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L155", + "id": "controller_test_metadata_assembly_test_build_readme_context_system_and_level_for_run", + "community": 25, + "norm_label": "test_build_readme_context_system_and_level_for_run()" + }, + { + "label": "test_build_readme_context_unknown_equipment_blank_label()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L186", + "id": "controller_test_metadata_assembly_test_build_readme_context_unknown_equipment_blank_label", + "community": 25, + "norm_label": "test_build_readme_context_unknown_equipment_blank_label()" + }, + { + "label": "_lims_block()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L212", + "id": "controller_test_metadata_assembly_lims_block", + "community": 25, + "norm_label": "_lims_block()" + }, + { + "label": "test_build_creation_json_all_blocks_populated()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L221", + "id": "controller_test_metadata_assembly_test_build_creation_json_all_blocks_populated", + "community": 25, + "norm_label": "test_build_creation_json_all_blocks_populated()" + }, + { + "label": "test_build_creation_json_sync_status_override()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L270", + "id": "controller_test_metadata_assembly_test_build_creation_json_sync_status_override", + "community": 25, + "norm_label": "test_build_creation_json_sync_status_override()" + }, + { + "label": "test_build_creation_json_blank_nas_when_root_empty()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L291", + "id": "controller_test_metadata_assembly_test_build_creation_json_blank_nas_when_root_empty", + "community": 25, + "norm_label": "test_build_creation_json_blank_nas_when_root_empty()" + }, + { + "label": "_controller()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L315", + "id": "controller_test_metadata_assembly_controller", + "community": 25, + "norm_label": "_controller()" + }, + { + "label": "_project_request()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L329", + "id": "controller_test_metadata_assembly_project_request", + "community": 25, + "norm_label": "_project_request()" + }, + { + "label": "_resolved_desc_from()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L347", + "id": "controller_test_metadata_assembly_resolved_desc_from", + "community": 25, + "norm_label": "_resolved_desc_from()" + }, + { + "label": "_normalize_ctx()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L358", + "id": "controller_test_metadata_assembly_normalize_ctx", + "community": 25, + "norm_label": "_normalize_ctx()" + }, + { + "label": "test_parity_build_readme_context()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L365", + "id": "controller_test_metadata_assembly_test_parity_build_readme_context", + "community": 25, + "norm_label": "test_parity_build_readme_context()" + }, + { + "label": "test_parity_build_creation_json()", + "file_type": "code", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L396", + "id": "controller_test_metadata_assembly_test_parity_build_creation_json", + "community": 25, + "norm_label": "test_parity_build_creation_json()" + }, + { + "label": "Unit + parity tests for ``controller/metadata_assembly``. The two helpers ``bui", + "file_type": "rationale", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L1", + "id": "controller_test_metadata_assembly_rationale_1", + "community": 25, + "norm_label": "unit + parity tests for ``controller/metadata_assembly``. the two helpers ``bui" + }, + { + "label": "``readme_extra`` keys split across template / config / custom layers, and co", + "file_type": "rationale", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L120", + "id": "controller_test_metadata_assembly_rationale_120", + "community": 25, + "norm_label": "``readme_extra`` keys split across template / config / custom layers, and co" + }, + { + "label": "Replace the injected, environment-dependent system fields with fixtures so t", + "file_type": "rationale", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L359", + "id": "controller_test_metadata_assembly_rationale_359", + "community": 25, + "norm_label": "replace the injected, environment-dependent system fields with fixtures so t" + }, { "label": "test_creation_apply_config.py", "file_type": "code", "source_file": "tests/unit/controller/test_creation_apply_config.py", "source_location": "L1", "id": "tests_unit_controller_test_creation_apply_config_py", - "community": 26, + "community": 23, "norm_label": "test_creation_apply_config.py" }, { @@ -22806,7 +23265,7 @@ "source_file": "tests/unit/controller/test_creation_apply_config.py", "source_location": "L16", "id": "controller_test_creation_apply_config_controller", - "community": 26, + "community": 23, "norm_label": "_controller()" }, { @@ -22815,7 +23274,7 @@ "source_file": "tests/unit/controller/test_creation_apply_config.py", "source_location": "L29", "id": "controller_test_creation_apply_config_test_apply_config_swaps_config", - "community": 26, + "community": 23, "norm_label": "test_apply_config_swaps_config()" }, { @@ -22824,7 +23283,7 @@ "source_file": "tests/unit/controller/test_creation_apply_config.py", "source_location": "L39", "id": "controller_test_creation_apply_config_test_apply_config_reinjects_plugin_host_only_when_given", - "community": 26, + "community": 23, "norm_label": "test_apply_config_reinjects_plugin_host_only_when_given()" }, { @@ -22833,7 +23292,7 @@ "source_file": "tests/unit/controller/test_creation_apply_config.py", "source_location": "L1", "id": "controller_test_creation_apply_config_rationale_1", - "community": 26, + "community": 23, "norm_label": "unit tests for ``creationcontroller.apply_config`` (live config reload). the co" }, { @@ -22842,7 +23301,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L1", "id": "tests_unit_controller_test_state_machine_py", - "community": 22, + "community": 24, "norm_label": "test_state_machine.py" }, { @@ -22851,7 +23310,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L25", "id": "controller_test_state_machine_test_state_to_phase_pending_returns_none", - "community": 22, + "community": 24, "norm_label": "test_state_to_phase_pending_returns_none()" }, { @@ -22860,7 +23319,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L29", "id": "controller_test_state_machine_test_state_to_phase_validating_returns_validating_inputs", - "community": 22, + "community": 24, "norm_label": "test_state_to_phase_validating_returns_validating_inputs()" }, { @@ -22869,7 +23328,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L33", "id": "controller_test_state_machine_test_state_to_phase_rendering_returns_rendering_template", - "community": 22, + "community": 24, "norm_label": "test_state_to_phase_rendering_returns_rendering_template()" }, { @@ -22878,7 +23337,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L37", "id": "controller_test_state_machine_test_state_to_phase_plugin_pass_returns_running_plugins", - "community": 22, + "community": 24, "norm_label": "test_state_to_phase_plugin_pass_returns_running_plugins()" }, { @@ -22887,7 +23346,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L41", "id": "controller_test_state_machine_test_state_to_phase_input_required_returns_input_required", - "community": 22, + "community": 24, "norm_label": "test_state_to_phase_input_required_returns_input_required()" }, { @@ -22896,7 +23355,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L45", "id": "controller_test_state_machine_test_state_to_phase_cache_write_returns_writing_cache", - "community": 22, + "community": 24, "norm_label": "test_state_to_phase_cache_write_returns_writing_cache()" }, { @@ -22905,7 +23364,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L49", "id": "controller_test_state_machine_test_state_to_phase_post_validate_returns_validating_post_creation", - "community": 22, + "community": 24, "norm_label": "test_state_to_phase_post_validate_returns_validating_post_creation()" }, { @@ -22914,7 +23373,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L53", "id": "controller_test_state_machine_test_state_to_phase_sync_queued_returns_queueing_nas_sync", - "community": 22, + "community": 24, "norm_label": "test_state_to_phase_sync_queued_returns_queueing_nas_sync()" }, { @@ -22923,7 +23382,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L57", "id": "controller_test_state_machine_test_state_to_phase_done_returns_done", - "community": 22, + "community": 24, "norm_label": "test_state_to_phase_done_returns_done()" }, { @@ -22932,7 +23391,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L61", "id": "controller_test_state_machine_test_state_to_phase_failed_returns_none", - "community": 22, + "community": 24, "norm_label": "test_state_to_phase_failed_returns_none()" }, { @@ -22941,7 +23400,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L65", "id": "controller_test_state_machine_test_state_to_phase_aborted_returns_none", - "community": 22, + "community": 24, "norm_label": "test_state_to_phase_aborted_returns_none()" }, { @@ -22950,7 +23409,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L69", "id": "controller_test_state_machine_test_state_to_phase_covers_every_state", - "community": 22, + "community": 24, "norm_label": "test_state_to_phase_covers_every_state()" }, { @@ -22959,7 +23418,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L82", "id": "controller_test_state_machine_test_pending_transitions_to_validating", - "community": 22, + "community": 24, "norm_label": "test_pending_transitions_to_validating()" }, { @@ -22968,7 +23427,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L86", "id": "controller_test_state_machine_test_validating_transitions_to_rendering", - "community": 22, + "community": 24, "norm_label": "test_validating_transitions_to_rendering()" }, { @@ -22977,7 +23436,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L90", "id": "controller_test_state_machine_test_rendering_transitions_to_plugin_pass", - "community": 22, + "community": 24, "norm_label": "test_rendering_transitions_to_plugin_pass()" }, { @@ -22986,7 +23445,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L94", "id": "controller_test_state_machine_test_plugin_pass_transitions_to_input_required_and_cache_write", - "community": 22, + "community": 24, "norm_label": "test_plugin_pass_transitions_to_input_required_and_cache_write()" }, { @@ -22995,7 +23454,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L100", "id": "controller_test_state_machine_test_input_required_transitions_back_to_plugin_pass", - "community": 22, + "community": 24, "norm_label": "test_input_required_transitions_back_to_plugin_pass()" }, { @@ -23004,7 +23463,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L104", "id": "controller_test_state_machine_test_cache_write_transitions_to_post_validate", - "community": 22, + "community": 24, "norm_label": "test_cache_write_transitions_to_post_validate()" }, { @@ -23013,7 +23472,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L108", "id": "controller_test_state_machine_test_post_validate_transitions_to_sync_queued", - "community": 22, + "community": 24, "norm_label": "test_post_validate_transitions_to_sync_queued()" }, { @@ -23022,7 +23481,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L112", "id": "controller_test_state_machine_test_sync_queued_transitions_to_done", - "community": 22, + "community": 24, "norm_label": "test_sync_queued_transitions_to_done()" }, { @@ -23031,7 +23490,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L134", "id": "controller_test_state_machine_test_fail_allowed_from_every_non_terminal_state", - "community": 22, + "community": 24, "norm_label": "test_fail_allowed_from_every_non_terminal_state()" }, { @@ -23040,7 +23499,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L151", "id": "controller_test_state_machine_test_aborted_allowed_from_every_non_terminal_state", - "community": 22, + "community": 24, "norm_label": "test_aborted_allowed_from_every_non_terminal_state()" }, { @@ -23049,7 +23508,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L160", "id": "controller_test_state_machine_test_done_is_terminal", - "community": 22, + "community": 24, "norm_label": "test_done_is_terminal()" }, { @@ -23058,7 +23517,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L164", "id": "controller_test_state_machine_test_failed_is_terminal", - "community": 22, + "community": 24, "norm_label": "test_failed_is_terminal()" }, { @@ -23067,7 +23526,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L168", "id": "controller_test_state_machine_test_aborted_is_terminal", - "community": 22, + "community": 24, "norm_label": "test_aborted_is_terminal()" }, { @@ -23076,7 +23535,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L177", "id": "controller_test_state_machine_test_assert_transition_allows_legal_forward_edge", - "community": 22, + "community": 24, "norm_label": "test_assert_transition_allows_legal_forward_edge()" }, { @@ -23085,7 +23544,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L183", "id": "controller_test_state_machine_test_assert_transition_allows_cancel_from_any_non_terminal", - "community": 22, + "community": 24, "norm_label": "test_assert_transition_allows_cancel_from_any_non_terminal()" }, { @@ -23094,7 +23553,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L188", "id": "controller_test_state_machine_test_assert_transition_rejects_skipping_a_state", - "community": 22, + "community": 24, "norm_label": "test_assert_transition_rejects_skipping_a_state()" }, { @@ -23103,7 +23562,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L193", "id": "controller_test_state_machine_test_assert_transition_rejects_terminal_to_anything", - "community": 22, + "community": 24, "norm_label": "test_assert_transition_rejects_terminal_to_anything()" }, { @@ -23112,7 +23571,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L198", "id": "controller_test_state_machine_test_assert_transition_rejects_done_back_to_pipeline", - "community": 22, + "community": 24, "norm_label": "test_assert_transition_rejects_done_back_to_pipeline()" }, { @@ -23121,7 +23580,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L203", "id": "controller_test_state_machine_test_assert_transition_rejects_backwards_through_pipeline", - "community": 22, + "community": 24, "norm_label": "test_assert_transition_rejects_backwards_through_pipeline()" }, { @@ -23130,7 +23589,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L213", "id": "controller_test_state_machine_test_session_state_values_match_lowercase_names", - "community": 22, + "community": 24, "norm_label": "test_session_state_values_match_lowercase_names()" }, { @@ -23139,7 +23598,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L218", "id": "controller_test_state_machine_test_phase_values_use_spec_strings", - "community": 22, + "community": 24, "norm_label": "test_phase_values_use_spec_strings()" }, { @@ -23148,7 +23607,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L229", "id": "controller_test_state_machine_test_valid_transitions_keys_cover_every_session_state", - "community": 22, + "community": 24, "norm_label": "test_valid_transitions_keys_cover_every_session_state()" }, { @@ -23157,7 +23616,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L233", "id": "controller_test_state_machine_test_assert_transition_rejects_unknown_source_state", - "community": 22, + "community": 24, "norm_label": "test_assert_transition_rejects_unknown_source_state()" }, { @@ -23166,7 +23625,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L1", "id": "controller_test_state_machine_rationale_1", - "community": 22, + "community": 24, "norm_label": "tests for ``exlab_wizard.controller.state_machine``. the state machine is the c" }, { @@ -23175,7 +23634,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L70", "id": "controller_test_state_machine_rationale_70", - "community": 22, + "community": 24, "norm_label": "every ``sessionstate`` value must have an explicit mapping entry." }, { @@ -23184,7 +23643,7 @@ "source_file": "tests/unit/controller/test_state_machine.py", "source_location": "L234", "id": "controller_test_state_machine_rationale_234", - "community": 22, + "community": 24, "norm_label": "the guard rejects a state not present in ``valid_transitions``. we can't ea" }, { @@ -23193,7 +23652,7 @@ "source_file": "tests/unit/controller/__init__.py", "source_location": "L1", "id": "tests_unit_controller_init_py", - "community": 392, + "community": 400, "norm_label": "__init__.py" }, { @@ -23202,7 +23661,7 @@ "source_file": "src/exlab_wizard/controller/__init__.py", "source_location": "L1", "id": "controller_init_rationale_1", - "community": 392, + "community": 400, "norm_label": "controller package. backend spec \u00a74.4.1, \u00a74.7, \u00a74.7.1, \u00a74.8. re-exports the pub" }, { @@ -23211,7 +23670,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L1", "id": "tests_unit_controller_test_session_store_py", - "community": 10, + "community": 18, "norm_label": "test_session_store.py" }, { @@ -23220,7 +23679,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L36", "id": "controller_test_session_store_test_open_returns_fresh_pending_session", - "community": 10, + "community": 18, "norm_label": "test_open_returns_fresh_pending_session()" }, { @@ -23229,7 +23688,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L46", "id": "controller_test_session_store_test_open_assigns_uuid4_session_id", - "community": 10, + "community": 18, "norm_label": "test_open_assigns_uuid4_session_id()" }, { @@ -23238,7 +23697,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L54", "id": "controller_test_session_store_test_open_two_sessions_get_distinct_ids", - "community": 10, + "community": 18, "norm_label": "test_open_two_sessions_get_distinct_ids()" }, { @@ -23247,7 +23706,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L61", "id": "controller_test_session_store_test_open_sets_created_at_and_last_heartbeat_to_now", - "community": 10, + "community": 18, "norm_label": "test_open_sets_created_at_and_last_heartbeat_to_now()" }, { @@ -23256,7 +23715,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L75", "id": "controller_test_session_store_test_get_returns_none_for_unknown_session_id", - "community": 10, + "community": 18, "norm_label": "test_get_returns_none_for_unknown_session_id()" }, { @@ -23265,7 +23724,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L80", "id": "controller_test_session_store_test_get_returns_session_after_open", - "community": 10, + "community": 18, "norm_label": "test_get_returns_session_after_open()" }, { @@ -23274,7 +23733,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L87", "id": "controller_test_session_store_test_iter_sorted_returns_pairs_oldest_created_first", - "community": 10, + "community": 18, "norm_label": "test_iter_sorted_returns_pairs_oldest_created_first()" }, { @@ -23283,7 +23742,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L98", "id": "controller_test_session_store_test_gc_publishes_terminal_frame_to_live_subscriber", - "community": 10, + "community": 18, "norm_label": "test_gc_publishes_terminal_frame_to_live_subscriber()" }, { @@ -23292,7 +23751,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L120", "id": "controller_test_session_store_test_project_identifier_prefers_short_id_then_falls_back_to_project_name", - "community": 10, + "community": 18, "norm_label": "test_project_identifier_prefers_short_id_then_falls_back_to_project_name()" }, { @@ -23301,7 +23760,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L136", "id": "controller_test_session_store_test_transition_updates_state_and_phase_together", - "community": 10, + "community": 18, "norm_label": "test_transition_updates_state_and_phase_together()" }, { @@ -23310,7 +23769,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L144", "id": "controller_test_session_store_test_transition_to_input_required_sets_next_action_awaiting_input", - "community": 10, + "community": 18, "norm_label": "test_transition_to_input_required_sets_next_action_awaiting_input()" }, { @@ -23319,7 +23778,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L154", "id": "controller_test_session_store_test_transition_back_to_plugin_pass_clears_next_action", - "community": 10, + "community": 18, "norm_label": "test_transition_back_to_plugin_pass_clears_next_action()" }, { @@ -23328,7 +23787,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L169", "id": "controller_test_session_store_test_transition_rejects_unknown_session_id", - "community": 10, + "community": 18, "norm_label": "test_transition_rejects_unknown_session_id()" }, { @@ -23337,7 +23796,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L175", "id": "controller_test_session_store_test_transition_rejects_illegal_state_transition", - "community": 10, + "community": 18, "norm_label": "test_transition_rejects_illegal_state_transition()" }, { @@ -23346,7 +23805,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L187", "id": "controller_test_session_store_test_attach_event_queue_wires_queue_to_session", - "community": 10, + "community": 18, "norm_label": "test_attach_event_queue_wires_queue_to_session()" }, { @@ -23355,7 +23814,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L195", "id": "controller_test_session_store_test_attach_event_queue_rejects_unknown_session_id", - "community": 10, + "community": 18, "norm_label": "test_attach_event_queue_rejects_unknown_session_id()" }, { @@ -23364,7 +23823,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L207", "id": "controller_test_session_store_test_heartbeat_updates_last_heartbeat", - "community": 10, + "community": 18, "norm_label": "test_heartbeat_updates_last_heartbeat()" }, { @@ -23373,7 +23832,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L217", "id": "controller_test_session_store_test_heartbeat_is_noop_for_unknown_session", - "community": 10, + "community": 18, "norm_label": "test_heartbeat_is_noop_for_unknown_session()" }, { @@ -23382,7 +23841,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L228", "id": "controller_test_session_store_test_abandoned_older_than_returns_only_input_required_sessions", - "community": 10, + "community": 18, "norm_label": "test_abandoned_older_than_returns_only_input_required_sessions()" }, { @@ -23391,7 +23850,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L250", "id": "controller_test_session_store_test_abandoned_older_than_skips_recent_input_required_sessions", - "community": 10, + "community": 18, "norm_label": "test_abandoned_older_than_skips_recent_input_required_sessions()" }, { @@ -23400,7 +23859,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L265", "id": "controller_test_session_store_test_abandoned_older_than_returns_empty_when_no_sessions_exist", - "community": 10, + "community": 18, "norm_label": "test_abandoned_older_than_returns_empty_when_no_sessions_exist()" }, { @@ -23409,7 +23868,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L275", "id": "controller_test_session_store_test_close_stores_outcome_for_done_session", - "community": 10, + "community": 18, "norm_label": "test_close_stores_outcome_for_done_session()" }, { @@ -23418,7 +23877,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L294", "id": "controller_test_session_store_test_close_stores_outcome_in_error_for_failed_session", - "community": 10, + "community": 18, "norm_label": "test_close_stores_outcome_in_error_for_failed_session()" }, { @@ -23427,7 +23886,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L304", "id": "controller_test_session_store_test_close_is_noop_for_unknown_session", - "community": 10, + "community": 18, "norm_label": "test_close_is_noop_for_unknown_session()" }, { @@ -23436,7 +23895,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L315", "id": "controller_test_session_store_test_gc_loop_closes_abandoned_input_required_session", - "community": 10, + "community": 18, "norm_label": "test_gc_loop_closes_abandoned_input_required_session()" }, { @@ -23445,7 +23904,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L339", "id": "controller_test_session_store_test_gc_loop_periodically_runs_and_can_be_cancelled", - "community": 10, + "community": 18, "norm_label": "test_gc_loop_periodically_runs_and_can_be_cancelled()" }, { @@ -23454,7 +23913,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L350", "id": "controller_test_session_store_test_gc_loop_skips_non_input_required_sessions", - "community": 10, + "community": 18, "norm_label": "test_gc_loop_skips_non_input_required_sessions()" }, { @@ -23463,7 +23922,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L366", "id": "controller_test_session_store_test_session_is_terminal_for_terminal_states", - "community": 9, + "community": 10, "norm_label": "test_session_is_terminal_for_terminal_states()" }, { @@ -23472,7 +23931,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L382", "id": "controller_test_session_store_test_session_is_terminal_false_for_non_terminal_states", - "community": 9, + "community": 10, "norm_label": "test_session_is_terminal_false_for_non_terminal_states()" }, { @@ -23481,7 +23940,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L1", "id": "controller_test_session_store_rationale_1", - "community": 10, + "community": 18, "norm_label": "tests for ``exlab_wizard.controller.session_store``. the session store is the i" }, { @@ -23490,7 +23949,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L99", "id": "controller_test_session_store_rationale_99", - "community": 10, + "community": 18, "norm_label": "an abandoned-session gc pass must wake a live ``subscribe()`` consumer. the" }, { @@ -23499,7 +23958,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L316", "id": "controller_test_session_store_rationale_316", - "community": 10, + "community": 18, "norm_label": "the gc pass moves abandoned ``input_required`` sessions to ``aborted``." }, { @@ -23508,7 +23967,7 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L340", "id": "controller_test_session_store_rationale_340", - "community": 10, + "community": 18, "norm_label": "the ``gc_loop`` runs forever until cancelled." }, { @@ -23517,133 +23976,637 @@ "source_file": "tests/unit/controller/test_session_store.py", "source_location": "L351", "id": "controller_test_session_store_rationale_351", - "community": 10, + "community": 18, "norm_label": "even with a stale heartbeat, only input_required sessions are gc'd." }, { - "label": "test_pywebview_app.py", + "label": "test_generator.py", "file_type": "code", - "source_file": "tests/unit/window/test_pywebview_app.py", + "source_file": "tests/unit/sample_data/test_generator.py", "source_location": "L1", - "id": "tests_unit_window_test_pywebview_app_py", - "community": 11, - "norm_label": "test_pywebview_app.py" + "id": "tests_unit_sample_data_test_generator_py", + "community": 109, + "norm_label": "test_generator.py" }, { - "label": "_hs()", + "label": "sandbox()", "file_type": "code", - "source_file": "tests/unit/window/test_pywebview_app.py", - "source_location": "L20", - "id": "window_test_pywebview_app_hs", - "community": 11, - "norm_label": "_hs()" + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L48", + "id": "sample_data_test_generator_sandbox", + "community": 0, + "norm_label": "sandbox()" }, { - "label": "test_build_window_url_uses_loopback()", + "label": "_read_creation()", "file_type": "code", - "source_file": "tests/unit/window/test_pywebview_app.py", - "source_location": "L24", - "id": "window_test_pywebview_app_test_build_window_url_uses_loopback", - "community": 11, - "norm_label": "test_build_window_url_uses_loopback()" + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L69", + "id": "sample_data_test_generator_read_creation", + "community": 109, + "norm_label": "_read_creation()" }, { - "label": "test_is_debug_enabled_default()", + "label": "_read_readme_fields()", "file_type": "code", - "source_file": "tests/unit/window/test_pywebview_app.py", - "source_location": "L28", - "id": "window_test_pywebview_app_test_is_debug_enabled_default", - "community": 11, - "norm_label": "test_is_debug_enabled_default()" + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L74", + "id": "sample_data_test_generator_read_readme_fields", + "community": 109, + "norm_label": "_read_readme_fields()" }, { - "label": "test_is_debug_enabled_truthy()", + "label": "_read_front_matter()", "file_type": "code", - "source_file": "tests/unit/window/test_pywebview_app.py", - "source_location": "L34", - "id": "window_test_pywebview_app_test_is_debug_enabled_truthy", - "community": 11, - "norm_label": "test_is_debug_enabled_truthy()" + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L79", + "id": "sample_data_test_generator_read_front_matter", + "community": 109, + "norm_label": "_read_front_matter()" }, { - "label": "test_is_debug_enabled_falsy()", + "label": "_read_label()", "file_type": "code", - "source_file": "tests/unit/window/test_pywebview_app.py", - "source_location": "L40", - "id": "window_test_pywebview_app_test_is_debug_enabled_falsy", - "community": 11, - "norm_label": "test_is_debug_enabled_falsy()" + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L86", + "id": "sample_data_test_generator_read_label", + "community": 109, + "norm_label": "_read_label()" }, { - "label": "test_run_window_calls_create_and_start()", + "label": "_project_dirs()", "file_type": "code", - "source_file": "tests/unit/window/test_pywebview_app.py", - "source_location": "L45", - "id": "window_test_pywebview_app_test_run_window_calls_create_and_start", - "community": 11, - "norm_label": "test_run_window_calls_create_and_start()" + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L91", + "id": "sample_data_test_generator_project_dirs", + "community": 109, + "norm_label": "_project_dirs()" }, { - "label": "test_run_window_passes_debug_when_env_var_set()", + "label": "_run_dirs()", "file_type": "code", - "source_file": "tests/unit/window/test_pywebview_app.py", - "source_location": "L64", - "id": "window_test_pywebview_app_test_run_window_passes_debug_when_env_var_set", - "community": 11, - "norm_label": "test_run_window_passes_debug_when_env_var_set()" + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L107", + "id": "sample_data_test_generator_run_dirs", + "community": 109, + "norm_label": "_run_dirs()" }, { - "label": "test_run_window_with_only_create_window_uses_default_start()", + "label": "test_full_tree_exists()", "file_type": "code", - "source_file": "tests/unit/window/test_pywebview_app.py", - "source_location": "L77", - "id": "window_test_pywebview_app_test_run_window_with_only_create_window_uses_default_start", - "community": 11, - "norm_label": "test_run_window_with_only_create_window_uses_default_start()" + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L121", + "id": "sample_data_test_generator_test_full_tree_exists", + "community": 109, + "norm_label": "test_full_tree_exists()" }, { - "label": "test_window_title_constant()", + "label": "test_every_folder_has_metadata()", "file_type": "code", - "source_file": "tests/unit/window/test_pywebview_app.py", - "source_location": "L97", - "id": "window_test_pywebview_app_test_window_title_constant", - "community": 11, - "norm_label": "test_window_title_constant()" + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L146", + "id": "sample_data_test_generator_test_every_folder_has_metadata", + "community": 109, + "norm_label": "test_every_folder_has_metadata()" }, { - "label": "test_import_webview_returns_module()", + "label": "test_test_runs_marker_present_for_test_projects()", "file_type": "code", - "source_file": "tests/unit/window/test_pywebview_app.py", - "source_location": "L101", - "id": "window_test_pywebview_app_test_import_webview_returns_module", - "community": 11, - "norm_label": "test_import_webview_returns_module()" + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L176", + "id": "sample_data_test_generator_test_test_runs_marker_present_for_test_projects", + "community": 109, + "norm_label": "test_test_runs_marker_present_for_test_projects()" }, { - "label": "Tests for :mod:`exlab_wizard.window.pywebview_app`. Backend Spec \u00a715.3.2.", - "file_type": "rationale", - "source_file": "tests/unit/window/test_pywebview_app.py", - "source_location": "L1", - "id": "window_test_pywebview_app_rationale_1", - "community": 11, - "norm_label": "tests for :mod:`exlab_wizard.window.pywebview_app`. backend spec \u00a715.3.2." + "label": "test_sync_status_spread()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L198", + "id": "sample_data_test_generator_test_sync_status_spread", + "community": 109, + "norm_label": "test_sync_status_spread()" }, { - "label": "When ``start`` is omitted the lazy import path is taken.", - "file_type": "rationale", - "source_file": "tests/unit/window/test_pywebview_app.py", - "source_location": "L80", - "id": "window_test_pywebview_app_rationale_80", - "community": 11, - "norm_label": "when ``start`` is omitted the lazy import path is taken." - }, + "label": "test_each_run_sync_status_matches_sample()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L216", + "id": "sample_data_test_generator_test_each_run_sync_status_matches_sample", + "community": 109, + "norm_label": "test_each_run_sync_status_matches_sample()" + }, + { + "label": "test_default_payload_pair()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L240", + "id": "sample_data_test_generator_test_default_payload_pair", + "community": 109, + "norm_label": "test_default_payload_pair()" + }, + { + "label": "test_blocked_run_carries_trigger_file()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L256", + "id": "sample_data_test_generator_test_blocked_run_carries_trigger_file", + "community": 109, + "norm_label": "test_blocked_run_carries_trigger_file()" + }, + { + "label": "test_readme_field_layering()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L284", + "id": "sample_data_test_generator_test_readme_field_layering", + "community": 109, + "norm_label": "test_readme_field_layering()" + }, + { + "label": "test_seeded_config_default_is_present_and_optional()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L307", + "id": "sample_data_test_generator_test_seeded_config_default_is_present_and_optional", + "community": 109, + "norm_label": "test_seeded_config_default_is_present_and_optional()" + }, + { + "label": "_snapshot()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L325", + "id": "sample_data_test_generator_snapshot", + "community": 473, + "norm_label": "_snapshot()" + }, + { + "label": "test_determinism()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L339", + "id": "sample_data_test_generator_test_determinism", + "community": 473, + "norm_label": "test_determinism()" + }, + { + "label": "test_equipment_json_normalized_is_deterministic()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L354", + "id": "sample_data_test_generator_test_equipment_json_normalized_is_deterministic", + "community": 528, + "norm_label": "test_equipment_json_normalized_is_deterministic()" + }, + { + "label": "test_wipe_refuses_when_test_mode_unset()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L383", + "id": "sample_data_test_generator_test_wipe_refuses_when_test_mode_unset", + "community": 109, + "norm_label": "test_wipe_refuses_when_test_mode_unset()" + }, + { + "label": "test_wipe_refuses_when_app_name_not_test()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L389", + "id": "sample_data_test_generator_test_wipe_refuses_when_app_name_not_test", + "community": 109, + "norm_label": "test_wipe_refuses_when_app_name_not_test()" + }, + { + "label": "test_wipe_refuses_when_target_escapes_sandbox()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L399", + "id": "sample_data_test_generator_test_wipe_refuses_when_target_escapes_sandbox", + "community": 174, + "norm_label": "test_wipe_refuses_when_target_escapes_sandbox()" + }, + { + "label": "test_wipe_refuses_symlinked_target_escaping_sandbox()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L419", + "id": "sample_data_test_generator_test_wipe_refuses_symlinked_target_escaping_sandbox", + "community": 109, + "norm_label": "test_wipe_refuses_symlinked_target_escaping_sandbox()" + }, + { + "label": "test_seeded_equipment_roots_are_base_paths()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L444", + "id": "sample_data_test_generator_test_seeded_equipment_roots_are_base_paths", + "community": 109, + "norm_label": "test_seeded_equipment_roots_are_base_paths()" + }, + { + "label": "test_no_wipe_is_idempotent_and_nondestructive()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L472", + "id": "sample_data_test_generator_test_no_wipe_is_idempotent_and_nondestructive", + "community": 109, + "norm_label": "test_no_wipe_is_idempotent_and_nondestructive()" + }, + { + "label": "test_generator_class_is_constructable()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L487", + "id": "sample_data_test_generator_test_generator_class_is_constructable", + "community": 174, + "norm_label": "test_generator_class_is_constructable()" + }, + { + "label": "End-to-end tests for the sample-data generator (design spec \u00a76/\u00a77/\u00a79). These dr", + "file_type": "rationale", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L1", + "id": "sample_data_test_generator_rationale_1", + "community": 109, + "norm_label": "end-to-end tests for the sample-data generator (design spec \u00a76/\u00a77/\u00a79). these dr" + }, + { + "label": "Build a ``-test`` sandbox with a starter config; return ``config_path``. Se", + "file_type": "rationale", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L49", + "id": "sample_data_test_generator_rationale_49", + "community": 0, + "norm_label": "build a ``-test`` sandbox with a starter config; return ``config_path``. se" + }, + { + "label": "Return the README ``core_fields.label`` for a project/run folder.", + "file_type": "rationale", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L87", + "id": "sample_data_test_generator_rationale_87", + "community": 109, + "norm_label": "return the readme ``core_fields.label`` for a project/run folder." + }, + { + "label": "Return every ``/`` directory under ``local_root``. Excludes th", + "file_type": "rationale", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L92", + "id": "sample_data_test_generator_rationale_92", + "community": 109, + "norm_label": "return every ``/`` directory under ``local_root``. excludes th" + }, + { + "label": "Map relpath -> bytes for README/creation.json/payload (no equipment.json).", + "file_type": "rationale", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L326", + "id": "sample_data_test_generator_rationale_326", + "community": 473, + "norm_label": "map relpath -> bytes for readme/creation.json/payload (no equipment.json)." + }, + { + "label": "equipment.json differs only in the two writer-stamped timestamps.", + "file_type": "rationale", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L355", + "id": "sample_data_test_generator_rationale_355", + "community": 528, + "norm_label": "equipment.json differs only in the two writer-stamped timestamps." + }, + { + "label": "A seeded equipment dir replaced by a symlink out of the sandbox is refused.", + "file_type": "rationale", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L420", + "id": "sample_data_test_generator_rationale_420", + "community": 109, + "norm_label": "a seeded equipment dir replaced by a symlink out of the sandbox is refused." + }, + { + "label": "Seeded ``EquipmentConfig.local_root``/``nas_root`` are BASE roots. Consumer", + "file_type": "rationale", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L445", + "id": "sample_data_test_generator_rationale_445", + "community": 109, + "norm_label": "seeded ``equipmentconfig.local_root``/``nas_root`` are base roots. consumer" + }, + { + "label": "``wipe=False`` seeds, and a re-seed without wipe does not delete the tree.", + "file_type": "rationale", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L473", + "id": "sample_data_test_generator_rationale_473", + "community": 109, + "norm_label": "``wipe=false`` seeds, and a re-seed without wipe does not delete the tree." + }, + { + "label": "test_spec.py", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L1", + "id": "tests_unit_sample_data_test_spec_py", + "community": 78, + "norm_label": "test_spec.py" + }, + { + "label": "_project()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L23", + "id": "sample_data_test_spec_project", + "community": 78, + "norm_label": "_project()" + }, + { + "label": "test_samples_top_level_shape()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L27", + "id": "sample_data_test_spec_test_samples_top_level_shape", + "community": 78, + "norm_label": "test_samples_top_level_shape()" + }, + { + "label": "test_testrig_has_one_project_three_runs()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L34", + "id": "sample_data_test_spec_test_testrig_has_one_project_three_runs", + "community": 78, + "norm_label": "test_testrig_has_one_project_three_runs()" + }, + { + "label": "test_altrig_has_two_projects_two_runs_each()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L41", + "id": "sample_data_test_spec_test_altrig_has_two_projects_two_runs_each", + "community": 78, + "norm_label": "test_altrig_has_two_projects_two_runs_each()" + }, + { + "label": "test_total_run_count_is_seven()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L49", + "id": "sample_data_test_spec_test_total_run_count_is_seven", + "community": 78, + "norm_label": "test_total_run_count_is_seven()" + }, + { + "label": "test_malformed_short_id_raises_validation_error()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L54", + "id": "sample_data_test_spec_test_malformed_short_id_raises_validation_error", + "community": 78, + "norm_label": "test_malformed_short_id_raises_validation_error()" + }, + { + "label": "test_malformed_equipment_id_raises_validation_error()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L73", + "id": "sample_data_test_spec_test_malformed_equipment_id_raises_validation_error", + "community": 78, + "norm_label": "test_malformed_equipment_id_raises_validation_error()" + }, + { + "label": "test_malformed_project_name_raises_validation_error()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L98", + "id": "sample_data_test_spec_test_malformed_project_name_raises_validation_error", + "community": 78, + "norm_label": "test_malformed_project_name_raises_validation_error()" + }, + { + "label": "test_unknown_key_rejected_extra_forbid()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L119", + "id": "sample_data_test_spec_test_unknown_key_rejected_extra_forbid", + "community": 78, + "norm_label": "test_unknown_key_rejected_extra_forbid()" + }, + { + "label": "test_samplefile_rejects_escaping_relpath()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L131", + "id": "sample_data_test_spec_test_samplefile_rejects_escaping_relpath", + "community": 78, + "norm_label": "test_samplefile_rejects_escaping_relpath()" + }, + { + "label": "test_samplefile_accepts_nested_relative_path()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L137", + "id": "sample_data_test_spec_test_samplefile_accepts_nested_relative_path", + "community": 78, + "norm_label": "test_samplefile_accepts_nested_relative_path()" + }, + { + "label": "test_sync_status_spread_covers_required_states()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L141", + "id": "sample_data_test_spec_test_sync_status_spread_covers_required_states", + "community": 78, + "norm_label": "test_sync_status_spread_covers_required_states()" + }, + { + "label": "test_proj_0003_blocked_run_carries_trigger_file()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L151", + "id": "sample_data_test_spec_test_proj_0003_blocked_run_carries_trigger_file", + "community": 78, + "norm_label": "test_proj_0003_blocked_run_carries_trigger_file()" + }, + { + "label": "test_proj_0002_calibration_a_has_readme_extra_fields()", + "file_type": "code", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L162", + "id": "sample_data_test_spec_test_proj_0002_calibration_a_has_readme_extra_fields", + "community": 78, + "norm_label": "test_proj_0002_calibration_a_has_readme_extra_fields()" + }, + { + "label": "Tests for the declarative ``SAMPLES`` list and its Pydantic models (\u00a74). These", + "file_type": "rationale", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L1", + "id": "sample_data_test_spec_rationale_1", + "community": 78, + "norm_label": "tests for the declarative ``samples`` list and its pydantic models (\u00a74). these" + }, + { + "label": "Two equipment entries, keyed TESTRIG then ALTRIG.", + "file_type": "rationale", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L28", + "id": "sample_data_test_spec_rationale_28", + "community": 78, + "norm_label": "two equipment entries, keyed testrig then altrig." + }, + { + "label": "``relpath`` must stay under the run dir -- no absolute or ``..`` paths.", + "file_type": "rationale", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L132", + "id": "sample_data_test_spec_rationale_132", + "community": 78, + "norm_label": "``relpath`` must stay under the run dir -- no absolute or ``..`` paths." + }, + { + "label": "__init__.py", + "file_type": "code", + "source_file": "tests/unit/sample_data/__init__.py", + "source_location": "L1", + "id": "tests_unit_sample_data_init_py", + "community": 480, + "norm_label": "__init__.py" + }, + { + "label": "Declarative sample-data fixtures for the ``-test`` sandbox. This package owns t", + "file_type": "rationale", + "source_file": "src/exlab_wizard/sample_data/__init__.py", + "source_location": "L1", + "id": "sample_data_init_rationale_1", + "community": 480, + "norm_label": "declarative sample-data fixtures for the ``-test`` sandbox. this package owns t" + }, + { + "label": "test_pywebview_app.py", + "file_type": "code", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L1", + "id": "tests_unit_window_test_pywebview_app_py", + "community": 17, + "norm_label": "test_pywebview_app.py" + }, + { + "label": "_hs()", + "file_type": "code", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L20", + "id": "window_test_pywebview_app_hs", + "community": 17, + "norm_label": "_hs()" + }, + { + "label": "test_build_window_url_uses_loopback()", + "file_type": "code", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L24", + "id": "window_test_pywebview_app_test_build_window_url_uses_loopback", + "community": 17, + "norm_label": "test_build_window_url_uses_loopback()" + }, + { + "label": "test_is_debug_enabled_default()", + "file_type": "code", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L28", + "id": "window_test_pywebview_app_test_is_debug_enabled_default", + "community": 17, + "norm_label": "test_is_debug_enabled_default()" + }, + { + "label": "test_is_debug_enabled_truthy()", + "file_type": "code", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L34", + "id": "window_test_pywebview_app_test_is_debug_enabled_truthy", + "community": 17, + "norm_label": "test_is_debug_enabled_truthy()" + }, + { + "label": "test_is_debug_enabled_falsy()", + "file_type": "code", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L40", + "id": "window_test_pywebview_app_test_is_debug_enabled_falsy", + "community": 17, + "norm_label": "test_is_debug_enabled_falsy()" + }, + { + "label": "test_run_window_calls_create_and_start()", + "file_type": "code", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L45", + "id": "window_test_pywebview_app_test_run_window_calls_create_and_start", + "community": 17, + "norm_label": "test_run_window_calls_create_and_start()" + }, + { + "label": "test_run_window_passes_debug_when_env_var_set()", + "file_type": "code", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L64", + "id": "window_test_pywebview_app_test_run_window_passes_debug_when_env_var_set", + "community": 17, + "norm_label": "test_run_window_passes_debug_when_env_var_set()" + }, + { + "label": "test_run_window_with_only_create_window_uses_default_start()", + "file_type": "code", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L77", + "id": "window_test_pywebview_app_test_run_window_with_only_create_window_uses_default_start", + "community": 17, + "norm_label": "test_run_window_with_only_create_window_uses_default_start()" + }, + { + "label": "test_window_title_constant()", + "file_type": "code", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L97", + "id": "window_test_pywebview_app_test_window_title_constant", + "community": 17, + "norm_label": "test_window_title_constant()" + }, + { + "label": "test_import_webview_returns_module()", + "file_type": "code", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L101", + "id": "window_test_pywebview_app_test_import_webview_returns_module", + "community": 17, + "norm_label": "test_import_webview_returns_module()" + }, + { + "label": "Tests for :mod:`exlab_wizard.window.pywebview_app`. Backend Spec \u00a715.3.2.", + "file_type": "rationale", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L1", + "id": "window_test_pywebview_app_rationale_1", + "community": 17, + "norm_label": "tests for :mod:`exlab_wizard.window.pywebview_app`. backend spec \u00a715.3.2." + }, + { + "label": "When ``start`` is omitted the lazy import path is taken.", + "file_type": "rationale", + "source_file": "tests/unit/window/test_pywebview_app.py", + "source_location": "L80", + "id": "window_test_pywebview_app_rationale_80", + "community": 17, + "norm_label": "when ``start`` is omitted the lazy import path is taken." + }, { "label": "The lazy-import helper imports ``webview`` when called.", "file_type": "rationale", "source_file": "tests/unit/window/test_pywebview_app.py", "source_location": "L102", "id": "window_test_pywebview_app_rationale_102", - "community": 11, + "community": 17, "norm_label": "the lazy-import helper imports ``webview`` when called." }, { @@ -23652,7 +24615,7 @@ "source_file": "tests/unit/window/__init__.py", "source_location": "L1", "id": "tests_unit_window_init_py", - "community": 444, + "community": 481, "norm_label": "__init__.py" }, { @@ -23661,7 +24624,7 @@ "source_file": "src/exlab_wizard/window/__init__.py", "source_location": "L1", "id": "window_init_rationale_1", - "community": 444, + "community": 481, "norm_label": "window application package. backend spec \u00a74.3.2. public api: * :func:`run_wind" }, { @@ -23670,7 +24633,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L1", "id": "tests_unit_window_test_main_py", - "community": 11, + "community": 17, "norm_label": "test_main.py" }, { @@ -23679,7 +24642,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L24", "id": "window_test_main_write_server_json", - "community": 11, + "community": 17, "norm_label": "_write_server_json()" }, { @@ -23688,7 +24651,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L36", "id": "window_test_main_test_read_server_handshake_returns_none_when_missing", - "community": 11, + "community": 17, "norm_label": "test_read_server_handshake_returns_none_when_missing()" }, { @@ -23697,7 +24660,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L40", "id": "window_test_main_test_read_server_handshake_returns_handshake", - "community": 11, + "community": 17, "norm_label": "test_read_server_handshake_returns_handshake()" }, { @@ -23706,7 +24669,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L48", "id": "window_test_main_test_read_server_handshake_returns_none_on_invalid_json", - "community": 11, + "community": 17, "norm_label": "test_read_server_handshake_returns_none_on_invalid_json()" }, { @@ -23715,7 +24678,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L53", "id": "window_test_main_test_read_server_handshake_returns_none_on_missing_keys", - "community": 11, + "community": 17, "norm_label": "test_read_server_handshake_returns_none_on_missing_keys()" }, { @@ -23724,7 +24687,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L58", "id": "window_test_main_test_main_returns_stale_when_no_state_file", - "community": 11, + "community": 17, "norm_label": "test_main_returns_stale_when_no_state_file()" }, { @@ -23733,7 +24696,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L67", "id": "window_test_main_test_main_returns_stale_on_dead_pid", - "community": 11, + "community": 17, "norm_label": "test_main_returns_stale_on_dead_pid()" }, { @@ -23742,7 +24705,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L75", "id": "window_test_main_test_main_hands_off_with_live_state", - "community": 11, + "community": 17, "norm_label": "test_main_hands_off_with_live_state()" }, { @@ -23751,7 +24714,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L89", "id": "window_test_main_test_is_pid_alive_for_self", - "community": 11, + "community": 17, "norm_label": "test_is_pid_alive_for_self()" }, { @@ -23760,7 +24723,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L93", "id": "window_test_main_test_is_pid_alive_rejects_zero", - "community": 11, + "community": 17, "norm_label": "test_is_pid_alive_rejects_zero()" }, { @@ -23769,7 +24732,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L98", "id": "window_test_main_test_is_pid_alive_for_dead_pid", - "community": 11, + "community": 17, "norm_label": "test_is_pid_alive_for_dead_pid()" }, { @@ -23778,7 +24741,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L103", "id": "window_test_main_test_is_pid_alive_falls_through_to_default", - "community": 11, + "community": 17, "norm_label": "test_is_pid_alive_falls_through_to_default()" }, { @@ -23787,7 +24750,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L117", "id": "window_test_main_test_default_state_dir_is_used", - "community": 11, + "community": 17, "norm_label": "test_default_state_dir_is_used()" }, { @@ -23796,7 +24759,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L123", "id": "window_test_main_test_default_handoff_invokes_run_window", - "community": 11, + "community": 17, "norm_label": "test_default_handoff_invokes_run_window()" }, { @@ -23805,7 +24768,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L139", "id": "window_test_main_test_argv_is_ignored", - "community": 11, + "community": 17, "norm_label": "test_argv_is_ignored()" }, { @@ -23814,7 +24777,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L145", "id": "window_test_main_test_server_handshake_round_trip", - "community": 11, + "community": 17, "norm_label": "test_server_handshake_round_trip()" }, { @@ -23823,7 +24786,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L152", "id": "window_test_main_test_posix_is_pid_alive_handles_permission", - "community": 11, + "community": 17, "norm_label": "test_posix_is_pid_alive_handles_permission()" }, { @@ -23832,7 +24795,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L163", "id": "window_test_main_test_posix_is_pid_alive_handles_dead_pid", - "community": 11, + "community": 17, "norm_label": "test_posix_is_pid_alive_handles_dead_pid()" }, { @@ -23841,7 +24804,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L173", "id": "window_test_main_test_is_pid_alive_dispatches_to_windows", - "community": 11, + "community": 17, "norm_label": "test_is_pid_alive_dispatches_to_windows()" }, { @@ -23850,7 +24813,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L1", "id": "window_test_main_rationale_1", - "community": 11, + "community": 17, "norm_label": "tests for :mod:`exlab_wizard.window.main`. backend spec \u00a715.3.2." }, { @@ -23859,7 +24822,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L104", "id": "window_test_main_rationale_104", - "community": 11, + "community": 17, "norm_label": "default ``pid_alive`` lookup uses ``is_pid_alive``." }, { @@ -23868,7 +24831,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L153", "id": "window_test_main_rationale_153", - "community": 11, + "community": 17, "norm_label": "a foreign-uid live pid counts as alive." }, { @@ -23877,7 +24840,7 @@ "source_file": "tests/unit/window/test_main.py", "source_location": "L174", "id": "window_test_main_rationale_174", - "community": 11, + "community": 17, "norm_label": "when sys.platform is 'win32' the windows implementation runs." }, { @@ -23886,7 +24849,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L1", "id": "tests_unit_api_test_setup_py", - "community": 1, + "community": 95, "norm_label": "test_setup.py" }, { @@ -23895,7 +24858,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L28", "id": "api_test_setup_ready_config", - "community": 1, + "community": 95, "norm_label": "_ready_config()" }, { @@ -23913,7 +24876,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L71", "id": "api_test_setup_test_compute_setup_state_returns_ready_for_complete_config", - "community": 1, + "community": 95, "norm_label": "test_compute_setup_state_returns_ready_for_complete_config()" }, { @@ -23922,7 +24885,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L76", "id": "api_test_setup_test_compute_setup_state_no_config", - "community": 1, + "community": 95, "norm_label": "test_compute_setup_state_no_config()" }, { @@ -23931,7 +24894,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L81", "id": "api_test_setup_test_is_creation_blocked_treats_lims_unreachable_as_soft", - "community": 7, + "community": 331, "norm_label": "test_is_creation_blocked_treats_lims_unreachable_as_soft()" }, { @@ -23940,7 +24903,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L91", "id": "api_test_setup_test_compute_setup_state_returns_incomplete_no_nas_remote", - "community": 1, + "community": 95, "norm_label": "test_compute_setup_state_returns_incomplete_no_nas_remote()" }, { @@ -23949,7 +24912,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L101", "id": "api_test_setup_test_get_setup_status_reports_configure_rclone_remote", - "community": 1, + "community": 95, "norm_label": "test_get_setup_status_reports_configure_rclone_remote()" }, { @@ -23958,7 +24921,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L118", "id": "api_test_setup_test_setup_state_gate_returns_503_in_incomplete_states", - "community": 1, + "community": 95, "norm_label": "test_setup_state_gate_returns_503_in_incomplete_states()" }, { @@ -23967,7 +24930,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L182", "id": "api_test_setup_test_setup_state_gate_lims_unreachable_does_not_block", - "community": 1, + "community": 95, "norm_label": "test_setup_state_gate_lims_unreachable_does_not_block()" }, { @@ -23976,7 +24939,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L200", "id": "api_test_setup_test_setup_state_gate_no_op_without_dependencies", - "community": 1, + "community": 95, "norm_label": "test_setup_state_gate_no_op_without_dependencies()" }, { @@ -23985,7 +24948,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L213", "id": "api_test_setup_test_get_setup_status_ready", - "community": 1, + "community": 95, "norm_label": "test_get_setup_status_ready()" }, { @@ -23994,7 +24957,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L225", "id": "api_test_setup_test_get_setup_status_incomplete_paths", - "community": 1, + "community": 95, "norm_label": "test_get_setup_status_incomplete_paths()" }, { @@ -24003,7 +24966,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L238", "id": "api_test_setup_test_post_test_lims_invokes_probe", - "community": 1, + "community": 95, "norm_label": "test_post_test_lims_invokes_probe()" }, { @@ -24012,7 +24975,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L250", "id": "api_test_setup_test_post_test_lims_probe_raises_returns_reason", - "community": 1, + "community": 95, "norm_label": "test_post_test_lims_probe_raises_returns_reason()" }, { @@ -24021,7 +24984,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L263", "id": "api_test_setup_test_post_test_lims_without_probe_reports_not_wired", - "community": 1, + "community": 95, "norm_label": "test_post_test_lims_without_probe_reports_not_wired()" }, { @@ -24030,7 +24993,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L271", "id": "api_test_setup_test_post_test_equipment_requires_equipment_id", - "community": 1, + "community": 95, "norm_label": "test_post_test_equipment_requires_equipment_id()" }, { @@ -24039,7 +25002,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L284", "id": "api_test_setup_test_post_test_equipment_with_explicit_equipment_id", - "community": 1, + "community": 95, "norm_label": "test_post_test_equipment_with_explicit_equipment_id()" }, { @@ -24048,7 +25011,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L300", "id": "api_test_setup_test_post_test_equipment_unknown_id_returns_404", - "community": 1, + "community": 95, "norm_label": "test_post_test_equipment_unknown_id_returns_404()" }, { @@ -24057,7 +25020,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L312", "id": "api_test_setup_test_post_autostart_calls_toggle", - "community": 1, + "community": 95, "norm_label": "test_post_autostart_calls_toggle()" }, { @@ -24066,7 +25029,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L330", "id": "api_test_setup_test_post_autostart_without_toggle_echoes_state", - "community": 1, + "community": 95, "norm_label": "test_post_autostart_without_toggle_echoes_state()" }, { @@ -24075,7 +25038,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L1", "id": "api_test_setup_rationale_1", - "community": 1, + "community": 95, "norm_label": "unit tests for ``exlab_wizard.api.setup`` (gate + endpoints)." }, { @@ -24093,7 +25056,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L92", "id": "api_test_setup_rationale_92", - "community": 1, + "community": 95, "norm_label": "nas sync in use but the configured remote is absent from rclone.conf gates." }, { @@ -24102,7 +25065,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L102", "id": "api_test_setup_rationale_102", - "community": 1, + "community": 95, "norm_label": "when the nas remote is unavailable the status surfaces the rclone next-action." }, { @@ -24111,7 +25074,7 @@ "source_file": "tests/unit/api/test_setup.py", "source_location": "L119", "id": "api_test_setup_rationale_119", - "community": 1, + "community": 95, "norm_label": "each non-soft incomplete_* state returns a 503 with the right code." }, { @@ -24120,7 +25083,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L1", "id": "tests_unit_api_test_errors_py", - "community": 30, + "community": 31, "norm_label": "test_errors.py" }, { @@ -24129,7 +25092,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L33", "id": "api_test_errors_bare_request", - "community": 30, + "community": 31, "norm_label": "_bare_request()" }, { @@ -24138,7 +25101,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L45", "id": "api_test_errors_test_build_envelope_includes_required_fields", - "community": 30, + "community": 31, "norm_label": "test_build_envelope_includes_required_fields()" }, { @@ -24147,7 +25110,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L64", "id": "api_test_errors_test_build_envelope_drops_optional_fields_when_absent", - "community": 30, + "community": 31, "norm_label": "test_build_envelope_drops_optional_fields_when_absent()" }, { @@ -24156,7 +25119,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L70", "id": "api_test_errors_test_unknown_code_falls_back_to_internal_error", - "community": 30, + "community": 31, "norm_label": "test_unknown_code_falls_back_to_internal_error()" }, { @@ -24165,7 +25128,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L75", "id": "api_test_errors_test_extract_trace_id_uses_header_when_present", - "community": 30, + "community": 31, "norm_label": "test_extract_trace_id_uses_header_when_present()" }, { @@ -24174,7 +25137,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L87", "id": "api_test_errors_test_extract_trace_id_generates_when_missing", - "community": 30, + "community": 31, "norm_label": "test_extract_trace_id_generates_when_missing()" }, { @@ -24183,7 +25146,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L93", "id": "api_test_errors_test_error_response_sets_trace_id_header", - "community": 30, + "community": 31, "norm_label": "test_error_response_sets_trace_id_header()" }, { @@ -24192,7 +25155,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L105", "id": "api_test_errors_test_required_codes_are_registered", - "community": 30, + "community": 31, "norm_label": "test_required_codes_are_registered()" }, { @@ -24201,7 +25164,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L129", "id": "api_test_errors_test_register_exception_handlers_catches_exlab_validation", - "community": 30, + "community": 31, "norm_label": "test_register_exception_handlers_catches_exlab_validation()" }, { @@ -24210,7 +25173,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L147", "id": "api_test_errors_pydanticbody", - "community": 23, + "community": 15, "norm_label": "_pydanticbody" }, { @@ -24219,7 +25182,7 @@ "source_file": "", "source_location": "", "id": "basemodel", - "community": 7, + "community": 0, "norm_label": "basemodel" }, { @@ -24228,7 +25191,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L154", "id": "api_test_errors_test_register_exception_handlers_catches_pydantic_validation", - "community": 30, + "community": 31, "norm_label": "test_register_exception_handlers_catches_pydantic_validation()" }, { @@ -24237,7 +25200,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L170", "id": "api_test_errors_test_register_exception_handlers_catches_keyring_error", - "community": 30, + "community": 31, "norm_label": "test_register_exception_handlers_catches_keyring_error()" }, { @@ -24246,7 +25209,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L184", "id": "api_test_errors_test_register_exception_handlers_catches_schema_major_mismatch", - "community": 30, + "community": 31, "norm_label": "test_register_exception_handlers_catches_schema_major_mismatch()" }, { @@ -24255,7 +25218,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L199", "id": "api_test_errors_test_register_exception_handlers_catches_setup_incomplete", - "community": 30, + "community": 31, "norm_label": "test_register_exception_handlers_catches_setup_incomplete()" }, { @@ -24264,7 +25227,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L217", "id": "api_test_errors_test_register_exception_handlers_catches_config_error", - "community": 30, + "community": 31, "norm_label": "test_register_exception_handlers_catches_config_error()" }, { @@ -24273,7 +25236,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L231", "id": "api_test_errors_test_register_exception_handlers_catches_template_load_error", - "community": 30, + "community": 31, "norm_label": "test_register_exception_handlers_catches_template_load_error()" }, { @@ -24282,7 +25245,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L245", "id": "api_test_errors_test_register_exception_handlers_catches_template_core_field_redeclared", - "community": 30, + "community": 31, "norm_label": "test_register_exception_handlers_catches_template_core_field_redeclared()" }, { @@ -24291,7 +25254,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L259", "id": "api_test_errors_test_generic_handler_returns_internal_error", - "community": 30, + "community": 31, "norm_label": "test_generic_handler_returns_internal_error()" }, { @@ -24300,7 +25263,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L1", "id": "api_test_errors_rationale_1", - "community": 30, + "community": 31, "norm_label": "unit tests for the ``exlab_wizard.api.errors`` envelope helpers." }, { @@ -24309,7 +25272,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L34", "id": "api_test_errors_rationale_34", - "community": 30, + "community": 31, "norm_label": "build a minimal starlette request for handler tests." }, { @@ -24318,7 +25281,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L106", "id": "api_test_errors_rationale_106", - "community": 30, + "community": 31, "norm_label": "every code in \u00a74.6.3's table must be in :data:`error_codes`." }, { @@ -24327,7 +25290,7 @@ "source_file": "tests/unit/api/test_errors.py", "source_location": "L148", "id": "api_test_errors_rationale_148", - "community": 23, + "community": 15, "norm_label": "module-level body class so fastapi treats ``body: _pydanticbody`` as a json" }, { @@ -24336,7 +25299,7 @@ "source_file": "tests/unit/api/test_config_router.py", "source_location": "L1", "id": "tests_unit_api_test_config_router_py", - "community": 1, + "community": 94, "norm_label": "test_config_router.py" }, { @@ -24345,7 +25308,7 @@ "source_file": "tests/unit/api/test_config_router.py", "source_location": "L19", "id": "api_test_config_router_empty_config", - "community": 1, + "community": 94, "norm_label": "_empty_config()" }, { @@ -24354,7 +25317,7 @@ "source_file": "tests/unit/api/test_config_router.py", "source_location": "L23", "id": "api_test_config_router_ready_config", - "community": 1, + "community": 0, "norm_label": "_ready_config()" }, { @@ -24363,7 +25326,7 @@ "source_file": "tests/unit/api/test_config_router.py", "source_location": "L39", "id": "api_test_config_router_test_get_config_returns_loaded_config", - "community": 1, + "community": 94, "norm_label": "test_get_config_returns_loaded_config()" }, { @@ -24372,7 +25335,7 @@ "source_file": "tests/unit/api/test_config_router.py", "source_location": "L50", "id": "api_test_config_router_test_get_config_returns_default_when_none", - "community": 1, + "community": 94, "norm_label": "test_get_config_returns_default_when_none()" }, { @@ -24381,7 +25344,7 @@ "source_file": "tests/unit/api/test_config_router.py", "source_location": "L60", "id": "api_test_config_router_test_put_config_persists_and_reevaluates_state", - "community": 1, + "community": 94, "norm_label": "test_put_config_persists_and_reevaluates_state()" }, { @@ -24390,7 +25353,7 @@ "source_file": "tests/unit/api/test_config_router.py", "source_location": "L87", "id": "api_test_config_router_test_put_config_invalid_body_returns_422", - "community": 1, + "community": 94, "norm_label": "test_put_config_invalid_body_returns_422()" }, { @@ -24399,7 +25362,7 @@ "source_file": "tests/unit/api/test_config_router.py", "source_location": "L103", "id": "api_test_config_router_test_append_equipment_persists_and_re_evaluates_state", - "community": 1, + "community": 94, "norm_label": "test_append_equipment_persists_and_re_evaluates_state()" }, { @@ -24408,7 +25371,7 @@ "source_file": "tests/unit/api/test_config_router.py", "source_location": "L128", "id": "api_test_config_router_test_append_equipment_rejects_duplicate_id", - "community": 1, + "community": 94, "norm_label": "test_append_equipment_rejects_duplicate_id()" }, { @@ -24417,7 +25380,7 @@ "source_file": "tests/unit/api/test_config_router.py", "source_location": "L1", "id": "api_test_config_router_rationale_1", - "community": 1, + "community": 94, "norm_label": "unit tests for the ``/config`` router." }, { @@ -24426,7 +25389,7 @@ "source_file": "tests/unit/api/test_operations.py", "source_location": "L1", "id": "tests_unit_api_test_operations_py", - "community": 284, + "community": 278, "norm_label": "test_operations.py" }, { @@ -24435,7 +25398,7 @@ "source_file": "tests/unit/api/test_operations.py", "source_location": "L23", "id": "api_test_operations_ready_config", - "community": 284, + "community": 278, "norm_label": "_ready_config()" }, { @@ -24444,7 +25407,7 @@ "source_file": "tests/unit/api/test_operations.py", "source_location": "L40", "id": "api_test_operations_stubcontroller", - "community": 284, + "community": 278, "norm_label": "_stubcontroller" }, { @@ -24453,7 +25416,7 @@ "source_file": "tests/unit/api/test_operations.py", "source_location": "L41", "id": "api_test_operations_stubcontroller_init", - "community": 10, + "community": 278, "norm_label": ".__init__()" }, { @@ -24462,7 +25425,7 @@ "source_file": "tests/unit/api/test_operations.py", "source_location": "L45", "id": "api_test_operations_make_project_request", - "community": 284, + "community": 278, "norm_label": "_make_project_request()" }, { @@ -24471,7 +25434,7 @@ "source_file": "tests/unit/api/test_operations.py", "source_location": "L62", "id": "api_test_operations_test_get_operations_lists_in_flight_sessions", - "community": 284, + "community": 278, "norm_label": "test_get_operations_lists_in_flight_sessions()" }, { @@ -24480,7 +25443,7 @@ "source_file": "tests/unit/api/test_operations.py", "source_location": "L79", "id": "api_test_operations_test_get_operations_excludes_done_and_aborted", - "community": 284, + "community": 278, "norm_label": "test_get_operations_excludes_done_and_aborted()" }, { @@ -24489,7 +25452,7 @@ "source_file": "tests/unit/api/test_operations.py", "source_location": "L99", "id": "api_test_operations_test_get_operations_emits_plugin_name_when_input_required", - "community": 284, + "community": 278, "norm_label": "test_get_operations_emits_plugin_name_when_input_required()" }, { @@ -24498,7 +25461,7 @@ "source_file": "tests/unit/api/test_operations.py", "source_location": "L116", "id": "api_test_operations_test_get_operations_503_when_controller_missing", - "community": 284, + "community": 278, "norm_label": "test_get_operations_503_when_controller_missing()" }, { @@ -24507,7 +25470,7 @@ "source_file": "tests/unit/api/test_operations.py", "source_location": "L1", "id": "api_test_operations_rationale_1", - "community": 284, + "community": 278, "norm_label": "unit tests for the ``/operations`` router." }, { @@ -24516,7 +25479,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L1", "id": "tests_unit_api_test_sessions_py", - "community": 129, + "community": 135, "norm_label": "test_sessions.py" }, { @@ -24525,7 +25488,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L28", "id": "api_test_sessions_ready_config", - "community": 129, + "community": 135, "norm_label": "_ready_config()" }, { @@ -24534,7 +25497,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L47", "id": "api_test_sessions_stubcontroller", - "community": 129, + "community": 135, "norm_label": "_stubcontroller" }, { @@ -24543,7 +25506,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L50", "id": "api_test_sessions_stubcontroller_init", - "community": 129, + "community": 135, "norm_label": ".__init__()" }, { @@ -24552,7 +25515,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L56", "id": "api_test_sessions_stubcontroller_create_project", - "community": 9, + "community": 10, "norm_label": ".create_project()" }, { @@ -24561,7 +25524,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L68", "id": "api_test_sessions_stubcontroller_create_run", - "community": 9, + "community": 10, "norm_label": ".create_run()" }, { @@ -24570,7 +25533,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L80", "id": "api_test_sessions_stubcontroller_status", - "community": 129, + "community": 135, "norm_label": ".status()" }, { @@ -24579,7 +25542,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L91", "id": "api_test_sessions_stubcontroller_resume", - "community": 129, + "community": 135, "norm_label": ".resume()" }, { @@ -24588,7 +25551,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L95", "id": "api_test_sessions_stubcontroller_cancel", - "community": 129, + "community": 135, "norm_label": ".cancel()" }, { @@ -24597,7 +25560,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L102", "id": "api_test_sessions_stubcontroller_subscribe", - "community": 129, + "community": 135, "norm_label": ".subscribe()" }, { @@ -24606,7 +25569,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L115", "id": "api_test_sessions_test_create_session_project", - "community": 129, + "community": 135, "norm_label": "test_create_session_project()" }, { @@ -24615,7 +25578,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L144", "id": "api_test_sessions_test_create_session_run", - "community": 129, + "community": 135, "norm_label": "test_create_session_run()" }, { @@ -24624,7 +25587,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L168", "id": "api_test_sessions_test_get_session_returns_snapshot", - "community": 129, + "community": 135, "norm_label": "test_get_session_returns_snapshot()" }, { @@ -24633,7 +25596,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L193", "id": "api_test_sessions_test_get_session_404_for_unknown", - "community": 129, + "community": 135, "norm_label": "test_get_session_404_for_unknown()" }, { @@ -24642,7 +25605,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L204", "id": "api_test_sessions_test_post_resume_invokes_controller", - "community": 129, + "community": 135, "norm_label": "test_post_resume_invokes_controller()" }, { @@ -24651,7 +25614,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L223", "id": "api_test_sessions_test_post_cancel_invokes_controller", - "community": 129, + "community": 135, "norm_label": "test_post_cancel_invokes_controller()" }, { @@ -24660,7 +25623,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L238", "id": "api_test_sessions_test_post_cancel_404_for_unknown", - "community": 129, + "community": 135, "norm_label": "test_post_cancel_404_for_unknown()" }, { @@ -24669,7 +25632,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L247", "id": "api_test_sessions_test_post_resume_409_for_terminal_session", - "community": 129, + "community": 135, "norm_label": "test_post_resume_409_for_terminal_session()" }, { @@ -24678,7 +25641,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L262", "id": "api_test_sessions_test_websocket_streams_session_events", - "community": 129, + "community": 135, "norm_label": "test_websocket_streams_session_events()" }, { @@ -24687,7 +25650,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L283", "id": "api_test_sessions_test_websocket_unknown_session_closes", - "community": 129, + "community": 135, "norm_label": "test_websocket_unknown_session_closes()" }, { @@ -24696,7 +25659,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L295", "id": "api_test_sessions_make_request", - "community": 129, + "community": 135, "norm_label": "_make_request()" }, { @@ -24705,7 +25668,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L312", "id": "api_test_sessions_test_create_session_validation_error_returns_422", - "community": 129, + "community": 135, "norm_label": "test_create_session_validation_error_returns_422()" }, { @@ -24714,7 +25677,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L1", "id": "api_test_sessions_rationale_1", - "community": 129, + "community": 135, "norm_label": "unit tests for the ``/sessions`` router." }, { @@ -24723,7 +25686,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L48", "id": "api_test_sessions_rationale_48", - "community": 129, + "community": 135, "norm_label": "minimal in-memory controller for routing tests." }, { @@ -24732,7 +25695,7 @@ "source_file": "tests/unit/api/test_sessions.py", "source_location": "L313", "id": "api_test_sessions_rationale_313", - "community": 129, + "community": 135, "norm_label": "posting without ``kind`` discriminator must 422." }, { @@ -24741,7 +25704,7 @@ "source_file": "tests/unit/api/__init__.py", "source_location": "L1", "id": "tests_unit_api_init_py", - "community": 393, + "community": 401, "norm_label": "__init__.py" }, { @@ -24750,7 +25713,7 @@ "source_file": "src/exlab_wizard/api/__init__.py", "source_location": "L1", "id": "api_init_rationale_1", - "community": 393, + "community": 401, "norm_label": "http api package. backend spec \u00a74. public re-exports so callers (the launcher," }, { @@ -24759,7 +25722,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L1", "id": "tests_unit_api_test_browse_py", - "community": 1, + "community": 12, "norm_label": "test_browse.py" }, { @@ -24768,7 +25731,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L37", "id": "api_test_browse_config_with_local_root", - "community": 1, + "community": 12, "norm_label": "_config_with_local_root()" }, { @@ -24777,7 +25740,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L58", "id": "api_test_browse_write_creation_json", - "community": 1, + "community": 12, "norm_label": "_write_creation_json()" }, { @@ -24786,7 +25749,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L80", "id": "api_test_browse_test_get_tree_lists_equipment_and_projects", - "community": 1, + "community": 12, "norm_label": "test_get_tree_lists_equipment_and_projects()" }, { @@ -24795,7 +25758,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L111", "id": "api_test_browse_test_get_tree_returns_empty_when_no_equipment", - "community": 1, + "community": 94, "norm_label": "test_get_tree_returns_empty_when_no_equipment()" }, { @@ -24804,7 +25767,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L129", "id": "api_test_browse_test_get_run_returns_detail", - "community": 1, + "community": 12, "norm_label": "test_get_run_returns_detail()" }, { @@ -24813,7 +25776,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L148", "id": "api_test_browse_test_get_run_404_when_creation_missing", - "community": 1, + "community": 12, "norm_label": "test_get_run_404_when_creation_missing()" }, { @@ -24822,7 +25785,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L161", "id": "api_test_browse_test_get_tree_skips_unknown_dirs", - "community": 1, + "community": 12, "norm_label": "test_get_tree_skips_unknown_dirs()" }, { @@ -24831,7 +25794,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L179", "id": "api_test_browse_test_get_tree_includes_test_runs", - "community": 1, + "community": 12, "norm_label": "test_get_tree_includes_test_runs()" }, { @@ -24840,7 +25803,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L199", "id": "api_test_browse_test_get_run_returns_422_when_creation_json_malformed", - "community": 1, + "community": 12, "norm_label": "test_get_run_returns_422_when_creation_json_malformed()" }, { @@ -24849,7 +25812,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L220", "id": "api_test_browse_test_get_run_returns_none_readme_when_absent", - "community": 1, + "community": 12, "norm_label": "test_get_run_returns_none_readme_when_absent()" }, { @@ -24858,7 +25821,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L239", "id": "api_test_browse_test_get_folder_returns_immediate_contents", - "community": 1, + "community": 12, "norm_label": "test_get_folder_returns_immediate_contents()" }, { @@ -24867,7 +25830,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L260", "id": "api_test_browse_test_get_folder_404_on_vanished_path", - "community": 1, + "community": 12, "norm_label": "test_get_folder_404_on_vanished_path()" }, { @@ -24876,7 +25839,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L269", "id": "api_test_browse_test_get_tree_includes_sync_mode_on_equipment", - "community": 1, + "community": 12, "norm_label": "test_get_tree_includes_sync_mode_on_equipment()" }, { @@ -24885,7 +25848,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L281", "id": "api_test_browse_test_get_folder_rejects_path_outside_configured_roots", - "community": 1, + "community": 12, "norm_label": "test_get_folder_rejects_path_outside_configured_roots()" }, { @@ -24903,7 +25866,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L306", "id": "api_test_browse_stubjobrow_init", - "community": 174, + "community": 3, "norm_label": ".__init__()" }, { @@ -24939,7 +25902,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L331", "id": "api_test_browse_test_get_run_log_returns_queue_derived_history", - "community": 1, + "community": 12, "norm_label": "test_get_run_log_returns_queue_derived_history()" }, { @@ -24948,7 +25911,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L353", "id": "api_test_browse_test_get_run_log_forwards_failure_extras_in_payload", - "community": 1, + "community": 12, "norm_label": "test_get_run_log_forwards_failure_extras_in_payload()" }, { @@ -24957,7 +25920,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L385", "id": "api_test_browse_test_get_run_log_empty_history_when_no_queue_job", - "community": 1, + "community": 12, "norm_label": "test_get_run_log_empty_history_when_no_queue_job()" }, { @@ -24966,7 +25929,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L402", "id": "api_test_browse_test_get_run_log_404_when_run_missing", - "community": 1, + "community": 12, "norm_label": "test_get_run_log_404_when_run_missing()" }, { @@ -24975,7 +25938,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L417", "id": "api_test_browse_test_build_hierarchy_dict_returns_empty_when_config_missing", - "community": 1, + "community": 12, "norm_label": "test_build_hierarchy_dict_returns_empty_when_config_missing()" }, { @@ -24984,7 +25947,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L423", "id": "api_test_browse_test_build_hierarchy_dict_includes_owned_and_relay_equipment", - "community": 1, + "community": 12, "norm_label": "test_build_hierarchy_dict_includes_owned_and_relay_equipment()" }, { @@ -24993,7 +25956,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L458", "id": "api_test_browse_test_scan_folder_sync_lists_immediate_contents", - "community": 1, + "community": 12, "norm_label": "test_scan_folder_sync_lists_immediate_contents()" }, { @@ -25002,7 +25965,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L477", "id": "api_test_browse_test_scan_folder_sync_raises_404_for_missing_path", - "community": 1, + "community": 12, "norm_label": "test_scan_folder_sync_raises_404_for_missing_path()" }, { @@ -25011,7 +25974,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L498", "id": "api_test_browse_seed_run_with_creation", - "community": 1, + "community": 12, "norm_label": "_seed_run_with_creation()" }, { @@ -25020,7 +25983,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L507", "id": "api_test_browse_write_sync_state", - "community": 1, + "community": 12, "norm_label": "_write_sync_state()" }, { @@ -25029,7 +25992,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L529", "id": "api_test_browse_test_per_file_status_acquiring_when_not_in_sync_state", - "community": 1, + "community": 12, "norm_label": "test_per_file_status_acquiring_when_not_in_sync_state()" }, { @@ -25038,7 +26001,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L542", "id": "api_test_browse_test_per_file_status_syncing_when_unverified", - "community": 1, + "community": 12, "norm_label": "test_per_file_status_syncing_when_unverified()" }, { @@ -25047,7 +26010,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L556", "id": "api_test_browse_test_per_file_status_synced_when_verified_and_on_disk", - "community": 1, + "community": 12, "norm_label": "test_per_file_status_synced_when_verified_and_on_disk()" }, { @@ -25056,7 +26019,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L573", "id": "api_test_browse_test_per_file_status_on_nas_tombstone_for_cleared_run", - "community": 1, + "community": 12, "norm_label": "test_per_file_status_on_nas_tombstone_for_cleared_run()" }, { @@ -25065,7 +26028,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L596", "id": "api_test_browse_test_per_file_status_keep_local_flag_carried", - "community": 1, + "community": 12, "norm_label": "test_per_file_status_keep_local_flag_carried()" }, { @@ -25074,7 +26037,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L620", "id": "api_test_browse_test_build_run_node_rollup_from_sync_state", - "community": 1, + "community": 12, "norm_label": "test_build_run_node_rollup_from_sync_state()" }, { @@ -25083,7 +26046,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L636", "id": "api_test_browse_test_build_run_node_rollup_cleared", - "community": 1, + "community": 12, "norm_label": "test_build_run_node_rollup_cleared()" }, { @@ -25092,7 +26055,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L1", "id": "api_test_browse_rationale_1", - "community": 1, + "community": 12, "norm_label": "unit tests for the ``/tree`` and ``/run/{path}`` browse endpoints." }, { @@ -25101,7 +26064,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L112", "id": "api_test_browse_rationale_112", - "community": 1, + "community": 94, "norm_label": "when config has no equipment the setup gate blocks /tree." }, { @@ -25110,7 +26073,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L180", "id": "api_test_browse_rationale_180", - "community": 1, + "community": 12, "norm_label": "``testruns`` directory under a project surfaces as ``test_runs`` list." }, { @@ -25119,7 +26082,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L200", "id": "api_test_browse_rationale_200", - "community": 1, + "community": 12, "norm_label": "a creation.json that is present but malformed surfaces as 422." }, { @@ -25128,7 +26091,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L221", "id": "api_test_browse_rationale_221", - "community": 1, + "community": 12, "norm_label": "run with creation.json but no readme.md returns readme: null." }, { @@ -25137,7 +26100,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L282", "id": "api_test_browse_rationale_282", - "community": 1, + "community": 12, "norm_label": "path-confinement guard: only the configured local_root / staging_root / temp" }, { @@ -25164,7 +26127,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L332", "id": "api_test_browse_rationale_332", - "community": 1, + "community": 12, "norm_label": "a staged run's sync-queue job state is surfaced as the log." }, { @@ -25173,7 +26136,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L354", "id": "api_test_browse_rationale_354", - "community": 1, + "community": 12, "norm_label": "a failed job row's ``last_error`` / ``attempts`` / ``verify_passes`` / ``nas" }, { @@ -25182,7 +26145,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L386", "id": "api_test_browse_rationale_386", - "community": 1, + "community": 12, "norm_label": "a run with no sync-queue job returns an empty history + 'none' state." }, { @@ -25191,7 +26154,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L403", "id": "api_test_browse_rationale_403", - "community": 1, + "community": 12, "norm_label": "a run directory that does not exist returns 404 ``session_not_found``." }, { @@ -25200,7 +26163,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L424", "id": "api_test_browse_rationale_424", - "community": 1, + "community": 12, "norm_label": "the nested dict surfaces both owned and received-equipment roots with their" }, { @@ -25209,7 +26172,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L459", "id": "api_test_browse_rationale_459", - "community": 1, + "community": 12, "norm_label": "``scan_folder_sync`` shares the same shape as the route handler." }, { @@ -25218,7 +26181,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L478", "id": "api_test_browse_rationale_478", - "community": 1, + "community": 12, "norm_label": "a missing folder raises the same 404 httpexception the route does." }, { @@ -25227,7 +26190,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L499", "id": "api_test_browse_rationale_499", - "community": 1, + "community": 12, "norm_label": "create a run dir with a creation.json so it is recognised as a run." }, { @@ -25236,7 +26199,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L508", "id": "api_test_browse_rationale_508", - "community": 1, + "community": 12, "norm_label": "write a sync_state.json with the given per-file records." }, { @@ -25245,7 +26208,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L530", "id": "api_test_browse_rationale_530", - "community": 1, + "community": 12, "norm_label": "a file on disk but absent from sync_state.json reads as ``acquiring``." }, { @@ -25254,7 +26217,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L543", "id": "api_test_browse_rationale_543", - "community": 1, + "community": 12, "norm_label": "a recorded file with verified_at null + on disk reads as ``syncing``." }, { @@ -25263,7 +26226,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L557", "id": "api_test_browse_rationale_557", - "community": 1, + "community": 12, "norm_label": "a recorded+verified file still on disk reads as ``synced``." }, { @@ -25272,7 +26235,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L574", "id": "api_test_browse_rationale_574", - "community": 1, + "community": 12, "norm_label": "a cleared run lists verified-but-absent files as ``on_nas`` tombstones." }, { @@ -25281,7 +26244,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L597", "id": "api_test_browse_rationale_597", - "community": 1, + "community": 12, "norm_label": "a keep_local file carries the flag alongside its sync status." }, { @@ -25290,7 +26253,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L621", "id": "api_test_browse_rationale_621", - "community": 1, + "community": 12, "norm_label": "the tree run-node sync_status is the sync_state.json rollup, not creation.json." }, { @@ -25299,7 +26262,7 @@ "source_file": "tests/unit/api/test_browse.py", "source_location": "L637", "id": "api_test_browse_rationale_637", - "community": 1, + "community": 12, "norm_label": "a cleared run rolls up to ``cleared`` in the tree." }, { @@ -25308,7 +26271,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L1", "id": "tests_unit_api_test_schemas_py", - "community": 34, + "community": 42, "norm_label": "test_schemas.py" }, { @@ -25317,7 +26280,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L53", "id": "api_test_schemas_minimal_creation_json", - "community": 34, + "community": 42, "norm_label": "_minimal_creation_json()" }, { @@ -25326,7 +26289,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L87", "id": "api_test_schemas_test_creation_json_round_trips_through_msgspec", - "community": 34, + "community": 42, "norm_label": "test_creation_json_round_trips_through_msgspec()" }, { @@ -25335,7 +26298,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L94", "id": "api_test_schemas_test_creation_json_round_trip_preserves_lims_project_subfields", - "community": 34, + "community": 42, "norm_label": "test_creation_json_round_trip_preserves_lims_project_subfields()" }, { @@ -25344,7 +26307,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L110", "id": "api_test_schemas_test_creation_json_round_trip_preserves_plugins_applied_with_isolation", - "community": 34, + "community": 42, "norm_label": "test_creation_json_round_trip_preserves_plugins_applied_with_isolation()" }, { @@ -25353,7 +26316,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L131", "id": "api_test_schemas_test_creation_json_round_trip_preserves_orchestrator_block", - "community": 34, + "community": 42, "norm_label": "test_creation_json_round_trip_preserves_orchestrator_block()" }, { @@ -25362,7 +26325,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L144", "id": "api_test_schemas_test_creation_json_orchestrator_block_omitted_when_none", - "community": 34, + "community": 42, "norm_label": "test_creation_json_orchestrator_block_omitted_when_none()" }, { @@ -25371,7 +26334,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L151", "id": "api_test_schemas_test_orchestrator_block_carries_relay_discovery_field", - "community": 34, + "community": 42, "norm_label": "test_orchestrator_block_carries_relay_discovery_field()" }, { @@ -25380,7 +26343,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L170", "id": "api_test_schemas_test_orchestrator_block_relay_field_defaults_to_none", - "community": 34, + "community": 42, "norm_label": "test_orchestrator_block_relay_field_defaults_to_none()" }, { @@ -25389,7 +26352,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L183", "id": "api_test_schemas_test_creation_json_default_sync_status_is_pending", - "community": 34, + "community": 42, "norm_label": "test_creation_json_default_sync_status_is_pending()" }, { @@ -25398,7 +26361,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L188", "id": "api_test_schemas_test_creation_json_default_validation_overrides_is_empty_list", - "community": 34, + "community": 42, "norm_label": "test_creation_json_default_validation_overrides_is_empty_list()" }, { @@ -25407,7 +26370,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L198", "id": "api_test_schemas_test_creation_json_missing_required_field_raises", - "community": 34, + "community": 42, "norm_label": "test_creation_json_missing_required_field_raises()" }, { @@ -25416,7 +26379,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L206", "id": "api_test_schemas_test_creation_json_missing_lims_project_raises", - "community": 34, + "community": 42, "norm_label": "test_creation_json_missing_lims_project_raises()" }, { @@ -25425,7 +26388,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L232", "id": "api_test_schemas_test_creation_json_unknown_field_is_ignored_on_decode", - "community": 34, + "community": 42, "norm_label": "test_creation_json_unknown_field_is_ignored_on_decode()" }, { @@ -25434,7 +26397,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L268", "id": "api_test_schemas_test_override_entry_to_dict_emits_revoked_field_explicitly", - "community": 128, + "community": 152, "norm_label": "test_override_entry_to_dict_emits_revoked_field_explicitly()" }, { @@ -25443,7 +26406,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L283", "id": "api_test_schemas_test_tombstone_entry_to_dict_emits_revoked_field_explicitly", - "community": 128, + "community": 152, "norm_label": "test_tombstone_entry_to_dict_emits_revoked_field_explicitly()" }, { @@ -25452,7 +26415,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L296", "id": "api_test_schemas_test_parse_validation_override_entry_returns_override_for_revoked_false", - "community": 34, + "community": 42, "norm_label": "test_parse_validation_override_entry_returns_override_for_revoked_false()" }, { @@ -25461,7 +26424,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L311", "id": "api_test_schemas_test_parse_validation_override_entry_returns_tombstone_for_revoked_true", - "community": 34, + "community": 42, "norm_label": "test_parse_validation_override_entry_returns_tombstone_for_revoked_true()" }, { @@ -25470,7 +26433,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L326", "id": "api_test_schemas_test_creation_json_decodes_validation_overrides_as_list_of_dict", - "community": 34, + "community": 42, "norm_label": "test_creation_json_decodes_validation_overrides_as_list_of_dict()" }, { @@ -25479,7 +26442,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L363", "id": "api_test_schemas_test_readme_fields_json_round_trips", - "community": 180, + "community": 224, "norm_label": "test_readme_fields_json_round_trips()" }, { @@ -25488,7 +26451,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L379", "id": "api_test_schemas_test_readme_fields_json_optional_fields_default_to_empty", - "community": 180, + "community": 224, "norm_label": "test_readme_fields_json_optional_fields_default_to_empty()" }, { @@ -25497,7 +26460,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L391", "id": "api_test_schemas_test_readme_fields_json_round_trip_preserves_custom_fields", - "community": 180, + "community": 224, "norm_label": "test_readme_fields_json_round_trip_preserves_custom_fields()" }, { @@ -25506,7 +26469,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L410", "id": "api_test_schemas_test_readme_fields_json_missing_required_field_raises", - "community": 34, + "community": 42, "norm_label": "test_readme_fields_json_missing_required_field_raises()" }, { @@ -25515,7 +26478,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L422", "id": "api_test_schemas_test_equipment_json_round_trips", - "community": 34, + "community": 42, "norm_label": "test_equipment_json_round_trips()" }, { @@ -25524,7 +26487,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L437", "id": "api_test_schemas_test_equipment_json_missing_required_field_raises", - "community": 34, + "community": 42, "norm_label": "test_equipment_json_missing_required_field_raises()" }, { @@ -25533,7 +26496,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L449", "id": "api_test_schemas_test_test_runs_json_round_trips", - "community": 34, + "community": 42, "norm_label": "test_test_runs_json_round_trips()" }, { @@ -25542,7 +26505,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L462", "id": "api_test_schemas_test_test_runs_json_missing_required_field_raises", - "community": 34, + "community": 42, "norm_label": "test_test_runs_json_missing_required_field_raises()" }, { @@ -25551,7 +26514,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L478", "id": "api_test_schemas_creation_json_payload", - "community": 34, + "community": 42, "norm_label": "_creation_json_payload()" }, { @@ -25560,7 +26523,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L556", "id": "api_test_schemas_test_strenum_field_round_trip_preserves_wire_format", - "community": 34, + "community": 42, "norm_label": "test_strenum_field_round_trip_preserves_wire_format()" }, { @@ -25569,7 +26532,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L601", "id": "api_test_schemas_test_lims_project_block_source_round_trip", - "community": 34, + "community": 42, "norm_label": "test_lims_project_block_source_round_trip()" }, { @@ -25578,7 +26541,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L633", "id": "api_test_schemas_test_template_block_run_scope_round_trip", - "community": 34, + "community": 42, "norm_label": "test_template_block_run_scope_round_trip()" }, { @@ -25587,7 +26550,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L659", "id": "api_test_schemas_test_plugin_applied_status_round_trip", - "community": 34, + "community": 42, "norm_label": "test_plugin_applied_status_round_trip()" }, { @@ -25596,7 +26559,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L675", "id": "api_test_schemas_test_test_runs_json_default_run_kind_serializes_as_test", - "community": 34, + "community": 42, "norm_label": "test_test_runs_json_default_run_kind_serializes_as_test()" }, { @@ -25605,7 +26568,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L692", "id": "api_test_schemas_test_test_runs_json_explicit_run_kind_round_trips", - "community": 34, + "community": 42, "norm_label": "test_test_runs_json_explicit_run_kind_round_trips()" }, { @@ -25614,7 +26577,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L706", "id": "api_test_schemas_test_creation_json_default_sync_status_omitted_on_encode", - "community": 34, + "community": 42, "norm_label": "test_creation_json_default_sync_status_omitted_on_encode()" }, { @@ -25623,7 +26586,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L716", "id": "api_test_schemas_test_lims_project_block_default_source_omitted_on_encode", - "community": 34, + "community": 42, "norm_label": "test_lims_project_block_default_source_omitted_on_encode()" }, { @@ -25632,7 +26595,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L747", "id": "api_test_schemas_test_lims_project_status_round_trip", - "community": 34, + "community": 42, "norm_label": "test_lims_project_status_round_trip()" }, { @@ -25641,7 +26604,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L1", "id": "api_test_schemas_rationale_1", - "community": 34, + "community": 42, "norm_label": "tests for the msgspec.struct cache-file types in ``exlab_wizard.api.schemas``." }, { @@ -25650,7 +26613,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L54", "id": "api_test_schemas_rationale_54", - "community": 34, + "community": 42, "norm_label": "build a minimal valid creationjson at the current version for round-trip tests." }, { @@ -25659,7 +26622,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L145", "id": "api_test_schemas_rationale_145", - "community": 34, + "community": 42, "norm_label": "spec \u00a711.3: orchestrator is *absent* (not null) in single-equipment mode." }, { @@ -25668,7 +26631,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L152", "id": "api_test_schemas_rationale_152", - "community": 34, + "community": 42, "norm_label": "redesign \u00a73.3: pushed creation.json carries the equipment label so the orche" }, { @@ -25677,7 +26640,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L171", "id": "api_test_schemas_rationale_171", - "community": 34, + "community": 42, "norm_label": "older creation.json files (no relay field) decode cleanly." }, { @@ -25686,7 +26649,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L207", "id": "api_test_schemas_rationale_207", - "community": 34, + "community": 42, "norm_label": "``lims_project`` is required at the project- and run-levels for v1.8." }, { @@ -25695,7 +26658,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L233", "id": "api_test_schemas_rationale_233", - "community": 34, + "community": 42, "norm_label": "forbid_unknown_fields=false -- unknown fields are silently dropped at decode" }, { @@ -25704,7 +26667,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L269", "id": "api_test_schemas_rationale_269", - "community": 128, + "community": 152, "norm_label": "spec \u00a711.3: ``revoked`` is required on every entry. ``omit_defaults`` would" }, { @@ -25713,7 +26676,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L479", "id": "api_test_schemas_rationale_479", - "community": 34, + "community": 42, "norm_label": "build a minimal valid creation.json json document for round-trip tests." }, { @@ -25722,7 +26685,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L563", "id": "api_test_schemas_rationale_563", - "community": 34, + "community": 42, "norm_label": "decode an old-format json document (bare string at ``field``) into the typed" }, { @@ -25731,7 +26694,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L676", "id": "api_test_schemas_rationale_676", - "community": 34, + "community": 42, "norm_label": "the ``run_kind`` default switched from bare ``\"test\"`` to ``runkind.test``;" }, { @@ -25740,7 +26703,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L707", "id": "api_test_schemas_rationale_707", - "community": 34, + "community": 42, "norm_label": "``syncstatus.pending`` is the declared default; ``omit_defaults=true`` drops" }, { @@ -25749,7 +26712,7 @@ "source_file": "tests/unit/api/test_schemas.py", "source_location": "L717", "id": "api_test_schemas_rationale_717", - "community": 34, + "community": 42, "norm_label": "``limsprojectsource.live`` is the declared default; ``omit_defaults=true`` d" }, { @@ -25758,7 +26721,7 @@ "source_file": "tests/unit/api/test_health.py", "source_location": "L1", "id": "tests_unit_api_test_health_py", - "community": 1, + "community": 136, "norm_label": "test_health.py" }, { @@ -25767,7 +26730,7 @@ "source_file": "tests/unit/api/test_health.py", "source_location": "L21", "id": "api_test_health_ready_config", - "community": 1, + "community": 136, "norm_label": "_ready_config()" }, { @@ -25776,7 +26739,7 @@ "source_file": "tests/unit/api/test_health.py", "source_location": "L38", "id": "api_test_health_test_health_endpoint_status_ok_with_no_deps", - "community": 1, + "community": 136, "norm_label": "test_health_endpoint_status_ok_with_no_deps()" }, { @@ -25785,7 +26748,7 @@ "source_file": "tests/unit/api/test_health.py", "source_location": "L50", "id": "api_test_health_test_health_endpoint_warn_when_lims_unreachable", - "community": 1, + "community": 136, "norm_label": "test_health_endpoint_warn_when_lims_unreachable()" }, { @@ -25794,7 +26757,7 @@ "source_file": "tests/unit/api/test_health.py", "source_location": "L59", "id": "api_test_health_test_health_components_pluck_snapshots", - "community": 1, + "community": 136, "norm_label": "test_health_components_pluck_snapshots()" }, { @@ -25803,7 +26766,7 @@ "source_file": "tests/unit/api/test_health.py", "source_location": "L75", "id": "api_test_health_test_top_level_status_aggregates", - "community": 212, + "community": 136, "norm_label": "test_top_level_status_aggregates()" }, { @@ -25812,7 +26775,7 @@ "source_file": "tests/unit/api/test_health.py", "source_location": "L81", "id": "api_test_health_test_component_rollup_handles_none_deps", - "community": 212, + "community": 136, "norm_label": "test_component_rollup_handles_none_deps()" }, { @@ -25821,7 +26784,7 @@ "source_file": "tests/unit/api/test_health.py", "source_location": "L86", "id": "api_test_health_test_health_with_validator_last_audit", - "community": 1, + "community": 136, "norm_label": "test_health_with_validator_last_audit()" }, { @@ -25830,7 +26793,7 @@ "source_file": "tests/unit/api/test_health.py", "source_location": "L94", "id": "api_test_health_test_health_nas_sync_snapshot_failure_marked_warn", - "community": 1, + "community": 136, "norm_label": "test_health_nas_sync_snapshot_failure_marked_warn()" }, { @@ -25839,7 +26802,7 @@ "source_file": "tests/unit/api/test_health.py", "source_location": "L1", "id": "api_test_health_rationale_1", - "community": 1, + "community": 136, "norm_label": "unit tests for ``exlab_wizard.api.health``." }, { @@ -25848,7 +26811,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L1", "id": "tests_unit_api_test_staging_router_py", - "community": 5, + "community": 35, "norm_label": "test_staging_router.py" }, { @@ -25893,7 +26856,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L51", "id": "api_test_staging_router_make_config", - "community": 5, + "community": 35, "norm_label": "_make_config()" }, { @@ -25902,7 +26865,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L70", "id": "api_test_staging_router_seed_run", - "community": 5, + "community": 35, "norm_label": "_seed_run()" }, { @@ -25920,7 +26883,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L120", "id": "api_test_staging_router_seed_real_run", - "community": 5, + "community": 35, "norm_label": "_seed_real_run()" }, { @@ -25929,7 +26892,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L133", "id": "api_test_staging_router_mark_synced", - "community": 5, + "community": 35, "norm_label": "_mark_synced()" }, { @@ -25938,7 +26901,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L148", "id": "api_test_staging_router_test_get_staging_returns_empty_when_staging_root_unset", - "community": 5, + "community": 35, "norm_label": "test_get_staging_returns_empty_when_staging_root_unset()" }, { @@ -25947,7 +26910,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L158", "id": "api_test_staging_router_test_force_sync_returns_no_503_when_run_missing", - "community": 5, + "community": 35, "norm_label": "test_force_sync_returns_no_503_when_run_missing()" }, { @@ -25956,7 +26919,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L167", "id": "api_test_staging_router_test_clear_returns_no_503_when_run_missing", - "community": 5, + "community": 35, "norm_label": "test_clear_returns_no_503_when_run_missing()" }, { @@ -25965,7 +26928,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L181", "id": "api_test_staging_router_test_get_staging_returns_run_rows", - "community": 5, + "community": 35, "norm_label": "test_get_staging_returns_run_rows()" }, { @@ -25974,7 +26937,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L201", "id": "api_test_staging_router_test_get_staging_derives_current_state_from_sync_state_rollup", - "community": 5, + "community": 35, "norm_label": "test_get_staging_derives_current_state_from_sync_state_rollup()" }, { @@ -25983,7 +26946,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L212", "id": "api_test_staging_router_test_get_staging_returns_empty_runs_for_missing_root", - "community": 5, + "community": 35, "norm_label": "test_get_staging_returns_empty_runs_for_missing_root()" }, { @@ -25992,7 +26955,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L227", "id": "api_test_staging_router_test_force_sync_invokes_nas_sync_enqueue", - "community": 5, + "community": 35, "norm_label": "test_force_sync_invokes_nas_sync_enqueue()" }, { @@ -26001,7 +26964,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L242", "id": "api_test_staging_router_test_force_sync_returns_503_when_nas_sync_unwired", - "community": 5, + "community": 35, "norm_label": "test_force_sync_returns_503_when_nas_sync_unwired()" }, { @@ -26010,7 +26973,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L256", "id": "api_test_staging_router_test_clear_endpoint_deletes_synced_run", - "community": 5, + "community": 35, "norm_label": "test_clear_endpoint_deletes_synced_run()" }, { @@ -26019,7 +26982,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L277", "id": "api_test_staging_router_test_clear_endpoint_rejects_non_synced_run", - "community": 5, + "community": 35, "norm_label": "test_clear_endpoint_rejects_non_synced_run()" }, { @@ -26028,7 +26991,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L289", "id": "api_test_staging_router_test_clear_endpoint_idempotent_for_missing_run", - "community": 5, + "community": 35, "norm_label": "test_clear_endpoint_idempotent_for_missing_run()" }, { @@ -26037,7 +27000,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L307", "id": "api_test_staging_router_test_clear_verified_endpoint_clears_only_synced_runs", - "community": 5, + "community": 35, "norm_label": "test_clear_verified_endpoint_clears_only_synced_runs()" }, { @@ -26046,7 +27009,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L333", "id": "api_test_staging_router_test_clear_verified_endpoint_returns_empty_when_no_verified_runs", - "community": 5, + "community": 35, "norm_label": "test_clear_verified_endpoint_returns_empty_when_no_verified_runs()" }, { @@ -26055,7 +27018,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L344", "id": "api_test_staging_router_test_clear_verified_endpoint_returns_503_when_config_unwired", - "community": 1, + "community": 94, "norm_label": "test_clear_verified_endpoint_returns_503_when_config_unwired()" }, { @@ -26064,7 +27027,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L359", "id": "api_test_staging_router_test_keep_local_toggles_sync_state", - "community": 5, + "community": 35, "norm_label": "test_keep_local_toggles_sync_state()" }, { @@ -26073,7 +27036,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L382", "id": "api_test_staging_router_test_keep_local_toggle_off_round_trips", - "community": 5, + "community": 35, "norm_label": "test_keep_local_toggle_off_round_trips()" }, { @@ -26082,7 +27045,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L400", "id": "api_test_staging_router_test_keep_local_returns_503_when_writer_unwired", - "community": 5, + "community": 35, "norm_label": "test_keep_local_returns_503_when_writer_unwired()" }, { @@ -26091,7 +27054,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L414", "id": "api_test_staging_router_test_keep_local_returns_503_when_config_unwired", - "community": 1, + "community": 94, "norm_label": "test_keep_local_returns_503_when_config_unwired()" }, { @@ -26100,7 +27063,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L426", "id": "api_test_staging_router_test_keep_local_rejects_extra_body_fields", - "community": 5, + "community": 35, "norm_label": "test_keep_local_rejects_extra_body_fields()" }, { @@ -26109,7 +27072,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L440", "id": "api_test_staging_router_test_keep_local_returns_404_for_path_outside_allowed_roots", - "community": 5, + "community": 35, "norm_label": "test_keep_local_returns_404_for_path_outside_allowed_roots()" }, { @@ -26118,7 +27081,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L461", "id": "api_test_staging_router_test_keep_local_returns_404_when_run_has_no_creation_json", - "community": 5, + "community": 35, "norm_label": "test_keep_local_returns_404_when_run_has_no_creation_json()" }, { @@ -26127,7 +27090,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L479", "id": "api_test_staging_router_test_keep_local_creates_sync_state_when_cache_dir_absent", - "community": 5, + "community": 35, "norm_label": "test_keep_local_creates_sync_state_when_cache_dir_absent()" }, { @@ -26136,7 +27099,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L1", "id": "api_test_staging_router_rationale_1", - "community": 5, + "community": 35, "norm_label": "unit tests for the ``/staging`` router. backend spec \u00a713.7, \u00a713.8. the operator" }, { @@ -26163,7 +27126,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L127", "id": "api_test_staging_router_rationale_127", - "community": 5, + "community": 35, "norm_label": "seed a run dir that carries a ``creation.json`` -- a real run." }, { @@ -26172,7 +27135,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L134", "id": "api_test_staging_router_rationale_134", - "community": 5, + "community": 35, "norm_label": "write a fully-verified ``sync_state.json`` so the run rolls up to ``synced``." }, { @@ -26181,7 +27144,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L290", "id": "api_test_staging_router_rationale_290", - "community": 5, + "community": 35, "norm_label": "a run with no queue job and no directory clears to zeros." }, { @@ -26190,7 +27153,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L308", "id": "api_test_staging_router_rationale_308", - "community": 5, + "community": 35, "norm_label": "the bulk endpoint clears every fully-``synced`` run and reports paths." }, { @@ -26199,7 +27162,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L334", "id": "api_test_staging_router_rationale_334", - "community": 5, + "community": 35, "norm_label": "no verified rows -> empty cleared_paths, no error." }, { @@ -26208,7 +27171,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L345", "id": "api_test_staging_router_rationale_345", - "community": 1, + "community": 94, "norm_label": "a deps without a config raises the standard 503." }, { @@ -26217,7 +27180,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L360", "id": "api_test_staging_router_rationale_360", - "community": 5, + "community": 35, "norm_label": "the endpoint flips ``keep_local`` in the run's ``sync_state.json``." }, { @@ -26226,7 +27189,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L383", "id": "api_test_staging_router_rationale_383", - "community": 5, + "community": 35, "norm_label": "setting ``keep_local`` false after true clears the flag on disk." }, { @@ -26235,7 +27198,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L401", "id": "api_test_staging_router_rationale_401", - "community": 5, + "community": 35, "norm_label": "a deps without a ``sync_state_writer`` raises the standard 503." }, { @@ -26244,7 +27207,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L415", "id": "api_test_staging_router_rationale_415", - "community": 1, + "community": 94, "norm_label": "a deps without a config raises the standard 503." }, { @@ -26253,7 +27216,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L427", "id": "api_test_staging_router_rationale_427", - "community": 5, + "community": 35, "norm_label": "the request model forbids unknown fields." }, { @@ -26262,7 +27225,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L441", "id": "api_test_staging_router_rationale_441", - "community": 5, + "community": 35, "norm_label": "a path outside the configured roots is rejected before any write. operator-" }, { @@ -26271,7 +27234,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L462", "id": "api_test_staging_router_rationale_462", - "community": 5, + "community": 35, "norm_label": "a dir under an allowed root but without a creation.json is not a run." }, { @@ -26280,7 +27243,7 @@ "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L480", "id": "api_test_staging_router_rationale_480", - "community": 5, + "community": 35, "norm_label": "the writer mkdir's the .exlab-wizard/ dir -- a real run with only a creation" }, { @@ -26289,7 +27252,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L1", "id": "tests_unit_api_test_events_py", - "community": 16, + "community": 64, "norm_label": "test_events.py" }, { @@ -26298,7 +27261,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L24", "id": "api_test_events_test_phase_event_round_trip", - "community": 16, + "community": 64, "norm_label": "test_phase_event_round_trip()" }, { @@ -26307,7 +27270,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L34", "id": "api_test_events_test_progress_event_includes_kind", - "community": 16, + "community": 64, "norm_label": "test_progress_event_includes_kind()" }, { @@ -26316,7 +27279,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L41", "id": "api_test_events_test_input_required_event_carries_fields", - "community": 16, + "community": 64, "norm_label": "test_input_required_event_carries_fields()" }, { @@ -26325,7 +27288,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L52", "id": "api_test_events_test_warning_event_serializes", - "community": 16, + "community": 64, "norm_label": "test_warning_event_serializes()" }, { @@ -26334,7 +27297,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L62", "id": "api_test_events_test_done_event_carries_result", - "community": 16, + "community": 64, "norm_label": "test_done_event_carries_result()" }, { @@ -26343,7 +27306,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L69", "id": "api_test_events_test_failed_event_carries_error", - "community": 16, + "community": 64, "norm_label": "test_failed_event_carries_error()" }, { @@ -26352,7 +27315,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L76", "id": "api_test_events_test_snapshot_event_lists_findings", - "community": 16, + "community": 64, "norm_label": "test_snapshot_event_lists_findings()" }, { @@ -26361,7 +27324,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L85", "id": "api_test_events_test_delta_event_serializes_three_lists", - "community": 16, + "community": 64, "norm_label": "test_delta_event_serializes_three_lists()" }, { @@ -26370,7 +27333,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L92", "id": "api_test_events_test_event_from_dict_round_trips_each_kind", - "community": 16, + "community": 64, "norm_label": "test_event_from_dict_round_trips_each_kind()" }, { @@ -26379,7 +27342,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L111", "id": "api_test_events_test_event_from_dict_rejects_unknown_kind", - "community": 16, + "community": 64, "norm_label": "test_event_from_dict_rejects_unknown_kind()" }, { @@ -26388,7 +27351,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L116", "id": "api_test_events_test_event_from_dict_rejects_missing_kind", - "community": 16, + "community": 64, "norm_label": "test_event_from_dict_rejects_missing_kind()" }, { @@ -26397,7 +27360,7 @@ "source_file": "tests/unit/api/test_events.py", "source_location": "L1", "id": "api_test_events_rationale_1", - "community": 16, + "community": 64, "norm_label": "unit tests for ``exlab_wizard.api.events``." }, { @@ -26406,7 +27369,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L1", "id": "tests_unit_api_test_problems_py", - "community": 107, + "community": 121, "norm_label": "test_problems.py" }, { @@ -26415,7 +27378,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L38", "id": "api_test_problems_stubvalidator", - "community": 107, + "community": 121, "norm_label": "_stubvalidator" }, { @@ -26424,7 +27387,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L41", "id": "api_test_problems_stubvalidator_init", - "community": 107, + "community": 121, "norm_label": ".__init__()" }, { @@ -26433,7 +27396,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L45", "id": "api_test_problems_stubvalidator_query_problems", - "community": 107, + "community": 121, "norm_label": ".query_problems()" }, { @@ -26442,7 +27405,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L48", "id": "api_test_problems_stubvalidator_audit", - "community": 107, + "community": 121, "norm_label": ".audit()" }, { @@ -26451,7 +27414,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L53", "id": "api_test_problems_ready_config", - "community": 107, + "community": 121, "norm_label": "_ready_config()" }, { @@ -26460,7 +27423,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L72", "id": "api_test_problems_findings", - "community": 107, + "community": 121, "norm_label": "_findings()" }, { @@ -26469,7 +27432,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L94", "id": "api_test_problems_write_creation_json", - "community": 107, + "community": 0, "norm_label": "_write_creation_json()" }, { @@ -26478,7 +27441,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L116", "id": "api_test_problems_test_list_problems_returns_findings", - "community": 107, + "community": 121, "norm_label": "test_list_problems_returns_findings()" }, { @@ -26487,7 +27450,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L132", "id": "api_test_problems_test_list_problems_filters_by_severity", - "community": 107, + "community": 121, "norm_label": "test_list_problems_filters_by_severity()" }, { @@ -26496,7 +27459,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L144", "id": "api_test_problems_test_list_problems_filters_by_class", - "community": 107, + "community": 121, "norm_label": "test_list_problems_filters_by_class()" }, { @@ -26505,7 +27468,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L156", "id": "api_test_problems_test_list_problems_with_equipment_scope", - "community": 107, + "community": 121, "norm_label": "test_list_problems_with_equipment_scope()" }, { @@ -26514,7 +27477,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L167", "id": "api_test_problems_test_list_problems_unknown_scope_returns_422", - "community": 107, + "community": 121, "norm_label": "test_list_problems_unknown_scope_returns_422()" }, { @@ -26523,7 +27486,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L180", "id": "api_test_problems_test_refresh_runs_audit", - "community": 107, + "community": 121, "norm_label": "test_refresh_runs_audit()" }, { @@ -26532,7 +27495,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L193", "id": "api_test_problems_test_append_override_writes_entry", - "community": 107, + "community": 121, "norm_label": "test_append_override_writes_entry()" }, { @@ -26541,7 +27504,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L226", "id": "api_test_problems_test_append_override_404_when_path_absent", - "community": 107, + "community": 121, "norm_label": "test_append_override_404_when_path_absent()" }, { @@ -26550,7 +27513,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L244", "id": "api_test_problems_test_problems_websocket_sends_snapshot_on_connect", - "community": 107, + "community": 121, "norm_label": "test_problems_websocket_sends_snapshot_on_connect()" }, { @@ -26559,7 +27522,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L265", "id": "api_test_problems_test_problems_websocket_closes_when_no_channel", - "community": 107, + "community": 121, "norm_label": "test_problems_websocket_closes_when_no_channel()" }, { @@ -26568,7 +27531,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L285", "id": "api_test_problems_test_refresh_publishes_snapshot_to_channel", - "community": 107, + "community": 121, "norm_label": "test_refresh_publishes_snapshot_to_channel()" }, { @@ -26577,7 +27540,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L306", "id": "api_test_problems_test_revoke_override_writes_tombstone", - "community": 107, + "community": 121, "norm_label": "test_revoke_override_writes_tombstone()" }, { @@ -26586,7 +27549,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L1", "id": "api_test_problems_rationale_1", - "community": 107, + "community": 121, "norm_label": "unit tests for the ``/problems`` router." }, { @@ -26595,7 +27558,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L39", "id": "api_test_problems_rationale_39", - "community": 107, + "community": 121, "norm_label": "test double that returns a canned finding list." }, { @@ -26604,7 +27567,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L245", "id": "api_test_problems_rationale_245", - "community": 107, + "community": 121, "norm_label": "connecting to /problems/events emits a snapshot frame immediately." }, { @@ -26613,7 +27576,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L266", "id": "api_test_problems_rationale_266", - "community": 107, + "community": 121, "norm_label": "without an audit channel the websocket closes with 1011." }, { @@ -26622,7 +27585,7 @@ "source_file": "tests/unit/api/test_problems.py", "source_location": "L286", "id": "api_test_problems_rationale_286", - "community": 107, + "community": 121, "norm_label": "``post /problems/refresh`` invokes audit and publishes to the channel." }, { @@ -26631,7 +27594,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L1", "id": "tests_unit_api_test_app_py", - "community": 51, + "community": 67, "norm_label": "test_app.py" }, { @@ -26640,7 +27603,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L21", "id": "api_test_app_f", - "community": 51, + "community": 67, "norm_label": "_f" }, { @@ -26649,7 +27612,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L24", "id": "api_test_app_f_init", - "community": 51, + "community": 67, "norm_label": ".__init__()" }, { @@ -26658,7 +27621,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L37", "id": "api_test_app_test_diff_findings_added_removed_changed", - "community": 51, + "community": 67, "norm_label": "test_diff_findings_added_removed_changed()" }, { @@ -26667,7 +27630,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L48", "id": "api_test_app_test_finding_to_dict_handles_dataclass_and_dict", - "community": 51, + "community": 67, "norm_label": "test_finding_to_dict_handles_dataclass_and_dict()" }, { @@ -26676,7 +27639,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L57", "id": "api_test_app_test_audit_channel_publishes_snapshot_to_subscriber", - "community": 51, + "community": 67, "norm_label": "test_audit_channel_publishes_snapshot_to_subscriber()" }, { @@ -26685,7 +27648,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L78", "id": "api_test_app_test_audit_channel_publishes_delta", - "community": 51, + "community": 67, "norm_label": "test_audit_channel_publishes_delta()" }, { @@ -26694,7 +27657,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L101", "id": "api_test_app_test_audit_channel_late_subscribe_receives_latest_snapshot", - "community": 51, + "community": 67, "norm_label": "test_audit_channel_late_subscribe_receives_latest_snapshot()" }, { @@ -26703,7 +27666,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L119", "id": "api_test_app_test_audit_channel_close_signals_subscribers", - "community": 51, + "community": 67, "norm_label": "test_audit_channel_close_signals_subscribers()" }, { @@ -26712,7 +27675,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L135", "id": "api_test_app_test_create_app_uses_supplied_dependencies", - "community": 51, + "community": 67, "norm_label": "test_create_app_uses_supplied_dependencies()" }, { @@ -26721,7 +27684,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L141", "id": "api_test_app_test_create_app_creates_default_dependencies", - "community": 51, + "community": 67, "norm_label": "test_create_app_creates_default_dependencies()" }, { @@ -26730,7 +27693,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L147", "id": "api_test_app_test_create_app_attaches_audit_channel", - "community": 51, + "community": 67, "norm_label": "test_create_app_attaches_audit_channel()" }, { @@ -26739,7 +27702,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L154", "id": "api_test_app_test_lifespan_starts_and_stops_audit_task", - "community": 1, + "community": 67, "norm_label": "test_lifespan_starts_and_stops_audit_task()" }, { @@ -26748,7 +27711,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L1", "id": "api_test_app_rationale_1", - "community": 51, + "community": 67, "norm_label": "unit tests for ``exlab_wizard.api.app``: auditchannel + app factory." }, { @@ -26757,7 +27720,7 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L22", "id": "api_test_app_rationale_22", - "community": 51, + "community": 67, "norm_label": "tiny finding-shaped object for diff tests." }, { @@ -26766,16 +27729,97 @@ "source_file": "tests/unit/api/test_app.py", "source_location": "L155", "id": "api_test_app_rationale_155", - "community": 1, + "community": 67, "norm_label": "when start_audit_task=true the lifespan starts the audit task and cancels on clo" }, + { + "label": "__init__.py", + "file_type": "code", + "source_file": "tests/unit/dev/__init__.py", + "source_location": "L1", + "id": "tests_unit_dev_init_py", + "community": 556, + "norm_label": "__init__.py" + }, + { + "label": "test_seed.py", + "file_type": "code", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L1", + "id": "tests_unit_dev_test_seed_py", + "community": 16, + "norm_label": "test_seed.py" + }, + { + "label": "_sandbox_under()", + "file_type": "code", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L10", + "id": "dev_test_seed_sandbox_under", + "community": 16, + "norm_label": "_sandbox_under()" + }, + { + "label": "test_seed_main_creates_full_tree()", + "file_type": "code", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L31", + "id": "dev_test_seed_test_seed_main_creates_full_tree", + "community": 16, + "norm_label": "test_seed_main_creates_full_tree()" + }, + { + "label": "test_seed_main_wipes_and_rebuilds()", + "file_type": "code", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L59", + "id": "dev_test_seed_test_seed_main_wipes_and_rebuilds", + "community": 16, + "norm_label": "test_seed_main_wipes_and_rebuilds()" + }, + { + "label": "Tests for the standalone dev seeder (``python -m exlab_wizard.dev.seed``).", + "file_type": "rationale", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L1", + "id": "dev_test_seed_rationale_1", + "community": 16, + "norm_label": "tests for the standalone dev seeder (``python -m exlab_wizard.dev.seed``)." + }, + { + "label": "Pin the sandbox under ``tmp_path`` and enable test mode. Patches ``paths.os", + "file_type": "rationale", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L11", + "id": "dev_test_seed_rationale_11", + "community": 16, + "norm_label": "pin the sandbox under ``tmp_path`` and enable test mode. patches ``paths.os" + }, + { + "label": "A clean sandbox (no config) is bootstrapped and fully seeded.", + "file_type": "rationale", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L32", + "id": "dev_test_seed_rationale_32", + "community": 16, + "norm_label": "a clean sandbox (no config) is bootstrapped and fully seeded." + }, + { + "label": "A second run wipes the seeded subtree (clearing stray files) and rebuilds.", + "file_type": "rationale", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L60", + "id": "dev_test_seed_rationale_60", + "community": 16, + "norm_label": "a second run wipes the seeded subtree (clearing stray files) and rebuilds." + }, { "label": "test_nas_client_extra.py", "file_type": "code", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L1", "id": "tests_unit_sync_test_nas_client_extra_py", - "community": 12, + "community": 1, "norm_label": "test_nas_client_extra.py" }, { @@ -26784,7 +27828,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L50", "id": "sync_test_nas_client_extra_build_config", - "community": 12, + "community": 1, "norm_label": "_build_config()" }, { @@ -26802,7 +27846,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L91", "id": "sync_test_nas_client_extra_populate_run", - "community": 12, + "community": 1, "norm_label": "_populate_run()" }, { @@ -26811,7 +27855,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L103", "id": "sync_test_nas_client_extra_factory", - "community": 12, + "community": 1, "norm_label": "_factory()" }, { @@ -26820,7 +27864,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L114", "id": "sync_test_nas_client_extra_test_hash_mismatch_first_failure_retries", - "community": 12, + "community": 1, "norm_label": "test_hash_mismatch_first_failure_retries()" }, { @@ -26829,7 +27873,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L170", "id": "sync_test_nas_client_extra_test_hash_mismatch_second_failure_terminal", - "community": 12, + "community": 1, "norm_label": "test_hash_mismatch_second_failure_terminal()" }, { @@ -26838,7 +27882,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L208", "id": "sync_test_nas_client_extra_test_cleanup_full_delete_when_retain_cache_false", - "community": 12, + "community": 1, "norm_label": "test_cleanup_full_delete_when_retain_cache_false()" }, { @@ -26847,7 +27891,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L245", "id": "sync_test_nas_client_extra_test_cleanup_retain_cache_keeps_metadata", - "community": 12, + "community": 1, "norm_label": "test_cleanup_retain_cache_keeps_metadata()" }, { @@ -26856,7 +27900,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L284", "id": "sync_test_nas_client_extra_test_cleanup_disabled_keeps_files", - "community": 12, + "community": 1, "norm_label": "test_cleanup_disabled_keeps_files()" }, { @@ -26865,7 +27909,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L323", "id": "sync_test_nas_client_extra_test_cleanup_eligible_when_min_verify_passes_unmet", - "community": 12, + "community": 1, "norm_label": "test_cleanup_eligible_when_min_verify_passes_unmet()" }, { @@ -26874,7 +27918,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L360", "id": "sync_test_nas_client_extra_test_cleanup_blocked_by_remote_stat", - "community": 12, + "community": 1, "norm_label": "test_cleanup_blocked_by_remote_stat()" }, { @@ -26883,7 +27927,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L403", "id": "sync_test_nas_client_extra_client", - "community": 222, + "community": 1, "norm_label": "_client()" }, { @@ -26892,7 +27936,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L413", "id": "sync_test_nas_client_extra_test_delete_local_skips_keep_local_files_incl_nested", - "community": 222, + "community": 1, "norm_label": "test_delete_local_skips_keep_local_files_incl_nested()" }, { @@ -26901,7 +27945,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L442", "id": "sync_test_nas_client_extra_test_delete_local_prunes_emptied_dirs_keeps_dir_with_kept_file", - "community": 222, + "community": 1, "norm_label": "test_delete_local_prunes_emptied_dirs_keeps_dir_with_kept_file()" }, { @@ -26910,7 +27954,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L475", "id": "sync_test_nas_client_extra_test_delete_local_does_not_descend_or_remove_directory_symlink", - "community": 12, + "community": 1, "norm_label": "test_delete_local_does_not_descend_or_remove_directory_symlink()" }, { @@ -26919,7 +27963,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L501", "id": "sync_test_nas_client_extra_test_delete_local_keep_local_survives_retain_cache_false", - "community": 222, + "community": 1, "norm_label": "test_delete_local_keep_local_survives_retain_cache_false()" }, { @@ -26928,7 +27972,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L518", "id": "sync_test_nas_client_extra_test_delete_local_retain_cache_false_drops_whole_run_without_keep_local", - "community": 222, + "community": 1, "norm_label": "test_delete_local_retain_cache_false_drops_whole_run_without_keep_local()" }, { @@ -26937,7 +27981,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L532", "id": "sync_test_nas_client_extra_test_cleanup_marks_cleared_in_sync_state", - "community": 12, + "community": 1, "norm_label": "test_cleanup_marks_cleared_in_sync_state()" }, { @@ -26946,7 +27990,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L573", "id": "sync_test_nas_client_extra_test_cleanup_keeps_keep_local_file", - "community": 12, + "community": 1, "norm_label": "test_cleanup_keeps_keep_local_file()" }, { @@ -26955,7 +27999,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L617", "id": "sync_test_nas_client_extra_test_cleanup_deferred_when_run_only_partially_synced", - "community": 12, + "community": 1, "norm_label": "test_cleanup_deferred_when_run_only_partially_synced()" }, { @@ -26964,7 +28008,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L675", "id": "sync_test_nas_client_extra_test_worker_marks_failed_when_local_run_vanished", - "community": 12, + "community": 1, "norm_label": "test_worker_marks_failed_when_local_run_vanished()" }, { @@ -26973,7 +28017,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L727", "id": "sync_test_nas_client_extra_test_cleanup_runs_hash_gate_before_delete", - "community": 12, + "community": 1, "norm_label": "test_cleanup_runs_hash_gate_before_delete()" }, { @@ -26982,7 +28026,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L778", "id": "sync_test_nas_client_extra_test_cleanup_aborts_delete_on_hash_mismatch", - "community": 12, + "community": 1, "norm_label": "test_cleanup_aborts_delete_on_hash_mismatch()" }, { @@ -26991,7 +28035,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L818", "id": "sync_test_nas_client_extra_test_cleanup_aborts_delete_when_remote_file_vanished_at_gate", - "community": 12, + "community": 1, "norm_label": "test_cleanup_aborts_delete_when_remote_file_vanished_at_gate()" }, { @@ -27000,7 +28044,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L888", "id": "sync_test_nas_client_extra_test_default_push_factory_uses_real_driver", - "community": 447, + "community": 1, "norm_label": "test_default_push_factory_uses_real_driver()" }, { @@ -27009,7 +28053,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L914", "id": "sync_test_nas_client_extra_test_network_error_records_backoff_retry", - "community": 12, + "community": 1, "norm_label": "test_network_error_records_backoff_retry()" }, { @@ -27027,7 +28071,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L964", "id": "sync_test_nas_client_extra_test_mark_synced_no_op_when_creation_missing", - "community": 448, + "community": 1, "norm_label": "test_mark_synced_no_op_when_creation_missing()" }, { @@ -27036,7 +28080,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L982", "id": "sync_test_nas_client_extra_test_delete_local_no_op_when_path_missing", - "community": 449, + "community": 1, "norm_label": "test_delete_local_no_op_when_path_missing()" }, { @@ -27045,7 +28089,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L996", "id": "sync_test_nas_client_extra_test_infer_equipment_id_falls_back_to_first", - "community": 451, + "community": 0, "norm_label": "test_infer_equipment_id_falls_back_to_first()" }, { @@ -27054,7 +28098,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L1027", "id": "sync_test_nas_client_extra_test_partial_batch_credits_reconciled_files_in_sync_state", - "community": 12, + "community": 1, "norm_label": "test_partial_batch_credits_reconciled_files_in_sync_state()" }, { @@ -27063,7 +28107,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L1098", "id": "sync_test_nas_client_extra_test_full_batch_credits_every_file_in_sync_state", - "community": 12, + "community": 1, "norm_label": "test_full_batch_credits_every_file_in_sync_state()" }, { @@ -27072,7 +28116,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L1", "id": "sync_test_nas_client_extra_rationale_1", - "community": 12, + "community": 1, "norm_label": "extra coverage tests for ``exlab_wizard.sync.nas_client``. these hit the sub-br" }, { @@ -27081,7 +28125,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L115", "id": "sync_test_nas_client_extra_rationale_115", - "community": 12, + "community": 1, "norm_label": "a first hash-mismatch from the transport re-queues without backoff. the fir" }, { @@ -27090,7 +28134,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L171", "id": "sync_test_nas_client_extra_rationale_171", - "community": 12, + "community": 1, "norm_label": "a second consecutive hash-mismatch terminates failed." }, { @@ -27099,7 +28143,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L209", "id": "sync_test_nas_client_extra_rationale_209", - "community": 12, + "community": 1, "norm_label": "``retain_cache=false`` removes the entire run directory after cleaned." }, { @@ -27108,7 +28152,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L246", "id": "sync_test_nas_client_extra_rationale_246", - "community": 12, + "community": 1, "norm_label": "``retain_cache=true`` deletes data files but keeps ``.exlab-wizard/``." }, { @@ -27117,7 +28161,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L285", "id": "sync_test_nas_client_extra_rationale_285", - "community": 12, + "community": 1, "norm_label": "``nas_cleanup.enabled=false`` -> job stays verified, no cleanup." }, { @@ -27126,7 +28170,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L324", "id": "sync_test_nas_client_extra_rationale_324", - "community": 12, + "community": 1, "norm_label": "job lands in cleanup_eligible when min_verify_passes > current passes." }, { @@ -27135,7 +28179,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L361", "id": "sync_test_nas_client_extra_rationale_361", - "community": 12, + "community": 1, "norm_label": "a failing remote_stat keeps the job in cleanup_eligible, not cleaned." }, { @@ -27144,7 +28188,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L404", "id": "sync_test_nas_client_extra_rationale_404", - "community": 222, + "community": 1, "norm_label": "build an un-init'd client for direct ``_delete_local`` calls." }, { @@ -27153,7 +28197,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L414", "id": "sync_test_nas_client_extra_rationale_414", - "community": 222, + "community": 1, "norm_label": "``_delete_local`` keeps ``keep_local`` files, incl. a nested one." }, { @@ -27162,7 +28206,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L443", "id": "sync_test_nas_client_extra_rationale_443", - "community": 222, + "community": 1, "norm_label": "a directory holding only deleted files is pruned (deepest-first); a parent s" }, { @@ -27171,7 +28215,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L476", "id": "sync_test_nas_client_extra_rationale_476", - "community": 222, + "community": 1, "norm_label": "a directory symlink inside the run is left untouched -- its target's content" }, { @@ -27180,7 +28224,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L502", "id": "sync_test_nas_client_extra_rationale_502", - "community": 222, + "community": 1, "norm_label": "a ``keep_local`` file survives even when ``retain_cache=false``." }, { @@ -27189,7 +28233,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L521", "id": "sync_test_nas_client_extra_rationale_521", - "community": 222, + "community": 1, "norm_label": "with ``retain_cache=false`` and no kept files the run dir is removed." }, { @@ -27198,7 +28242,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L533", "id": "sync_test_nas_client_extra_rationale_533", - "community": 12, + "community": 1, "norm_label": "a full cleanup pass stamps ``cleared_at`` in ``sync_state.json``." }, { @@ -27207,7 +28251,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L574", "id": "sync_test_nas_client_extra_rationale_574", - "community": 12, + "community": 1, "norm_label": "a file flagged ``keep_local`` survives the cleanup sweep." }, { @@ -27216,7 +28260,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L618", "id": "sync_test_nas_client_extra_rationale_618", - "community": 12, + "community": 1, "norm_label": "cleanup does not run while a tracked file remains unverified. a pre-existin" }, { @@ -27225,7 +28269,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L676", "id": "sync_test_nas_client_extra_rationale_676", - "community": 12, + "community": 1, "norm_label": "a run dir deleted between enqueue and worker pick -> failed." }, { @@ -27234,7 +28278,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L728", "id": "sync_test_nas_client_extra_rationale_728", - "community": 12, + "community": 1, "norm_label": "the cleanup pass runs the hash-gate, and on success deletes locally. the in" }, { @@ -27243,7 +28287,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L779", "id": "sync_test_nas_client_extra_rationale_779", - "community": 12, + "community": 1, "norm_label": "a hash-gate mismatch defers cleanup (cleanup_eligible), files survive." }, { @@ -27252,7 +28296,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L819", "id": "sync_test_nas_client_extra_rationale_819", - "community": 12, + "community": 1, "norm_label": "a tracked file present at reconcile but gone at the cleanup gate defers cleanup." }, { @@ -27261,7 +28305,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L889", "id": "sync_test_nas_client_extra_rationale_889", - "community": 447, + "community": 1, "norm_label": "when no factory is injected, the client builds the named-remote driver. we" }, { @@ -27279,7 +28323,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L965", "id": "sync_test_nas_client_extra_rationale_965", - "community": 448, + "community": 1, "norm_label": "``_mark_synced`` is a no-op when ``creation.json`` doesn't exist." }, { @@ -27288,7 +28332,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L983", "id": "sync_test_nas_client_extra_rationale_983", - "community": 449, + "community": 1, "norm_label": "``_delete_local`` is a no-op when the run directory is already gone." }, { @@ -27297,7 +28341,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L997", "id": "sync_test_nas_client_extra_rationale_997", - "community": 451, + "community": 0, "norm_label": "if neither ``creation.paths.local`` nor ``run_path`` contains a configured e" }, { @@ -27306,7 +28350,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L1028", "id": "sync_test_nas_client_extra_rationale_1028", - "community": 12, + "community": 1, "norm_label": "a batch where one file is absent remotely still credits the others. routine" }, { @@ -27315,7 +28359,7 @@ "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L1099", "id": "sync_test_nas_client_extra_rationale_1099", - "community": 12, + "community": 1, "norm_label": "a fully-successful batch credits every verified file in sync_state.json." }, { @@ -27324,7 +28368,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L1", "id": "tests_unit_sync_test_transports_py", - "community": 38, + "community": 68, "norm_label": "test_transports.py" }, { @@ -27333,7 +28377,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L34", "id": "sync_test_transports_stub_dir", - "community": 38, + "community": 495, "norm_label": "stub_dir()" }, { @@ -27342,7 +28386,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L48", "id": "sync_test_transports_record_argv", - "community": 38, + "community": 496, "norm_label": "record_argv()" }, { @@ -27351,7 +28395,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L55", "id": "sync_test_transports_read_recorded_argvs", - "community": 38, + "community": 68, "norm_label": "_read_recorded_argvs()" }, { @@ -27360,7 +28404,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L65", "id": "sync_test_transports_test_rclone_push_success", - "community": 38, + "community": 68, "norm_label": "test_rclone_push_success()" }, { @@ -27369,7 +28413,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L81", "id": "sync_test_transports_test_rclone_push_network_error_is_retryable", - "community": 38, + "community": 68, "norm_label": "test_rclone_push_network_error_is_retryable()" }, { @@ -27378,7 +28422,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L93", "id": "sync_test_transports_test_rclone_push_auth_error_is_terminal", - "community": 38, + "community": 68, "norm_label": "test_rclone_push_auth_error_is_terminal()" }, { @@ -27387,7 +28431,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L105", "id": "sync_test_transports_test_rclone_push_hash_mismatch", - "community": 38, + "community": 68, "norm_label": "test_rclone_push_hash_mismatch()" }, { @@ -27396,7 +28440,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L117", "id": "sync_test_transports_test_rclone_push_missing_binary_raises", - "community": 38, + "community": 68, "norm_label": "test_rclone_push_missing_binary_raises()" }, { @@ -27405,7 +28449,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L129", "id": "sync_test_transports_test_rclone_argv_includes_checksum_flag", - "community": 38, + "community": 68, "norm_label": "test_rclone_argv_includes_checksum_flag()" }, { @@ -27414,7 +28458,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L145", "id": "sync_test_transports_test_rclone_argv_includes_bwlimit_when_set", - "community": 38, + "community": 68, "norm_label": "test_rclone_argv_includes_bwlimit_when_set()" }, { @@ -27423,7 +28467,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L162", "id": "sync_test_transports_test_rclone_argv_omits_bwlimit_when_none", - "community": 38, + "community": 68, "norm_label": "test_rclone_argv_omits_bwlimit_when_none()" }, { @@ -27432,7 +28476,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L177", "id": "sync_test_transports_test_rclone_argv_includes_files_from_when_set", - "community": 38, + "community": 68, "norm_label": "test_rclone_argv_includes_files_from_when_set()" }, { @@ -27441,7 +28485,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L196", "id": "sync_test_transports_test_rclone_argv_omits_files_from_when_none", - "community": 38, + "community": 68, "norm_label": "test_rclone_argv_omits_files_from_when_none()" }, { @@ -27450,7 +28494,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L216", "id": "sync_test_transports_test_about_success", - "community": 38, + "community": 68, "norm_label": "test_about_success()" }, { @@ -27459,7 +28503,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L225", "id": "sync_test_transports_test_about_auth_failure", - "community": 38, + "community": 68, "norm_label": "test_about_auth_failure()" }, { @@ -27468,7 +28512,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L239", "id": "sync_test_transports_test_parse_combined_handles_all_prefixes", - "community": 189, + "community": 232, "norm_label": "test_parse_combined_handles_all_prefixes()" }, { @@ -27477,7 +28521,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L249", "id": "sync_test_transports_test_parse_combined_empty_returns_empty_result", - "community": 189, + "community": 232, "norm_label": "test_parse_combined_empty_returns_empty_result()" }, { @@ -27486,7 +28530,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L253", "id": "sync_test_transports_test_parse_combined_tolerates_blank_lines_and_unknown_prefix", - "community": 189, + "community": 232, "norm_label": "test_parse_combined_tolerates_blank_lines_and_unknown_prefix()" }, { @@ -27495,7 +28539,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L266", "id": "sync_test_transports_test_push_argv_includes_config_and_perf", - "community": 38, + "community": 68, "norm_label": "test_push_argv_includes_config_and_perf()" }, { @@ -27504,7 +28548,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L288", "id": "sync_test_transports_test_lsjson_argv_is_recursive_readonly", - "community": 38, + "community": 68, "norm_label": "test_lsjson_argv_is_recursive_readonly()" }, { @@ -27513,7 +28557,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L308", "id": "sync_test_transports_test_lsjson_raises_transport_error_on_failure", - "community": 38, + "community": 68, "norm_label": "test_lsjson_raises_transport_error_on_failure()" }, { @@ -27522,7 +28566,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L323", "id": "sync_test_transports_test_listremotes_parses_lines", - "community": 38, + "community": 68, "norm_label": "test_listremotes_parses_lines()" }, { @@ -27531,7 +28575,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L334", "id": "sync_test_transports_test_listremotes_empty_on_failure", - "community": 38, + "community": 68, "norm_label": "test_listremotes_empty_on_failure()" }, { @@ -27540,7 +28584,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L347", "id": "sync_test_transports_test_classify_failure_unknown_when_rc_zero_and_no_markers", - "community": 90, + "community": 104, "norm_label": "test_classify_failure_unknown_when_rc_zero_and_no_markers()" }, { @@ -27549,7 +28593,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L357", "id": "sync_test_transports_test_check_missing_binary_raises", - "community": 38, + "community": 68, "norm_label": "test_check_missing_binary_raises()" }, { @@ -27558,7 +28602,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L369", "id": "sync_test_transports_test_check_auth_failure_with_no_combined_output_raises", - "community": 38, + "community": 68, "norm_label": "test_check_auth_failure_with_no_combined_output_raises()" }, { @@ -27567,7 +28611,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L383", "id": "sync_test_transports_test_check_unreadable_combined_file_is_tolerated", - "community": 38, + "community": 68, "norm_label": "test_check_unreadable_combined_file_is_tolerated()" }, { @@ -27576,7 +28620,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L405", "id": "sync_test_transports_test_about_missing_binary_returns_not_ok", - "community": 90, + "community": 232, "norm_label": "test_about_missing_binary_returns_not_ok()" }, { @@ -27585,7 +28629,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L415", "id": "sync_test_transports_test_about_malformed_json_is_ok_with_empty_info", - "community": 38, + "community": 68, "norm_label": "test_about_malformed_json_is_ok_with_empty_info()" }, { @@ -27594,7 +28638,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L431", "id": "sync_test_transports_test_lsjson_missing_binary_raises", - "community": 38, + "community": 68, "norm_label": "test_lsjson_missing_binary_raises()" }, { @@ -27603,7 +28647,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L1", "id": "sync_test_transports_rationale_1", - "community": 38, + "community": 68, "norm_label": "tests for the rclone transport driver. backend spec \u00a77.1.3, \u00a77.1.5. the driver" }, { @@ -27612,7 +28656,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L35", "id": "sync_test_transports_rationale_35", - "community": 38, + "community": 495, "norm_label": "install the rclone stub under ``tmp_path/bin`` and prepend to path." }, { @@ -27621,7 +28665,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L49", "id": "sync_test_transports_rationale_49", - "community": 38, + "community": 496, "norm_label": "tell the stub to append every invocation's argv to a log file." }, { @@ -27630,7 +28674,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L56", "id": "sync_test_transports_rationale_56", - "community": 38, + "community": 68, "norm_label": "return the recorded argv lists, in invocation order." }, { @@ -27639,7 +28683,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L118", "id": "sync_test_transports_rationale_118", - "community": 38, + "community": 68, "norm_label": "a missing binary raises :class:`transporterror`, not a retry result." }, { @@ -27648,7 +28692,7 @@ "source_file": "tests/unit/sync/test_transports.py", "source_location": "L384", "id": "sync_test_transports_rationale_384", - "community": 38, + "community": 68, "norm_label": "if the --combined tempfile cannot be read, treat it as empty output." }, { @@ -27657,7 +28701,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L1", "id": "tests_unit_sync_test_bandwidth_py", - "community": 80, + "community": 89, "norm_label": "test_bandwidth.py" }, { @@ -27666,7 +28710,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L20", "id": "sync_test_bandwidth_wed_at", - "community": 80, + "community": 89, "norm_label": "_wed_at()" }, { @@ -27675,7 +28719,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L25", "id": "sync_test_bandwidth_test_mbps_to_kibps_uses_spec_formula", - "community": 80, + "community": 89, "norm_label": "test_mbps_to_kibps_uses_spec_formula()" }, { @@ -27684,7 +28728,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L31", "id": "sync_test_bandwidth_test_mbps_to_kibps_floor_for_tiny_input", - "community": 80, + "community": 89, "norm_label": "test_mbps_to_kibps_floor_for_tiny_input()" }, { @@ -27693,7 +28737,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L36", "id": "sync_test_bandwidth_test_mbps_to_kibps_zero", - "community": 80, + "community": 89, "norm_label": "test_mbps_to_kibps_zero()" }, { @@ -27702,7 +28746,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L41", "id": "sync_test_bandwidth_test_day_name_to_index_covers_all_days", - "community": 80, + "community": 89, "norm_label": "test_day_name_to_index_covers_all_days()" }, { @@ -27711,7 +28755,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L47", "id": "sync_test_bandwidth_test_is_window_active_inside_window", - "community": 80, + "community": 89, "norm_label": "test_is_window_active_inside_window()" }, { @@ -27720,7 +28764,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L52", "id": "sync_test_bandwidth_test_is_window_active_outside_window", - "community": 80, + "community": 89, "norm_label": "test_is_window_active_outside_window()" }, { @@ -27729,7 +28773,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L58", "id": "sync_test_bandwidth_test_is_window_active_wrong_weekday", - "community": 80, + "community": 89, "norm_label": "test_is_window_active_wrong_weekday()" }, { @@ -27738,7 +28782,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L64", "id": "sync_test_bandwidth_test_effective_unlimited_when_upload_mbps_none", - "community": 80, + "community": 89, "norm_label": "test_effective_unlimited_when_upload_mbps_none()" }, { @@ -27747,7 +28791,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L69", "id": "sync_test_bandwidth_test_effective_unlimited_when_outside_schedule", - "community": 80, + "community": 89, "norm_label": "test_effective_unlimited_when_outside_schedule()" }, { @@ -27756,7 +28800,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L78", "id": "sync_test_bandwidth_test_effective_throttled_inside_schedule", - "community": 80, + "community": 89, "norm_label": "test_effective_throttled_inside_schedule()" }, { @@ -27765,7 +28809,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L86", "id": "sync_test_bandwidth_test_effective_throttled_when_no_schedule", - "community": 80, + "community": 89, "norm_label": "test_effective_throttled_when_no_schedule()" }, { @@ -27774,7 +28818,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L92", "id": "sync_test_bandwidth_test_effective_throttled_in_first_matching_window", - "community": 80, + "community": 89, "norm_label": "test_effective_throttled_in_first_matching_window()" }, { @@ -27783,7 +28827,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L1", "id": "sync_test_bandwidth_rationale_1", - "community": 80, + "community": 89, "norm_label": "tests for ``exlab_wizard.sync.bandwidth``. backend spec \u00a77.1.7. the schedule ev" }, { @@ -27792,7 +28836,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L21", "id": "sync_test_bandwidth_rationale_21", - "community": 80, + "community": 89, "norm_label": "a wednesday in 2026 (weekday 2) at the requested local time." }, { @@ -27801,7 +28845,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L26", "id": "sync_test_bandwidth_rationale_26", - "community": 80, + "community": 89, "norm_label": "spec \u00a77.1.7: ``k = upload_mbps * 1024 / 8``." }, { @@ -27810,7 +28854,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L32", "id": "sync_test_bandwidth_rationale_32", - "community": 80, + "community": 89, "norm_label": "a tiny but positive input rounds up to 1 kib/s, not 0." }, { @@ -27819,7 +28863,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L59", "id": "sync_test_bandwidth_rationale_59", - "community": 80, + "community": 89, "norm_label": "weekday filtering rejects days not in ``window.days``." }, { @@ -27828,7 +28872,7 @@ "source_file": "tests/unit/sync/test_bandwidth.py", "source_location": "L87", "id": "sync_test_bandwidth_rationale_87", - "community": 80, + "community": 89, "norm_label": "a cap with no schedule applies always." }, { @@ -27837,7 +28881,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L1", "id": "tests_unit_sync_test_cleanup_py", - "community": 115, + "community": 120, "norm_label": "test_cleanup.py" }, { @@ -27846,7 +28890,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L22", "id": "sync_test_cleanup_job", - "community": 115, + "community": 120, "norm_label": "_job()" }, { @@ -27855,7 +28899,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L38", "id": "sync_test_cleanup_config", - "community": 115, + "community": 120, "norm_label": "_config()" }, { @@ -27864,7 +28908,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L53", "id": "sync_test_cleanup_test_all_interlocks_pass", - "community": 115, + "community": 120, "norm_label": "test_all_interlocks_pass()" }, { @@ -27873,7 +28917,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L65", "id": "sync_test_cleanup_test_min_verify_passes_blocks", - "community": 115, + "community": 120, "norm_label": "test_min_verify_passes_blocks()" }, { @@ -27882,7 +28926,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L77", "id": "sync_test_cleanup_test_min_age_hours_blocks", - "community": 115, + "community": 120, "norm_label": "test_min_age_hours_blocks()" }, { @@ -27891,7 +28935,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L90", "id": "sync_test_cleanup_test_remote_stat_failure_blocks", - "community": 115, + "community": 120, "norm_label": "test_remote_stat_failure_blocks()" }, { @@ -27900,7 +28944,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L102", "id": "sync_test_cleanup_test_recent_revocation_blocks", - "community": 115, + "community": 120, "norm_label": "test_recent_revocation_blocks()" }, { @@ -27909,7 +28953,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L124", "id": "sync_test_cleanup_test_old_revocation_does_not_block", - "community": 115, + "community": 120, "norm_label": "test_old_revocation_does_not_block()" }, { @@ -27918,7 +28962,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L145", "id": "sync_test_cleanup_test_missing_verified_at_blocks", - "community": 115, + "community": 120, "norm_label": "test_missing_verified_at_blocks()" }, { @@ -27927,7 +28971,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L157", "id": "sync_test_cleanup_test_has_recent_revocation_with_malformed_timestamp_is_recent", - "community": 115, + "community": 120, "norm_label": "test_has_recent_revocation_with_malformed_timestamp_is_recent()" }, { @@ -27936,7 +28980,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L172", "id": "sync_test_cleanup_test_has_recent_revocation_ignores_non_tombstones", - "community": 115, + "community": 120, "norm_label": "test_has_recent_revocation_ignores_non_tombstones()" }, { @@ -27945,7 +28989,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L1", "id": "sync_test_cleanup_rationale_1", - "community": 115, + "community": 120, "norm_label": "tests for ``exlab_wizard.sync.cleanup``. backend spec \u00a77.1.6. each interlock mu" }, { @@ -27954,7 +28998,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L54", "id": "sync_test_cleanup_rationale_54", - "community": 115, + "community": 120, "norm_label": "happy path: cleanup is allowed." }, { @@ -27963,7 +29007,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L66", "id": "sync_test_cleanup_rationale_66", - "community": 115, + "community": 120, "norm_label": "failing the verify-passes threshold blocks cleanup." }, { @@ -27972,7 +29016,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L78", "id": "sync_test_cleanup_rationale_78", - "community": 115, + "community": 120, "norm_label": "a verify that happened too recently blocks cleanup." }, { @@ -27981,7 +29025,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L91", "id": "sync_test_cleanup_rationale_91", - "community": 115, + "community": 120, "norm_label": "an unreachable nas blocks cleanup." }, { @@ -27990,7 +29034,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L103", "id": "sync_test_cleanup_rationale_103", - "community": 115, + "community": 120, "norm_label": "a tombstone written within ``min_age_hours`` blocks cleanup." }, { @@ -27999,7 +29043,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L146", "id": "sync_test_cleanup_rationale_146", - "community": 115, + "community": 120, "norm_label": "a verified_at column missing or malformed blocks cleanup." }, { @@ -28008,7 +29052,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L158", "id": "sync_test_cleanup_rationale_158", - "community": 115, + "community": 120, "norm_label": "a malformed ``recorded_at`` is treated as recent (fail-safe)." }, { @@ -28017,7 +29061,7 @@ "source_file": "tests/unit/sync/test_cleanup.py", "source_location": "L173", "id": "sync_test_cleanup_rationale_173", - "community": 115, + "community": 120, "norm_label": "an override entry without ``revoked: true`` is ignored." }, { @@ -28026,7 +29070,7 @@ "source_file": "tests/unit/sync/__init__.py", "source_location": "L1", "id": "tests_unit_sync_init_py", - "community": 445, + "community": 482, "norm_label": "__init__.py" }, { @@ -28035,7 +29079,7 @@ "source_file": "src/exlab_wizard/sync/__init__.py", "source_location": "L1", "id": "sync_init_rationale_1", - "community": 445, + "community": 482, "norm_label": "sync package. backend spec \u00a77. public re-exports for the nas sync subsystem. ca" }, { @@ -28044,7 +29088,7 @@ "source_file": "tests/unit/sync/test_manifest.py", "source_location": "L1", "id": "tests_unit_sync_test_manifest_py", - "community": 110, + "community": 115, "norm_label": "test_manifest.py" }, { @@ -28053,7 +29097,7 @@ "source_file": "tests/unit/sync/test_manifest.py", "source_location": "L12", "id": "sync_test_manifest_test_parse_drops_dirs_and_keys_by_path", - "community": 110, + "community": 115, "norm_label": "test_parse_drops_dirs_and_keys_by_path()" }, { @@ -28062,7 +29106,7 @@ "source_file": "tests/unit/sync/test_manifest.py", "source_location": "L20", "id": "sync_test_manifest_test_parse_strips_prefix", - "community": 110, + "community": 115, "norm_label": "test_parse_strips_prefix()" }, { @@ -28071,7 +29115,7 @@ "source_file": "tests/unit/sync/test_manifest.py", "source_location": "L26", "id": "sync_test_manifest_test_parse_empty_and_malformed", - "community": 110, + "community": 115, "norm_label": "test_parse_empty_and_malformed()" }, { @@ -28080,7 +29124,7 @@ "source_file": "tests/unit/sync/test_manifest.py", "source_location": "L32", "id": "sync_test_manifest_test_manifest_size_match_helper", - "community": 110, + "community": 115, "norm_label": "test_manifest_size_match_helper()" }, { @@ -28089,7 +29133,7 @@ "source_file": "tests/unit/sync/test_manifest.py", "source_location": "L39", "id": "sync_test_manifest_test_manifest_matches_size_and_mtime_within_tolerance", - "community": 110, + "community": 115, "norm_label": "test_manifest_matches_size_and_mtime_within_tolerance()" }, { @@ -28098,7 +29142,7 @@ "source_file": "tests/unit/sync/test_manifest.py", "source_location": "L50", "id": "sync_test_manifest_test_manifest_to_epoch_handles_fractional_and_z", - "community": 110, + "community": 115, "norm_label": "test_manifest_to_epoch_handles_fractional_and_z()" }, { @@ -28107,7 +29151,7 @@ "source_file": "tests/unit/sync/test_manifest.py", "source_location": "L58", "id": "sync_test_manifest_test_manifest_matches_false_when_modtime_unparseable", - "community": 110, + "community": 115, "norm_label": "test_manifest_matches_false_when_modtime_unparseable()" }, { @@ -28116,7 +29160,7 @@ "source_file": "tests/unit/sync/test_manifest.py", "source_location": "L67", "id": "sync_test_manifest_test_parse_non_list_json_yields_empty", - "community": 110, + "community": 115, "norm_label": "test_parse_non_list_json_yields_empty()" }, { @@ -28125,7 +29169,7 @@ "source_file": "tests/unit/sync/test_manifest.py", "source_location": "L73", "id": "sync_test_manifest_test_parse_skips_rows_with_empty_path", - "community": 110, + "community": 115, "norm_label": "test_parse_skips_rows_with_empty_path()" }, { @@ -28134,7 +29178,7 @@ "source_file": "tests/unit/sync/test_manifest.py", "source_location": "L83", "id": "sync_test_manifest_test_parse_skips_rows_with_non_numeric_size", - "community": 110, + "community": 115, "norm_label": "test_parse_skips_rows_with_non_numeric_size()" }, { @@ -28143,7 +29187,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L1", "id": "tests_unit_sync_test_queue_py", - "community": 67, + "community": 122, "norm_label": "test_queue.py" }, { @@ -28152,7 +29196,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L26", "id": "sync_test_queue_queue", - "community": 67, + "community": 264, "norm_label": "queue()" }, { @@ -28161,7 +29205,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L35", "id": "sync_test_queue_test_insert_creates_queued_row", - "community": 67, + "community": 122, "norm_label": "test_insert_creates_queued_row()" }, { @@ -28170,7 +29214,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L45", "id": "sync_test_queue_test_insert_unique_constraint", - "community": 67, + "community": 122, "norm_label": "test_insert_unique_constraint()" }, { @@ -28179,7 +29223,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L52", "id": "sync_test_queue_test_files_column_round_trips", - "community": 67, + "community": 122, "norm_label": "test_files_column_round_trips()" }, { @@ -28188,7 +29232,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L62", "id": "sync_test_queue_test_files_column_defaults_to_empty", - "community": 67, + "community": 122, "norm_label": "test_files_column_defaults_to_empty()" }, { @@ -28197,7 +29241,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L71", "id": "sync_test_queue_test_requeue_with_files_resets_terminal_job", - "community": 67, + "community": 122, "norm_label": "test_requeue_with_files_resets_terminal_job()" }, { @@ -28206,7 +29250,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L83", "id": "sync_test_queue_test_get_by_id_and_run_path", - "community": 67, + "community": 122, "norm_label": "test_get_by_id_and_run_path()" }, { @@ -28215,7 +29259,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L92", "id": "sync_test_queue_test_get_missing_returns_none", - "community": 67, + "community": 122, "norm_label": "test_get_missing_returns_none()" }, { @@ -28224,7 +29268,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L97", "id": "sync_test_queue_test_transition_forward", - "community": 67, + "community": 122, "norm_label": "test_transition_forward()" }, { @@ -28233,7 +29277,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L106", "id": "sync_test_queue_test_transition_unknown_raises", - "community": 67, + "community": 122, "norm_label": "test_transition_unknown_raises()" }, { @@ -28242,7 +29286,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L111", "id": "sync_test_queue_test_transition_increments_verify_passes", - "community": 67, + "community": 122, "norm_label": "test_transition_increments_verify_passes()" }, { @@ -28251,7 +29295,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L123", "id": "sync_test_queue_test_record_failure_increments_attempts", - "community": 67, + "community": 122, "norm_label": "test_record_failure_increments_attempts()" }, { @@ -28260,7 +29304,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L132", "id": "sync_test_queue_test_record_failure_terminal", - "community": 67, + "community": 122, "norm_label": "test_record_failure_terminal()" }, { @@ -28269,7 +29313,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L139", "id": "sync_test_queue_test_record_failure_terminal_after_max_attempts", - "community": 67, + "community": 122, "norm_label": "test_record_failure_terminal_after_max_attempts()" }, { @@ -28278,7 +29322,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L148", "id": "sync_test_queue_test_compute_next_attempt_at_uses_schedule", - "community": 313, + "community": 265, "norm_label": "test_compute_next_attempt_at_uses_schedule()" }, { @@ -28287,7 +29331,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L158", "id": "sync_test_queue_test_compute_next_attempt_at_out_of_range", - "community": 313, + "community": 265, "norm_label": "test_compute_next_attempt_at_out_of_range()" }, { @@ -28296,7 +29340,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L164", "id": "sync_test_queue_test_persistence_across_reinit", - "community": 67, + "community": 264, "norm_label": "test_persistence_across_reinit()" }, { @@ -28305,7 +29349,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L180", "id": "sync_test_queue_test_init_replays_running_to_queued", - "community": 67, + "community": 264, "norm_label": "test_init_replays_running_to_queued()" }, { @@ -28314,7 +29358,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L197", "id": "sync_test_queue_test_list_in_state_returns_only_matching", - "community": 67, + "community": 122, "norm_label": "test_list_in_state_returns_only_matching()" }, { @@ -28323,7 +29367,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L207", "id": "sync_test_queue_test_list_all_orders_by_enqueued_at", - "community": 67, + "community": 122, "norm_label": "test_list_all_orders_by_enqueued_at()" }, { @@ -28332,7 +29376,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L215", "id": "sync_test_queue_test_reset_to_queued_clears_attempts", - "community": 67, + "community": 122, "norm_label": "test_reset_to_queued_clears_attempts()" }, { @@ -28341,7 +29385,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L224", "id": "sync_test_queue_test_reset_to_queued_unknown_raises", - "community": 67, + "community": 122, "norm_label": "test_reset_to_queued_unknown_raises()" }, { @@ -28350,7 +29394,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L229", "id": "sync_test_queue_test_record_failure_unknown_raises", - "community": 67, + "community": 122, "norm_label": "test_record_failure_unknown_raises()" }, { @@ -28359,7 +29403,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L234", "id": "sync_test_queue_test_delete_removes_row", - "community": 67, + "community": 122, "norm_label": "test_delete_removes_row()" }, { @@ -28368,7 +29412,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L240", "id": "sync_test_queue_test_is_terminal_classifies_states", - "community": 67, + "community": 122, "norm_label": "test_is_terminal_classifies_states()" }, { @@ -28377,7 +29421,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L247", "id": "sync_test_queue_test_init_required_before_use", - "community": 67, + "community": 264, "norm_label": "test_init_required_before_use()" }, { @@ -28386,7 +29430,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L254", "id": "sync_test_queue_test_close_is_idempotent", - "community": 67, + "community": 264, "norm_label": "test_close_is_idempotent()" }, { @@ -28395,7 +29439,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L1", "id": "sync_test_queue_rationale_1", - "community": 67, + "community": 122, "norm_label": "tests for ``exlab_wizard.sync.queue``. covers the durable sqlite-backed sync-jo" }, { @@ -28404,7 +29448,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L36", "id": "sync_test_queue_rationale_36", - "community": 67, + "community": 122, "norm_label": "``insert`` produces a queued row with a generated uuid job id." }, { @@ -28413,7 +29457,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L46", "id": "sync_test_queue_rationale_46", - "community": 67, + "community": 122, "norm_label": "two inserts on the same run_path violate unique." }, { @@ -28422,7 +29466,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L53", "id": "sync_test_queue_rationale_53", - "community": 67, + "community": 122, "norm_label": "the per-file ``files`` list round-trips through insert and read." }, { @@ -28431,7 +29475,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L63", "id": "sync_test_queue_rationale_63", - "community": 67, + "community": 122, "norm_label": "a job inserted without ``files`` reads back as the empty 'whole run' tuple." }, { @@ -28440,7 +29484,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L72", "id": "sync_test_queue_rationale_72", - "community": 67, + "community": 122, "norm_label": "``requeue_with_files`` re-arms a terminal job in queued with a new subset." }, { @@ -28449,7 +29493,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L149", "id": "sync_test_queue_rationale_149", - "community": 313, + "community": 265, "norm_label": "the 1st through 5th attempts use the documented backoff sequence." }, { @@ -28458,7 +29502,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L159", "id": "sync_test_queue_rationale_159", - "community": 313, + "community": 265, "norm_label": "attempts <1 or >max_attempts yield ``none``." }, { @@ -28467,7 +29511,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L165", "id": "sync_test_queue_rationale_165", - "community": 67, + "community": 264, "norm_label": "a queue rebuilt against the same db file sees the prior rows." }, { @@ -28476,7 +29520,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L181", "id": "sync_test_queue_rationale_181", - "community": 67, + "community": 264, "norm_label": "a running row from a prior process is downgraded to queued on restart." }, { @@ -28485,7 +29529,7 @@ "source_file": "tests/unit/sync/test_queue.py", "source_location": "L248", "id": "sync_test_queue_rationale_248", - "community": 67, + "community": 264, "norm_label": "operations without init() raise a clear runtimeerror." }, { @@ -28494,7 +29538,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L1", "id": "tests_unit_sync_test_nas_client_py", - "community": 18, + "community": 8, "norm_label": "test_nas_client.py" }, { @@ -28503,7 +29547,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L62", "id": "sync_test_nas_client_build_config", - "community": 18, + "community": 8, "norm_label": "_build_config()" }, { @@ -28512,7 +29556,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L86", "id": "sync_test_nas_client_make_creation", - "community": 18, + "community": 8, "norm_label": "_make_creation()" }, { @@ -28521,7 +29565,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L106", "id": "sync_test_nas_client_populate_run", - "community": 18, + "community": 8, "norm_label": "_populate_run()" }, { @@ -28530,7 +29574,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L119", "id": "sync_test_nas_client_make_push_factory", - "community": 18, + "community": 8, "norm_label": "_make_push_factory()" }, { @@ -28539,7 +29583,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L136", "id": "sync_test_nas_client_writer", - "community": 28, + "community": 8, "norm_label": "writer()" }, { @@ -28548,7 +29592,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L145", "id": "sync_test_nas_client_test_enqueue_blocks_run_with_hard_finding_no_override", - "community": 18, + "community": 8, "norm_label": "test_enqueue_blocks_run_with_hard_finding_no_override()" }, { @@ -28557,7 +29601,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L176", "id": "sync_test_nas_client_test_enqueue_clean_run_creates_queued_row", - "community": 18, + "community": 8, "norm_label": "test_enqueue_clean_run_creates_queued_row()" }, { @@ -28566,7 +29610,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L206", "id": "sync_test_nas_client_test_enqueue_with_active_override_unblocks", - "community": 18, + "community": 8, "norm_label": "test_enqueue_with_active_override_unblocks()" }, { @@ -28575,7 +29619,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L254", "id": "sync_test_nas_client_test_status_returns_none_when_no_job", - "community": 18, + "community": 8, "norm_label": "test_status_returns_none_when_no_job()" }, { @@ -28584,7 +29628,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L275", "id": "sync_test_nas_client_test_retry_resets_failed_to_queued", - "community": 18, + "community": 8, "norm_label": "test_retry_resets_failed_to_queued()" }, { @@ -28593,7 +29637,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L310", "id": "sync_test_nas_client_test_force_verify_returns_self_consistent", - "community": 18, + "community": 8, "norm_label": "test_force_verify_returns_self_consistent()" }, { @@ -28602,7 +29646,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L334", "id": "sync_test_nas_client_test_worker_drives_to_verified_and_marks_synced", - "community": 18, + "community": 8, "norm_label": "test_worker_drives_to_verified_and_marks_synced()" }, { @@ -28611,7 +29655,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L377", "id": "sync_test_nas_client_test_routine_reconcile_marks_synced_from_lsjson", - "community": 18, + "community": 8, "norm_label": "test_routine_reconcile_marks_synced_from_lsjson()" }, { @@ -28620,7 +29664,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L439", "id": "sync_test_nas_client_test_routine_reconcile_requeues_when_remote_file_missing", - "community": 18, + "community": 8, "norm_label": "test_routine_reconcile_requeues_when_remote_file_missing()" }, { @@ -28629,7 +29673,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L496", "id": "sync_test_nas_client_test_worker_terminal_failed_on_auth_error", - "community": 18, + "community": 8, "norm_label": "test_worker_terminal_failed_on_auth_error()" }, { @@ -28638,7 +29682,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L522", "id": "sync_test_nas_client_test_enqueue_existing_failed_resets_to_queued", - "community": 18, + "community": 8, "norm_label": "test_enqueue_existing_failed_resets_to_queued()" }, { @@ -28647,7 +29691,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L555", "id": "sync_test_nas_client_test_enqueue_idempotent_for_already_queued_row", - "community": 18, + "community": 8, "norm_label": "test_enqueue_idempotent_for_already_queued_row()" }, { @@ -28656,7 +29700,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L589", "id": "sync_test_nas_client_test_close_is_idempotent", - "community": 18, + "community": 8, "norm_label": "test_close_is_idempotent()" }, { @@ -28665,7 +29709,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L607", "id": "sync_test_nas_client_test_mark_cleaned_writes_cleaned_to_creation_json", - "community": 18, + "community": 8, "norm_label": "test_mark_cleaned_writes_cleaned_to_creation_json()" }, { @@ -28674,7 +29718,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L629", "id": "sync_test_nas_client_test_mark_cleaned_is_noop_when_creation_json_missing", - "community": 18, + "community": 8, "norm_label": "test_mark_cleaned_is_noop_when_creation_json_missing()" }, { @@ -28683,7 +29727,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L656", "id": "sync_test_nas_client_test_enqueue_with_files_inserts_subset", - "community": 18, + "community": 8, "norm_label": "test_enqueue_with_files_inserts_subset()" }, { @@ -28692,7 +29736,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L684", "id": "sync_test_nas_client_test_enqueue_requeues_terminal_job_with_new_files", - "community": 18, + "community": 8, "norm_label": "test_enqueue_requeues_terminal_job_with_new_files()" }, { @@ -28701,7 +29745,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L719", "id": "sync_test_nas_client_test_enqueue_noops_active_job_with_new_files", - "community": 18, + "community": 8, "norm_label": "test_enqueue_noops_active_job_with_new_files()" }, { @@ -28710,7 +29754,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L756", "id": "sync_test_nas_client_test_apply_config_swaps_equipment_map", - "community": 18, + "community": 8, "norm_label": "test_apply_config_swaps_equipment_map()" }, { @@ -28719,7 +29763,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L790", "id": "sync_test_nas_client_client_for_target_test", - "community": 18, + "community": 8, "norm_label": "_client_for_target_test()" }, { @@ -28746,7 +29790,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L853", "id": "sync_test_nas_client_test_driver_for_stage_mode_uses_staging_perf", - "community": 0, + "community": 8, "norm_label": "test_driver_for_stage_mode_uses_staging_perf()" }, { @@ -28755,7 +29799,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L903", "id": "sync_test_nas_client_make_recording_push_factory", - "community": 18, + "community": 8, "norm_label": "_make_recording_push_factory()" }, { @@ -28764,7 +29808,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L925", "id": "sync_test_nas_client_test_drive_job_bandwidth_comes_from_nas_block", - "community": 18, + "community": 8, "norm_label": "test_drive_job_bandwidth_comes_from_nas_block()" }, { @@ -28773,7 +29817,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L1", "id": "sync_test_nas_client_rationale_1", - "community": 18, + "community": 8, "norm_label": "unit tests for ``exlab_wizard.sync.nas_client.nassyncclient``. backend spec \u00a77." }, { @@ -28782,7 +29826,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L107", "id": "sync_test_nas_client_rationale_107", - "community": 18, + "community": 8, "norm_label": "build a clean run directory with a creation.json under eq1/proj-0042/." }, { @@ -28791,7 +29835,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L122", "id": "sync_test_nas_client_rationale_122", - "community": 18, + "community": 8, "norm_label": "a push callable factory that yields deterministic outcomes for tests." }, { @@ -28800,7 +29844,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L148", "id": "sync_test_nas_client_rationale_148", - "community": 18, + "community": 8, "norm_label": "a run path containing ```` is gated and not queued." }, { @@ -28809,7 +29853,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L209", "id": "sync_test_nas_client_rationale_209", - "community": 18, + "community": 8, "norm_label": "a run with placeholder findings + matching active overrides is queued." }, { @@ -28818,7 +29862,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L337", "id": "sync_test_nas_client_rationale_337", - "community": 18, + "community": 8, "norm_label": "a successful push -> awaiting_verify -> verified -> sync_status='synced'." }, { @@ -28827,7 +29871,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L380", "id": "sync_test_nas_client_rationale_380", - "community": 18, + "community": 8, "norm_label": "the routine post-push path credits files via lsjson, not check --download." }, { @@ -28836,7 +29880,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L442", "id": "sync_test_nas_client_rationale_442", - "community": 18, + "community": 8, "norm_label": "a file absent from the lsjson listing leaves the job re-queued. the present" }, { @@ -28845,7 +29889,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L525", "id": "sync_test_nas_client_rationale_525", - "community": 18, + "community": 8, "norm_label": "re-enqueueing a failed row resets it back to queued." }, { @@ -28854,7 +29898,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L558", "id": "sync_test_nas_client_rationale_558", - "community": 18, + "community": 8, "norm_label": "enqueueing twice for the same path returns the same job id." }, { @@ -28863,7 +29907,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L610", "id": "sync_test_nas_client_rationale_610", - "community": 18, + "community": 8, "norm_label": "``_mark_cleaned`` flips ``creation.json.sync_status`` to ``\"cleaned\"``." }, { @@ -28872,7 +29916,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L632", "id": "sync_test_nas_client_rationale_632", - "community": 18, + "community": 8, "norm_label": "with ``retain_cache=false`` the cache dir is gone; ``_mark_cleaned`` no-ops." }, { @@ -28881,7 +29925,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L657", "id": "sync_test_nas_client_rationale_657", - "community": 18, + "community": 8, "norm_label": "``enqueue(run, files=[...])`` stores the subset on the queue row." }, { @@ -28890,7 +29934,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L687", "id": "sync_test_nas_client_rationale_687", - "community": 18, + "community": 8, "norm_label": "a terminal (failed) job is re-armed in queued with a fresh file subset." }, { @@ -28899,7 +29943,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L722", "id": "sync_test_nas_client_rationale_722", - "community": 18, + "community": 8, "norm_label": "an active (queued) job is left untouched when re-enqueued with new files." }, { @@ -28908,7 +29952,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L757", "id": "sync_test_nas_client_rationale_757", - "community": 18, + "community": 8, "norm_label": "a live config swap rebuilds the equipment lookup in place." }, { @@ -28935,7 +29979,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L854", "id": "sync_test_nas_client_rationale_854", - "community": 0, + "community": 8, "norm_label": "stage-mode driver picks up ``orchestrator.staging_perf`` while sharing ``nas" }, { @@ -28944,7 +29988,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L907", "id": "sync_test_nas_client_rationale_907", - "community": 18, + "community": 8, "norm_label": "return ``(factory, recorded_bwlimits)`` where the factory's push callable ap" }, { @@ -28953,7 +29997,7 @@ "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L928", "id": "sync_test_nas_client_rationale_928", - "community": 18, + "community": 8, "norm_label": "``_drive_job`` must derive its bandwidth cap from ``config.nas.bandwidth``." }, { @@ -28962,7 +30006,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L1", "id": "tests_unit_sync_test_pre_sync_gate_py", - "community": 179, + "community": 189, "norm_label": "test_pre_sync_gate.py" }, { @@ -28971,7 +30015,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L28", "id": "sync_test_pre_sync_gate_build_creation", - "community": 179, + "community": 189, "norm_label": "_build_creation()" }, { @@ -28980,7 +30024,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L58", "id": "sync_test_pre_sync_gate_validator", - "community": 179, + "community": 189, "norm_label": "validator()" }, { @@ -28989,7 +30033,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L62", "id": "sync_test_pre_sync_gate_test_clean_run_is_eligible", - "community": 179, + "community": 189, "norm_label": "test_clean_run_is_eligible()" }, { @@ -28998,7 +30042,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L78", "id": "sync_test_pre_sync_gate_test_hard_finding_blocks", - "community": 179, + "community": 189, "norm_label": "test_hard_finding_blocks()" }, { @@ -29007,7 +30051,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L94", "id": "sync_test_pre_sync_gate_test_active_override_unblocks", - "community": 179, + "community": 189, "norm_label": "test_active_override_unblocks()" }, { @@ -29016,7 +30060,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L130", "id": "sync_test_pre_sync_gate_test_revoked_override_does_not_unblock", - "community": 179, + "community": 189, "norm_label": "test_revoked_override_does_not_unblock()" }, { @@ -29025,7 +30069,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L165", "id": "sync_test_pre_sync_gate_test_soft_finding_does_not_block", - "community": 179, + "community": 189, "norm_label": "test_soft_finding_does_not_block()" }, { @@ -29034,7 +30078,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L1", "id": "sync_test_pre_sync_gate_rationale_1", - "community": 179, + "community": 189, "norm_label": "tests for ``exlab_wizard.sync.pre_sync_gate``. backend spec \u00a77.3. the pre-sync" }, { @@ -29043,7 +30087,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L63", "id": "sync_test_pre_sync_gate_rationale_63", - "community": 179, + "community": 189, "norm_label": "a creation with no validator findings is eligible for sync." }, { @@ -29052,7 +30096,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L79", "id": "sync_test_pre_sync_gate_rationale_79", - "community": 179, + "community": 189, "norm_label": "an unresolved-placeholder token in the path triggers a block." }, { @@ -29061,7 +30105,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L95", "id": "sync_test_pre_sync_gate_rationale_95", - "community": 179, + "community": 189, "norm_label": "an active override matching the finding's rule unblocks sync." }, { @@ -29070,7 +30114,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L131", "id": "sync_test_pre_sync_gate_rationale_131", - "community": 179, + "community": 189, "norm_label": "an override that has been revoked does not unblock sync." }, { @@ -29079,7 +30123,7 @@ "source_file": "tests/unit/sync/test_pre_sync_gate.py", "source_location": "L166", "id": "sync_test_pre_sync_gate_rationale_166", - "community": 179, + "community": 189, "norm_label": "a soft-tier finding (missing-required-field) does not block sync. the valid" }, { @@ -29088,7 +30132,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L1", "id": "tests_unit_sync_helpers_py", - "community": 273, + "community": 1, "norm_label": "_helpers.py" }, { @@ -29097,7 +30141,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L45", "id": "sync_helpers_read_files_from", - "community": 273, + "community": 1, "norm_label": "_read_files_from()" }, { @@ -29106,7 +30150,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L56", "id": "sync_helpers_walk_local", - "community": 110, + "community": 115, "norm_label": "_walk_local()" }, { @@ -29115,7 +30159,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L79", "id": "sync_helpers_local_lsjson_factory", - "community": 12, + "community": 1, "norm_label": "local_lsjson_factory()" }, { @@ -29124,7 +30168,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L97", "id": "sync_helpers_missing_one_lsjson_factory", - "community": 273, + "community": 1, "norm_label": "missing_one_lsjson_factory()" }, { @@ -29133,7 +30177,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L118", "id": "sync_helpers_local_check_factory", - "community": 12, + "community": 1, "norm_label": "local_check_factory()" }, { @@ -29142,7 +30186,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L137", "id": "sync_helpers_corrupt_one_check_factory", - "community": 273, + "community": 1, "norm_label": "corrupt_one_check_factory()" }, { @@ -29151,7 +30195,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L1", "id": "sync_helpers_rationale_1", - "community": 273, + "community": 1, "norm_label": "shared helpers for ``tests/unit/sync/`` test modules. kept under a leading-unde" }, { @@ -29160,7 +30204,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L46", "id": "sync_helpers_rationale_46", - "community": 273, + "community": 1, "norm_label": "read run-relative paths from a ``--files-from`` tempfile." }, { @@ -29169,7 +30213,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L57", "id": "sync_helpers_rationale_57", - "community": 110, + "community": 115, "norm_label": "build a perfect remote manifest from the local run subtree. each non-cache" }, { @@ -29178,7 +30222,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L80", "id": "sync_helpers_rationale_80", - "community": 12, + "community": 1, "norm_label": "lsjson factory whose closure mirrors the local subtree perfectly. returns a" }, { @@ -29187,7 +30231,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L100", "id": "sync_helpers_rationale_100", - "community": 273, + "community": 1, "norm_label": "lsjson factory whose closure omits ``missing_rel`` from the manifest. every" }, { @@ -29196,7 +30240,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L119", "id": "sync_helpers_rationale_119", - "community": 12, + "community": 1, "norm_label": "check factory whose closure declares every file equal. returns a closure co" }, { @@ -29205,7 +30249,7 @@ "source_file": "tests/unit/sync/_helpers.py", "source_location": "L140", "id": "sync_helpers_rationale_140", - "community": 273, + "community": 1, "norm_label": "check factory whose closure flags ``corrupt_rel`` as ``differ``. every othe" }, { @@ -29214,7 +30258,7 @@ "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L1", "id": "tests_unit_sync_transports_test_run_py", - "community": 147, + "community": 167, "norm_label": "test_run.py" }, { @@ -29223,7 +30267,7 @@ "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L17", "id": "transports_test_run_test_run_subprocess_returns_rc_and_streams", - "community": 147, + "community": 167, "norm_label": "test_run_subprocess_returns_rc_and_streams()" }, { @@ -29232,7 +30276,7 @@ "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L26", "id": "transports_test_run_test_run_subprocess_inherits_environment", - "community": 147, + "community": 167, "norm_label": "test_run_subprocess_inherits_environment()" }, { @@ -29241,7 +30285,7 @@ "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L41", "id": "transports_test_run_test_run_subprocess_logs_only_the_command", - "community": 147, + "community": 167, "norm_label": "test_run_subprocess_logs_only_the_command()" }, { @@ -29250,7 +30294,7 @@ "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L1", "id": "transports_test_run_rationale_1", - "community": 147, + "community": 167, "norm_label": "unit tests for ``exlab_wizard.sync.transports._run.run_subprocess``. rclone.con" }, { @@ -29259,7 +30303,7 @@ "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L27", "id": "transports_test_run_rationale_27", - "community": 147, + "community": 167, "norm_label": "the child inherits the parent's environment unchanged." }, { @@ -29268,7 +30312,7 @@ "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L42", "id": "transports_test_run_rationale_42", - "community": 147, + "community": 167, "norm_label": "the debug log carries the command line -- and no env block." }, { @@ -29277,7 +30321,7 @@ "source_file": "tests/unit/sync/transports/__init__.py", "source_location": "L1", "id": "tests_unit_sync_transports_init_py", - "community": 532, + "community": 557, "norm_label": "__init__.py" }, { @@ -29286,7 +30330,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L1", "id": "tests_unit_logging_test_handlers_py", - "community": 190, + "community": 196, "norm_label": "test_handlers.py" }, { @@ -29295,7 +30339,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L29", "id": "logging_test_handlers_reset_context", - "community": 136, + "community": 144, "norm_label": "_reset_context()" }, { @@ -29304,7 +30348,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L34", "id": "logging_test_handlers_make_handler", - "community": 190, + "community": 196, "norm_label": "_make_handler()" }, { @@ -29313,7 +30357,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L41", "id": "logging_test_handlers_make_record", - "community": 190, + "community": 196, "norm_label": "_make_record()" }, { @@ -29322,7 +30366,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L60", "id": "logging_test_handlers_test_writes_to_equipment_scoped_path", - "community": 190, + "community": 196, "norm_label": "test_writes_to_equipment_scoped_path()" }, { @@ -29331,7 +30375,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L76", "id": "logging_test_handlers_test_writes_to_separate_files_per_equipment", - "community": 190, + "community": 196, "norm_label": "test_writes_to_separate_files_per_equipment()" }, { @@ -29340,7 +30384,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L103", "id": "logging_test_handlers_test_subsequent_emits_reuse_the_same_file_descriptor", - "community": 190, + "community": 196, "norm_label": "test_subsequent_emits_reuse_the_same_file_descriptor()" }, { @@ -29349,7 +30393,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L129", "id": "logging_test_handlers_test_one_open_per_equipment_even_with_many_emits", - "community": 190, + "community": 196, "norm_label": "test_one_open_per_equipment_even_with_many_emits()" }, { @@ -29358,7 +30402,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L152", "id": "logging_test_handlers_test_emit_without_equipment_id_writes_no_file", - "community": 190, + "community": 196, "norm_label": "test_emit_without_equipment_id_writes_no_file()" }, { @@ -29367,7 +30411,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L164", "id": "logging_test_handlers_test_emit_with_explicit_none_equipment_skipped", - "community": 190, + "community": 196, "norm_label": "test_emit_with_explicit_none_equipment_skipped()" }, { @@ -29376,7 +30420,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L181", "id": "logging_test_handlers_test_fsync_invoked_only_on_error_level", - "community": 190, + "community": 196, "norm_label": "test_fsync_invoked_only_on_error_level()" }, { @@ -29385,7 +30429,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L199", "id": "logging_test_handlers_test_fsync_on_error_passes_correct_fd", - "community": 190, + "community": 196, "norm_label": "test_fsync_on_error_passes_correct_fd()" }, { @@ -29394,7 +30438,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L217", "id": "logging_test_handlers_test_close_drains_cached_files", - "community": 190, + "community": 196, "norm_label": "test_close_drains_cached_files()" }, { @@ -29403,7 +30447,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L232", "id": "logging_test_handlers_test_close_is_idempotent", - "community": 190, + "community": 196, "norm_label": "test_close_is_idempotent()" }, { @@ -29412,7 +30456,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L247", "id": "logging_test_handlers_test_emit_routes_unexpected_exception_through_handle_error", - "community": 190, + "community": 196, "norm_label": "test_emit_routes_unexpected_exception_through_handle_error()" }, { @@ -29421,7 +30465,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L1", "id": "logging_test_handlers_rationale_1", - "community": 190, + "community": 196, "norm_label": "tests for ``exlab_wizard.logging.handlers``. backend spec \u00a716.2.4 commits the e" }, { @@ -29430,7 +30474,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L30", "id": "logging_test_handlers_rationale_30", - "community": 136, + "community": 144, "norm_label": "wipe the run-context vars between cases so handler tests are isolated." }, { @@ -29439,7 +30483,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L35", "id": "logging_test_handlers_rationale_35", - "community": 190, + "community": 196, "norm_label": "construct a handler with a deterministic hostname for test paths." }, { @@ -29448,7 +30492,7 @@ "source_file": "tests/unit/logging/test_handlers.py", "source_location": "L248", "id": "logging_test_handlers_rationale_248", - "community": 190, + "community": 196, "norm_label": "the ``exception`` branch in :meth:`emit` is the stdlib handler-error contrac" }, { @@ -29457,7 +30501,7 @@ "source_file": "tests/unit/logging/__init__.py", "source_location": "L1", "id": "tests_unit_logging_init_py", - "community": 533, + "community": 558, "norm_label": "__init__.py" }, { @@ -29466,7 +30510,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L1", "id": "tests_unit_logging_test_context_py", - "community": 136, + "community": 144, "norm_label": "test_context.py" }, { @@ -29475,7 +30519,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L31", "id": "logging_test_context_reset_context", - "community": 136, + "community": 144, "norm_label": "_reset_context()" }, { @@ -29484,7 +30528,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L41", "id": "logging_test_context_test_set_run_context_pushes_supplied_vars", - "community": 136, + "community": 144, "norm_label": "test_set_run_context_pushes_supplied_vars()" }, { @@ -29493,7 +30537,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L56", "id": "logging_test_context_test_unsupplied_vars_are_unchanged", - "community": 136, + "community": 144, "norm_label": "test_unsupplied_vars_are_unchanged()" }, { @@ -29502,7 +30546,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L70", "id": "logging_test_context_test_context_exit_restores_prior_values", - "community": 136, + "community": 144, "norm_label": "test_context_exit_restores_prior_values()" }, { @@ -29511,7 +30555,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L81", "id": "logging_test_context_test_context_exit_clears_when_no_prior_value", - "community": 136, + "community": 144, "norm_label": "test_context_exit_clears_when_no_prior_value()" }, { @@ -29520,7 +30564,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L88", "id": "logging_test_context_test_set_run_context_with_no_args_is_noop", - "community": 136, + "community": 144, "norm_label": "test_set_run_context_with_no_args_is_noop()" }, { @@ -29529,7 +30573,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L101", "id": "logging_test_context_test_concurrent_asyncio_tasks_have_independent_contexts", - "community": 136, + "community": 144, "norm_label": "test_concurrent_asyncio_tasks_have_independent_contexts()" }, { @@ -29538,7 +30582,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L134", "id": "logging_test_context_test_get_run_context_returns_snapshot_dict", - "community": 136, + "community": 144, "norm_label": "test_get_run_context_returns_snapshot_dict()" }, { @@ -29547,7 +30591,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L149", "id": "logging_test_context_test_get_run_context_returns_all_keys_even_when_empty", - "community": 136, + "community": 144, "norm_label": "test_get_run_context_returns_all_keys_even_when_empty()" }, { @@ -29556,7 +30600,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L163", "id": "logging_test_context_test_clear_run_context_resets_every_var", - "community": 136, + "community": 144, "norm_label": "test_clear_run_context_resets_every_var()" }, { @@ -29565,7 +30609,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L1", "id": "logging_test_context_rationale_1", - "community": 136, + "community": 144, "norm_label": "tests for ``exlab_wizard.logging.context``. backend spec \u00a716.2.3 commits the pe" }, { @@ -29574,7 +30618,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L32", "id": "logging_test_context_rationale_32", - "community": 136, + "community": 144, "norm_label": "wipe context vars before each test to prevent cross-test leakage." }, { @@ -29583,7 +30627,7 @@ "source_file": "tests/unit/logging/test_context.py", "source_location": "L102", "id": "logging_test_context_rationale_102", - "community": 136, + "community": 144, "norm_label": "two ``asyncio.gather``-ed tasks must not see each other's context. this is" }, { @@ -29592,7 +30636,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L1", "id": "tests_unit_logging_test_manager_py", - "community": 29, + "community": 19, "norm_label": "test_manager.py" }, { @@ -29601,7 +30645,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L30", "id": "logging_test_manager_isolate_central_log", - "community": 29, + "community": 19, "norm_label": "_isolate_central_log()" }, { @@ -29610,7 +30654,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L50", "id": "logging_test_manager_test_get_logger_importable_from_package", - "community": 29, + "community": 19, "norm_label": "test_get_logger_importable_from_package()" }, { @@ -29619,7 +30663,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L56", "id": "logging_test_manager_test_get_logger_importable_from_manager_module", - "community": 29, + "community": 19, "norm_label": "test_get_logger_importable_from_manager_module()" }, { @@ -29628,7 +30672,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L62", "id": "logging_test_manager_test_package_and_manager_export_the_same_callable", - "community": 29, + "community": 19, "norm_label": "test_package_and_manager_export_the_same_callable()" }, { @@ -29637,7 +30681,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L69", "id": "logging_test_manager_test_get_logger_returns_stdlib_logger_instance", - "community": 29, + "community": 19, "norm_label": "test_get_logger_returns_stdlib_logger_instance()" }, { @@ -29646,7 +30690,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L76", "id": "logging_test_manager_test_get_logger_sets_name_on_returned_logger", - "community": 29, + "community": 19, "norm_label": "test_get_logger_sets_name_on_returned_logger()" }, { @@ -29655,7 +30699,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L83", "id": "logging_test_manager_test_get_logger_is_idempotent_for_same_name", - "community": 29, + "community": 19, "norm_label": "test_get_logger_is_idempotent_for_same_name()" }, { @@ -29664,7 +30708,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L93", "id": "logging_test_manager_test_get_logger_returns_distinct_loggers_for_different_names", - "community": 29, + "community": 19, "norm_label": "test_get_logger_returns_distinct_loggers_for_different_names()" }, { @@ -29673,7 +30717,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L103", "id": "logging_test_manager_test_logging_package_all_contains_get_logger", - "community": 29, + "community": 19, "norm_label": "test_logging_package_all_contains_get_logger()" }, { @@ -29682,7 +30726,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L112", "id": "logging_test_manager_test_configure_logging_with_default_threshold_and_handlers", - "community": 29, + "community": 19, "norm_label": "test_configure_logging_with_default_threshold_and_handlers()" }, { @@ -29691,7 +30735,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L121", "id": "logging_test_manager_test_configure_logging_applies_config_level", - "community": 29, + "community": 19, "norm_label": "test_configure_logging_applies_config_level()" }, { @@ -29700,7 +30744,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L128", "id": "logging_test_manager_test_configure_logging_idempotent_does_not_accumulate_handlers", - "community": 29, + "community": 19, "norm_label": "test_configure_logging_idempotent_does_not_accumulate_handlers()" }, { @@ -29709,7 +30753,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L143", "id": "logging_test_manager_test_configure_logging_routes_records_through_queue_listener", - "community": 29, + "community": 19, "norm_label": "test_configure_logging_routes_records_through_queue_listener()" }, { @@ -29718,7 +30762,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L154", "id": "logging_test_manager_test_shutdown_logging_is_idempotent", - "community": 29, + "community": 19, "norm_label": "test_shutdown_logging_is_idempotent()" }, { @@ -29727,7 +30771,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L161", "id": "logging_test_manager_test_configure_logging_installs_central_rotating_file_handler", - "community": 29, + "community": 19, "norm_label": "test_configure_logging_installs_central_rotating_file_handler()" }, { @@ -29736,7 +30780,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L176", "id": "logging_test_manager_test_configure_logging_stderr_handler_is_warn_capped", - "community": 29, + "community": 19, "norm_label": "test_configure_logging_stderr_handler_is_warn_capped()" }, { @@ -29745,7 +30789,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L192", "id": "logging_test_manager_test_resolve_threshold_unknown_level_falls_back_to_info", - "community": 29, + "community": 19, "norm_label": "test_resolve_threshold_unknown_level_falls_back_to_info()" }, { @@ -29754,7 +30798,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L207", "id": "logging_test_manager_test_configure_logging_strips_pre_existing_queue_handler", - "community": 29, + "community": 19, "norm_label": "test_configure_logging_strips_pre_existing_queue_handler()" }, { @@ -29763,7 +30807,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L228", "id": "logging_test_manager_test_build_real_handlers_includes_equipment_handler_when_local_root_set", - "community": 29, + "community": 19, "norm_label": "test_build_real_handlers_includes_equipment_handler_when_local_root_set()" }, { @@ -29772,7 +30816,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L1", "id": "logging_test_manager_rationale_1", - "community": 29, + "community": 19, "norm_label": "tests for the logger factory + ``configure_logging`` in ``exlab_wizard.logging.m" }, { @@ -29781,7 +30825,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L31", "id": "logging_test_manager_rationale_31", - "community": 29, + "community": 19, "norm_label": "redirect ``os_central_log_path`` to ``tmp_path`` so manager tests don't writ" }, { @@ -29790,7 +30834,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L113", "id": "logging_test_manager_rationale_113", - "community": 29, + "community": 19, "norm_label": "first call with ``config=none`` installs the queue-handler chain at info." }, { @@ -29799,7 +30843,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L122", "id": "logging_test_manager_rationale_122", - "community": 29, + "community": 19, "norm_label": "``loggingconfig.level`` drives the root threshold (\u00a716.5)." }, { @@ -29808,7 +30852,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L129", "id": "logging_test_manager_rationale_129", - "community": 29, + "community": 19, "norm_label": "\u00a716.2.2: re-calling ``configure_logging`` tears down + rebuilds. the launch" }, { @@ -29817,7 +30861,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L144", "id": "logging_test_manager_rationale_144", - "community": 29, + "community": 19, "norm_label": "a logger.info() call in the configured handler chain produces a record that" }, { @@ -29826,7 +30870,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L155", "id": "logging_test_manager_rationale_155", - "community": 29, + "community": 19, "norm_label": "a second ``_shutdown_logging`` call must be a no-op (used by quit)." }, { @@ -29835,7 +30879,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L162", "id": "logging_test_manager_rationale_162", - "community": 29, + "community": 19, "norm_label": "the downstream handler chain must include a ``rotatingfilehandler`` against" }, { @@ -29844,7 +30888,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L177", "id": "logging_test_manager_rationale_177", - "community": 29, + "community": 19, "norm_label": "\u00a716.2.1: the stderr handler is capped at warn even when the global threshold" }, { @@ -29853,7 +30897,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L193", "id": "logging_test_manager_rationale_193", - "community": 29, + "community": 19, "norm_label": "a ``loggingconfig`` with a level that ``getlevelname`` doesn't know about de" }, { @@ -29862,7 +30906,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L208", "id": "logging_test_manager_rationale_208", - "community": 29, + "community": 19, "norm_label": "if a stray ``queuehandler`` is on the root logger before ``configure_logging" }, { @@ -29871,7 +30915,7 @@ "source_file": "tests/unit/logging/test_manager.py", "source_location": "L231", "id": "logging_test_manager_rationale_231", - "community": 29, + "community": 19, "norm_label": "when ``local_root`` is configured, the listener chain includes an :class:`eq" }, { @@ -29880,7 +30924,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L1", "id": "tests_unit_logging_test_format_py", - "community": 113, + "community": 123, "norm_label": "test_format.py" }, { @@ -29889,7 +30933,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L21", "id": "logging_test_format_reset_context", - "community": 136, + "community": 144, "norm_label": "_reset_context()" }, { @@ -29898,7 +30942,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L31", "id": "logging_test_format_record", - "community": 113, + "community": 123, "norm_label": "_record()" }, { @@ -29907,7 +30951,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L56", "id": "logging_test_format_test_renders_all_tags_when_full_context_set", - "community": 113, + "community": 123, "norm_label": "test_renders_all_tags_when_full_context_set()" }, { @@ -29916,7 +30960,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L74", "id": "logging_test_format_test_omits_tags_when_their_context_var_is_unset", - "community": 113, + "community": 123, "norm_label": "test_omits_tags_when_their_context_var_is_unset()" }, { @@ -29925,7 +30969,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L84", "id": "logging_test_format_test_emits_no_tags_when_context_is_empty", - "community": 113, + "community": 123, "norm_label": "test_emits_no_tags_when_context_is_empty()" }, { @@ -29934,7 +30978,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L90", "id": "logging_test_format_test_level_field_is_left_padded_to_five_chars", - "community": 113, + "community": 123, "norm_label": "test_level_field_is_left_padded_to_five_chars()" }, { @@ -29943,7 +30987,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L111", "id": "logging_test_format_test_timestamp_is_utc_iso_8601_with_z_suffix", - "community": 113, + "community": 123, "norm_label": "test_timestamp_is_utc_iso_8601_with_z_suffix()" }, { @@ -29952,7 +30996,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L122", "id": "logging_test_format_test_message_with_format_args_is_rendered", - "community": 113, + "community": 123, "norm_label": "test_message_with_format_args_is_rendered()" }, { @@ -29961,7 +31005,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L143", "id": "logging_test_format_test_redact_url_userinfo_password", - "community": 113, + "community": 123, "norm_label": "test_redact_url_userinfo_password()" }, { @@ -29970,7 +31014,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L147", "id": "logging_test_format_test_redact_url_userinfo_password_with_punctuation", - "community": 113, + "community": 123, "norm_label": "test_redact_url_userinfo_password_with_punctuation()" }, { @@ -29979,7 +31023,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L154", "id": "logging_test_format_test_redact_bearer_token", - "community": 113, + "community": 123, "norm_label": "test_redact_bearer_token()" }, { @@ -29988,7 +31032,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L158", "id": "logging_test_format_test_redact_bearer_token_lowercase", - "community": 113, + "community": 123, "norm_label": "test_redact_bearer_token_lowercase()" }, { @@ -29997,7 +31041,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L162", "id": "logging_test_format_test_redact_authorization_header", - "community": 113, + "community": 123, "norm_label": "test_redact_authorization_header()" }, { @@ -30006,7 +31050,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L166", "id": "logging_test_format_test_redact_authorization_bearer_combined", - "community": 113, + "community": 123, "norm_label": "test_redact_authorization_bearer_combined()" }, { @@ -30015,7 +31059,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L172", "id": "logging_test_format_test_redact_leaves_non_secret_strings_alone", - "community": 113, + "community": 123, "norm_label": "test_redact_leaves_non_secret_strings_alone()" }, { @@ -30024,7 +31068,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L178", "id": "logging_test_format_test_redact_handles_url_without_password", - "community": 113, + "community": 123, "norm_label": "test_redact_handles_url_without_password()" }, { @@ -30033,7 +31077,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L183", "id": "logging_test_format_test_redact_handles_multiple_secrets_in_one_string", - "community": 113, + "community": 123, "norm_label": "test_redact_handles_multiple_secrets_in_one_string()" }, { @@ -30042,7 +31086,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L191", "id": "logging_test_format_test_redact_coerces_non_string_input", - "community": 113, + "community": 123, "norm_label": "test_redact_coerces_non_string_input()" }, { @@ -30051,7 +31095,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L200", "id": "logging_test_format_test_format_appends_exception_text_when_exc_info_set", - "community": 113, + "community": 123, "norm_label": "test_format_appends_exception_text_when_exc_info_set()" }, { @@ -30060,7 +31104,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L1", "id": "logging_test_format_rationale_1", - "community": 113, + "community": 123, "norm_label": "tests for ``exlab_wizard.logging.format``. backend spec \u00a716.4 defines the canon" }, { @@ -30069,7 +31113,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L22", "id": "logging_test_format_rationale_22", - "community": 136, + "community": 144, "norm_label": "ensure each test starts with no run context bleed-through." }, { @@ -30078,7 +31122,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L32", "id": "logging_test_format_rationale_32", - "community": 113, + "community": 123, "norm_label": "build a minimal ``logrecord`` at a known timestamp. the timestamp is set to" }, { @@ -30087,7 +31131,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L91", "id": "logging_test_format_rationale_91", - "community": 113, + "community": 123, "norm_label": "spec \u00a716.4: level field is exactly 5 chars wide. \u00a716.5 commits four canonic" }, { @@ -30096,7 +31140,7 @@ "source_file": "tests/unit/logging/test_format.py", "source_location": "L201", "id": "logging_test_format_rationale_201", - "community": 113, + "community": 123, "norm_label": "``record.exc_info`` triggers the formatter to append a traceback (\u00a716.4 keep" }, { @@ -30105,7 +31149,7 @@ "source_file": "tests/unit/orchestrator/__init__.py", "source_location": "L1", "id": "tests_unit_orchestrator_init_py", - "community": 534, + "community": 559, "norm_label": "__init__.py" }, { @@ -30114,7 +31158,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L1", "id": "tests_unit_orchestrator_test_scan_py", - "community": 130, + "community": 11, "norm_label": "test_scan.py" }, { @@ -30123,7 +31167,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L23", "id": "orchestrator_test_scan_test_iter_subdirs_returns_empty_for_missing_path", - "community": 130, + "community": 11, "norm_label": "test_iter_subdirs_returns_empty_for_missing_path()" }, { @@ -30132,7 +31176,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L27", "id": "orchestrator_test_scan_test_iter_subdirs_skips_cache_dir_and_dotfiles", - "community": 130, + "community": 11, "norm_label": "test_iter_subdirs_skips_cache_dir_and_dotfiles()" }, { @@ -30141,7 +31185,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L38", "id": "orchestrator_test_scan_test_iter_subdirs_does_not_follow_symlinks", - "community": 130, + "community": 11, "norm_label": "test_iter_subdirs_does_not_follow_symlinks()" }, { @@ -30150,7 +31194,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L54", "id": "orchestrator_test_scan_test_walk_run_leaves_returns_empty_when_root_missing", - "community": 130, + "community": 11, "norm_label": "test_walk_run_leaves_returns_empty_when_root_missing()" }, { @@ -30159,7 +31203,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L58", "id": "orchestrator_test_scan_test_walk_run_leaves_finds_experimental_and_test_runs", - "community": 130, + "community": 11, "norm_label": "test_walk_run_leaves_finds_experimental_and_test_runs()" }, { @@ -30168,7 +31212,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L69", "id": "orchestrator_test_scan_test_walk_run_leaves_handles_empty_tree", - "community": 130, + "community": 11, "norm_label": "test_walk_run_leaves_handles_empty_tree()" }, { @@ -30177,7 +31221,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L79", "id": "orchestrator_test_scan_test_count_files_and_bytes_excludes_cache_dir_by_default", - "community": 130, + "community": 11, "norm_label": "test_count_files_and_bytes_excludes_cache_dir_by_default()" }, { @@ -30186,7 +31230,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L88", "id": "orchestrator_test_scan_test_count_files_and_bytes_includes_cache_dir_when_requested", - "community": 130, + "community": 11, "norm_label": "test_count_files_and_bytes_includes_cache_dir_when_requested()" }, { @@ -30195,7 +31239,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L97", "id": "orchestrator_test_scan_test_count_files_and_bytes_returns_zero_for_missing_path", - "community": 130, + "community": 11, "norm_label": "test_count_files_and_bytes_returns_zero_for_missing_path()" }, { @@ -30204,7 +31248,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L103", "id": "orchestrator_test_scan_test_count_files_and_bytes_descends_into_subdirectories", - "community": 130, + "community": 11, "norm_label": "test_count_files_and_bytes_descends_into_subdirectories()" }, { @@ -30213,7 +31257,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L1", "id": "orchestrator_test_scan_rationale_1", - "community": 130, + "community": 11, "norm_label": "unit tests for ``exlab_wizard.orchestrator._scan``. the shared filesystem helpe" }, { @@ -30222,7 +31266,7 @@ "source_file": "tests/unit/orchestrator/test_scan.py", "source_location": "L70", "id": "orchestrator_test_scan_rationale_70", - "community": 130, + "community": 11, "norm_label": "an empty staging_root has no run leaves -- not an error." }, { @@ -30231,7 +31275,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L1", "id": "tests_unit_orchestrator_test_staging_query_py", - "community": 131, + "community": 11, "norm_label": "test_staging_query.py" }, { @@ -30240,7 +31284,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L29", "id": "orchestrator_test_staging_query_config", - "community": 131, + "community": 11, "norm_label": "_config()" }, { @@ -30249,7 +31293,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L39", "id": "orchestrator_test_staging_query_seed_run", - "community": 131, + "community": 11, "norm_label": "_seed_run()" }, { @@ -30258,7 +31302,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L61", "id": "orchestrator_test_staging_query_test_list_staged_runs_returns_empty_when_staging_root_unset", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_returns_empty_when_staging_root_unset()" }, { @@ -30267,7 +31311,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L66", "id": "orchestrator_test_staging_query_test_list_staged_runs_returns_empty_when_staging_root_missing", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_returns_empty_when_staging_root_missing()" }, { @@ -30276,7 +31320,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L76", "id": "orchestrator_test_staging_query_test_list_staged_runs_returns_summary_rows", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_returns_summary_rows()" }, { @@ -30285,7 +31329,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L92", "id": "orchestrator_test_staging_query_test_list_staged_runs_includes_test_runs_under_testruns", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_includes_test_runs_under_testruns()" }, { @@ -30294,7 +31338,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L99", "id": "orchestrator_test_staging_query_test_list_staged_runs_reports_syncing_when_a_file_is_unverified", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_reports_syncing_when_a_file_is_unverified()" }, { @@ -30303,7 +31347,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L108", "id": "orchestrator_test_staging_query_test_list_staged_runs_reports_synced_when_all_files_verified", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_reports_synced_when_all_files_verified()" }, { @@ -30312,7 +31356,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L121", "id": "orchestrator_test_staging_query_test_list_staged_runs_reports_cleared_after_mark_cleared", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_reports_cleared_after_mark_cleared()" }, { @@ -30321,7 +31365,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L135", "id": "orchestrator_test_staging_query_test_list_staged_runs_remodified_file_flips_rollup_back_to_syncing", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_remodified_file_flips_rollup_back_to_syncing()" }, { @@ -30330,7 +31374,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L152", "id": "orchestrator_test_staging_query_test_list_staged_runs_includes_runs_without_creation_metadata", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_includes_runs_without_creation_metadata()" }, { @@ -30339,7 +31383,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L162", "id": "orchestrator_test_staging_query_test_list_staged_runs_sorts_most_recent_first", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_sorts_most_recent_first()" }, { @@ -30348,7 +31392,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L177", "id": "orchestrator_test_staging_query_test_list_staged_runs_excludes_cache_dir_from_byte_total", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_excludes_cache_dir_from_byte_total()" }, { @@ -30357,7 +31401,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L189", "id": "orchestrator_test_staging_query_test_list_staged_runs_uses_explicit_staging_root_param", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_uses_explicit_staging_root_param()" }, { @@ -30366,7 +31410,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L197", "id": "orchestrator_test_staging_query_test_list_staged_runs_sets_last_activity_from_directory_mtime", - "community": 131, + "community": 11, "norm_label": "test_list_staged_runs_sets_last_activity_from_directory_mtime()" }, { @@ -30375,7 +31419,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L1", "id": "orchestrator_test_staging_query_rationale_1", - "community": 131, + "community": 11, "norm_label": "unit tests for ``exlab_wizard.orchestrator.staging_query``. backend spec \u00a713.8." }, { @@ -30384,7 +31428,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L100", "id": "orchestrator_test_staging_query_rationale_100", - "community": 131, + "community": 11, "norm_label": "a run with an unverified tracked file rolls up to ``syncing``." }, { @@ -30393,7 +31437,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L109", "id": "orchestrator_test_staging_query_rationale_109", - "community": 131, + "community": 11, "norm_label": "every tracked file verified -> ``current_state == 'synced'``." }, { @@ -30402,7 +31446,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L122", "id": "orchestrator_test_staging_query_rationale_122", - "community": 131, + "community": 11, "norm_label": "a run whose ``sync_state.json`` carries ``cleared_at`` rolls up to ``cleared``." }, { @@ -30411,7 +31455,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L136", "id": "orchestrator_test_staging_query_rationale_136", - "community": 131, + "community": 11, "norm_label": "a re-modified file (signature cleared -> unverified) flips synced back to syncin" }, { @@ -30420,7 +31464,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L153", "id": "orchestrator_test_staging_query_rationale_153", - "community": 131, + "community": 11, "norm_label": "a run leaf with no cache metadata is still listed (ingest.json gone)." }, { @@ -30429,7 +31473,7 @@ "source_file": "tests/unit/orchestrator/test_staging_query.py", "source_location": "L178", "id": "orchestrator_test_staging_query_rationale_178", - "community": 131, + "community": 11, "norm_label": "the .exlab-wizard subtree is metadata, not staged data." }, { @@ -30438,7 +31482,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L1", "id": "tests_unit_orchestrator_test_quiescence_poller_py", - "community": 27, + "community": 30, "norm_label": "test_quiescence_poller.py" }, { @@ -30447,7 +31491,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L38", "id": "orchestrator_test_quiescence_poller_stubnassync", - "community": 27, + "community": 30, "norm_label": "_stubnassync" }, { @@ -30456,7 +31500,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L41", "id": "orchestrator_test_quiescence_poller_stubnassync_init", - "community": 27, + "community": 30, "norm_label": ".__init__()" }, { @@ -30465,7 +31509,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L44", "id": "orchestrator_test_quiescence_poller_stubnassync_enqueue", - "community": 27, + "community": 30, "norm_label": ".enqueue()" }, { @@ -30474,7 +31518,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L48", "id": "orchestrator_test_quiescence_poller_enqueued_paths", - "community": 27, + "community": 30, "norm_label": "enqueued_paths()" }, { @@ -30483,7 +31527,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L57", "id": "orchestrator_test_quiescence_poller_make_config", - "community": 27, + "community": 30, "norm_label": "_make_config()" }, { @@ -30492,7 +31536,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L87", "id": "orchestrator_test_quiescence_poller_make_run", - "community": 27, + "community": 30, "norm_label": "_make_run()" }, { @@ -30501,7 +31545,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L96", "id": "orchestrator_test_quiescence_poller_poller", - "community": 27, + "community": 30, "norm_label": "_poller()" }, { @@ -30510,7 +31554,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L104", "id": "orchestrator_test_quiescence_poller_signature", - "community": 27, + "community": 30, "norm_label": "_signature()" }, { @@ -30519,7 +31563,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L114", "id": "orchestrator_test_quiescence_poller_test_file_becomes_quiet_only_after_settle_window", - "community": 27, + "community": 30, "norm_label": "test_file_becomes_quiet_only_after_settle_window()" }, { @@ -30528,7 +31572,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L136", "id": "orchestrator_test_quiescence_poller_test_modified_file_resets_the_settle_window", - "community": 27, + "community": 30, "norm_label": "test_modified_file_resets_the_settle_window()" }, { @@ -30537,7 +31581,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L162", "id": "orchestrator_test_quiescence_poller_test_ignore_glob_files_do_not_make_a_run_eligible", - "community": 27, + "community": 30, "norm_label": "test_ignore_glob_files_do_not_make_a_run_eligible()" }, { @@ -30546,7 +31590,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L178", "id": "orchestrator_test_quiescence_poller_test_quiet_real_file_enqueues_despite_ignored_sibling", - "community": 27, + "community": 30, "norm_label": "test_quiet_real_file_enqueues_despite_ignored_sibling()" }, { @@ -30555,7 +31599,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L198", "id": "orchestrator_test_quiescence_poller_test_discovers_both_staging_and_nas_mode_runs", - "community": 27, + "community": 30, "norm_label": "test_discovers_both_staging_and_nas_mode_runs()" }, { @@ -30564,7 +31608,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L220", "id": "orchestrator_test_quiescence_poller_test_co_rooted_stage_mode_equipment_run_is_not_enqueued", - "community": 27, + "community": 30, "norm_label": "test_co_rooted_stage_mode_equipment_run_is_not_enqueued()" }, { @@ -30573,7 +31617,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L265", "id": "orchestrator_test_quiescence_poller_test_file_matching_synced_signature_is_not_re_enqueued", - "community": 27, + "community": 30, "norm_label": "test_file_matching_synced_signature_is_not_re_enqueued()" }, { @@ -30582,7 +31626,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L289", "id": "orchestrator_test_quiescence_poller_test_file_modified_after_recorded_sync_becomes_eligible", - "community": 27, + "community": 30, "norm_label": "test_file_modified_after_recorded_sync_becomes_eligible()" }, { @@ -30591,7 +31635,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L312", "id": "orchestrator_test_quiescence_poller_test_only_changed_file_in_a_run_is_enqueued", - "community": 27, + "community": 30, "norm_label": "test_only_changed_file_in_a_run_is_enqueued()" }, { @@ -30600,7 +31644,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L343", "id": "orchestrator_test_quiescence_poller_test_start_then_stop_is_idempotent", - "community": 27, + "community": 30, "norm_label": "test_start_then_stop_is_idempotent()" }, { @@ -30609,7 +31653,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L358", "id": "orchestrator_test_quiescence_poller_test_apply_config_swaps_config_reference", - "community": 27, + "community": 30, "norm_label": "test_apply_config_swaps_config_reference()" }, { @@ -30618,7 +31662,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L366", "id": "orchestrator_test_quiescence_poller_test_apply_config_quiescence_change_is_live", - "community": 27, + "community": 30, "norm_label": "test_apply_config_quiescence_change_is_live()" }, { @@ -30627,7 +31671,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L1", "id": "orchestrator_test_quiescence_poller_rationale_1", - "community": 27, + "community": 30, "norm_label": "unit tests for ``exlab_wizard.orchestrator.quiescence_poller``. the :class:`qui" }, { @@ -30636,7 +31680,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L39", "id": "orchestrator_test_quiescence_poller_rationale_39", - "community": 27, + "community": 30, "norm_label": "in-memory nas-sync stub recording per-file enqueue calls." }, { @@ -30645,7 +31689,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L63", "id": "orchestrator_test_quiescence_poller_rationale_63", - "community": 27, + "community": 30, "norm_label": "build a config with an optional staging root and a nas-mode equipment." }, { @@ -30654,7 +31698,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L88", "id": "orchestrator_test_quiescence_poller_rationale_88", - "community": 27, + "community": 30, "norm_label": "create a run-leaf directory mirroring the \u00a713.2 staging layout." }, { @@ -30663,7 +31707,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L115", "id": "orchestrator_test_quiescence_poller_rationale_115", - "community": 27, + "community": 30, "norm_label": "a file is enqueued only after its signature settles for the window." }, { @@ -30672,7 +31716,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L137", "id": "orchestrator_test_quiescence_poller_rationale_137", - "community": 27, + "community": 30, "norm_label": "a signature change resets ``first_seen``; the window restarts." }, { @@ -30681,7 +31725,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L163", "id": "orchestrator_test_quiescence_poller_rationale_163", - "community": 27, + "community": 30, "norm_label": "a run holding only ignore-glob files never enqueues." }, { @@ -30690,7 +31734,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L179", "id": "orchestrator_test_quiescence_poller_rationale_179", - "community": 27, + "community": 30, "norm_label": "a quiet non-ignored file enqueues even when ignored files coexist." }, { @@ -30699,7 +31743,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L199", "id": "orchestrator_test_quiescence_poller_rationale_199", - "community": 27, + "community": 30, "norm_label": "a sweep finds runs under staging_root and under nas-mode local_root." }, { @@ -30708,7 +31752,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L221", "id": "orchestrator_test_quiescence_poller_rationale_221", - "community": 27, + "community": 30, "norm_label": "a ``stage``-mode equipment sharing one ``local_root`` with a ``nas``-mode eq" }, { @@ -30717,7 +31761,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L266", "id": "orchestrator_test_quiescence_poller_rationale_266", - "community": 27, + "community": 30, "norm_label": "a quiet file already synced at its current signature is skipped." }, { @@ -30726,7 +31770,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L290", "id": "orchestrator_test_quiescence_poller_rationale_290", - "community": 27, + "community": 30, "norm_label": "a file modified after its recorded sync re-enters the eligible set." }, { @@ -30735,7 +31779,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L313", "id": "orchestrator_test_quiescence_poller_rationale_313", - "community": 27, + "community": 30, "norm_label": "a run with a mix of synced + modified files enqueues only the dirty one." }, { @@ -30744,7 +31788,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L344", "id": "orchestrator_test_quiescence_poller_rationale_344", - "community": 27, + "community": 30, "norm_label": "start()/stop() can be called repeatedly without error." }, { @@ -30753,7 +31797,7 @@ "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L367", "id": "orchestrator_test_quiescence_poller_rationale_367", - "community": 27, + "community": 30, "norm_label": "a live quiescence-window change takes effect on the next sweep. poll_once r" }, { @@ -30762,7 +31806,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L1", "id": "tests_integration_test_orchestrator_lifecycle_py", - "community": 8, + "community": 13, "norm_label": "test_orchestrator_lifecycle.py" }, { @@ -30771,7 +31815,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L39", "id": "integration_test_orchestrator_lifecycle_handle", - "community": 8, + "community": 13, "norm_label": "_handle" }, { @@ -30780,7 +31824,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L46", "id": "integration_test_orchestrator_lifecycle_stubjobrow", - "community": 8, + "community": 13, "norm_label": "_stubjobrow" }, { @@ -30789,7 +31833,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L51", "id": "integration_test_orchestrator_lifecycle_stubnassync", - "community": 8, + "community": 13, "norm_label": "_stubnassync" }, { @@ -30798,7 +31842,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L54", "id": "integration_test_orchestrator_lifecycle_stubnassync_init", - "community": 8, + "community": 13, "norm_label": ".__init__()" }, { @@ -30807,7 +31851,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L58", "id": "integration_test_orchestrator_lifecycle_stubnassync_enqueue", - "community": 8, + "community": 13, "norm_label": ".enqueue()" }, { @@ -30816,7 +31860,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L62", "id": "integration_test_orchestrator_lifecycle_stubnassync_status", - "community": 8, + "community": 13, "norm_label": ".status()" }, { @@ -30825,7 +31869,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L65", "id": "integration_test_orchestrator_lifecycle_stubnassync_list_all", - "community": 8, + "community": 13, "norm_label": ".list_all()" }, { @@ -30834,7 +31878,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L71", "id": "integration_test_orchestrator_lifecycle_enqueued_paths", - "community": 8, + "community": 13, "norm_label": "enqueued_paths()" }, { @@ -30843,7 +31887,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L75", "id": "integration_test_orchestrator_lifecycle_make_config", - "community": 8, + "community": 13, "norm_label": "_make_config()" }, { @@ -30852,7 +31896,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L95", "id": "integration_test_orchestrator_lifecycle_stage_run", - "community": 8, + "community": 13, "norm_label": "_stage_run()" }, { @@ -30861,7 +31905,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L107", "id": "integration_test_orchestrator_lifecycle_test_poller_enqueues_run_after_settle_window", - "community": 8, + "community": 13, "norm_label": "test_poller_enqueues_run_after_settle_window()" }, { @@ -30870,7 +31914,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L125", "id": "integration_test_orchestrator_lifecycle_test_poller_skips_file_already_synced_at_current_signature", - "community": 8, + "community": 13, "norm_label": "test_poller_skips_file_already_synced_at_current_signature()" }, { @@ -30879,7 +31923,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L152", "id": "integration_test_orchestrator_lifecycle_mark_run_synced", - "community": 8, + "community": 13, "norm_label": "_mark_run_synced()" }, { @@ -30888,7 +31932,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L161", "id": "integration_test_orchestrator_lifecycle_test_staging_endpoint_surfaces_run_with_rollup_state", - "community": 8, + "community": 13, "norm_label": "test_staging_endpoint_surfaces_run_with_rollup_state()" }, { @@ -30897,7 +31941,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L178", "id": "integration_test_orchestrator_lifecycle_test_clear_endpoint_deletes_synced_run", - "community": 8, + "community": 13, "norm_label": "test_clear_endpoint_deletes_synced_run()" }, { @@ -30906,7 +31950,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L201", "id": "integration_test_orchestrator_lifecycle_test_clear_endpoint_rejects_unsynced_run", - "community": 8, + "community": 13, "norm_label": "test_clear_endpoint_rejects_unsynced_run()" }, { @@ -30915,7 +31959,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L1", "id": "integration_test_orchestrator_lifecycle_rationale_1", - "community": 8, + "community": 13, "norm_label": "integration test for the orchestrator quiescence-sync lifecycle. backend spec \u00a7" }, { @@ -30924,7 +31968,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L52", "id": "integration_test_orchestrator_lifecycle_rationale_52", - "community": 8, + "community": 13, "norm_label": "in-memory sync client that records per-file enqueue + serves status/list_all." }, { @@ -30933,7 +31977,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L108", "id": "integration_test_orchestrator_lifecycle_rationale_108", - "community": 8, + "community": 13, "norm_label": "a staged run is enqueued only once its files settle for the window." }, { @@ -30942,7 +31986,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L126", "id": "integration_test_orchestrator_lifecycle_rationale_126", - "community": 8, + "community": 13, "norm_label": "a quiet file recorded in sync_state.json at its current signature is not re-" }, { @@ -30951,7 +31995,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L153", "id": "integration_test_orchestrator_lifecycle_rationale_153", - "community": 8, + "community": 13, "norm_label": "write a fully-verified ``sync_state.json`` so the run rolls up to ``synced``." }, { @@ -30960,7 +32004,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L162", "id": "integration_test_orchestrator_lifecycle_rationale_162", - "community": 8, + "community": 13, "norm_label": "``get /staging`` reports the run with its ``sync_state.json`` rollup." }, { @@ -30969,7 +32013,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L179", "id": "integration_test_orchestrator_lifecycle_rationale_179", - "community": 8, + "community": 13, "norm_label": "``post /staging/.../clear`` deletes a fully-``synced`` run's data files, ret" }, { @@ -30978,7 +32022,7 @@ "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L202", "id": "integration_test_orchestrator_lifecycle_rationale_202", - "community": 8, + "community": 13, "norm_label": "a run that is not fully ``synced`` cannot be cleared." }, { @@ -30987,7 +32031,7 @@ "source_file": "tests/integration/test_tray_window_smoke.py", "source_location": "L1", "id": "tests_integration_test_tray_window_smoke_py", - "community": 74, + "community": 27, "norm_label": "test_tray_window_smoke.py" }, { @@ -30996,7 +32040,7 @@ "source_file": "tests/integration/test_tray_window_smoke.py", "source_location": "L24", "id": "integration_test_tray_window_smoke_wait_for", - "community": 74, + "community": 27, "norm_label": "_wait_for()" }, { @@ -31005,7 +32049,7 @@ "source_file": "tests/integration/test_tray_window_smoke.py", "source_location": "L40", "id": "integration_test_tray_window_smoke_test_root_serves_html_after_mount", - "community": 74, + "community": 27, "norm_label": "test_root_serves_html_after_mount()" }, { @@ -31014,7 +32058,7 @@ "source_file": "tests/integration/test_tray_window_smoke.py", "source_location": "L1", "id": "integration_test_tray_window_smoke_rationale_1", - "community": 74, + "community": 27, "norm_label": "integration smoke: pywebview-facing root path returns html, not json 404. this" }, { @@ -31023,7 +32067,7 @@ "source_file": "tests/integration/test_lims_integration.py", "source_location": "L1", "id": "tests_integration_test_lims_integration_py", - "community": 256, + "community": 253, "norm_label": "test_lims_integration.py" }, { @@ -31032,7 +32076,7 @@ "source_file": "tests/integration/test_lims_integration.py", "source_location": "L27", "id": "integration_test_lims_integration_make_client", - "community": 256, + "community": 253, "norm_label": "_make_client()" }, { @@ -31041,7 +32085,7 @@ "source_file": "tests/integration/test_lims_integration.py", "source_location": "L45", "id": "integration_test_lims_integration_test_client_populates_cache", - "community": 256, + "community": 253, "norm_label": "test_client_populates_cache()" }, { @@ -31050,7 +32094,7 @@ "source_file": "tests/integration/test_lims_integration.py", "source_location": "L63", "id": "integration_test_lims_integration_test_cache_satisfies_lookup_without_network", - "community": 256, + "community": 253, "norm_label": "test_cache_satisfies_lookup_without_network()" }, { @@ -31059,7 +32103,7 @@ "source_file": "tests/integration/test_lims_integration.py", "source_location": "L83", "id": "integration_test_lims_integration_test_expired_cache_is_refreshed", - "community": 256, + "community": 253, "norm_label": "test_expired_cache_is_refreshed()" }, { @@ -31068,7 +32112,7 @@ "source_file": "tests/integration/test_lims_integration.py", "source_location": "L116", "id": "integration_test_lims_integration_test_relogin_then_cache_upsert", - "community": 256, + "community": 253, "norm_label": "test_relogin_then_cache_upsert()" }, { @@ -31077,7 +32121,7 @@ "source_file": "tests/integration/test_lims_integration.py", "source_location": "L134", "id": "integration_test_lims_integration_test_status_filter_consistent_between_client_and_cache", - "community": 256, + "community": 253, "norm_label": "test_status_filter_consistent_between_client_and_cache()" }, { @@ -31086,7 +32130,7 @@ "source_file": "tests/integration/test_lims_integration.py", "source_location": "L1", "id": "integration_test_lims_integration_rationale_1", - "community": 256, + "community": 253, "norm_label": "integration tests for the lims client + cache pair. backend spec \u00a77.2. these te" }, { @@ -31095,7 +32139,7 @@ "source_file": "tests/integration/test_lims_integration.py", "source_location": "L46", "id": "integration_test_lims_integration_rationale_46", - "community": 256, + "community": 253, "norm_label": "list_projects() fills the cache; the cache then returns the same rows." }, { @@ -31104,7 +32148,7 @@ "source_file": "tests/integration/test_lims_integration.py", "source_location": "L64", "id": "integration_test_lims_integration_rationale_64", - "community": 256, + "community": 253, "norm_label": "a get_project against the cache hits without a live lims call." }, { @@ -31113,7 +32157,7 @@ "source_file": "tests/integration/test_lims_integration.py", "source_location": "L84", "id": "integration_test_lims_integration_rationale_84", - "community": 256, + "community": 253, "norm_label": "when cache ttl expires, a refresh from the live api rewrites rows." }, { @@ -31122,7 +32166,7 @@ "source_file": "tests/integration/test_lims_integration.py", "source_location": "L117", "id": "integration_test_lims_integration_rationale_117", - "community": 256, + "community": 253, "norm_label": "a 401-then-relogin flow successfully refreshes and caches results." }, { @@ -31131,7 +32175,7 @@ "source_file": "tests/integration/test_tray_lifecycle.py", "source_location": "L1", "id": "tests_integration_test_tray_lifecycle_py", - "community": 74, + "community": 27, "norm_label": "test_tray_lifecycle.py" }, { @@ -31140,7 +32184,7 @@ "source_file": "tests/integration/test_tray_lifecycle.py", "source_location": "L31", "id": "integration_test_tray_lifecycle_wait_for_health", - "community": 74, + "community": 27, "norm_label": "_wait_for_health()" }, { @@ -31149,7 +32193,7 @@ "source_file": "tests/integration/test_tray_lifecycle.py", "source_location": "L48", "id": "integration_test_tray_lifecycle_test_tray_lifecycle_round_trip", - "community": 74, + "community": 27, "norm_label": "test_tray_lifecycle_round_trip()" }, { @@ -31158,7 +32202,7 @@ "source_file": "tests/integration/test_tray_lifecycle.py", "source_location": "L85", "id": "integration_test_tray_lifecycle_test_tray_lifecycle_window_handshake_reads_server_json", - "community": 74, + "community": 27, "norm_label": "test_tray_lifecycle_window_handshake_reads_server_json()" }, { @@ -31167,7 +32211,7 @@ "source_file": "tests/integration/test_tray_lifecycle.py", "source_location": "L1", "id": "integration_test_tray_lifecycle_rationale_1", - "community": 74, + "community": 27, "norm_label": "integration test: tray <-> window lifecycle round-trip. backend spec \u00a74.3.2. th" }, { @@ -31176,7 +32220,7 @@ "source_file": "tests/integration/test_tray_lifecycle.py", "source_location": "L32", "id": "integration_test_tray_lifecycle_rationale_32", - "community": 74, + "community": 27, "norm_label": "poll ``/api/v1/health`` until the server is accepting requests." }, { @@ -31185,7 +32229,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L1", "id": "tests_integration_test_nas_sync_py", - "community": 28, + "community": 37, "norm_label": "test_nas_sync.py" }, { @@ -31194,7 +32238,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L52", "id": "integration_test_nas_sync_stubkeyring", - "community": 28, + "community": 37, "norm_label": "_stubkeyring" }, { @@ -31203,7 +32247,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L63", "id": "integration_test_nas_sync_stubkeyring_init", - "community": 28, + "community": 37, "norm_label": ".__init__()" }, { @@ -31212,7 +32256,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L66", "id": "integration_test_nas_sync_stubkeyring_get_password", - "community": 28, + "community": 37, "norm_label": ".get_password()" }, { @@ -31221,7 +32265,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L72", "id": "integration_test_nas_sync_stub_binaries_on_path", - "community": 453, + "community": 37, "norm_label": "stub_binaries_on_path()" }, { @@ -31230,7 +32274,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L85", "id": "integration_test_nas_sync_build_config", - "community": 28, + "community": 37, "norm_label": "_build_config()" }, { @@ -31239,7 +32283,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L110", "id": "integration_test_nas_sync_make_creation", - "community": 28, + "community": 37, "norm_label": "_make_creation()" }, { @@ -31248,7 +32292,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L129", "id": "integration_test_nas_sync_populate_run", - "community": 28, + "community": 37, "norm_label": "_populate_run()" }, { @@ -31257,7 +32301,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L140", "id": "integration_test_nas_sync_wait_for_state", - "community": 28, + "community": 37, "norm_label": "_wait_for_state()" }, { @@ -31266,7 +32310,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L160", "id": "integration_test_nas_sync_test_full_happy_path_via_stub_rclone", - "community": 28, + "community": 37, "norm_label": "test_full_happy_path_via_stub_rclone()" }, { @@ -31275,7 +32319,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L234", "id": "integration_test_nas_sync_test_pre_sync_gate_blocks_run_with_placeholder_in_path", - "community": 28, + "community": 37, "norm_label": "test_pre_sync_gate_blocks_run_with_placeholder_in_path()" }, { @@ -31284,7 +32328,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L273", "id": "integration_test_nas_sync_test_auth_error_terminates_failed", - "community": 28, + "community": 37, "norm_label": "test_auth_error_terminates_failed()" }, { @@ -31293,7 +32337,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L304", "id": "integration_test_nas_sync_test_force_verify_returns_ok_after_compute", - "community": 28, + "community": 37, "norm_label": "test_force_verify_returns_ok_after_compute()" }, { @@ -31302,7 +32346,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L348", "id": "integration_test_nas_sync_test_routine_reconcile_retries_until_remote_listing_settles", - "community": 28, + "community": 37, "norm_label": "test_routine_reconcile_retries_until_remote_listing_settles()" }, { @@ -31311,7 +32355,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L426", "id": "integration_test_nas_sync_test_cleanup_hash_gate_defers_on_remote_mismatch", - "community": 28, + "community": 37, "norm_label": "test_cleanup_hash_gate_defers_on_remote_mismatch()" }, { @@ -31320,7 +32364,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L489", "id": "integration_test_nas_sync_test_poller_per_file_enqueue_drives_to_synced_state", - "community": 28, + "community": 37, "norm_label": "test_poller_per_file_enqueue_drives_to_synced_state()" }, { @@ -31329,7 +32373,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L563", "id": "integration_test_nas_sync_test_poller_to_cleanup_honors_keep_local_and_stamps_cleared", - "community": 28, + "community": 37, "norm_label": "test_poller_to_cleanup_honors_keep_local_and_stamps_cleared()" }, { @@ -31338,7 +32382,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L1", "id": "integration_test_nas_sync_rationale_1", - "community": 28, + "community": 37, "norm_label": "end-to-end integration tests for the nas sync subsystem (phase 10). these tests" }, { @@ -31347,7 +32391,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L53", "id": "integration_test_nas_sync_rationale_53", - "community": 28, + "community": 37, "norm_label": "minimal keyring stub returning a fixed password for every username. retaine" }, { @@ -31356,7 +32400,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L73", "id": "integration_test_nas_sync_rationale_73", - "community": 453, + "community": 37, "norm_label": "install the rclone stub on path for the test." }, { @@ -31365,7 +32409,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L148", "id": "integration_test_nas_sync_rationale_148", - "community": 28, + "community": 37, "norm_label": "poll ``queue.get_by_id`` until ``state`` is in ``targets`` or timeout." }, { @@ -31374,7 +32418,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L165", "id": "integration_test_nas_sync_rationale_165", - "community": 28, + "community": 37, "norm_label": "enqueue -> running -> awaiting_verify -> verified -> cleaned. uses the pyth" }, { @@ -31383,7 +32427,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L239", "id": "integration_test_nas_sync_rationale_239", - "community": 28, + "community": 37, "norm_label": "a run path with ```` is gated; sync_status -> blocked_by_validation." }, { @@ -31392,7 +32436,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L278", "id": "integration_test_nas_sync_rationale_278", - "community": 28, + "community": 37, "norm_label": "the stub returns ``auth_error`` -> queue row terminates failed." }, { @@ -31401,7 +32445,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L309", "id": "integration_test_nas_sync_rationale_309", - "community": 28, + "community": 37, "norm_label": "``force_verify`` runs a manifest pass against the local subtree." }, { @@ -31410,7 +32454,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L353", "id": "integration_test_nas_sync_rationale_353", - "community": 28, + "community": 37, "norm_label": "a reconcile that initially finds nothing remotely re-queues, then verifies." }, { @@ -31419,7 +32463,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L431", "id": "integration_test_nas_sync_rationale_431", - "community": 28, + "community": 37, "norm_label": "the pre-deletion hash-gate defers cleanup when the stub check differs. the" }, { @@ -31428,7 +32472,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L494", "id": "integration_test_nas_sync_rationale_494", - "community": 28, + "community": 37, "norm_label": "poller sweep -> per-file enqueue -> drive -> verify -> sync_state.json recor" }, { @@ -31437,7 +32481,7 @@ "source_file": "tests/integration/test_nas_sync.py", "source_location": "L568", "id": "integration_test_nas_sync_rationale_568", - "community": 28, + "community": 37, "norm_label": "full phase 5 path: poller sweep -> enqueue -> verify -> synced rollup -> cle" }, { @@ -31446,7 +32490,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L1", "id": "tests_integration_test_lims_contract_py", - "community": 223, + "community": 225, "norm_label": "test_lims_contract.py" }, { @@ -31455,7 +32499,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L31", "id": "integration_test_lims_contract_load", - "community": 223, + "community": 225, "norm_label": "_load()" }, { @@ -31464,7 +32508,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L35", "id": "integration_test_lims_contract_test_me_snapshot_decodes_into_lims_user", - "community": 223, + "community": 225, "norm_label": "test_me_snapshot_decodes_into_lims_user()" }, { @@ -31473,7 +32517,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L43", "id": "integration_test_lims_contract_test_login_response_snapshot_decodes_into_lims_user", - "community": 223, + "community": 225, "norm_label": "test_login_response_snapshot_decodes_into_lims_user()" }, { @@ -31482,7 +32526,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L51", "id": "integration_test_lims_contract_test_projects_list_snapshot_flows_through_list_projects_path", - "community": 223, + "community": 225, "norm_label": "test_projects_list_snapshot_flows_through_list_projects_path()" }, { @@ -31491,7 +32535,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L78", "id": "integration_test_lims_contract_test_empty_projects_envelope_decodes_to_empty_list", - "community": 223, + "community": 225, "norm_label": "test_empty_projects_envelope_decodes_to_empty_list()" }, { @@ -31500,7 +32544,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L86", "id": "integration_test_lims_contract_test_project_one_snapshot_decodes_into_lims_project", - "community": 223, + "community": 225, "norm_label": "test_project_one_snapshot_decodes_into_lims_project()" }, { @@ -31509,7 +32553,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L100", "id": "integration_test_lims_contract_test_snapshot_files_present_and_non_empty", - "community": 223, + "community": 225, "norm_label": "test_snapshot_files_present_and_non_empty()" }, { @@ -31518,7 +32562,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L1", "id": "integration_test_lims_contract_rationale_1", - "community": 223, + "community": 225, "norm_label": "contract test against vendored upstream `mcnaughtonadm/exlab` snapshots. loads" }, { @@ -31527,7 +32571,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L36", "id": "integration_test_lims_contract_rationale_36", - "community": 223, + "community": 225, "norm_label": "``get /api/v1/me`` json must satisfy the ``limsuser`` schema." }, { @@ -31536,7 +32580,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L44", "id": "integration_test_lims_contract_rationale_44", - "community": 223, + "community": 225, "norm_label": "upstream's login body is the same ``safe_user`` shape as ``/me``." }, { @@ -31545,7 +32589,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L52", "id": "integration_test_lims_contract_rationale_52", - "community": 223, + "community": 225, "norm_label": "``get /api/v1/projects`` payload must yield ``limsproject`` rows. mirrors t" }, { @@ -31554,7 +32598,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L79", "id": "integration_test_lims_contract_rationale_79", - "community": 223, + "community": 225, "norm_label": "an empty ``data`` array must yield zero rows, not raise." }, { @@ -31563,7 +32607,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L87", "id": "integration_test_lims_contract_rationale_87", - "community": 223, + "community": 225, "norm_label": "``get /api/v1/projects/{id}`` returns one bare project object." }, { @@ -31572,7 +32616,7 @@ "source_file": "tests/integration/test_lims_contract.py", "source_location": "L101", "id": "integration_test_lims_contract_rationale_101", - "community": 223, + "community": 225, "norm_label": "every required snapshot exists; guards against accidental deletion." }, { @@ -31581,7 +32625,7 @@ "source_file": "tests/integration/__init__.py", "source_location": "L1", "id": "tests_integration_init_py", - "community": 535, + "community": 560, "norm_label": "__init__.py" }, { @@ -31590,7 +32634,7 @@ "source_file": "tests/integration/test_schema_major_mismatch.py", "source_location": "L1", "id": "tests_integration_test_schema_major_mismatch_py", - "community": 251, + "community": 255, "norm_label": "test_schema_major_mismatch.py" }, { @@ -31599,7 +32643,7 @@ "source_file": "tests/integration/test_schema_major_mismatch.py", "source_location": "L39", "id": "integration_test_schema_major_mismatch_cachecase", - "community": 251, + "community": 255, "norm_label": "_cachecase" }, { @@ -31608,7 +32652,7 @@ "source_file": "tests/integration/test_schema_major_mismatch.py", "source_location": "L156", "id": "integration_test_schema_major_mismatch_resolve_reader", - "community": 251, + "community": 255, "norm_label": "_resolve_reader()" }, { @@ -31617,7 +32661,7 @@ "source_file": "tests/integration/test_schema_major_mismatch.py", "source_location": "L195", "id": "integration_test_schema_major_mismatch_test_cross_major_read_raises_schema_major_mismatch", - "community": 251, + "community": 255, "norm_label": "test_cross_major_read_raises_schema_major_mismatch()" }, { @@ -31626,7 +32670,7 @@ "source_file": "tests/integration/test_schema_major_mismatch.py", "source_location": "L218", "id": "integration_test_schema_major_mismatch_test_cross_major_read_records_higher_majors_too", - "community": 251, + "community": 255, "norm_label": "test_cross_major_read_records_higher_majors_too()" }, { @@ -31635,7 +32679,7 @@ "source_file": "tests/integration/test_schema_major_mismatch.py", "source_location": "L1", "id": "integration_test_schema_major_mismatch_rationale_1", - "community": 251, + "community": 255, "norm_label": "integration tests for the cross-major-read-fails contract from \u00a711.9.2. for eve" }, { @@ -31644,7 +32688,7 @@ "source_file": "tests/integration/test_schema_major_mismatch.py", "source_location": "L40", "id": "integration_test_schema_major_mismatch_rationale_40", - "community": 251, + "community": 255, "norm_label": "one cache-file flavour to exercise against the reader gate." }, { @@ -31653,7 +32697,7 @@ "source_file": "tests/integration/test_schema_major_mismatch.py", "source_location": "L157", "id": "integration_test_schema_major_mismatch_rationale_157", - "community": 251, + "community": 255, "norm_label": "walk the candidate matrix and return the first reader method we find. each" }, { @@ -31662,7 +32706,7 @@ "source_file": "tests/integration/test_schema_major_mismatch.py", "source_location": "L199", "id": "integration_test_schema_major_mismatch_rationale_199", - "community": 251, + "community": 255, "norm_label": "a v2.0 file must be refused by every v1.x reader (\u00a711.9.2 rule 3)." }, { @@ -31671,7 +32715,7 @@ "source_file": "tests/integration/test_schema_major_mismatch.py", "source_location": "L222", "id": "integration_test_schema_major_mismatch_rationale_222", - "community": 251, + "community": 255, "norm_label": "a v3.7 file is also refused; the rule isn't tied to ``2.0`` specifically." }, { @@ -31680,7 +32724,7 @@ "source_file": "tests/integration/test_creation_json_concurrent_writes.py", "source_location": "L1", "id": "tests_integration_test_creation_json_concurrent_writes_py", - "community": 285, + "community": 294, "norm_label": "test_creation_json_concurrent_writes.py" }, { @@ -31689,7 +32733,7 @@ "source_file": "tests/integration/test_creation_json_concurrent_writes.py", "source_location": "L33", "id": "integration_test_creation_json_concurrent_writes_build_minimal_payload", - "community": 285, + "community": 294, "norm_label": "_build_minimal_payload()" }, { @@ -31698,7 +32742,7 @@ "source_file": "tests/integration/test_creation_json_concurrent_writes.py", "source_location": "L57", "id": "integration_test_creation_json_concurrent_writes_test_ten_concurrent_mutations_all_land", - "community": 285, + "community": 294, "norm_label": "test_ten_concurrent_mutations_all_land()" }, { @@ -31707,7 +32751,7 @@ "source_file": "tests/integration/test_creation_json_concurrent_writes.py", "source_location": "L94", "id": "integration_test_creation_json_concurrent_writes_test_concurrent_mutations_keep_schema_at_current_version", - "community": 285, + "community": 294, "norm_label": "test_concurrent_mutations_keep_schema_at_current_version()" }, { @@ -31716,7 +32760,7 @@ "source_file": "tests/integration/test_creation_json_concurrent_writes.py", "source_location": "L131", "id": "integration_test_creation_json_concurrent_writes_test_concurrent_mutations_keep_file_valid_json", - "community": 285, + "community": 294, "norm_label": "test_concurrent_mutations_keep_file_valid_json()" }, { @@ -31725,7 +32769,7 @@ "source_file": "tests/integration/test_creation_json_concurrent_writes.py", "source_location": "L1", "id": "integration_test_creation_json_concurrent_writes_rationale_1", - "community": 285, + "community": 294, "norm_label": "integration test: concurrent ``creation.json`` writers serialize correctly. spe" }, { @@ -31734,7 +32778,7 @@ "source_file": "tests/integration/test_creation_json_concurrent_writes.py", "source_location": "L58", "id": "integration_test_creation_json_concurrent_writes_rationale_58", - "community": 285, + "community": 294, "norm_label": "run 10 ``update_creation_atomic`` calls concurrently against the same file." }, { @@ -31743,7 +32787,7 @@ "source_file": "tests/integration/test_creation_json_concurrent_writes.py", "source_location": "L97", "id": "integration_test_creation_json_concurrent_writes_rationale_97", - "community": 285, + "community": 294, "norm_label": "the writer pins ``schema_version`` to the current version on every write. co" }, { @@ -31752,7 +32796,7 @@ "source_file": "tests/integration/test_creation_json_concurrent_writes.py", "source_location": "L132", "id": "integration_test_creation_json_concurrent_writes_rationale_132", - "community": 285, + "community": 294, "norm_label": "an interleaved write must never produce a half-written file. the ``os.replac" }, { @@ -31761,7 +32805,7 @@ "source_file": "tests/integration/test_validator_determinism.py", "source_location": "L1", "id": "tests_integration_test_validator_determinism_py", - "community": 133, + "community": 280, "norm_label": "test_validator_determinism.py" }, { @@ -31770,7 +32814,7 @@ "source_file": "tests/integration/test_validator_determinism.py", "source_location": "L49", "id": "integration_test_validator_determinism_build_creation_json_dict", - "community": 133, + "community": 280, "norm_label": "_build_creation_json_dict()" }, { @@ -31779,7 +32823,7 @@ "source_file": "tests/integration/test_validator_determinism.py", "source_location": "L83", "id": "integration_test_validator_determinism_write_creation_json", - "community": 133, + "community": 280, "norm_label": "_write_creation_json()" }, { @@ -31788,7 +32832,7 @@ "source_file": "tests/integration/test_validator_determinism.py", "source_location": "L89", "id": "integration_test_validator_determinism_build_fixture_tree", - "community": 133, + "community": 280, "norm_label": "_build_fixture_tree()" }, { @@ -31797,7 +32841,7 @@ "source_file": "tests/integration/test_validator_determinism.py", "source_location": "L164", "id": "integration_test_validator_determinism_test_audit_two_calls_return_byte_identical_finding_lists", - "community": 133, + "community": 280, "norm_label": "test_audit_two_calls_return_byte_identical_finding_lists()" }, { @@ -31806,7 +32850,7 @@ "source_file": "tests/integration/test_validator_determinism.py", "source_location": "L221", "id": "integration_test_validator_determinism_test_audit_byte_identical_with_query_problems_alias", - "community": 133, + "community": 280, "norm_label": "test_audit_byte_identical_with_query_problems_alias()" }, { @@ -31815,7 +32859,7 @@ "source_file": "tests/integration/test_validator_determinism.py", "source_location": "L1", "id": "integration_test_validator_determinism_rationale_1", - "community": 133, + "community": 280, "norm_label": "integration test: ``validator.audit`` is byte-deterministic across runs. backen" }, { @@ -31824,7 +32868,7 @@ "source_file": "tests/integration/test_validator_determinism.py", "source_location": "L90", "id": "integration_test_validator_determinism_rationale_90", - "community": 133, + "community": 280, "norm_label": "construct a tree with several findings in stable on-disk shape. the tree co" }, { @@ -31833,7 +32877,7 @@ "source_file": "tests/integration/test_validator_determinism.py", "source_location": "L165", "id": "integration_test_validator_determinism_rationale_165", - "community": 133, + "community": 280, "norm_label": "spec \u00a711.8 determinism: two ``audit`` calls produce identical findings. the" }, { @@ -31842,7 +32886,7 @@ "source_file": "tests/integration/test_validator_determinism.py", "source_location": "L222", "id": "integration_test_validator_determinism_rationale_222", - "community": 133, + "community": 280, "norm_label": "``audit`` and ``query_problems`` produce byte-identical outputs. this is th" }, { @@ -31851,7 +32895,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L1", "id": "tests_integration_test_pyinstaller_smoke_py", - "community": 39, + "community": 46, "norm_label": "test_pyinstaller_smoke.py" }, { @@ -31860,7 +32904,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L61", "id": "integration_test_pyinstaller_smoke_test_tray_main_imports", - "community": 39, + "community": 46, "norm_label": "test_tray_main_imports()" }, { @@ -31869,7 +32913,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L71", "id": "integration_test_pyinstaller_smoke_test_window_main_imports", - "community": 39, + "community": 46, "norm_label": "test_window_main_imports()" }, { @@ -31878,7 +32922,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L77", "id": "integration_test_pyinstaller_smoke_test_cli_main_imports", - "community": 39, + "community": 46, "norm_label": "test_cli_main_imports()" }, { @@ -31887,7 +32931,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L91", "id": "integration_test_pyinstaller_smoke_test_version_exposed_and_well_formed", - "community": 39, + "community": 46, "norm_label": "test_version_exposed_and_well_formed()" }, { @@ -31896,7 +32940,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L105", "id": "integration_test_pyinstaller_smoke_test_version_matches_pyproject", - "community": 39, + "community": 46, "norm_label": "test_version_matches_pyproject()" }, { @@ -31905,7 +32949,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L123", "id": "integration_test_pyinstaller_smoke_test_pyproject_scripts_match_expected", - "community": 39, + "community": 46, "norm_label": "test_pyproject_scripts_match_expected()" }, { @@ -31914,7 +32958,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L138", "id": "integration_test_pyinstaller_smoke_test_spec_file_is_valid_python", - "community": 39, + "community": 46, "norm_label": "test_spec_file_is_valid_python()" }, { @@ -31923,7 +32967,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L150", "id": "integration_test_pyinstaller_smoke_test_spec_references_entry_executable", - "community": 39, + "community": 46, "norm_label": "test_spec_references_entry_executable()" }, { @@ -31932,7 +32976,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L164", "id": "integration_test_pyinstaller_smoke_test_spec_references_entry_script", - "community": 39, + "community": 46, "norm_label": "test_spec_references_entry_script()" }, { @@ -31941,7 +32985,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L174", "id": "integration_test_pyinstaller_smoke_test_spec_uses_merge_directive", - "community": 39, + "community": 46, "norm_label": "test_spec_uses_merge_directive()" }, { @@ -31950,7 +32994,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L189", "id": "integration_test_pyinstaller_smoke_test_spec_lists_required_hidden_imports", - "community": 39, + "community": 46, "norm_label": "test_spec_lists_required_hidden_imports()" }, { @@ -31959,7 +33003,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L198", "id": "integration_test_pyinstaller_smoke_test_spec_declares_macos_bundle_identifier", - "community": 39, + "community": 46, "norm_label": "test_spec_declares_macos_bundle_identifier()" }, { @@ -31968,7 +33012,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L209", "id": "integration_test_pyinstaller_smoke_test_workflow_is_valid_yaml", - "community": 39, + "community": 46, "norm_label": "test_workflow_is_valid_yaml()" }, { @@ -31977,7 +33021,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L218", "id": "integration_test_pyinstaller_smoke_test_workflow_matrix_lists_all_v1_targets", - "community": 39, + "community": 46, "norm_label": "test_workflow_matrix_lists_all_v1_targets()" }, { @@ -31986,7 +33030,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L227", "id": "integration_test_pyinstaller_smoke_test_workflow_runs_pyinstaller_and_smoke", - "community": 39, + "community": 46, "norm_label": "test_workflow_runs_pyinstaller_and_smoke()" }, { @@ -31995,7 +33039,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L246", "id": "integration_test_pyinstaller_smoke_test_internal_templates_dir_exists", - "community": 39, + "community": 46, "norm_label": "test_internal_templates_dir_exists()" }, { @@ -32004,7 +33048,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L252", "id": "integration_test_pyinstaller_smoke_test_internal_plugins_dir_exists", - "community": 39, + "community": 46, "norm_label": "test_internal_plugins_dir_exists()" }, { @@ -32013,7 +33057,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L263", "id": "integration_test_pyinstaller_smoke_test_local_build_scripts_exist", - "community": 39, + "community": 46, "norm_label": "test_local_build_scripts_exist()" }, { @@ -32022,7 +33066,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L283", "id": "integration_test_pyinstaller_smoke_test_workflow_does_not_run_on_branch_push", - "community": 39, + "community": 46, "norm_label": "test_workflow_does_not_run_on_branch_push()" }, { @@ -32031,7 +33075,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L299", "id": "integration_test_pyinstaller_smoke_test_workflow_pull_request_targets_main_only", - "community": 39, + "community": 46, "norm_label": "test_workflow_pull_request_targets_main_only()" }, { @@ -32040,7 +33084,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L310", "id": "integration_test_pyinstaller_smoke_test_workflow_concurrency_cancels_in_progress", - "community": 39, + "community": 46, "norm_label": "test_workflow_concurrency_cancels_in_progress()" }, { @@ -32049,7 +33093,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L1", "id": "integration_test_pyinstaller_smoke_rationale_1", - "community": 39, + "community": 46, "norm_label": "structural smoke tests for the pyinstaller distribution. phase 15. the actual `" }, { @@ -32058,7 +33102,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L62", "id": "integration_test_pyinstaller_smoke_rationale_62", - "community": 39, + "community": 46, "norm_label": "``exlab_wizard.tray.main:main`` must import cleanly. pyinstaller's static a" }, { @@ -32067,7 +33111,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L72", "id": "integration_test_pyinstaller_smoke_rationale_72", - "community": 39, + "community": 46, "norm_label": "``exlab_wizard.window.main:main`` must import cleanly." }, { @@ -32076,7 +33120,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L78", "id": "integration_test_pyinstaller_smoke_rationale_78", - "community": 39, + "community": 46, "norm_label": "``exlab_wizard.__main__:main`` must import cleanly. this is the operator-fa" }, { @@ -32085,7 +33129,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L92", "id": "integration_test_pyinstaller_smoke_rationale_92", - "community": 39, + "community": 46, "norm_label": "``exlab_wizard.__version__`` is a non-empty semver string. backend spec \u00a715" }, { @@ -32094,7 +33138,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L106", "id": "integration_test_pyinstaller_smoke_rationale_106", - "community": 39, + "community": 46, "norm_label": "``__version__`` mirrors ``[project] version`` in ``pyproject.toml``. drift" }, { @@ -32103,7 +33147,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L124", "id": "integration_test_pyinstaller_smoke_rationale_124", - "community": 39, + "community": 46, "norm_label": "``[project.scripts]`` lists exactly the three \u00a715.3 entry points." }, { @@ -32112,7 +33156,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L139", "id": "integration_test_pyinstaller_smoke_rationale_139", - "community": 39, + "community": 46, "norm_label": "``exlab_wizard.spec`` parses as python source. the file is interpreted by p" }, { @@ -32121,7 +33165,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L151", "id": "integration_test_pyinstaller_smoke_rationale_151", - "community": 39, + "community": 46, "norm_label": "the spec names each of the three \u00a715.1 executables." }, { @@ -32130,7 +33174,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L165", "id": "integration_test_pyinstaller_smoke_rationale_165", - "community": 39, + "community": 46, "norm_label": "the spec names the three entry-point script paths. pyinstaller resolves the" }, { @@ -32139,7 +33183,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L175", "id": "integration_test_pyinstaller_smoke_rationale_175", - "community": 39, + "community": 46, "norm_label": "the spec uses pyinstaller's ``merge`` directive (backend spec \u00a715.1). ``mer" }, { @@ -32148,7 +33192,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L190", "id": "integration_test_pyinstaller_smoke_rationale_190", - "community": 39, + "community": 46, "norm_label": "the spec declares hidden imports for libs pyinstaller misses. backend spec" }, { @@ -32157,7 +33201,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L199", "id": "integration_test_pyinstaller_smoke_rationale_199", - "community": 39, + "community": 46, "norm_label": "the spec sets the macos ``cfbundleidentifier`` (\u00a715.1)." }, { @@ -32166,7 +33210,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L210", "id": "integration_test_pyinstaller_smoke_rationale_210", - "community": 39, + "community": 46, "norm_label": "``.github/workflows/build.yml`` parses as yaml." }, { @@ -32175,7 +33219,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L219", "id": "integration_test_pyinstaller_smoke_rationale_219", - "community": 39, + "community": 46, "norm_label": "the matrix covers the three v1 runners (linux, windows, mac arm64)." }, { @@ -32184,7 +33228,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L228", "id": "integration_test_pyinstaller_smoke_rationale_228", - "community": 39, + "community": 46, "norm_label": "the workflow runs ``pyinstaller exlab_wizard.spec`` and a version probe. ba" }, { @@ -32193,7 +33237,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L247", "id": "integration_test_pyinstaller_smoke_rationale_247", - "community": 39, + "community": 46, "norm_label": "``_internal/templates/`` is checked into the repo (\u00a715.4)." }, { @@ -32202,7 +33246,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L253", "id": "integration_test_pyinstaller_smoke_rationale_253", - "community": 39, + "community": 46, "norm_label": "``_internal/plugins/`` is checked into the repo (\u00a715.4)." }, { @@ -32211,7 +33255,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L264", "id": "integration_test_pyinstaller_smoke_rationale_264", - "community": 39, + "community": 46, "norm_label": "both posix and windows wrappers are committed. these mirror the ci build st" }, { @@ -32220,7 +33264,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L284", "id": "integration_test_pyinstaller_smoke_rationale_284", - "community": 39, + "community": 46, "norm_label": "build matrix is reserved for the merge gate, not every branch push. branch" }, { @@ -32229,7 +33273,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L300", "id": "integration_test_pyinstaller_smoke_rationale_300", - "community": 39, + "community": 46, "norm_label": "``pull_request`` is gated on ``main`` so prs to other branches don't run." }, { @@ -32238,7 +33282,7 @@ "source_file": "tests/integration/test_pyinstaller_smoke.py", "source_location": "L311", "id": "integration_test_pyinstaller_smoke_rationale_311", - "community": 39, + "community": 46, "norm_label": "superseded runs on the same ref are auto-cancelled. without ``cancel-in-pro" }, { @@ -32517,7 +33561,7 @@ "source_file": "tests/integration/plugins/__init__.py", "source_location": "L1", "id": "tests_integration_plugins_init_py", - "community": 371, + "community": 374, "norm_label": "__init__.py" }, { @@ -32526,7 +33570,7 @@ "source_file": "tests/integration/controller/__init__.py", "source_location": "L1", "id": "tests_integration_controller_init_py", - "community": 392, + "community": 400, "norm_label": "__init__.py" }, { @@ -32535,7 +33579,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L1", "id": "tests_integration_controller_test_creation_flow_py", - "community": 3, + "community": 140, "norm_label": "test_creation_flow.py" }, { @@ -32544,7 +33588,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L66", "id": "controller_test_creation_flow_build_config", - "community": 3, + "community": 140, "norm_label": "_build_config()" }, { @@ -32553,7 +33597,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L87", "id": "controller_test_creation_flow_project_request", - "community": 3, + "community": 140, "norm_label": "_project_request()" }, { @@ -32562,7 +33606,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L119", "id": "controller_test_creation_flow_run_request", - "community": 3, + "community": 141, "norm_label": "_run_request()" }, { @@ -32571,7 +33615,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L148", "id": "controller_test_creation_flow_build_controller", - "community": 3, + "community": 140, "norm_label": "_build_controller()" }, { @@ -32580,7 +33624,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L170", "id": "controller_test_creation_flow_drain_to_done", - "community": 3, + "community": 141, "norm_label": "_drain_to_done()" }, { @@ -32589,7 +33633,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L187", "id": "controller_test_creation_flow_test_full_project_creation_happy_path", - "community": 3, + "community": 140, "norm_label": "test_full_project_creation_happy_path()" }, { @@ -32598,7 +33642,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L220", "id": "controller_test_creation_flow_test_full_experimental_run_creation_happy_path", - "community": 3, + "community": 141, "norm_label": "test_full_experimental_run_creation_happy_path()" }, { @@ -32607,7 +33651,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L239", "id": "controller_test_creation_flow_test_same_minute_run_creation_collision_is_hard_failure", - "community": 3, + "community": 141, "norm_label": "test_same_minute_run_creation_collision_is_hard_failure()" }, { @@ -32616,7 +33660,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L271", "id": "controller_test_creation_flow_test_test_run_creation_uses_test_runs_subdir_and_marks_run_kind", - "community": 3, + "community": 141, "norm_label": "test_test_run_creation_uses_test_runs_subdir_and_marks_run_kind()" }, { @@ -32625,7 +33669,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L302", "id": "controller_test_creation_flow_test_validation_rejects_empty_label", - "community": 3, + "community": 140, "norm_label": "test_validation_rejects_empty_label()" }, { @@ -32634,7 +33678,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L317", "id": "controller_test_creation_flow_test_validation_rejects_label_over_length", - "community": 3, + "community": 140, "norm_label": "test_validation_rejects_label_over_length()" }, { @@ -32643,7 +33687,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L331", "id": "controller_test_creation_flow_test_validation_rejects_objective_over_length", - "community": 3, + "community": 140, "norm_label": "test_validation_rejects_objective_over_length()" }, { @@ -32652,7 +33696,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L347", "id": "controller_test_creation_flow_test_validation_rejects_operator_not_in_allowlist", - "community": 3, + "community": 140, "norm_label": "test_validation_rejects_operator_not_in_allowlist()" }, { @@ -32661,7 +33705,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L361", "id": "controller_test_creation_flow_test_validation_rejects_unknown_equipment", - "community": 3, + "community": 140, "norm_label": "test_validation_rejects_unknown_equipment()" }, { @@ -32670,7 +33714,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L377", "id": "controller_test_creation_flow_test_validation_rejects_unsafe_project_name_for_runs", - "community": 3, + "community": 483, "norm_label": "test_validation_rejects_unsafe_project_name_for_runs()" }, { @@ -32679,7 +33723,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L393", "id": "controller_test_creation_flow_test_validation_rejects_empty_objective", - "community": 3, + "community": 140, "norm_label": "test_validation_rejects_empty_objective()" }, { @@ -32688,7 +33732,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L406", "id": "controller_test_creation_flow_test_validation_rejects_empty_operator", - "community": 3, + "community": 140, "norm_label": "test_validation_rejects_empty_operator()" }, { @@ -32697,268 +33741,268 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L424", "id": "controller_test_creation_flow_test_plugin_input_required_suspend_resume", - "community": 3, + "community": 141, "norm_label": "test_plugin_input_required_suspend_resume()" }, { "label": "test_cancel_with_discard_files_removes_partial_dir()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L495", + "source_location": "L500", "id": "controller_test_creation_flow_test_cancel_with_discard_files_removes_partial_dir", - "community": 3, + "community": 415, "norm_label": "test_cancel_with_discard_files_removes_partial_dir()" }, { "label": "test_cancel_without_discard_leaves_partial_dir()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L533", + "source_location": "L538", "id": "controller_test_creation_flow_test_cancel_without_discard_leaves_partial_dir", - "community": 3, + "community": 410, "norm_label": "test_cancel_without_discard_leaves_partial_dir()" }, { "label": "test_post_validate_blocks_sync_when_placeholder_left_in_file()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L555", + "source_location": "L560", "id": "controller_test_creation_flow_test_post_validate_blocks_sync_when_placeholder_left_in_file", - "community": 3, + "community": 141, "norm_label": "test_post_validate_blocks_sync_when_placeholder_left_in_file()" }, { "label": "test_subscribe_yields_phase_events_and_done_envelope()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L596", + "source_location": "L601", "id": "controller_test_creation_flow_test_subscribe_yields_phase_events_and_done_envelope", - "community": 3, + "community": 140, "norm_label": "test_subscribe_yields_phase_events_and_done_envelope()" }, { "label": "test_status_unknown_session_raises()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L624", + "source_location": "L629", "id": "controller_test_creation_flow_test_status_unknown_session_raises", - "community": 3, + "community": 140, "norm_label": "test_status_unknown_session_raises()" }, { "label": "test_resume_rejects_session_not_in_input_required()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L632", + "source_location": "L637", "id": "controller_test_creation_flow_test_resume_rejects_session_not_in_input_required", - "community": 3, + "community": 140, "norm_label": "test_resume_rejects_session_not_in_input_required()" }, { "label": "test_cancel_unknown_session_is_noop()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L642", + "source_location": "L647", "id": "controller_test_creation_flow_test_cancel_unknown_session_is_noop", - "community": 3, + "community": 140, "norm_label": "test_cancel_unknown_session_is_noop()" }, { "label": "test_noop_readme_generator_writes_minimal_readme()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L655", + "source_location": "L660", "id": "controller_test_creation_flow_test_noop_readme_generator_writes_minimal_readme", - "community": 180, + "community": 25, "norm_label": "test_noop_readme_generator_writes_minimal_readme()" }, { "label": "test_real_readme_generator_writes_frontmatter_and_cache()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L687", + "source_location": "L692", "id": "controller_test_creation_flow_test_real_readme_generator_writes_frontmatter_and_cache", - "community": 3, + "community": 403, "norm_label": "test_real_readme_generator_writes_frontmatter_and_cache()" }, { "label": "test_noop_nas_sync_returns_none()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L742", + "source_location": "L747", "id": "controller_test_creation_flow_test_noop_nas_sync_returns_none", - "community": 3, + "community": 140, "norm_label": "test_noop_nas_sync_returns_none()" }, { "label": "test_resume_unknown_session_raises()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L753", + "source_location": "L758", "id": "controller_test_creation_flow_test_resume_unknown_session_raises", - "community": 3, + "community": 140, "norm_label": "test_resume_unknown_session_raises()" }, { "label": "test_required_template_field_missing_in_readme_extra_fails()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L761", + "source_location": "L766", "id": "controller_test_creation_flow_test_required_template_field_missing_in_readme_extra_fails", - "community": 3, + "community": 409, "norm_label": "test_required_template_field_missing_in_readme_extra_fails()" }, { "label": "test_required_template_field_present_passes_validation()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L797", + "source_location": "L802", "id": "controller_test_creation_flow_test_required_template_field_present_passes_validation", - "community": 3, + "community": 141, "norm_label": "test_required_template_field_present_passes_validation()" }, { "label": "test_subscribe_unknown_session_raises()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L832", + "source_location": "L837", "id": "controller_test_creation_flow_test_subscribe_unknown_session_raises", - "community": 3, + "community": 140, "norm_label": "test_subscribe_unknown_session_raises()" }, { "label": "test_cancel_input_required_aborts_session_via_plugin_callback()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L841", + "source_location": "L846", "id": "controller_test_creation_flow_test_cancel_input_required_aborts_session_via_plugin_callback", - "community": 3, + "community": 405, "norm_label": "test_cancel_input_required_aborts_session_via_plugin_callback()" }, { "label": "test_cancel_invokes_cleanup_when_compose_path_fails()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L899", + "source_location": "L904", "id": "controller_test_creation_flow_test_cancel_invokes_cleanup_when_compose_path_fails", - "community": 3, + "community": 406, "norm_label": "test_cancel_invokes_cleanup_when_compose_path_fails()" }, { "label": "test_cleanup_removes_existing_directory_when_discard_files_true()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L922", + "source_location": "L927", "id": "controller_test_creation_flow_test_cleanup_removes_existing_directory_when_discard_files_true", - "community": 3, + "community": 408, "norm_label": "test_cleanup_removes_existing_directory_when_discard_files_true()" }, { "label": "test_config_required_readme_field_missing_fails()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L941", + "source_location": "L946", "id": "controller_test_creation_flow_test_config_required_readme_field_missing_fails", - "community": 3, + "community": 413, "norm_label": "test_config_required_readme_field_missing_fails()" }, { "label": "test_render_failure_transitions_session_to_failed()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L967", + "source_location": "L972", "id": "controller_test_creation_flow_test_render_failure_transitions_session_to_failed", - "community": 3, + "community": 412, "norm_label": "test_render_failure_transitions_session_to_failed()" }, { "label": "test_run_creation_writes_equipment_json_at_root()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L995", + "source_location": "L1000", "id": "controller_test_creation_flow_test_run_creation_writes_equipment_json_at_root", - "community": 3, + "community": 307, "norm_label": "test_run_creation_writes_equipment_json_at_root()" }, { "label": "test_format_error_with_non_validation_exception_returns_internal_error()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1009", + "source_location": "L1014", "id": "controller_test_creation_flow_test_format_error_with_non_validation_exception_returns_internal_error", - "community": 3, + "community": 333, "norm_label": "test_format_error_with_non_validation_exception_returns_internal_error()" }, { "label": "test_append_log_writes_log_line()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1018", + "source_location": "L1023", "id": "controller_test_creation_flow_test_append_log_writes_log_line", - "community": 3, + "community": 333, "norm_label": "test_append_log_writes_log_line()" }, { "label": "test_run_inherits_lims_project_block_from_parent()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1034", + "source_location": "L1039", "id": "controller_test_creation_flow_test_run_inherits_lims_project_block_from_parent", - "community": 3, + "community": 307, "norm_label": "test_run_inherits_lims_project_block_from_parent()" }, { "label": "test_cancel_before_task_starts_invokes_cleanup()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1058", + "source_location": "L1063", "id": "controller_test_creation_flow_test_cancel_before_task_starts_invokes_cleanup", - "community": 3, + "community": 411, "norm_label": "test_cancel_before_task_starts_invokes_cleanup()" }, { "label": "test_resume_session_with_no_resume_queue_raises()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1078", + "source_location": "L1083", "id": "controller_test_creation_flow_test_resume_session_with_no_resume_queue_raises", - "community": 3, + "community": 414, "norm_label": "test_resume_session_with_no_resume_queue_raises()" }, { "label": "test_subscribe_creates_queue_when_missing()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1099", + "source_location": "L1104", "id": "controller_test_creation_flow_test_subscribe_creates_queue_when_missing", - "community": 3, + "community": 404, "norm_label": "test_subscribe_creates_queue_when_missing()" }, { "label": "test_plugin_pass_aborted_transitions_to_failed()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1123", + "source_location": "L1128", "id": "controller_test_creation_flow_test_plugin_pass_aborted_transitions_to_failed", - "community": 3, + "community": 402, "norm_label": "test_plugin_pass_aborted_transitions_to_failed()" }, { "label": "test_required_field_ids_filters_non_dict_entries()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1168", + "source_location": "L1173", "id": "controller_test_creation_flow_test_required_field_ids_filters_non_dict_entries", - "community": 3, + "community": 407, "norm_label": "test_required_field_ids_filters_non_dict_entries()" }, { "label": "test_run_without_parent_creation_json_fills_stub_block()", "file_type": "code", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1184", + "source_location": "L1189", "id": "controller_test_creation_flow_test_run_without_parent_creation_json_fills_stub_block", - "community": 3, + "community": 141, "norm_label": "test_run_without_parent_creation_json_fills_stub_block()" }, { @@ -32967,7 +34011,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L1", "id": "controller_test_creation_flow_rationale_1", - "community": 3, + "community": 140, "norm_label": "end-to-end integration tests for :class:`creationcontroller`. each test drives" }, { @@ -32976,7 +34020,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L67", "id": "controller_test_creation_flow_rationale_67", - "community": 3, + "community": 140, "norm_label": "construct a minimal config with one equipment configured." }, { @@ -32985,7 +34029,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L171", "id": "controller_test_creation_flow_rationale_171", - "community": 3, + "community": 141, "norm_label": "wait for the session task to finish and return the final state dict." }, { @@ -32994,7 +34038,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L188", "id": "controller_test_creation_flow_rationale_188", - "community": 3, + "community": 140, "norm_label": "project creation walks every state and emits a current-version creation.json." }, { @@ -33003,7 +34047,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L242", "id": "controller_test_creation_flow_rationale_242", - "community": 3, + "community": 141, "norm_label": "redesign \u00a73.4: two creations on the same instrument within the same minute r" }, { @@ -33012,7 +34056,7 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L378", "id": "controller_test_creation_flow_rationale_378", - "community": 3, + "community": 483, "norm_label": "a run whose parent project name is not a safe path segment (\u00a73.2) is rejecte" }, { @@ -33021,196 +34065,196 @@ "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L425", "id": "controller_test_creation_flow_rationale_425", - "community": 3, + "community": 141, "norm_label": "when a plugin raises plugininputrequired, controller emits the event and res" }, { "label": "A cancel with ``discard_files=True`` deletes the partial directory.", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L496", - "id": "controller_test_creation_flow_rationale_496", - "community": 3, + "source_location": "L501", + "id": "controller_test_creation_flow_rationale_501", + "community": 415, "norm_label": "a cancel with ``discard_files=true`` deletes the partial directory." }, { "label": "A cancel with ``discard_files=False`` leaves the partial directory.", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L534", - "id": "controller_test_creation_flow_rationale_534", - "community": 3, + "source_location": "L539", + "id": "controller_test_creation_flow_rationale_539", + "community": 410, "norm_label": "a cancel with ``discard_files=false`` leaves the partial directory." }, { "label": "A rendered file containing ```` must trip the post-validate gate.", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L558", - "id": "controller_test_creation_flow_rationale_558", - "community": 3, + "source_location": "L563", + "id": "controller_test_creation_flow_rationale_563", + "community": 141, "norm_label": "a rendered file containing ```` must trip the post-validate gate." }, { "label": "T1 (\u00a7C1): the production ``ReadmeGenerator`` -- injected by ``tray.dependenc", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L688", - "id": "controller_test_creation_flow_rationale_688", - "community": 3, + "source_location": "L693", + "id": "controller_test_creation_flow_rationale_693", + "community": 403, "norm_label": "t1 (\u00a7c1): the production ``readmegenerator`` -- injected by ``tray.dependenc" }, { "label": "A template-required README field missing from ``readme_extra`` must trigger", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L764", - "id": "controller_test_creation_flow_rationale_764", - "community": 3, + "source_location": "L769", + "id": "controller_test_creation_flow_rationale_769", + "community": 409, "norm_label": "a template-required readme field missing from ``readme_extra`` must trigger" }, { "label": "When ``readme_extra`` supplies a non-empty value for a required field the va", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L800", - "id": "controller_test_creation_flow_rationale_800", - "community": 3, + "source_location": "L805", + "id": "controller_test_creation_flow_rationale_805", + "community": 141, "norm_label": "when ``readme_extra`` supplies a non-empty value for a required field the va" }, { "label": "When the operator cancels the input-required prompt (host returns ``aborted=", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L844", - "id": "controller_test_creation_flow_rationale_844", - "community": 3, + "source_location": "L849", + "id": "controller_test_creation_flow_rationale_849", + "community": 405, "norm_label": "when the operator cancels the input-required prompt (host returns ``aborted=" }, { "label": "``_cleanup`` swallows compose-path errors gracefully.", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L902", - "id": "controller_test_creation_flow_rationale_902", - "community": 3, + "source_location": "L907", + "id": "controller_test_creation_flow_rationale_907", + "community": 406, "norm_label": "``_cleanup`` swallows compose-path errors gracefully." }, { "label": "``_cleanup`` removes the destination directory when ``discard_files=True``.", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L925", - "id": "controller_test_creation_flow_rationale_925", - "community": 3, + "source_location": "L930", + "id": "controller_test_creation_flow_rationale_930", + "community": 408, "norm_label": "``_cleanup`` removes the destination directory when ``discard_files=true``." }, { "label": "A config.yaml-required README field missing from ``readme_extra`` must trigg", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L942", - "id": "controller_test_creation_flow_rationale_942", - "community": 3, + "source_location": "L947", + "id": "controller_test_creation_flow_rationale_947", + "community": 413, "norm_label": "a config.yaml-required readme field missing from ``readme_extra`` must trigg" }, { "label": "A Copier render failure (e.g. dst exists) transitions the session to ``FAILE", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L968", - "id": "controller_test_creation_flow_rationale_968", - "community": 3, + "source_location": "L973", + "id": "controller_test_creation_flow_rationale_973", + "community": 412, "norm_label": "a copier render failure (e.g. dst exists) transitions the session to ``faile" }, { "label": "The controller writes ``equipment.json`` under ``//.exlab-wiz", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L996", - "id": "controller_test_creation_flow_rationale_996", - "community": 3, + "source_location": "L1001", + "id": "controller_test_creation_flow_rationale_1001", + "community": 307, "norm_label": "the controller writes ``equipment.json`` under ``//.exlab-wiz" }, { "label": "Generic exceptions are wrapped as ``internal_error``.", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1012", - "id": "controller_test_creation_flow_rationale_1012", - "community": 3, + "source_location": "L1017", + "id": "controller_test_creation_flow_rationale_1017", + "community": 333, "norm_label": "generic exceptions are wrapped as ``internal_error``." }, { "label": "The best-effort log appender writes to the equipment cache dir.", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1019", - "id": "controller_test_creation_flow_rationale_1019", - "community": 3, + "source_location": "L1024", + "id": "controller_test_creation_flow_rationale_1024", + "community": 333, "norm_label": "the best-effort log appender writes to the equipment cache dir." }, { "label": "A run inherits its LIMS identity from the parent project's creation.json (Ba", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1035", - "id": "controller_test_creation_flow_rationale_1035", - "community": 3, + "source_location": "L1040", + "id": "controller_test_creation_flow_rationale_1040", + "community": 307, "norm_label": "a run inherits its lims identity from the parent project's creation.json (ba" }, { "label": "If ``cancel`` is invoked on a session that has not yet started a pipeline ta", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1059", - "id": "controller_test_creation_flow_rationale_1059", - "community": 3, + "source_location": "L1064", + "id": "controller_test_creation_flow_rationale_1064", + "community": 411, "norm_label": "if ``cancel`` is invoked on a session that has not yet started a pipeline ta" }, { "label": "Resume against a session that has no resume queue raises.", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1079", - "id": "controller_test_creation_flow_rationale_1079", - "community": 3, + "source_location": "L1084", + "id": "controller_test_creation_flow_rationale_1084", + "community": 414, "norm_label": "resume against a session that has no resume queue raises." }, { "label": "``subscribe`` initializes ``event_queue`` if the session opened with none (d", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1100", - "id": "controller_test_creation_flow_rationale_1100", - "community": 3, + "source_location": "L1105", + "id": "controller_test_creation_flow_rationale_1105", + "community": 404, "norm_label": "``subscribe`` initializes ``event_queue`` if the session opened with none (d" }, { "label": "When :class:`PluginHost` returns ``aborted=True``, the controller transition", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1124", - "id": "controller_test_creation_flow_rationale_1124", - "community": 3, + "source_location": "L1129", + "id": "controller_test_creation_flow_rationale_1129", + "community": 402, "norm_label": "when :class:`pluginhost` returns ``aborted=true``, the controller transition" }, { "label": "The ``_required_field_ids`` helper must skip non-dict entries in the templat", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1169", - "id": "controller_test_creation_flow_rationale_1169", - "community": 3, + "source_location": "L1174", + "id": "controller_test_creation_flow_rationale_1174", + "community": 407, "norm_label": "the ``_required_field_ids`` helper must skip non-dict entries in the templat" }, { "label": "A run whose parent project folder has no readable creation.json still produc", "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1185", - "id": "controller_test_creation_flow_rationale_1185", - "community": 3, + "source_location": "L1190", + "id": "controller_test_creation_flow_rationale_1190", + "community": 141, "norm_label": "a run whose parent project folder has no readable creation.json still produc" }, { @@ -33219,7 +34263,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L1", "id": "tests_integration_api_test_full_flow_py", - "community": 135, + "community": 175, "norm_label": "test_full_flow.py" }, { @@ -33237,7 +34281,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L75", "id": "api_test_full_flow_app_with_real_controller", - "community": 51, + "community": 10, "norm_label": "app_with_real_controller()" }, { @@ -33246,7 +34290,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L104", "id": "api_test_full_flow_client", - "community": 135, + "community": 175, "norm_label": "_client()" }, { @@ -33255,7 +34299,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L110", "id": "api_test_full_flow_test_full_project_creation_flow", - "community": 135, + "community": 175, "norm_label": "test_full_project_creation_flow()" }, { @@ -33264,7 +34308,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L154", "id": "api_test_full_flow_test_health_returns_ready_when_setup_complete", - "community": 135, + "community": 175, "norm_label": "test_health_returns_ready_when_setup_complete()" }, { @@ -33273,7 +34317,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L164", "id": "api_test_full_flow_test_health_warns_when_lims_unreachable", - "community": 135, + "community": 175, "norm_label": "test_health_warns_when_lims_unreachable()" }, { @@ -33282,7 +34326,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L174", "id": "api_test_full_flow_test_setup_status_each_incomplete_state", - "community": 135, + "community": 175, "norm_label": "test_setup_status_each_incomplete_state()" }, { @@ -33291,7 +34335,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L208", "id": "api_test_full_flow_test_create_session_blocked_when_setup_incomplete", - "community": 135, + "community": 175, "norm_label": "test_create_session_blocked_when_setup_incomplete()" }, { @@ -33300,7 +34344,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L232", "id": "api_test_full_flow_test_lims_unreachable_does_not_block_creation", - "community": 135, + "community": 10, "norm_label": "test_lims_unreachable_does_not_block_creation()" }, { @@ -33309,7 +34353,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L283", "id": "api_test_full_flow_test_problems_refresh_returns_audit_count", - "community": 135, + "community": 175, "norm_label": "test_problems_refresh_returns_audit_count()" }, { @@ -33318,7 +34362,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L305", "id": "api_test_full_flow_test_get_problems_returns_findings_and_filters", - "community": 135, + "community": 175, "norm_label": "test_get_problems_returns_findings_and_filters()" }, { @@ -33327,7 +34371,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L324", "id": "api_test_full_flow_test_put_config_validates_and_updates_state", - "community": 135, + "community": 175, "norm_label": "test_put_config_validates_and_updates_state()" }, { @@ -33336,7 +34380,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L344", "id": "api_test_full_flow_test_get_tree_in_ready_state", - "community": 135, + "community": 175, "norm_label": "test_get_tree_in_ready_state()" }, { @@ -33345,7 +34389,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L357", "id": "api_test_full_flow_test_websocket_streams_session_events_sync", - "community": 9, + "community": 10, "norm_label": "test_websocket_streams_session_events_sync()" }, { @@ -33354,7 +34398,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L428", "id": "api_test_full_flow_build_minimal_controller", - "community": 135, + "community": 175, "norm_label": "_build_minimal_controller()" }, { @@ -33363,7 +34407,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L1", "id": "api_test_full_flow_rationale_1", - "community": 135, + "community": 175, "norm_label": "full-flow integration test for the fastapi surface. drives one project-creation" }, { @@ -33372,7 +34416,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L76", "id": "api_test_full_flow_rationale_76", - "community": 51, + "community": 10, "norm_label": "build a fastapi app with the real controller + validator wired." }, { @@ -33381,7 +34425,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L111", "id": "api_test_full_flow_rationale_111", - "community": 135, + "community": 175, "norm_label": "end-to-end: post /sessions -> session reaches done -> creation.json on disk." }, { @@ -33390,7 +34434,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L175", "id": "api_test_full_flow_rationale_175", - "community": 135, + "community": 175, "norm_label": "each non-soft incomplete_* state surfaces the right next_action." }, { @@ -33399,7 +34443,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L209", "id": "api_test_full_flow_rationale_209", - "community": 135, + "community": 175, "norm_label": "post /sessions returns 503 + setup_incomplete in non-soft incomplete_* states." }, { @@ -33408,7 +34452,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L233", "id": "api_test_full_flow_rationale_233", - "community": 135, + "community": 10, "norm_label": "the soft block does not gate post /sessions per \u00a74.9.4." }, { @@ -33417,7 +34461,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L284", "id": "api_test_full_flow_rationale_284", - "community": 135, + "community": 175, "norm_label": "``post /problems/refresh`` invokes validator.audit and returns the count." }, { @@ -33426,7 +34470,7 @@ "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L358", "id": "api_test_full_flow_rationale_358", - "community": 9, + "community": 10, "norm_label": "end-to-end websocket stream of phase frames. uses the synchronous testclien" }, { @@ -33435,7 +34479,7 @@ "source_file": "tests/integration/api/__init__.py", "source_location": "L1", "id": "tests_integration_api_init_py", - "community": 393, + "community": 401, "norm_label": "__init__.py" }, { @@ -33444,7 +34488,7 @@ "source_file": "tests/fixtures/__init__.py", "source_location": "L1", "id": "tests_fixtures_init_py", - "community": 536, + "community": 561, "norm_label": "__init__.py" }, { @@ -33453,7 +34497,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L1", "id": "tests_fixtures_mock_lims_py", - "community": 121, + "community": 127, "norm_label": "mock_lims.py" }, { @@ -33462,7 +34506,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L38", "id": "fixtures_mock_lims_mocklimsstate", - "community": 331, + "community": 332, "norm_label": "mocklimsstate" }, { @@ -33471,7 +34515,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L53", "id": "fixtures_mock_lims_mocklimsstate_issue_session", - "community": 331, + "community": 332, "norm_label": ".issue_session()" }, { @@ -33480,7 +34524,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L59", "id": "fixtures_mock_lims_mocklimsstate_is_valid_session", - "community": 331, + "community": 332, "norm_label": ".is_valid_session()" }, { @@ -33489,7 +34533,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L62", "id": "fixtures_mock_lims_mocklimsstate_invalidate_sessions", - "community": 331, + "community": 332, "norm_label": ".invalidate_sessions()" }, { @@ -33498,7 +34542,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L69", "id": "fixtures_mock_lims_default_user", - "community": 121, + "community": 127, "norm_label": "_default_user()" }, { @@ -33507,7 +34551,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L77", "id": "fixtures_mock_lims_default_project", - "community": 121, + "community": 127, "norm_label": "_default_project()" }, { @@ -33516,7 +34560,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L90", "id": "fixtures_mock_lims_make_mock_lims_app", - "community": 121, + "community": 127, "norm_label": "make_mock_lims_app()" }, { @@ -33525,7 +34569,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L1", "id": "fixtures_mock_lims_rationale_1", - "community": 121, + "community": 127, "norm_label": "in-memory fastapi fixture lims server used by the lims-client tests. the fixtur" }, { @@ -33534,7 +34578,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L39", "id": "fixtures_mock_lims_rationale_39", - "community": 331, + "community": 332, "norm_label": "mutable per-app state. ``valid_email`` / ``valid_password`` are the credent" }, { @@ -33543,7 +34587,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L54", "id": "fixtures_mock_lims_rationale_54", - "community": 331, + "community": 332, "norm_label": "mint a fresh opaque session token." }, { @@ -33552,7 +34596,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L63", "id": "fixtures_mock_lims_rationale_63", - "community": 331, + "community": 332, "norm_label": "drop every issued session token. the next protected call sees a 401 and" }, { @@ -33561,7 +34605,7 @@ "source_file": "tests/fixtures/mock_lims.py", "source_location": "L97", "id": "fixtures_mock_lims_rationale_97", - "community": 121, + "community": 127, "norm_label": "build a fastapi app implementing the v1 lims read surface. returns a fresh" }, { @@ -33570,7 +34614,7 @@ "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L1", "id": "tests_fixtures_stub_rclone_py", - "community": 202, + "community": 203, "norm_label": "stub_rclone.py" }, { @@ -33579,7 +34623,7 @@ "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L48", "id": "fixtures_stub_rclone_parse_copy_args", - "community": 202, + "community": 203, "norm_label": "_parse_copy_args()" }, { @@ -33588,7 +34632,7 @@ "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L60", "id": "fixtures_stub_rclone_is_flag_value", - "community": 202, + "community": 203, "norm_label": "_is_flag_value()" }, { @@ -33597,7 +34641,7 @@ "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L80", "id": "fixtures_stub_rclone_emit_combined", - "community": 202, + "community": 203, "norm_label": "_emit_combined()" }, { @@ -33606,7 +34650,7 @@ "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L109", "id": "fixtures_stub_rclone_flag_value", - "community": 202, + "community": 203, "norm_label": "_flag_value()" }, { @@ -33615,7 +34659,7 @@ "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L120", "id": "fixtures_stub_rclone_main", - "community": 202, + "community": 203, "norm_label": "main()" }, { @@ -33624,7 +34668,7 @@ "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L49", "id": "fixtures_stub_rclone_rationale_49", - "community": 202, + "community": 203, "norm_label": "return ``(local, remote_spec)`` from a ``rclone copy`` argv." }, { @@ -33633,7 +34677,7 @@ "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L61", "id": "fixtures_stub_rclone_rationale_61", - "community": 202, + "community": 203, "norm_label": "return true if ``arg`` is the value-half of a ``--flag value`` pair." }, { @@ -33642,7 +34686,7 @@ "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L81", "id": "fixtures_stub_rclone_rationale_81", - "community": 202, + "community": 203, "norm_label": "write `` `` per file in ``--files-from`` to ``--combined``. `" }, { @@ -33651,7 +34695,7 @@ "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L110", "id": "fixtures_stub_rclone_rationale_110", - "community": 202, + "community": 203, "norm_label": "return the value following ``flag`` in ``argv`` or ``none``." }, { @@ -33660,7 +34704,7 @@ "source_file": "tests/fixtures/lims/__init__.py", "source_location": "L1", "id": "tests_fixtures_lims_init_py", - "community": 537, + "community": 562, "norm_label": "__init__.py" }, { @@ -33669,7 +34713,7 @@ "source_file": "tests/fixtures/lims/exlab_v1/__init__.py", "source_location": "L1", "id": "tests_fixtures_lims_exlab_v1_init_py", - "community": 538, + "community": 563, "norm_label": "__init__.py" }, { @@ -33678,7 +34722,7 @@ "source_file": "tests/fixtures/plugins/__init__.py", "source_location": "L1", "id": "tests_fixtures_plugins_init_py", - "community": 371, + "community": 374, "norm_label": "__init__.py" }, { @@ -33687,7 +34731,7 @@ "source_file": "tests/fixtures/plugins/hello_plugin/__init__.py", "source_location": "L1", "id": "tests_fixtures_plugins_hello_plugin_init_py", - "community": 312, + "community": 306, "norm_label": "__init__.py" }, { @@ -33696,7 +34740,7 @@ "source_file": "tests/fixtures/plugins/hello_plugin/__init__.py", "source_location": "L1", "id": "hello_plugin_init_rationale_1", - "community": 312, + "community": 306, "norm_label": "hello_plugin -- canonical scaffold from backend spec \u00a76.5. the ``plugin`` re-ex" }, { @@ -33705,7 +34749,7 @@ "source_file": "tests/fixtures/plugins/hello_plugin/plugin.py", "source_location": "L1", "id": "tests_fixtures_plugins_hello_plugin_plugin_py", - "community": 312, + "community": 306, "norm_label": "plugin.py" }, { @@ -33714,7 +34758,7 @@ "source_file": "tests/fixtures/plugins/hello_plugin/plugin.py", "source_location": "L20", "id": "hello_plugin_plugin_helloplugin", - "community": 312, + "community": 306, "norm_label": "helloplugin" }, { @@ -33723,7 +34767,7 @@ "source_file": "tests/fixtures/plugins/hello_plugin/plugin.py", "source_location": "L28", "id": "hello_plugin_plugin_helloplugin_can_handle", - "community": 312, + "community": 306, "norm_label": ".can_handle()" }, { @@ -33732,7 +34776,7 @@ "source_file": "tests/fixtures/plugins/hello_plugin/plugin.py", "source_location": "L32", "id": "hello_plugin_plugin_helloplugin_transform", - "community": 312, + "community": 306, "norm_label": ".transform()" }, { @@ -33741,7 +34785,7 @@ "source_file": "tests/fixtures/plugins/hello_plugin/plugin.py", "source_location": "L1", "id": "hello_plugin_plugin_rationale_1", - "community": 312, + "community": 306, "norm_label": "hello_plugin -- minimal real plugin used by the host integration suite. backend" }, { @@ -33750,7 +34794,7 @@ "source_file": "tests/fixtures/plugins/hello_plugin/plugin.py", "source_location": "L21", "id": "hello_plugin_plugin_rationale_21", - "community": 312, + "community": 306, "norm_label": "append ``hello\\\\n`` to every ``.txt`` file the host hands us." }, { @@ -33759,7 +34803,7 @@ "source_file": "tests/fixtures/plugins/_failures/__init__.py", "source_location": "L1", "id": "tests_fixtures_plugins_failures_init_py", - "community": 508, + "community": 532, "norm_label": "__init__.py" }, { @@ -33768,7 +34812,7 @@ "source_file": "tests/fixtures/plugins/_failures/__init__.py", "source_location": "L1", "id": "failures_init_rationale_1", - "community": 508, + "community": 532, "norm_label": "failure-mode plugin fixtures (timeout, error, input-required, policy, crash)." }, { @@ -33777,7 +34821,7 @@ "source_file": "tests/fixtures/plugins/_failures/error_plugin/__init__.py", "source_location": "L1", "id": "tests_fixtures_plugins_failures_error_plugin_init_py", - "community": 58, + "community": 15, "norm_label": "__init__.py" }, { @@ -33786,7 +34830,7 @@ "source_file": "tests/fixtures/plugins/_failures/error_plugin/__init__.py", "source_location": "L1", "id": "error_plugin_init_rationale_1", - "community": 58, + "community": 15, "norm_label": "error_plugin -- raises pluginerror mid-transform." }, { @@ -33795,7 +34839,7 @@ "source_file": "tests/fixtures/plugins/_failures/error_plugin/plugin.py", "source_location": "L1", "id": "tests_fixtures_plugins_failures_error_plugin_plugin_py", - "community": 58, + "community": 15, "norm_label": "plugin.py" }, { @@ -33804,7 +34848,7 @@ "source_file": "tests/fixtures/plugins/_failures/error_plugin/plugin.py", "source_location": "L17", "id": "error_plugin_plugin_errorplugin", - "community": 58, + "community": 15, "norm_label": "errorplugin" }, { @@ -33813,7 +34857,7 @@ "source_file": "tests/fixtures/plugins/_failures/error_plugin/plugin.py", "source_location": "L25", "id": "error_plugin_plugin_errorplugin_can_handle", - "community": 58, + "community": 15, "norm_label": ".can_handle()" }, { @@ -33822,7 +34866,7 @@ "source_file": "tests/fixtures/plugins/_failures/error_plugin/plugin.py", "source_location": "L28", "id": "error_plugin_plugin_errorplugin_transform", - "community": 58, + "community": 15, "norm_label": ".transform()" }, { @@ -33831,7 +34875,7 @@ "source_file": "tests/fixtures/plugins/_failures/error_plugin/plugin.py", "source_location": "L1", "id": "error_plugin_plugin_rationale_1", - "community": 58, + "community": 15, "norm_label": "error_plugin -- raises pluginerror mid-transform. exercises the backend spec \u00a76" }, { @@ -33840,7 +34884,7 @@ "source_file": "tests/fixtures/plugins/_failures/error_plugin/plugin.py", "source_location": "L18", "id": "error_plugin_plugin_rationale_18", - "community": 58, + "community": 15, "norm_label": "always raises pluginerror on transform." }, { @@ -33849,7 +34893,7 @@ "source_file": "tests/fixtures/plugins/_failures/policy_violation_plugin/__init__.py", "source_location": "L1", "id": "tests_fixtures_plugins_failures_policy_violation_plugin_init_py", - "community": 308, + "community": 304, "norm_label": "__init__.py" }, { @@ -33858,7 +34902,7 @@ "source_file": "tests/fixtures/plugins/_failures/policy_violation_plugin/__init__.py", "source_location": "L1", "id": "policy_violation_plugin_init_rationale_1", - "community": 308, + "community": 304, "norm_label": "policy_violation_plugin -- writes to a forbidden path (backend spec \u00a76.1.5)." }, { @@ -33867,7 +34911,7 @@ "source_file": "tests/fixtures/plugins/_failures/policy_violation_plugin/plugin.py", "source_location": "L1", "id": "tests_fixtures_plugins_failures_policy_violation_plugin_plugin_py", - "community": 308, + "community": 304, "norm_label": "plugin.py" }, { @@ -33876,7 +34920,7 @@ "source_file": "tests/fixtures/plugins/_failures/policy_violation_plugin/plugin.py", "source_location": "L18", "id": "policy_violation_plugin_plugin_policyviolationplugin", - "community": 308, + "community": 304, "norm_label": "policyviolationplugin" }, { @@ -33885,7 +34929,7 @@ "source_file": "tests/fixtures/plugins/_failures/policy_violation_plugin/plugin.py", "source_location": "L26", "id": "policy_violation_plugin_plugin_policyviolationplugin_can_handle", - "community": 308, + "community": 304, "norm_label": ".can_handle()" }, { @@ -33894,7 +34938,7 @@ "source_file": "tests/fixtures/plugins/_failures/policy_violation_plugin/plugin.py", "source_location": "L29", "id": "policy_violation_plugin_plugin_policyviolationplugin_transform", - "community": 308, + "community": 304, "norm_label": ".transform()" }, { @@ -33903,7 +34947,7 @@ "source_file": "tests/fixtures/plugins/_failures/policy_violation_plugin/plugin.py", "source_location": "L1", "id": "policy_violation_plugin_plugin_rationale_1", - "community": 308, + "community": 304, "norm_label": "policy_violation_plugin -- exercises backend spec \u00a76.1.5 enforcement. the plugi" }, { @@ -33912,7 +34956,7 @@ "source_file": "tests/fixtures/plugins/_failures/policy_violation_plugin/plugin.py", "source_location": "L19", "id": "policy_violation_plugin_plugin_rationale_19", - "community": 308, + "community": 304, "norm_label": "write into ``readme.md`` (a wizard-controlled file)." }, { @@ -33921,7 +34965,7 @@ "source_file": "tests/fixtures/plugins/_failures/input_required_plugin/__init__.py", "source_location": "L1", "id": "tests_fixtures_plugins_failures_input_required_plugin_init_py", - "community": 311, + "community": 305, "norm_label": "__init__.py" }, { @@ -33930,7 +34974,7 @@ "source_file": "tests/fixtures/plugins/_failures/input_required_plugin/__init__.py", "source_location": "L1", "id": "input_required_plugin_init_rationale_1", - "community": 311, + "community": 305, "norm_label": "input_required_plugin -- exercises the plugininputrequired suspend/resume handsh" }, { @@ -33939,7 +34983,7 @@ "source_file": "tests/fixtures/plugins/_failures/input_required_plugin/plugin.py", "source_location": "L1", "id": "tests_fixtures_plugins_failures_input_required_plugin_plugin_py", - "community": 311, + "community": 305, "norm_label": "plugin.py" }, { @@ -33948,7 +34992,7 @@ "source_file": "tests/fixtures/plugins/_failures/input_required_plugin/plugin.py", "source_location": "L20", "id": "input_required_plugin_plugin_inputrequiredplugin", - "community": 311, + "community": 305, "norm_label": "inputrequiredplugin" }, { @@ -33957,7 +35001,7 @@ "source_file": "tests/fixtures/plugins/_failures/input_required_plugin/plugin.py", "source_location": "L28", "id": "input_required_plugin_plugin_inputrequiredplugin_can_handle", - "community": 311, + "community": 305, "norm_label": ".can_handle()" }, { @@ -33966,7 +35010,7 @@ "source_file": "tests/fixtures/plugins/_failures/input_required_plugin/plugin.py", "source_location": "L31", "id": "input_required_plugin_plugin_inputrequiredplugin_transform", - "community": 311, + "community": 305, "norm_label": ".transform()" }, { @@ -33975,7 +35019,7 @@ "source_file": "tests/fixtures/plugins/_failures/input_required_plugin/plugin.py", "source_location": "L1", "id": "input_required_plugin_plugin_rationale_1", - "community": 311, + "community": 305, "norm_label": "input_required_plugin -- exercises backend spec \u00a76.4 suspend/resume. on the fir" }, { @@ -33984,7 +35028,7 @@ "source_file": "tests/fixtures/plugins/_failures/input_required_plugin/plugin.py", "source_location": "L21", "id": "input_required_plugin_plugin_rationale_21", - "community": 311, + "community": 305, "norm_label": "demand a user-supplied ``color`` value before completing." }, { @@ -33993,7 +35037,7 @@ "source_file": "tests/fixtures/plugins/_failures/crash_plugin/__init__.py", "source_location": "L1", "id": "tests_fixtures_plugins_failures_crash_plugin_init_py", - "community": 310, + "community": 303, "norm_label": "__init__.py" }, { @@ -34002,7 +35046,7 @@ "source_file": "tests/fixtures/plugins/_failures/crash_plugin/__init__.py", "source_location": "L1", "id": "crash_plugin_init_rationale_1", - "community": 310, + "community": 303, "norm_label": "crash_plugin -- exercises subprocess crash containment (sigsegv-like)." }, { @@ -34011,7 +35055,7 @@ "source_file": "tests/fixtures/plugins/_failures/crash_plugin/plugin.py", "source_location": "L1", "id": "tests_fixtures_plugins_failures_crash_plugin_plugin_py", - "community": 310, + "community": 303, "norm_label": "plugin.py" }, { @@ -34020,7 +35064,7 @@ "source_file": "tests/fixtures/plugins/_failures/crash_plugin/plugin.py", "source_location": "L18", "id": "crash_plugin_plugin_crashplugin", - "community": 310, + "community": 303, "norm_label": "crashplugin" }, { @@ -34029,7 +35073,7 @@ "source_file": "tests/fixtures/plugins/_failures/crash_plugin/plugin.py", "source_location": "L26", "id": "crash_plugin_plugin_crashplugin_can_handle", - "community": 310, + "community": 303, "norm_label": ".can_handle()" }, { @@ -34038,7 +35082,7 @@ "source_file": "tests/fixtures/plugins/_failures/crash_plugin/plugin.py", "source_location": "L29", "id": "crash_plugin_plugin_crashplugin_transform", - "community": 310, + "community": 303, "norm_label": ".transform()" }, { @@ -34047,7 +35091,7 @@ "source_file": "tests/fixtures/plugins/_failures/crash_plugin/plugin.py", "source_location": "L1", "id": "crash_plugin_plugin_rationale_1", - "community": 310, + "community": 303, "norm_label": "crash_plugin -- exercises subprocess crash containment. the plugin's ``transfor" }, { @@ -34056,7 +35100,7 @@ "source_file": "tests/fixtures/plugins/_failures/crash_plugin/plugin.py", "source_location": "L19", "id": "crash_plugin_plugin_rationale_19", - "community": 310, + "community": 303, "norm_label": "hard-exit the worker process before any file write." }, { @@ -34065,7 +35109,7 @@ "source_file": "tests/fixtures/plugins/_failures/timeout_plugin/__init__.py", "source_location": "L1", "id": "tests_fixtures_plugins_failures_timeout_plugin_init_py", - "community": 309, + "community": 277, "norm_label": "__init__.py" }, { @@ -34074,7 +35118,7 @@ "source_file": "tests/fixtures/plugins/_failures/timeout_plugin/__init__.py", "source_location": "L1", "id": "timeout_plugin_init_rationale_1", - "community": 309, + "community": 277, "norm_label": "failure fixture: plugin that hangs in ``transform`` past its timeout." }, { @@ -34083,7 +35127,7 @@ "source_file": "tests/fixtures/plugins/_failures/timeout_plugin/plugin.py", "source_location": "L1", "id": "tests_fixtures_plugins_failures_timeout_plugin_plugin_py", - "community": 309, + "community": 277, "norm_label": "plugin.py" }, { @@ -34092,7 +35136,7 @@ "source_file": "tests/fixtures/plugins/_failures/timeout_plugin/plugin.py", "source_location": "L19", "id": "timeout_plugin_plugin_timeoutplugin", - "community": 309, + "community": 277, "norm_label": "timeoutplugin" }, { @@ -34101,7 +35145,7 @@ "source_file": "tests/fixtures/plugins/_failures/timeout_plugin/plugin.py", "source_location": "L27", "id": "timeout_plugin_plugin_timeoutplugin_can_handle", - "community": 309, + "community": 277, "norm_label": ".can_handle()" }, { @@ -34110,7 +35154,7 @@ "source_file": "tests/fixtures/plugins/_failures/timeout_plugin/plugin.py", "source_location": "L30", "id": "timeout_plugin_plugin_timeoutplugin_transform", - "community": 309, + "community": 277, "norm_label": ".transform()" }, { @@ -34119,7 +35163,7 @@ "source_file": "tests/fixtures/plugins/_failures/timeout_plugin/plugin.py", "source_location": "L1", "id": "timeout_plugin_plugin_rationale_1", - "community": 309, + "community": 277, "norm_label": "timeout_plugin -- exercises backend spec \u00a76.3.4 timeout enforcement. the plugin" }, { @@ -34128,7 +35172,7 @@ "source_file": "tests/fixtures/plugins/_failures/timeout_plugin/plugin.py", "source_location": "L20", "id": "timeout_plugin_plugin_rationale_20", - "community": 309, + "community": 277, "norm_label": "hang past the declared timeout. never reaches its file write." }, { @@ -34137,7 +35181,7 @@ "source_file": "tests/fixtures/configs/__init__.py", "source_location": "L1", "id": "tests_fixtures_configs_init_py", - "community": 509, + "community": 533, "norm_label": "__init__.py" }, { @@ -34146,7 +35190,7 @@ "source_file": "tests/fixtures/configs/__init__.py", "source_location": "L1", "id": "configs_init_rationale_1", - "community": 509, + "community": 533, "norm_label": "read-only yaml fixtures for the config-loader unit tests." }, { @@ -34155,7 +35199,7 @@ "source_file": "tests/fixtures/templates/__init__.py", "source_location": "L1", "id": "tests_fixtures_templates_init_py", - "community": 510, + "community": 534, "norm_label": "__init__.py" }, { @@ -34164,7 +35208,7 @@ "source_file": "tests/fixtures/templates/__init__.py", "source_location": "L1", "id": "templates_init_rationale_1", - "community": 510, + "community": 534, "norm_label": "copier template fixtures for the test suite." }, { @@ -34173,34 +35217,34 @@ "source_file": "tests/e2e/test_flow_18_relay_receive.py", "source_location": "L1", "id": "tests_e2e_test_flow_18_relay_receive_py", - "community": 372, + "community": 375, "norm_label": "test_flow_18_relay_receive.py" }, { "label": "_goto()", "file_type": "code", "source_file": "tests/e2e/test_flow_18_relay_receive.py", - "source_location": "L11", + "source_location": "L21", "id": "e2e_test_flow_18_relay_receive_goto", - "community": 372, + "community": 375, "norm_label": "_goto()" }, { "label": "test_flow_18_received_equipment_node_appears()", "file_type": "code", "source_file": "tests/e2e/test_flow_18_relay_receive.py", - "source_location": "L24", + "source_location": "L34", "id": "e2e_test_flow_18_relay_receive_test_flow_18_received_equipment_node_appears", - "community": 372, + "community": 375, "norm_label": "test_flow_18_received_equipment_node_appears()" }, { "label": "test_flow_18_received_metadata_shows_relay_badge()", "file_type": "code", "source_file": "tests/e2e/test_flow_18_relay_receive.py", - "source_location": "L31", + "source_location": "L41", "id": "e2e_test_flow_18_relay_receive_test_flow_18_received_metadata_shows_relay_badge", - "community": 372, + "community": 375, "norm_label": "test_flow_18_received_metadata_shows_relay_badge()" }, { @@ -34209,7 +35253,7 @@ "source_file": "tests/e2e/test_flow_18_relay_receive.py", "source_location": "L1", "id": "e2e_test_flow_18_relay_receive_rationale_1", - "community": 372, + "community": 375, "norm_label": "e2e flow 18: relay-receive \u2014 received equipment auto-discovery (redesign \u00a73.3)." }, { @@ -34218,7 +35262,7 @@ "source_file": "tests/e2e/conftest.py", "source_location": "L1", "id": "tests_e2e_conftest_py", - "community": 108, + "community": 116, "norm_label": "conftest.py" }, { @@ -34227,7 +35271,7 @@ "source_file": "tests/e2e/conftest.py", "source_location": "L46", "id": "e2e_conftest_free_port", - "community": 108, + "community": 116, "norm_label": "_free_port()" }, { @@ -34236,7 +35280,7 @@ "source_file": "tests/e2e/conftest.py", "source_location": "L53", "id": "e2e_conftest_resolve_chromium_executable", - "community": 108, + "community": 116, "norm_label": "_resolve_chromium_executable()" }, { @@ -34245,7 +35289,7 @@ "source_file": "tests/e2e/conftest.py", "source_location": "L90", "id": "e2e_conftest_server_url", - "community": 108, + "community": 116, "norm_label": "server_url()" }, { @@ -34254,7 +35298,7 @@ "source_file": "tests/e2e/conftest.py", "source_location": "L155", "id": "e2e_conftest_browser", - "community": 108, + "community": 116, "norm_label": "browser()" }, { @@ -34263,7 +35307,7 @@ "source_file": "tests/e2e/conftest.py", "source_location": "L181", "id": "e2e_conftest_page", - "community": 108, + "community": 116, "norm_label": "page()" }, { @@ -34272,7 +35316,7 @@ "source_file": "tests/e2e/conftest.py", "source_location": "L1", "id": "e2e_conftest_rationale_1", - "community": 108, + "community": 116, "norm_label": "e2e test fixtures (phase 16). boots a real uvicorn process serving the e2e test" }, { @@ -34281,7 +35325,7 @@ "source_file": "tests/e2e/conftest.py", "source_location": "L47", "id": "e2e_conftest_rationale_47", - "community": 108, + "community": 116, "norm_label": "return a free tcp port on 127.0.0.1." }, { @@ -34290,7 +35334,7 @@ "source_file": "tests/e2e/conftest.py", "source_location": "L54", "id": "e2e_conftest_rationale_54", - "community": 108, + "community": 116, "norm_label": "return a chromium executable path or none. search order: 1. ``exlab_e2" }, { @@ -34299,7 +35343,7 @@ "source_file": "tests/e2e/conftest.py", "source_location": "L91", "id": "e2e_conftest_rationale_91", - "community": 108, + "community": 116, "norm_label": "spawn a real uvicorn process serving the e2e test app and yield its url. th" }, { @@ -34308,7 +35352,7 @@ "source_file": "tests/e2e/conftest.py", "source_location": "L156", "id": "e2e_conftest_rationale_156", - "community": 108, + "community": 116, "norm_label": "yield a chromium browser (headless)." }, { @@ -34317,7 +35361,7 @@ "source_file": "tests/e2e/conftest.py", "source_location": "L182", "id": "e2e_conftest_rationale_182", - "community": 108, + "community": 116, "norm_label": "yield a fresh playwright page for each test." }, { @@ -34326,7 +35370,7 @@ "source_file": "tests/e2e/test_flow_00_fresh_install_setup.py", "source_location": "L1", "id": "tests_e2e_test_flow_00_fresh_install_setup_py", - "community": 225, + "community": 227, "norm_label": "test_flow_00_fresh_install_setup.py" }, { @@ -34335,7 +35379,7 @@ "source_file": "tests/e2e/test_flow_00_fresh_install_setup.py", "source_location": "L49", "id": "e2e_test_flow_00_fresh_install_setup_fresh_prod_server", - "community": 225, + "community": 227, "norm_label": "fresh_prod_server()" }, { @@ -34344,7 +35388,7 @@ "source_file": "tests/e2e/test_flow_00_fresh_install_setup.py", "source_location": "L107", "id": "e2e_test_flow_00_fresh_install_setup_test_fresh_install_setup_writes_config_and_applies_live", - "community": 225, + "community": 227, "norm_label": "test_fresh_install_setup_writes_config_and_applies_live()" }, { @@ -34353,7 +35397,7 @@ "source_file": "tests/e2e/test_flow_00_fresh_install_setup.py", "source_location": "L1", "id": "e2e_test_flow_00_fresh_install_setup_rationale_1", - "community": 225, + "community": 227, "norm_label": "e2e flow 00: fresh-install first-launch setup against the production app. unlik" }, { @@ -34362,7 +35406,7 @@ "source_file": "tests/e2e/test_flow_00_fresh_install_setup.py", "source_location": "L50", "id": "e2e_test_flow_00_fresh_install_setup_rationale_50", - "community": 225, + "community": 227, "norm_label": "spawn the production wizard app with home redirected to a fresh tmp dir. yi" }, { @@ -34371,7 +35415,7 @@ "source_file": "tests/e2e/test_flow_22_onboarding_redesign.py", "source_location": "L1", "id": "tests_e2e_test_flow_22_onboarding_redesign_py", - "community": 244, + "community": 215, "norm_label": "test_flow_22_onboarding_redesign.py" }, { @@ -34380,7 +35424,7 @@ "source_file": "tests/e2e/test_flow_22_onboarding_redesign.py", "source_location": "L19", "id": "e2e_test_flow_22_onboarding_redesign_goto", - "community": 244, + "community": 215, "norm_label": "_goto()" }, { @@ -34389,7 +35433,7 @@ "source_file": "tests/e2e/test_flow_22_onboarding_redesign.py", "source_location": "L32", "id": "e2e_test_flow_22_onboarding_redesign_test_flow_22_welcome_to_add_equipment", - "community": 244, + "community": 215, "norm_label": "test_flow_22_welcome_to_add_equipment()" }, { @@ -34398,7 +35442,7 @@ "source_file": "tests/e2e/test_flow_22_onboarding_redesign.py", "source_location": "L47", "id": "e2e_test_flow_22_onboarding_redesign_test_flow_22_main_window_has_add_equipment_in_toolbar", - "community": 244, + "community": 215, "norm_label": "test_flow_22_main_window_has_add_equipment_in_toolbar()" }, { @@ -34407,7 +35451,7 @@ "source_file": "tests/e2e/test_flow_22_onboarding_redesign.py", "source_location": "L1", "id": "e2e_test_flow_22_onboarding_redesign_rationale_1", - "community": 244, + "community": 215, "norm_label": "e2e flow 22: onboarding via the new add-equipment wizard (redesign decision 2)." }, { @@ -34416,7 +35460,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L1", "id": "tests_e2e_test_flow_24_context_menus_py", - "community": 208, + "community": 207, "norm_label": "test_flow_24_context_menus.py" }, { @@ -34425,7 +35469,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L21", "id": "e2e_test_flow_24_context_menus_goto", - "community": 208, + "community": 207, "norm_label": "_goto()" }, { @@ -34434,7 +35478,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L34", "id": "e2e_test_flow_24_context_menus_open_context", - "community": 208, + "community": 207, "norm_label": "_open_context()" }, { @@ -34443,7 +35487,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L39", "id": "e2e_test_flow_24_context_menus_test_flow_24_owned_equipment_context_menu_items_render", - "community": 208, + "community": 207, "norm_label": "test_flow_24_owned_equipment_context_menu_items_render()" }, { @@ -34452,7 +35496,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L52", "id": "e2e_test_flow_24_context_menus_test_flow_24_edit_equipment_deep_links_into_settings", - "community": 208, + "community": 207, "norm_label": "test_flow_24_edit_equipment_deep_links_into_settings()" }, { @@ -34461,7 +35505,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L63", "id": "e2e_test_flow_24_context_menus_test_flow_24_remove_equipment_deep_links_into_settings", - "community": 208, + "community": 207, "norm_label": "test_flow_24_remove_equipment_deep_links_into_settings()" }, { @@ -34470,7 +35514,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L72", "id": "e2e_test_flow_24_context_menus_test_flow_24_received_equipment_has_no_context_menu", - "community": 208, + "community": 207, "norm_label": "test_flow_24_received_equipment_has_no_context_menu()" }, { @@ -34479,7 +35523,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L85", "id": "e2e_test_flow_24_context_menus_test_flow_24_run_context_menu_items_render", - "community": 208, + "community": 207, "norm_label": "test_flow_24_run_context_menu_items_render()" }, { @@ -34488,7 +35532,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L97", "id": "e2e_test_flow_24_context_menus_test_flow_24_file_list_row_context_menu", - "community": 208, + "community": 207, "norm_label": "test_flow_24_file_list_row_context_menu()" }, { @@ -34497,7 +35541,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L112", "id": "e2e_test_flow_24_context_menus_test_flow_24_tombstone_row_has_no_open_in_os", - "community": 208, + "community": 207, "norm_label": "test_flow_24_tombstone_row_has_no_open_in_os()" }, { @@ -34506,7 +35550,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L132", "id": "e2e_test_flow_24_context_menus_test_flow_24_keep_local_badge_and_toggle", - "community": 208, + "community": 207, "norm_label": "test_flow_24_keep_local_badge_and_toggle()" }, { @@ -34515,7 +35559,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L1", "id": "e2e_test_flow_24_context_menus_rationale_1", - "community": 208, + "community": 207, "norm_label": "e2e flow 24: right-click context menus (redesign \u00a74.6 / decision 4a / \u00a79.1). th" }, { @@ -34524,7 +35568,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L35", "id": "e2e_test_flow_24_context_menus_rationale_35", - "community": 208, + "community": 207, "norm_label": "open a nicegui ``ui.context_menu`` by right-clicking its anchor." }, { @@ -34533,7 +35577,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L73", "id": "e2e_test_flow_24_context_menus_rationale_73", - "community": 208, + "community": 207, "norm_label": "decision 3: received-equipment nodes don't expose edit / remove." }, { @@ -34542,7 +35586,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L98", "id": "e2e_test_flow_24_context_menus_rationale_98", - "community": 208, + "community": 207, "norm_label": "right-clicking a file-list row surfaces open in os / copy path / keep local." }, { @@ -34551,7 +35595,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L113", "id": "e2e_test_flow_24_context_menus_rationale_113", - "community": 208, + "community": 207, "norm_label": "an \"on nas\" tombstone row has no local copy, so no open-in-os action. opera" }, { @@ -34560,7 +35604,7 @@ "source_file": "tests/e2e/test_flow_24_context_menus.py", "source_location": "L133", "id": "e2e_test_flow_24_context_menus_rationale_133", - "community": 208, + "community": 207, "norm_label": "a keep-local file shows the \"kept local\" badge; the toggle action fires. op" }, { @@ -34569,7 +35613,7 @@ "source_file": "tests/e2e/test_flow_08_settings.py", "source_location": "L1", "id": "tests_e2e_test_flow_08_settings_py", - "community": 81, + "community": 74, "norm_label": "test_flow_08_settings.py" }, { @@ -34578,7 +35622,7 @@ "source_file": "tests/e2e/test_flow_08_settings.py", "source_location": "L30", "id": "e2e_test_flow_08_settings_test_flow_08_settings", - "community": 81, + "community": 74, "norm_label": "test_flow_08_settings()" }, { @@ -34587,7 +35631,7 @@ "source_file": "tests/e2e/test_flow_08_settings.py", "source_location": "L58", "id": "e2e_test_flow_08_settings_test_flow_08_lims_password_credential", - "community": 81, + "community": 74, "norm_label": "test_flow_08_lims_password_credential()" }, { @@ -34596,16 +35640,25 @@ "source_file": "tests/e2e/test_flow_08_settings.py", "source_location": "L91", "id": "e2e_test_flow_08_settings_test_flow_08_lims_password_cancel_discards_edit", - "community": 81, + "community": 74, "norm_label": "test_flow_08_lims_password_cancel_discards_edit()" }, + { + "label": "test_flow_08_workstation_section_hides_staging_root()", + "file_type": "code", + "source_file": "tests/e2e/test_flow_08_settings.py", + "source_location": "L108", + "id": "e2e_test_flow_08_settings_test_flow_08_workstation_section_hides_staging_root", + "community": 74, + "norm_label": "test_flow_08_workstation_section_hides_staging_root()" + }, { "label": "E2E flow 08: Settings dialog round-trip + persistence. Frontend Spec \u00a76.7 (sett", "file_type": "rationale", "source_file": "tests/e2e/test_flow_08_settings.py", "source_location": "L1", "id": "e2e_test_flow_08_settings_rationale_1", - "community": 81, + "community": 74, "norm_label": "e2e flow 08: settings dialog round-trip + persistence. frontend spec \u00a76.7 (sett" }, { @@ -34614,7 +35667,7 @@ "source_file": "tests/e2e/test_flow_08_settings.py", "source_location": "L59", "id": "e2e_test_flow_08_settings_rationale_59", - "community": 81, + "community": 74, "norm_label": "the lims credential field's full lifecycle: set -> replace -> clear (\u00a77.4.1)." }, { @@ -34623,16 +35676,25 @@ "source_file": "tests/e2e/test_flow_08_settings.py", "source_location": "L92", "id": "e2e_test_flow_08_settings_rationale_92", - "community": 81, + "community": 74, "norm_label": "cancelling the credential editor collapses the row without saving." }, + { + "label": "The renamed \"Workstation\" section (id still ``orchestrator``) collects the l", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_08_settings.py", + "source_location": "L109", + "id": "e2e_test_flow_08_settings_rationale_109", + "community": 74, + "norm_label": "the renamed \"workstation\" section (id still ``orchestrator``) collects the l" + }, { "label": "test_flow_11_crash_recovery.py", "file_type": "code", "source_file": "tests/e2e/test_flow_11_crash_recovery.py", "source_location": "L1", "id": "tests_e2e_test_flow_11_crash_recovery_py", - "community": 137, + "community": 142, "norm_label": "test_flow_11_crash_recovery.py" }, { @@ -34641,7 +35703,7 @@ "source_file": "tests/e2e/test_flow_11_crash_recovery.py", "source_location": "L16", "id": "e2e_test_flow_11_crash_recovery_test_flow_11_crash_recovery", - "community": 137, + "community": 142, "norm_label": "test_flow_11_crash_recovery()" }, { @@ -34650,7 +35712,7 @@ "source_file": "tests/e2e/test_flow_11_crash_recovery.py", "source_location": "L1", "id": "e2e_test_flow_11_crash_recovery_rationale_1", - "community": 137, + "community": 142, "norm_label": "e2e flow 11: crash-recovery prompt on relaunch. frontend spec \u00a76.10 (crash reco" }, { @@ -34659,7 +35721,7 @@ "source_file": "tests/e2e/test_flow_03_experimental_run.py", "source_location": "L1", "id": "tests_e2e_test_flow_03_experimental_run_py", - "community": 152, + "community": 159, "norm_label": "test_flow_03_experimental_run.py" }, { @@ -34668,7 +35730,7 @@ "source_file": "tests/e2e/test_flow_03_experimental_run.py", "source_location": "L15", "id": "e2e_test_flow_03_experimental_run_test_flow_03_experimental_run", - "community": 152, + "community": 159, "norm_label": "test_flow_03_experimental_run()" }, { @@ -34677,7 +35739,7 @@ "source_file": "tests/e2e/test_flow_03_experimental_run.py", "source_location": "L1", "id": "e2e_test_flow_03_experimental_run_rationale_1", - "community": 152, + "community": 159, "norm_label": "e2e flow 03: experimental-run wizard end-to-end. frontend spec \u00a76.4 (run wizard" }, { @@ -34686,7 +35748,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L1", "id": "tests_e2e_prod_server_py", - "community": 225, + "community": 227, "norm_label": "_prod_server.py" }, { @@ -34695,7 +35757,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L29", "id": "e2e_prod_server_free_port", - "community": 225, + "community": 227, "norm_label": "free_port()" }, { @@ -34704,7 +35766,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L36", "id": "e2e_prod_server_prod_app_env", - "community": 225, + "community": 227, "norm_label": "prod_app_env()" }, { @@ -34713,7 +35775,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L60", "id": "e2e_prod_server_resolve_config_path", - "community": 225, + "community": 227, "norm_label": "resolve_config_path()" }, { @@ -34722,7 +35784,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L75", "id": "e2e_prod_server_prodserver", - "community": 233, + "community": 270, "norm_label": "prodserver" }, { @@ -34731,7 +35793,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L84", "id": "e2e_prod_server_prodserver_init", - "community": 225, + "community": 227, "norm_label": ".__init__()" }, { @@ -34740,7 +35802,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L94", "id": "e2e_prod_server_config_path", - "community": 225, + "community": 227, "norm_label": "config_path()" }, { @@ -34749,7 +35811,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L98", "id": "e2e_prod_server_prodserver_start", - "community": 233, + "community": 270, "norm_label": ".start()" }, { @@ -34758,7 +35820,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L132", "id": "e2e_prod_server_prodserver_stop", - "community": 233, + "community": 270, "norm_label": ".stop()" }, { @@ -34767,7 +35829,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L144", "id": "e2e_prod_server_prodserver_restart", - "community": 233, + "community": 270, "norm_label": ".restart()" }, { @@ -34776,7 +35838,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L1", "id": "e2e_prod_server_rationale_1", - "community": 225, + "community": 227, "norm_label": "reusable spawn/restart harness for the *production* wizard app. the e2e lifecyc" }, { @@ -34785,7 +35847,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L30", "id": "e2e_prod_server_rationale_30", - "community": 225, + "community": 227, "norm_label": "return a free tcp port on 127.0.0.1." }, { @@ -34794,7 +35856,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L37", "id": "e2e_prod_server_rationale_37", - "community": 225, + "community": 227, "norm_label": "build a hermetic environment for a spawned production-app process. every os" }, { @@ -34803,7 +35865,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L61", "id": "e2e_prod_server_rationale_61", - "community": 225, + "community": 227, "norm_label": "where the spawned production app writes ``config.yaml``. computed by callin" }, { @@ -34812,7 +35874,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L76", "id": "e2e_prod_server_rationale_76", - "community": 233, + "community": 270, "norm_label": "a spawnable / restartable production-app uvicorn process. ``home`` is the r" }, { @@ -34821,7 +35883,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L95", "id": "e2e_prod_server_rationale_95", - "community": 539, + "community": 564, "norm_label": "where the wizard writes ``config.yaml`` under the redirected home." }, { @@ -34830,7 +35892,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L99", "id": "e2e_prod_server_rationale_99", - "community": 233, + "community": 270, "norm_label": "spawn uvicorn and block until ``/api/v1/health`` answers 200. returns `" }, { @@ -34839,7 +35901,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L133", "id": "e2e_prod_server_rationale_133", - "community": 233, + "community": 270, "norm_label": "terminate the uvicorn process. idempotent." }, { @@ -34848,7 +35910,7 @@ "source_file": "tests/e2e/_prod_server.py", "source_location": "L145", "id": "e2e_prod_server_rationale_145", - "community": 233, + "community": 270, "norm_label": "stop and re-spawn the process with the same home / port." }, { @@ -34857,7 +35919,7 @@ "source_file": "tests/e2e/test_flow_17_picker_step.py", "source_location": "L1", "id": "tests_e2e_test_flow_17_picker_step_py", - "community": 373, + "community": 376, "norm_label": "test_flow_17_picker_step.py" }, { @@ -34866,7 +35928,7 @@ "source_file": "tests/e2e/test_flow_17_picker_step.py", "source_location": "L12", "id": "e2e_test_flow_17_picker_step_goto", - "community": 373, + "community": 376, "norm_label": "_goto()" }, { @@ -34875,7 +35937,7 @@ "source_file": "tests/e2e/test_flow_17_picker_step.py", "source_location": "L25", "id": "e2e_test_flow_17_picker_step_test_flow_17_creation_buttons_enabled_on_owned_node", - "community": 373, + "community": 376, "norm_label": "test_flow_17_creation_buttons_enabled_on_owned_node()" }, { @@ -34884,7 +35946,7 @@ "source_file": "tests/e2e/test_flow_17_picker_step.py", "source_location": "L41", "id": "e2e_test_flow_17_picker_step_test_flow_17_creation_buttons_disabled_on_received_node", - "community": 373, + "community": 376, "norm_label": "test_flow_17_creation_buttons_disabled_on_received_node()" }, { @@ -34893,7 +35955,7 @@ "source_file": "tests/e2e/test_flow_17_picker_step.py", "source_location": "L1", "id": "e2e_test_flow_17_picker_step_rationale_1", - "community": 373, + "community": 376, "norm_label": "e2e flow 17: creation-button enablement on received nodes (redesign decision 1)." }, { @@ -34902,7 +35964,7 @@ "source_file": "tests/e2e/test_flow_20_file_explorer.py", "source_location": "L1", "id": "tests_e2e_test_flow_20_file_explorer_py", - "community": 353, + "community": 354, "norm_label": "test_flow_20_file_explorer.py" }, { @@ -34911,7 +35973,7 @@ "source_file": "tests/e2e/test_flow_20_file_explorer.py", "source_location": "L10", "id": "e2e_test_flow_20_file_explorer_goto", - "community": 353, + "community": 354, "norm_label": "_goto()" }, { @@ -34920,25 +35982,25 @@ "source_file": "tests/e2e/test_flow_20_file_explorer.py", "source_location": "L23", "id": "e2e_test_flow_20_file_explorer_test_flow_20_file_explorer_renders_three_regions", - "community": 353, + "community": 354, "norm_label": "test_flow_20_file_explorer_renders_three_regions()" }, { "label": "test_flow_20_select_run_node_renders_metadata_pane()", "file_type": "code", "source_file": "tests/e2e/test_flow_20_file_explorer.py", - "source_location": "L42", + "source_location": "L43", "id": "e2e_test_flow_20_file_explorer_test_flow_20_select_run_node_renders_metadata_pane", - "community": 353, + "community": 354, "norm_label": "test_flow_20_select_run_node_renders_metadata_pane()" }, { "label": "test_flow_20_breadcrumb_is_present_when_node_selected()", "file_type": "code", "source_file": "tests/e2e/test_flow_20_file_explorer.py", - "source_location": "L53", + "source_location": "L54", "id": "e2e_test_flow_20_file_explorer_test_flow_20_breadcrumb_is_present_when_node_selected", - "community": 353, + "community": 354, "norm_label": "test_flow_20_breadcrumb_is_present_when_node_selected()" }, { @@ -34947,7 +36009,7 @@ "source_file": "tests/e2e/test_flow_20_file_explorer.py", "source_location": "L1", "id": "e2e_test_flow_20_file_explorer_rationale_1", - "community": 353, + "community": 354, "norm_label": "e2e flow 20: file-explorer navigation (redesign \u00a74). tree selection drives the" }, { @@ -34956,7 +36018,7 @@ "source_file": "tests/e2e/test_flow_05_browse_view_sync_icons.py", "source_location": "L1", "id": "tests_e2e_test_flow_05_browse_view_sync_icons_py", - "community": 374, + "community": 217, "norm_label": "test_flow_05_browse_view_sync_icons.py" }, { @@ -34965,7 +36027,7 @@ "source_file": "tests/e2e/test_flow_05_browse_view_sync_icons.py", "source_location": "L20", "id": "e2e_test_flow_05_browse_view_sync_icons_test_flow_05_sync_icons_render_in_tree", - "community": 374, + "community": 217, "norm_label": "test_flow_05_sync_icons_render_in_tree()" }, { @@ -34974,7 +36036,7 @@ "source_file": "tests/e2e/test_flow_05_browse_view_sync_icons.py", "source_location": "L47", "id": "e2e_test_flow_05_browse_view_sync_icons_test_flow_05_sync_icons_static_assets_serve_200", - "community": 374, + "community": 217, "norm_label": "test_flow_05_sync_icons_static_assets_serve_200()" }, { @@ -34983,7 +36045,7 @@ "source_file": "tests/e2e/test_flow_05_browse_view_sync_icons.py", "source_location": "L1", "id": "e2e_test_flow_05_browse_view_sync_icons_rationale_1", - "community": 374, + "community": 217, "norm_label": "e2e flow 05b: per-run sync icons in the browse tree. verifies that the project" }, { @@ -34992,7 +36054,7 @@ "source_file": "tests/e2e/test_flow_05_browse_view_sync_icons.py", "source_location": "L48", "id": "e2e_test_flow_05_browse_view_sync_icons_rationale_48", - "community": 374, + "community": 217, "norm_label": "the ``/assets`` mount serves both svgs as 200 ok." }, { @@ -35001,7 +36063,7 @@ "source_file": "tests/e2e/test_flow_05_browse_view.py", "source_location": "L1", "id": "tests_e2e_test_flow_05_browse_view_py", - "community": 150, + "community": 217, "norm_label": "test_flow_05_browse_view.py" }, { @@ -35010,7 +36072,7 @@ "source_file": "tests/e2e/test_flow_05_browse_view.py", "source_location": "L15", "id": "e2e_test_flow_05_browse_view_test_flow_05_browse_view", - "community": 150, + "community": 217, "norm_label": "test_flow_05_browse_view()" }, { @@ -35019,7 +36081,7 @@ "source_file": "tests/e2e/test_flow_05_browse_view.py", "source_location": "L1", "id": "e2e_test_flow_05_browse_view_rationale_1", - "community": 150, + "community": 217, "norm_label": "e2e flow 05: browse view -- open existing project + sessions. frontend spec \u00a76." }, { @@ -35028,7 +36090,7 @@ "source_file": "tests/e2e/__init__.py", "source_location": "L1", "id": "tests_e2e_init_py", - "community": 540, + "community": 565, "norm_label": "__init__.py" }, { @@ -35037,115 +36099,115 @@ "source_file": "tests/e2e/test_flow_16_add_equipment.py", "source_location": "L1", "id": "tests_e2e_test_flow_16_add_equipment_py", - "community": 224, + "community": 186, "norm_label": "test_flow_16_add_equipment.py" }, { "label": "_goto()", "file_type": "code", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L20", + "source_location": "L24", "id": "e2e_test_flow_16_add_equipment_goto", - "community": 224, + "community": 186, "norm_label": "_goto()" }, { "label": "test_flow_16_add_equipment_identity_step()", "file_type": "code", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L33", + "source_location": "L37", "id": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_identity_step", - "community": 224, + "community": 186, "norm_label": "test_flow_16_add_equipment_identity_step()" }, { "label": "test_flow_16_add_equipment_paths_step()", "file_type": "code", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L44", + "source_location": "L48", "id": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_paths_step", - "community": 224, + "community": 186, "norm_label": "test_flow_16_add_equipment_paths_step()" }, { "label": "test_flow_16_add_equipment_sync_mode_step()", "file_type": "code", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L52", + "source_location": "L60", "id": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_sync_mode_step", - "community": 224, + "community": 186, "norm_label": "test_flow_16_add_equipment_sync_mode_step()" }, { "label": "test_flow_16_add_equipment_review_and_confirm()", "file_type": "code", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L59", + "source_location": "L67", "id": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_review_and_confirm", - "community": 224, + "community": 186, "norm_label": "test_flow_16_add_equipment_review_and_confirm()" }, { "label": "test_flow_16_next_enables_on_valid_input_and_state_survives_back()", "file_type": "code", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L69", + "source_location": "L77", "id": "e2e_test_flow_16_add_equipment_test_flow_16_next_enables_on_valid_input_and_state_survives_back", - "community": 224, + "community": 186, "norm_label": "test_flow_16_next_enables_on_valid_input_and_state_survives_back()" }, { - "label": "E2E flow 16: Add-Equipment wizard (Redesign \u00a76). Drives the four-step wizard en", + "label": "E2E flow 16: Add-Equipment wizard (Redesign \u00a76). Drives the wizard end to end a", "file_type": "rationale", "source_file": "tests/e2e/test_flow_16_add_equipment.py", "source_location": "L1", "id": "e2e_test_flow_16_add_equipment_rationale_1", - "community": 224, - "norm_label": "e2e flow 16: add-equipment wizard (redesign \u00a76). drives the four-step wizard en" + "community": 186, + "norm_label": "e2e flow 16: add-equipment wizard (redesign \u00a76). drives the wizard end to end a" }, { "label": "Identity step renders the ID + label inputs.", "file_type": "rationale", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L34", - "id": "e2e_test_flow_16_add_equipment_rationale_34", - "community": 224, + "source_location": "L38", + "id": "e2e_test_flow_16_add_equipment_rationale_38", + "community": 186, "norm_label": "identity step renders the id + label inputs." }, { "label": "Paths step renders local + NAS root inputs.", "file_type": "rationale", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L45", - "id": "e2e_test_flow_16_add_equipment_rationale_45", - "community": 224, + "source_location": "L49", + "id": "e2e_test_flow_16_add_equipment_rationale_49", + "community": 186, "norm_label": "paths step renders local + nas root inputs." }, { "label": "Sync mode step renders the nas/stage radio.", "file_type": "rationale", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L53", - "id": "e2e_test_flow_16_add_equipment_rationale_53", - "community": 224, + "source_location": "L61", + "id": "e2e_test_flow_16_add_equipment_rationale_61", + "community": 186, "norm_label": "sync mode step renders the nas/stage radio." }, { "label": "Review step renders Confirm; clicking it fires the success label.", "file_type": "rationale", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L60", - "id": "e2e_test_flow_16_add_equipment_rationale_60", - "community": 224, + "source_location": "L68", + "id": "e2e_test_flow_16_add_equipment_rationale_68", + "community": 186, "norm_label": "review step renders confirm; clicking it fires the success label." }, { "label": "An empty wizard: Next stays disabled until the identity step is valid, then", "file_type": "rationale", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L70", - "id": "e2e_test_flow_16_add_equipment_rationale_70", - "community": 224, + "source_location": "L78", + "id": "e2e_test_flow_16_add_equipment_rationale_78", + "community": 186, "norm_label": "an empty wizard: next stays disabled until the identity step is valid, then" }, { @@ -35154,34 +36216,34 @@ "source_file": "tests/e2e/test_flow_23_footer_staging.py", "source_location": "L1", "id": "tests_e2e_test_flow_23_footer_staging_py", - "community": 375, + "community": 377, "norm_label": "test_flow_23_footer_staging.py" }, { "label": "_goto()", "file_type": "code", "source_file": "tests/e2e/test_flow_23_footer_staging.py", - "source_location": "L10", + "source_location": "L20", "id": "e2e_test_flow_23_footer_staging_goto", - "community": 375, + "community": 377, "norm_label": "_goto()" }, { "label": "test_flow_23_footer_staging_segment_renders()", "file_type": "code", "source_file": "tests/e2e/test_flow_23_footer_staging.py", - "source_location": "L23", + "source_location": "L33", "id": "e2e_test_flow_23_footer_staging_test_flow_23_footer_staging_segment_renders", - "community": 375, + "community": 377, "norm_label": "test_flow_23_footer_staging_segment_renders()" }, { "label": "test_flow_23_bulk_clear_verified_action_present()", "file_type": "code", "source_file": "tests/e2e/test_flow_23_footer_staging.py", - "source_location": "L28", + "source_location": "L38", "id": "e2e_test_flow_23_footer_staging_test_flow_23_bulk_clear_verified_action_present", - "community": 375, + "community": 377, "norm_label": "test_flow_23_bulk_clear_verified_action_present()" }, { @@ -35190,7 +36252,7 @@ "source_file": "tests/e2e/test_flow_23_footer_staging.py", "source_location": "L1", "id": "e2e_test_flow_23_footer_staging_rationale_1", - "community": 375, + "community": 377, "norm_label": "e2e flow 23: footer staging segment + bulk clear verified (redesign \u00a74.6). the" }, { @@ -35199,7 +36261,7 @@ "source_file": "tests/e2e/test_smoke.py", "source_location": "L1", "id": "tests_e2e_test_smoke_py", - "community": 394, + "community": 416, "norm_label": "test_smoke.py" }, { @@ -35208,7 +36270,7 @@ "source_file": "tests/e2e/test_smoke.py", "source_location": "L15", "id": "e2e_test_smoke_test_root_url_responds_with_html", - "community": 394, + "community": 416, "norm_label": "test_root_url_responds_with_html()" }, { @@ -35217,7 +36279,7 @@ "source_file": "tests/e2e/test_smoke.py", "source_location": "L1", "id": "e2e_test_smoke_rationale_1", - "community": 394, + "community": 416, "norm_label": "e2e smoke flow. confirms the phase 16 e2e harness can drive a real browser agai" }, { @@ -35226,7 +36288,7 @@ "source_file": "tests/e2e/test_smoke.py", "source_location": "L16", "id": "e2e_test_smoke_rationale_16", - "community": 394, + "community": 416, "norm_label": "smoke: navigate to / and confirm the e2e harness is wired up. the phase 16" }, { @@ -35235,7 +36297,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L1", "id": "tests_e2e_test_ux_documentation_py", - "community": 234, + "community": 237, "norm_label": "test_ux_documentation.py" }, { @@ -35244,7 +36306,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L45", "id": "e2e_test_ux_documentation_render_doc", - "community": 234, + "community": 237, "norm_label": "_render_doc()" }, { @@ -35253,7 +36315,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L66", "id": "e2e_test_ux_documentation_test_ux_interactions_doc_is_current", - "community": 234, + "community": 237, "norm_label": "test_ux_interactions_doc_is_current()" }, { @@ -35262,7 +36324,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L86", "id": "e2e_test_ux_documentation_test_ux_catalog_is_non_trivial", - "community": 234, + "community": 237, "norm_label": "test_ux_catalog_is_non_trivial()" }, { @@ -35271,7 +36333,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L97", "id": "e2e_test_ux_documentation_references", - "community": 234, + "community": 237, "norm_label": "_references()" }, { @@ -35280,7 +36342,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L116", "id": "e2e_test_ux_documentation_test_ux_interaction_testids_exist_in_source", - "community": 234, + "community": 237, "norm_label": "test_ux_interaction_testids_exist_in_source()" }, { @@ -35289,7 +36351,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L127", "id": "e2e_test_ux_documentation_test_ux_interactions_are_e2e_covered", - "community": 234, + "community": 237, "norm_label": "test_ux_interactions_are_e2e_covered()" }, { @@ -35298,7 +36360,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L1", "id": "e2e_test_ux_documentation_rationale_1", - "community": 234, + "community": 237, "norm_label": "automated ux-interaction documentation + coverage checks. drives :mod:`tests.e2" }, { @@ -35307,7 +36369,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L46", "id": "e2e_test_ux_documentation_rationale_46", - "community": 234, + "community": 237, "norm_label": "render the catalog into the ``ux_interactions.md`` markdown body." }, { @@ -35316,7 +36378,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L67", "id": "e2e_test_ux_documentation_rationale_67", - "community": 234, + "community": 237, "norm_label": "``docs/ux_interactions.md`` is regenerated from the catalog. regenerates th" }, { @@ -35325,7 +36387,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L87", "id": "e2e_test_ux_documentation_rationale_87", - "community": 234, + "community": 237, "norm_label": "guard against an empty catalog silently passing the other checks." }, { @@ -35334,7 +36396,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L98", "id": "e2e_test_ux_documentation_rationale_98", - "community": 234, + "community": 237, "norm_label": "return ``true`` when ``haystack`` references ``testid``. tolerates testids" }, { @@ -35343,7 +36405,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L117", "id": "e2e_test_ux_documentation_rationale_117", - "community": 234, + "community": 237, "norm_label": "every cataloged ``data-testid`` is present in the ui source." }, { @@ -35352,7 +36414,7 @@ "source_file": "tests/e2e/test_ux_documentation.py", "source_location": "L128", "id": "e2e_test_ux_documentation_rationale_128", - "community": 234, + "community": 237, "norm_label": "every cataloged ``data-testid`` is driven by an e2e test. scans the whole `" }, { @@ -35361,7 +36423,7 @@ "source_file": "tests/e2e/_prod_app.py", "source_location": "L1", "id": "tests_e2e_prod_app_py", - "community": 114, + "community": 110, "norm_label": "_prod_app.py" }, { @@ -35370,7 +36432,7 @@ "source_file": "tests/e2e/_prod_app.py", "source_location": "L23", "id": "e2e_prod_app_create_prod_app_factory", - "community": 114, + "community": 110, "norm_label": "create_prod_app_factory()" }, { @@ -35379,7 +36441,7 @@ "source_file": "tests/e2e/_prod_app.py", "source_location": "L1", "id": "e2e_prod_app_rationale_1", - "community": 114, + "community": 110, "norm_label": "uvicorn ``--factory`` entrypoint for the *production* wizard app. ``_test_app.p" }, { @@ -35388,7 +36450,7 @@ "source_file": "tests/e2e/_prod_app.py", "source_location": "L24", "id": "e2e_prod_app_rationale_24", - "community": 114, + "community": 110, "norm_label": "build the production wizard app (nicegui mounted at ``/``)." }, { @@ -35397,97 +36459,97 @@ "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", "source_location": "L1", "id": "tests_e2e_test_flow_25_production_main_wiring_py", - "community": 151, + "community": 96, "norm_label": "test_flow_25_production_main_wiring.py" }, { "label": "_goto()", "file_type": "code", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L21", + "source_location": "L23", "id": "e2e_test_flow_25_production_main_wiring_goto", - "community": 151, + "community": 96, "norm_label": "_goto()" }, { "label": "test_flow_25_main_route_renders_redesigned_layout()", "file_type": "code", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L40", + "source_location": "L42", "id": "e2e_test_flow_25_production_main_wiring_test_flow_25_main_route_renders_redesigned_layout", - "community": 151, + "community": 96, "norm_label": "test_flow_25_main_route_renders_redesigned_layout()" }, { "label": "test_flow_25_add_equipment_button_navigates_to_wizard()", "file_type": "code", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L75", + "source_location": "L80", "id": "e2e_test_flow_25_production_main_wiring_test_flow_25_add_equipment_button_navigates_to_wizard", - "community": 151, + "community": 96, "norm_label": "test_flow_25_add_equipment_button_navigates_to_wizard()" }, { "label": "test_flow_25_select_node_threads_selected_into_url()", "file_type": "code", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L82", + "source_location": "L87", "id": "e2e_test_flow_25_production_main_wiring_test_flow_25_select_node_threads_selected_into_url", - "community": 151, + "community": 96, "norm_label": "test_flow_25_select_node_threads_selected_into_url()" }, { "label": "test_flow_25_selected_query_renders_centre_and_right_panes()", "file_type": "code", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L95", + "source_location": "L100", "id": "e2e_test_flow_25_production_main_wiring_test_flow_25_selected_query_renders_centre_and_right_panes", - "community": 151, + "community": 96, "norm_label": "test_flow_25_selected_query_renders_centre_and_right_panes()" }, { "label": "test_flow_25_breadcrumb_navigation_re_navigates_main()", "file_type": "code", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L105", + "source_location": "L110", "id": "e2e_test_flow_25_production_main_wiring_test_flow_25_breadcrumb_navigation_re_navigates_main", - "community": 151, + "community": 96, "norm_label": "test_flow_25_breadcrumb_navigation_re_navigates_main()" }, { "label": "test_flow_25_toggle_right_pane_toggles_query_param()", "file_type": "code", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L121", + "source_location": "L126", "id": "e2e_test_flow_25_production_main_wiring_test_flow_25_toggle_right_pane_toggles_query_param", - "community": 151, + "community": 96, "norm_label": "test_flow_25_toggle_right_pane_toggles_query_param()" }, { "label": "test_flow_25_tree_context_action_deep_links_into_settings()", "file_type": "code", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L132", + "source_location": "L137", "id": "e2e_test_flow_25_production_main_wiring_test_flow_25_tree_context_action_deep_links_into_settings", - "community": 151, + "community": 96, "norm_label": "test_flow_25_tree_context_action_deep_links_into_settings()" }, { "label": "test_flow_25_received_equipment_disables_creation_buttons()", "file_type": "code", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L147", + "source_location": "L152", "id": "e2e_test_flow_25_production_main_wiring_test_flow_25_received_equipment_disables_creation_buttons", - "community": 151, + "community": 96, "norm_label": "test_flow_25_received_equipment_disables_creation_buttons()" }, { "label": "test_flow_25_footer_clear_verified_routes_to_callback()", "file_type": "code", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L172", + "source_location": "L181", "id": "e2e_test_flow_25_production_main_wiring_test_flow_25_footer_clear_verified_routes_to_callback", - "community": 151, + "community": 96, "norm_label": "test_flow_25_footer_clear_verified_routes_to_callback()" }, { @@ -35496,97 +36558,97 @@ "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", "source_location": "L1", "id": "e2e_test_flow_25_production_main_wiring_rationale_1", - "community": 151, + "community": 96, "norm_label": "e2e flow 25: production /main is wired to the redesigned renderer. this suite e" }, { "label": "Navigate to ``url`` with one retry on transient NiceGUI failures.", "file_type": "rationale", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L22", - "id": "e2e_test_flow_25_production_main_wiring_rationale_22", - "community": 151, + "source_location": "L24", + "id": "e2e_test_flow_25_production_main_wiring_rationale_24", + "community": 96, "norm_label": "navigate to ``url`` with one retry on transient nicegui failures." }, { "label": "The /main route mounts the redesigned renderer, not the legacy one. Asserts", "file_type": "rationale", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L41", - "id": "e2e_test_flow_25_production_main_wiring_rationale_41", - "community": 151, + "source_location": "L43", + "id": "e2e_test_flow_25_production_main_wiring_rationale_43", + "community": 96, "norm_label": "the /main route mounts the redesigned renderer, not the legacy one. asserts" }, { "label": "The Add Equipment toolbar button navigates to /wizard/equipment.", "file_type": "rationale", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L76", - "id": "e2e_test_flow_25_production_main_wiring_rationale_76", - "community": 151, + "source_location": "L81", + "id": "e2e_test_flow_25_production_main_wiring_rationale_81", + "community": 96, "norm_label": "the add equipment toolbar button navigates to /wizard/equipment." }, { "label": "Clicking an equipment node updates the URL with ?selected=. Exercises o", "file_type": "rationale", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L83", - "id": "e2e_test_flow_25_production_main_wiring_rationale_83", - "community": 151, + "source_location": "L88", + "id": "e2e_test_flow_25_production_main_wiring_rationale_88", + "community": 96, "norm_label": "clicking an equipment node updates the url with ?selected=. exercises o" }, { "label": "Loading /main?selected=TEST_EQ1 directly renders the centre + right panes.", "file_type": "rationale", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L96", - "id": "e2e_test_flow_25_production_main_wiring_rationale_96", - "community": 151, + "source_location": "L101", + "id": "e2e_test_flow_25_production_main_wiring_rationale_101", + "community": 96, "norm_label": "loading /main?selected=test_eq1 directly renders the centre + right panes." }, { "label": "Clicking a breadcrumb segment routes back through /main?selected=. The brea", "file_type": "rationale", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L106", - "id": "e2e_test_flow_25_production_main_wiring_rationale_106", - "community": 151, + "source_location": "L111", + "id": "e2e_test_flow_25_production_main_wiring_rationale_111", + "community": 96, "norm_label": "clicking a breadcrumb segment routes back through /main?selected=. the brea" }, { "label": "Clicking the right-pane toggle flips ?right_pane=collapsed in the URL.", "file_type": "rationale", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L122", - "id": "e2e_test_flow_25_production_main_wiring_rationale_122", - "community": 151, + "source_location": "L127", + "id": "e2e_test_flow_25_production_main_wiring_rationale_127", + "community": 96, "norm_label": "clicking the right-pane toggle flips ?right_pane=collapsed in the url." }, { "label": "Owned-equipment Edit menu navigates to /settings with the equipment id. Rou", "file_type": "rationale", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L133", - "id": "e2e_test_flow_25_production_main_wiring_rationale_133", - "community": 151, + "source_location": "L138", + "id": "e2e_test_flow_25_production_main_wiring_rationale_138", + "community": 96, "norm_label": "owned-equipment edit menu navigates to /settings with the equipment id. rou" }, { "label": "Selecting a TEST_RELAY_* node disables the New Project/Run/Test-Run buttons.", "file_type": "rationale", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L148", - "id": "e2e_test_flow_25_production_main_wiring_rationale_148", - "community": 151, + "source_location": "L153", + "id": "e2e_test_flow_25_production_main_wiring_rationale_153", + "community": 96, "norm_label": "selecting a test_relay_* node disables the new project/run/test-run buttons." }, { "label": "The footer Clear-verified button is wired to a callback. Asserts the button", "file_type": "rationale", "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", - "source_location": "L173", - "id": "e2e_test_flow_25_production_main_wiring_rationale_173", - "community": 151, + "source_location": "L182", + "id": "e2e_test_flow_25_production_main_wiring_rationale_182", + "community": 96, "norm_label": "the footer clear-verified button is wired to a callback. asserts the button" }, { @@ -35595,7 +36657,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L1", "id": "tests_e2e_test_flow_00_full_lifecycle_py", - "community": 139, + "community": 185, "norm_label": "test_flow_00_full_lifecycle.py" }, { @@ -35604,7 +36666,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L50", "id": "e2e_test_flow_00_full_lifecycle_fill", - "community": 139, + "community": 185, "norm_label": "_fill()" }, { @@ -35613,7 +36675,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L57", "id": "e2e_test_flow_00_full_lifecycle_select", - "community": 139, + "community": 185, "norm_label": "_select()" }, { @@ -35622,7 +36684,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L86", "id": "e2e_test_flow_00_full_lifecycle_step_button", - "community": 139, + "community": 185, "norm_label": "_step_button()" }, { @@ -35631,7 +36693,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L104", "id": "e2e_test_flow_00_full_lifecycle_project_next", - "community": 139, + "community": 185, "norm_label": "_project_next()" }, { @@ -35640,7 +36702,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L109", "id": "e2e_test_flow_00_full_lifecycle_run_next", - "community": 139, + "community": 185, "norm_label": "_run_next()" }, { @@ -35649,7 +36711,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L114", "id": "e2e_test_flow_00_full_lifecycle_goto", - "community": 139, + "community": 185, "norm_label": "_goto()" }, { @@ -35658,7 +36720,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L139", "id": "e2e_test_flow_00_full_lifecycle_prod_server", - "community": 139, + "community": 270, "norm_label": "prod_server()" }, { @@ -35667,7 +36729,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L168", "id": "e2e_test_flow_00_full_lifecycle_test_full_create_lifecycle", - "community": 139, + "community": 137, "norm_label": "test_full_create_lifecycle()" }, { @@ -35676,7 +36738,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L1", "id": "e2e_test_flow_00_full_lifecycle_rationale_1", - "community": 139, + "community": 185, "norm_label": "e2e flow 00b: the full create-lifecycle against the production app. boots the g" }, { @@ -35685,7 +36747,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L51", "id": "e2e_test_flow_00_full_lifecycle_rationale_51", - "community": 139, + "community": 185, "norm_label": "fill a (visible) quasar input identified by ``data-testid``." }, { @@ -35694,7 +36756,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L65", "id": "e2e_test_flow_00_full_lifecycle_rationale_65", - "community": 139, + "community": 185, "norm_label": "pick ``value`` from a nicegui/quasar ``ui.select`` by ``data-testid``. nice" }, { @@ -35703,7 +36765,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L93", "id": "e2e_test_flow_00_full_lifecycle_rationale_93", - "community": 139, + "community": 185, "norm_label": "click a stepper-navigation button scoped to its step container. the next /" }, { @@ -35712,7 +36774,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L105", "id": "e2e_test_flow_00_full_lifecycle_rationale_105", - "community": 139, + "community": 185, "norm_label": "advance the project wizard from ``step_id`` via its next button." }, { @@ -35721,7 +36783,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L110", "id": "e2e_test_flow_00_full_lifecycle_rationale_110", - "community": 139, + "community": 185, "norm_label": "advance the run wizard from ``step_id`` via its next button." }, { @@ -35730,7 +36792,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L115", "id": "e2e_test_flow_00_full_lifecycle_rationale_115", - "community": 139, + "community": 185, "norm_label": "navigate to a nicegui page, tolerating a transient err_aborted. nicegui's c" }, { @@ -35739,7 +36801,7 @@ "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L140", "id": "e2e_test_flow_00_full_lifecycle_rationale_140", - "community": 139, + "community": 270, "norm_label": "yield a started :class:`prodserver` rooted at a fresh tmp home. the keyring" }, { @@ -35748,7 +36810,7 @@ "source_file": "tests/e2e/test_flow_13_keyboard.py", "source_location": "L1", "id": "tests_e2e_test_flow_13_keyboard_py", - "community": 454, + "community": 484, "norm_label": "test_flow_13_keyboard.py" }, { @@ -35757,7 +36819,7 @@ "source_file": "tests/e2e/test_flow_13_keyboard.py", "source_location": "L14", "id": "e2e_test_flow_13_keyboard_test_flow_13_keyboard", - "community": 454, + "community": 484, "norm_label": "test_flow_13_keyboard()" }, { @@ -35766,7 +36828,7 @@ "source_file": "tests/e2e/test_flow_13_keyboard.py", "source_location": "L1", "id": "e2e_test_flow_13_keyboard_rationale_1", - "community": 454, + "community": 484, "norm_label": "e2e flow 13: keyboard shortcuts + accessibility focus management. frontend spec" }, { @@ -35775,7 +36837,7 @@ "source_file": "tests/e2e/ux_catalog.py", "source_location": "L1", "id": "tests_e2e_ux_catalog_py", - "community": 395, + "community": 417, "norm_label": "ux_catalog.py" }, { @@ -35784,7 +36846,7 @@ "source_file": "tests/e2e/ux_catalog.py", "source_location": "L29", "id": "e2e_ux_catalog_uxinteraction", - "community": 395, + "community": 417, "norm_label": "uxinteraction" }, { @@ -35793,7 +36855,7 @@ "source_file": "tests/e2e/ux_catalog.py", "source_location": "L1", "id": "e2e_ux_catalog_rationale_1", - "community": 395, + "community": 417, "norm_label": "machine-readable catalog of the wizard's ux interactions. each :class:`uxintera" }, { @@ -35802,7 +36864,7 @@ "source_file": "tests/e2e/ux_catalog.py", "source_location": "L30", "id": "e2e_ux_catalog_rationale_30", - "community": 395, + "community": 417, "norm_label": "one operator-facing affordance in the wizard ui." }, { @@ -35811,7 +36873,7 @@ "source_file": "tests/e2e/test_flow_07_plugin_input_required.py", "source_location": "L1", "id": "tests_e2e_test_flow_07_plugin_input_required_py", - "community": 455, + "community": 485, "norm_label": "test_flow_07_plugin_input_required.py" }, { @@ -35820,7 +36882,7 @@ "source_file": "tests/e2e/test_flow_07_plugin_input_required.py", "source_location": "L14", "id": "e2e_test_flow_07_plugin_input_required_test_flow_07_plugin_input_required", - "community": 455, + "community": 485, "norm_label": "test_flow_07_plugin_input_required()" }, { @@ -35829,7 +36891,7 @@ "source_file": "tests/e2e/test_flow_07_plugin_input_required.py", "source_location": "L1", "id": "e2e_test_flow_07_plugin_input_required_rationale_1", - "community": 455, + "community": 485, "norm_label": "e2e flow 07: plugin input-required round trip. frontend spec \u00a76.4.5 (plugin ste" }, { @@ -35838,7 +36900,7 @@ "source_file": "tests/e2e/test_flow_26_equipment_wizard_persist.py", "source_location": "L1", "id": "tests_e2e_test_flow_26_equipment_wizard_persist_py", - "community": 233, + "community": 355, "norm_label": "test_flow_26_equipment_wizard_persist.py" }, { @@ -35847,7 +36909,7 @@ "source_file": "tests/e2e/test_flow_26_equipment_wizard_persist.py", "source_location": "L40", "id": "e2e_test_flow_26_equipment_wizard_persist_prod_server", - "community": 233, + "community": 355, "norm_label": "prod_server()" }, { @@ -35856,7 +36918,7 @@ "source_file": "tests/e2e/test_flow_26_equipment_wizard_persist.py", "source_location": "L53", "id": "e2e_test_flow_26_equipment_wizard_persist_test_equipment_wizard_confirm_persists_to_config", - "community": 233, + "community": 355, "norm_label": "test_equipment_wizard_confirm_persists_to_config()" }, { @@ -35865,7 +36927,7 @@ "source_file": "tests/e2e/test_flow_26_equipment_wizard_persist.py", "source_location": "L1", "id": "e2e_test_flow_26_equipment_wizard_persist_rationale_1", - "community": 233, + "community": 355, "norm_label": "e2e flow 26: add-equipment wizard confirm against the production app. ``test_fl" }, { @@ -35874,7 +36936,7 @@ "source_file": "tests/e2e/test_flow_26_equipment_wizard_persist.py", "source_location": "L41", "id": "e2e_test_flow_26_equipment_wizard_persist_rationale_41", - "community": 233, + "community": 355, "norm_label": "spawn the production wizard app under a fresh tmp home." }, { @@ -35883,7 +36945,7 @@ "source_file": "tests/e2e/test_flow_26_equipment_wizard_persist.py", "source_location": "L54", "id": "e2e_test_flow_26_equipment_wizard_persist_rationale_54", - "community": 233, + "community": 355, "norm_label": "drive the production wizard to confirm and assert config.yaml gains the device." }, { @@ -35892,16 +36954,16 @@ "source_file": "tests/e2e/test_flow_09_orchestrator.py", "source_location": "L1", "id": "tests_e2e_test_flow_09_orchestrator_py", - "community": 209, + "community": 208, "norm_label": "test_flow_09_orchestrator.py" }, { "label": "test_flow_09_orchestrator()", "file_type": "code", "source_file": "tests/e2e/test_flow_09_orchestrator.py", - "source_location": "L20", + "source_location": "L31", "id": "e2e_test_flow_09_orchestrator_test_flow_09_orchestrator", - "community": 209, + "community": 208, "norm_label": "test_flow_09_orchestrator()" }, { @@ -35910,7 +36972,7 @@ "source_file": "tests/e2e/test_flow_09_orchestrator.py", "source_location": "L1", "id": "e2e_test_flow_09_orchestrator_rationale_1", - "community": 209, + "community": 208, "norm_label": "e2e flow 09: orchestrator staging panel + quiescence-sync trigger. frontend spe" }, { @@ -35919,7 +36981,7 @@ "source_file": "tests/e2e/test_flow_27_nas_credential_settings.py", "source_location": "L1", "id": "tests_e2e_test_flow_27_nas_credential_settings_py", - "community": 287, + "community": 291, "norm_label": "test_flow_27_nas_credential_settings.py" }, { @@ -35937,7 +36999,7 @@ "source_file": "tests/e2e/test_flow_27_nas_credential_settings.py", "source_location": "L92", "id": "e2e_test_flow_27_nas_credential_settings_install_stub_rclone", - "community": 287, + "community": 291, "norm_label": "_install_stub_rclone()" }, { @@ -35946,7 +37008,7 @@ "source_file": "tests/e2e/test_flow_27_nas_credential_settings.py", "source_location": "L102", "id": "e2e_test_flow_27_nas_credential_settings_nas_prod_server", - "community": 287, + "community": 291, "norm_label": "nas_prod_server()" }, { @@ -35955,7 +37017,7 @@ "source_file": "tests/e2e/test_flow_27_nas_credential_settings.py", "source_location": "L172", "id": "e2e_test_flow_27_nas_credential_settings_setup_state", - "community": 287, + "community": 291, "norm_label": "_setup_state()" }, { @@ -35964,7 +37026,7 @@ "source_file": "tests/e2e/test_flow_27_nas_credential_settings.py", "source_location": "L176", "id": "e2e_test_flow_27_nas_credential_settings_test_nas_remote_gate_configure_and_test", - "community": 287, + "community": 291, "norm_label": "test_nas_remote_gate_configure_and_test()" }, { @@ -35973,7 +37035,7 @@ "source_file": "tests/e2e/test_flow_27_nas_credential_settings.py", "source_location": "L1", "id": "e2e_test_flow_27_nas_credential_settings_rationale_1", - "community": 287, + "community": 291, "norm_label": "e2e flow 27: nas remote setup gate + settings section (rclone.conf migration)." }, { @@ -35991,7 +37053,7 @@ "source_file": "tests/e2e/test_flow_27_nas_credential_settings.py", "source_location": "L103", "id": "e2e_test_flow_27_nas_credential_settings_rationale_103", - "community": 287, + "community": 291, "norm_label": "spawn the production wizard seeded with a credential-less nas equipment. yi" }, { @@ -36000,7 +37062,7 @@ "source_file": "tests/e2e/test_flow_15_websocket_reconnect.py", "source_location": "L1", "id": "tests_e2e_test_flow_15_websocket_reconnect_py", - "community": 456, + "community": 486, "norm_label": "test_flow_15_websocket_reconnect.py" }, { @@ -36009,7 +37071,7 @@ "source_file": "tests/e2e/test_flow_15_websocket_reconnect.py", "source_location": "L16", "id": "e2e_test_flow_15_websocket_reconnect_test_flow_15_websocket_reconnect", - "community": 456, + "community": 486, "norm_label": "test_flow_15_websocket_reconnect()" }, { @@ -36018,7 +37080,7 @@ "source_file": "tests/e2e/test_flow_15_websocket_reconnect.py", "source_location": "L1", "id": "e2e_test_flow_15_websocket_reconnect_rationale_1", - "community": 456, + "community": 486, "norm_label": "e2e flow 15: websocket reconnect + degraded-mode banner. frontend spec \u00a76.14 (d" }, { @@ -36027,25 +37089,25 @@ "source_file": "tests/e2e/test_flow_21_stage_ceiling.py", "source_location": "L1", "id": "tests_e2e_test_flow_21_stage_ceiling_py", - "community": 396, + "community": 418, "norm_label": "test_flow_21_stage_ceiling.py" }, { "label": "_goto()", "file_type": "code", "source_file": "tests/e2e/test_flow_21_stage_ceiling.py", - "source_location": "L12", + "source_location": "L23", "id": "e2e_test_flow_21_stage_ceiling_goto", - "community": 396, + "community": 418, "norm_label": "_goto()" }, { "label": "test_flow_21_stage_equipment_metadata_renders_ceiling_note()", "file_type": "code", "source_file": "tests/e2e/test_flow_21_stage_ceiling.py", - "source_location": "L25", + "source_location": "L36", "id": "e2e_test_flow_21_stage_ceiling_test_flow_21_stage_equipment_metadata_renders_ceiling_note", - "community": 396, + "community": 418, "norm_label": "test_flow_21_stage_equipment_metadata_renders_ceiling_note()" }, { @@ -36054,7 +37116,7 @@ "source_file": "tests/e2e/test_flow_21_stage_ceiling.py", "source_location": "L1", "id": "e2e_test_flow_21_stage_ceiling_rationale_1", - "community": 396, + "community": 418, "norm_label": "e2e flow 21: stage-mode ceiling note (redesign \u00a73.2 / \u00a74.4). when a stage-mode" }, { @@ -36063,7 +37125,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L1", "id": "tests_e2e_test_app_py", - "community": 146, + "community": 39, "norm_label": "_test_app.py" }, { @@ -36072,7 +37134,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L67", "id": "e2e_test_app_teststate", - "community": 146, + "community": 3, "norm_label": "teststate" }, { @@ -36081,7 +37143,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L102", "id": "e2e_test_app_read_query", - "community": 146, + "community": 39, "norm_label": "_read_query()" }, { @@ -36090,7 +37152,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L109", "id": "e2e_test_app_classify_test_node", - "community": 146, + "community": 39, "norm_label": "_classify_test_node()" }, { @@ -36099,7 +37161,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L129", "id": "e2e_test_app_seeded_metadata_payload", - "community": 146, + "community": 39, "norm_label": "_seeded_metadata_payload()" }, { @@ -36108,7 +37170,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L189", "id": "e2e_test_app_feed_rows", - "community": 146, + "community": 39, "norm_label": "_feed_rows()" }, { @@ -36117,7 +37179,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L209", "id": "e2e_test_app_seeded_file_entries", - "community": 146, + "community": 39, "norm_label": "_seeded_file_entries()" }, { @@ -36126,16 +37188,16 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L236", "id": "e2e_test_app_build_test_app", - "community": 146, + "community": 39, "norm_label": "build_test_app()" }, { "label": "create_app_factory()", "file_type": "code", "source_file": "tests/e2e/_test_app.py", - "source_location": "L930", + "source_location": "L948", "id": "e2e_test_app_create_app_factory", - "community": 146, + "community": 39, "norm_label": "create_app_factory()" }, { @@ -36144,7 +37206,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L1", "id": "e2e_test_app_rationale_1", - "community": 146, + "community": 39, "norm_label": "e2e test app wiring (phase 16 follow-up). builds a fastapi app via :func:`exlab" }, { @@ -36153,7 +37215,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L68", "id": "e2e_test_app_rationale_68", - "community": 146, + "community": 3, "norm_label": "mutable cross-request state for the e2e harness." }, { @@ -36162,7 +37224,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L103", "id": "e2e_test_app_rationale_103", - "community": 146, + "community": 39, "norm_label": "parse a request url's query string into a multi-value mapping." }, { @@ -36171,7 +37233,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L110", "id": "e2e_test_app_rationale_110", - "community": 146, + "community": 39, "norm_label": "same shape classifier the production mount uses, for seeded ids. returns ``" }, { @@ -36180,7 +37242,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L130", "id": "e2e_test_app_rationale_130", - "community": 146, + "community": 39, "norm_label": "per-node-kind hardcoded payloads the test app threads into the production re" }, { @@ -36189,7 +37251,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L192", "id": "e2e_test_app_rationale_192", - "community": 146, + "community": 39, "norm_label": "return a node's feed as normalized 5-tuples. ``(name, size, sync_status, ke" }, { @@ -36198,7 +37260,7 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L210", "id": "e2e_test_app_rationale_210", - "community": 146, + "community": 39, "norm_label": "build the centre-pane file rows the test flows assert on. returns a default" }, { @@ -36207,16 +37269,16 @@ "source_file": "tests/e2e/_test_app.py", "source_location": "L237", "id": "e2e_test_app_rationale_237", - "community": 146, + "community": 39, "norm_label": "construct the fastapi app and mount the nicegui test surface." }, { "label": "uvicorn ``--factory`` entrypoint.", "file_type": "rationale", "source_file": "tests/e2e/_test_app.py", - "source_location": "L931", - "id": "e2e_test_app_rationale_931", - "community": 146, + "source_location": "L949", + "id": "e2e_test_app_rationale_949", + "community": 39, "norm_label": "uvicorn ``--factory`` entrypoint." }, { @@ -36225,7 +37287,7 @@ "source_file": "tests/e2e/test_flow_01_onboarding.py", "source_location": "L1", "id": "tests_e2e_test_flow_01_onboarding_py", - "community": 244, + "community": 217, "norm_label": "test_flow_01_onboarding.py" }, { @@ -36234,7 +37296,7 @@ "source_file": "tests/e2e/test_flow_01_onboarding.py", "source_location": "L18", "id": "e2e_test_flow_01_onboarding_goto", - "community": 244, + "community": 217, "norm_label": "_goto()" }, { @@ -36243,7 +37305,7 @@ "source_file": "tests/e2e/test_flow_01_onboarding.py", "source_location": "L37", "id": "e2e_test_flow_01_onboarding_test_flow_01_onboarding", - "community": 244, + "community": 217, "norm_label": "test_flow_01_onboarding()" }, { @@ -36252,7 +37314,7 @@ "source_file": "tests/e2e/test_flow_01_onboarding.py", "source_location": "L1", "id": "e2e_test_flow_01_onboarding_rationale_1", - "community": 244, + "community": 217, "norm_label": "e2e flow 01: first-launch onboarding. frontend spec \u00a76.1 (welcome card + autost" }, { @@ -36261,7 +37323,7 @@ "source_file": "tests/e2e/test_flow_01_onboarding.py", "source_location": "L19", "id": "e2e_test_flow_01_onboarding_rationale_19", - "community": 244, + "community": 217, "norm_label": "navigate to a nicegui page, tolerating a transient err_aborted. nicegui's c" }, { @@ -36270,7 +37332,7 @@ "source_file": "tests/e2e/test_flow_12_quit_coordinator.py", "source_location": "L1", "id": "tests_e2e_test_flow_12_quit_coordinator_py", - "community": 457, + "community": 487, "norm_label": "test_flow_12_quit_coordinator.py" }, { @@ -36279,7 +37341,7 @@ "source_file": "tests/e2e/test_flow_12_quit_coordinator.py", "source_location": "L27", "id": "e2e_test_flow_12_quit_coordinator_test_flow_12_quit_coordinator", - "community": 457, + "community": 487, "norm_label": "test_flow_12_quit_coordinator()" }, { @@ -36288,16 +37350,151 @@ "source_file": "tests/e2e/test_flow_12_quit_coordinator.py", "source_location": "L1", "id": "e2e_test_flow_12_quit_coordinator_rationale_1", - "community": 457, + "community": 487, "norm_label": "e2e flow 12: quit coordinator (drain in-flight sessions). frontend spec \u00a76.11 (" }, + { + "label": "test_flow_28_selection_search_density.py", + "file_type": "code", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L1", + "id": "tests_e2e_test_flow_28_selection_search_density_py", + "community": 226, + "norm_label": "test_flow_28_selection_search_density.py" + }, + { + "label": "_goto()", + "file_type": "code", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L26", + "id": "e2e_test_flow_28_selection_search_density_goto", + "community": 226, + "norm_label": "_goto()" + }, + { + "label": "test_flow_28_select_file_row_highlights_and_shows_subcard()", + "file_type": "code", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L39", + "id": "e2e_test_flow_28_selection_search_density_test_flow_28_select_file_row_highlights_and_shows_subcard", + "community": 226, + "norm_label": "test_flow_28_select_file_row_highlights_and_shows_subcard()" + }, + { + "label": "test_flow_28_search_filters_tree_and_shows_count()", + "file_type": "code", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L58", + "id": "e2e_test_flow_28_selection_search_density_test_flow_28_search_filters_tree_and_shows_count", + "community": 226, + "norm_label": "test_flow_28_search_filters_tree_and_shows_count()" + }, + { + "label": "test_flow_28_search_no_matches_state()", + "file_type": "code", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L67", + "id": "e2e_test_flow_28_selection_search_density_test_flow_28_search_no_matches_state", + "community": 226, + "norm_label": "test_flow_28_search_no_matches_state()" + }, + { + "label": "test_flow_28_density_toggle_threads_density_param()", + "file_type": "code", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L73", + "id": "e2e_test_flow_28_selection_search_density_test_flow_28_density_toggle_threads_density_param", + "community": 226, + "norm_label": "test_flow_28_density_toggle_threads_density_param()" + }, + { + "label": "test_flow_28_sync_legend_popover_lists_states()", + "file_type": "code", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L82", + "id": "e2e_test_flow_28_selection_search_density_test_flow_28_sync_legend_popover_lists_states", + "community": 226, + "norm_label": "test_flow_28_sync_legend_popover_lists_states()" + }, + { + "label": "test_flow_28_selected_tree_node_carries_selected_class()", + "file_type": "code", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L94", + "id": "e2e_test_flow_28_selection_search_density_test_flow_28_selected_tree_node_carries_selected_class", + "community": 226, + "norm_label": "test_flow_28_selected_tree_node_carries_selected_class()" + }, + { + "label": "E2E flow 28: Phase 4/5 polish \u2014 file selection, search, density, legend. Covers", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L1", + "id": "e2e_test_flow_28_selection_search_density_rationale_1", + "community": 226, + "norm_label": "e2e flow 28: phase 4/5 polish \u2014 file selection, search, density, legend. covers" + }, + { + "label": "Single-clicking a file row threads ?file=, marks the row selected, and surfa", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L40", + "id": "e2e_test_flow_28_selection_search_density_rationale_40", + "community": 226, + "norm_label": "single-clicking a file row threads ?file=, marks the row selected, and surfa" + }, + { + "label": "A search query renders the result-count pill and seeds the box (OQ-2).", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L59", + "id": "e2e_test_flow_28_selection_search_density_rationale_59", + "community": 226, + "norm_label": "a search query renders the result-count pill and seeds the box (oq-2)." + }, + { + "label": "A query that matches nothing renders the no-matches hint (OQ-2).", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L68", + "id": "e2e_test_flow_28_selection_search_density_rationale_68", + "community": 226, + "norm_label": "a query that matches nothing renders the no-matches hint (oq-2)." + }, + { + "label": "The Files-header density toggle re-navigates with ?density=compact (\u00a74.8).", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L74", + "id": "e2e_test_flow_28_selection_search_density_rationale_74", + "community": 226, + "norm_label": "the files-header density toggle re-navigates with ?density=compact (\u00a74.8)." + }, + { + "label": "The Files-header \"?\" opens the sync-status legend popover (Phase 5).", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L83", + "id": "e2e_test_flow_28_selection_search_density_rationale_83", + "community": 226, + "norm_label": "the files-header \"?\" opens the sync-status legend popover (phase 5)." + }, + { + "label": "The selected tree node renders Quasar's selected class -- the hook the unifi", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L95", + "id": "e2e_test_flow_28_selection_search_density_rationale_95", + "community": 226, + "norm_label": "the selected tree node renders quasar's selected class -- the hook the unifi" + }, { "label": "test_flow_19_travelling_badge.py", "file_type": "code", "source_file": "tests/e2e/test_flow_19_travelling_badge.py", "source_location": "L1", "id": "tests_e2e_test_flow_19_travelling_badge_py", - "community": 330, + "community": 334, "norm_label": "test_flow_19_travelling_badge.py" }, { @@ -36306,7 +37503,7 @@ "source_file": "tests/e2e/test_flow_19_travelling_badge.py", "source_location": "L40", "id": "e2e_test_flow_19_travelling_badge_free_port", - "community": 330, + "community": 334, "norm_label": "_free_port()" }, { @@ -36315,7 +37512,7 @@ "source_file": "tests/e2e/test_flow_19_travelling_badge.py", "source_location": "L46", "id": "e2e_test_flow_19_travelling_badge_make_seeded_server", - "community": 330, + "community": 334, "norm_label": "_make_seeded_server()" }, { @@ -36324,7 +37521,7 @@ "source_file": "tests/e2e/test_flow_19_travelling_badge.py", "source_location": "L87", "id": "e2e_test_flow_19_travelling_badge_test_flow_19_travelling_badge_aggregates_red", - "community": 330, + "community": 334, "norm_label": "test_flow_19_travelling_badge_aggregates_red()" }, { @@ -36333,7 +37530,7 @@ "source_file": "tests/e2e/test_flow_19_travelling_badge.py", "source_location": "L1", "id": "e2e_test_flow_19_travelling_badge_rationale_1", - "community": 330, + "community": 334, "norm_label": "e2e flow 19: travelling problem badge (redesign \u00a74.5). the badge sits on the sh" }, { @@ -36342,7 +37539,7 @@ "source_file": "tests/e2e/test_flow_19_travelling_badge.py", "source_location": "L47", "id": "e2e_test_flow_19_travelling_badge_rationale_47", - "community": 330, + "community": 334, "norm_label": "spawn a uvicorn server with seeded findings injected via env var." }, { @@ -36351,7 +37548,7 @@ "source_file": "tests/e2e/test_flow_19_travelling_badge.py", "source_location": "L88", "id": "e2e_test_flow_19_travelling_badge_rationale_88", - "community": 330, + "community": 334, "norm_label": "the badge for a seeded hard finding renders on the root node." }, { @@ -36360,7 +37557,7 @@ "source_file": "tests/e2e/test_flow_04_test_run.py", "source_location": "L1", "id": "tests_e2e_test_flow_04_test_run_py", - "community": 152, + "community": 159, "norm_label": "test_flow_04_test_run.py" }, { @@ -36369,7 +37566,7 @@ "source_file": "tests/e2e/test_flow_04_test_run.py", "source_location": "L17", "id": "e2e_test_flow_04_test_run_test_flow_04_test_run", - "community": 152, + "community": 159, "norm_label": "test_flow_04_test_run()" }, { @@ -36378,7 +37575,7 @@ "source_file": "tests/e2e/test_flow_04_test_run.py", "source_location": "L1", "id": "e2e_test_flow_04_test_run_rationale_1", - "community": 152, + "community": 159, "norm_label": "e2e flow 04: test-run wizard end-to-end. frontend spec \u00a76.4 (run wizard, test m" }, { @@ -36387,7 +37584,7 @@ "source_file": "tests/e2e/test_flow_06_problems.py", "source_location": "L1", "id": "tests_e2e_test_flow_06_problems_py", - "community": 137, + "community": 142, "norm_label": "test_flow_06_problems.py" }, { @@ -36396,7 +37593,7 @@ "source_file": "tests/e2e/test_flow_06_problems.py", "source_location": "L19", "id": "e2e_test_flow_06_problems_test_flow_06_problems", - "community": 137, + "community": 142, "norm_label": "test_flow_06_problems()" }, { @@ -36405,7 +37602,7 @@ "source_file": "tests/e2e/test_flow_06_problems.py", "source_location": "L1", "id": "e2e_test_flow_06_problems_rationale_1", - "community": 137, + "community": 142, "norm_label": "e2e flow 06: problems view + override / revoke round trip. frontend spec \u00a76.6 (" }, { @@ -36414,7 +37611,7 @@ "source_file": "tests/e2e/test_flow_14_notifications.py", "source_location": "L1", "id": "tests_e2e_test_flow_14_notifications_py", - "community": 458, + "community": 488, "norm_label": "test_flow_14_notifications.py" }, { @@ -36423,7 +37620,7 @@ "source_file": "tests/e2e/test_flow_14_notifications.py", "source_location": "L26", "id": "e2e_test_flow_14_notifications_test_flow_14_notifications", - "community": 458, + "community": 488, "norm_label": "test_flow_14_notifications()" }, { @@ -36432,7 +37629,7 @@ "source_file": "tests/e2e/test_flow_14_notifications.py", "source_location": "L1", "id": "e2e_test_flow_14_notifications_rationale_1", - "community": 458, + "community": 488, "norm_label": "e2e flow 14: tray notifications + in-app toasts. frontend spec \u00a76.13 (notificat" }, { @@ -36441,7 +37638,7 @@ "source_file": "tests/e2e/test_flow_10_schema_mismatch.py", "source_location": "L1", "id": "tests_e2e_test_flow_10_schema_mismatch_py", - "community": 137, + "community": 142, "norm_label": "test_flow_10_schema_mismatch.py" }, { @@ -36450,7 +37647,7 @@ "source_file": "tests/e2e/test_flow_10_schema_mismatch.py", "source_location": "L17", "id": "e2e_test_flow_10_schema_mismatch_test_flow_10_schema_mismatch", - "community": 137, + "community": 142, "norm_label": "test_flow_10_schema_mismatch()" }, { @@ -36459,7 +37656,7 @@ "source_file": "tests/e2e/test_flow_10_schema_mismatch.py", "source_location": "L1", "id": "e2e_test_flow_10_schema_mismatch_rationale_1", - "community": 137, + "community": 142, "norm_label": "e2e flow 10: schema-mismatch / migration prompt. frontend spec \u00a76.9 (schema-mis" }, { @@ -36468,7 +37665,7 @@ "source_file": "tests/e2e/test_flow_02_project_wizard.py", "source_location": "L1", "id": "tests_e2e_test_flow_02_project_wizard_py", - "community": 191, + "community": 193, "norm_label": "test_flow_02_project_wizard.py" }, { @@ -36477,7 +37674,7 @@ "source_file": "tests/e2e/test_flow_02_project_wizard.py", "source_location": "L14", "id": "e2e_test_flow_02_project_wizard_test_flow_02_project_wizard", - "community": 191, + "community": 193, "norm_label": "test_flow_02_project_wizard()" }, { @@ -36486,7 +37683,7 @@ "source_file": "tests/e2e/test_flow_02_project_wizard.py", "source_location": "L1", "id": "e2e_test_flow_02_project_wizard_rationale_1", - "community": 191, + "community": 193, "norm_label": "e2e flow 02: project wizard 7-step happy path. frontend spec \u00a76.3 (project wiza" }, { @@ -36495,7 +37692,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L1", "id": "tests_e2e_page_objects_problems_page_py", - "community": 137, + "community": 142, "norm_label": "problems_page.py" }, { @@ -36504,7 +37701,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L11", "id": "page_objects_problems_page_problemspage", - "community": 137, + "community": 142, "norm_label": "problemspage" }, { @@ -36513,7 +37710,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L14", "id": "page_objects_problems_page_problemspage_init", - "community": 137, + "community": 142, "norm_label": ".__init__()" }, { @@ -36522,7 +37719,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L18", "id": "page_objects_problems_page_table", - "community": 137, + "community": 142, "norm_label": "table()" }, { @@ -36531,7 +37728,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L23", "id": "page_objects_problems_page_empty_state", - "community": 137, + "community": 142, "norm_label": "empty_state()" }, { @@ -36540,7 +37737,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L27", "id": "page_objects_problems_page_problemspage_row", - "community": 137, + "community": 142, "norm_label": ".row()" }, { @@ -36549,7 +37746,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L31", "id": "page_objects_problems_page_problemspage_row_state", - "community": 137, + "community": 142, "norm_label": ".row_state()" }, { @@ -36558,7 +37755,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L35", "id": "page_objects_problems_page_problemspage_row_override", - "community": 137, + "community": 142, "norm_label": ".row_override()" }, { @@ -36567,7 +37764,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L39", "id": "page_objects_problems_page_problemspage_row_revoke", - "community": 137, + "community": 142, "norm_label": ".row_revoke()" }, { @@ -36576,7 +37773,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L1", "id": "page_objects_problems_page_rationale_1", - "community": 137, + "community": 142, "norm_label": "page object for the problems tab. frontend spec \u00a76.6." }, { @@ -36585,7 +37782,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L12", "id": "page_objects_problems_page_rationale_12", - "community": 137, + "community": 142, "norm_label": "locators for the problems table + override dialog." }, { @@ -36594,7 +37791,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L19", "id": "page_objects_problems_page_rationale_19", - "community": 541, + "community": 566, "norm_label": "the problems table container." }, { @@ -36603,7 +37800,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L24", "id": "page_objects_problems_page_rationale_24", - "community": 542, + "community": 567, "norm_label": "the empty-state label shown when no findings match." }, { @@ -36612,7 +37809,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L28", "id": "page_objects_problems_page_rationale_28", - "community": 137, + "community": 142, "norm_label": "the nth visible findings row." }, { @@ -36621,7 +37818,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L32", "id": "page_objects_problems_page_rationale_32", - "community": 137, + "community": 142, "norm_label": "the state label inside the nth row (active / override active / ...)." }, { @@ -36630,7 +37827,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L36", "id": "page_objects_problems_page_rationale_36", - "community": 137, + "community": 142, "norm_label": "the override-and-allow-sync button on the nth row." }, { @@ -36639,7 +37836,7 @@ "source_file": "tests/e2e/page_objects/problems_page.py", "source_location": "L40", "id": "page_objects_problems_page_rationale_40", - "community": 137, + "community": 142, "norm_label": "the revoke override button on the nth row." }, { @@ -36648,7 +37845,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L1", "id": "tests_e2e_page_objects_settings_page_py", - "community": 81, + "community": 74, "norm_label": "settings_page.py" }, { @@ -36657,7 +37854,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L11", "id": "page_objects_settings_page_settingspage", - "community": 81, + "community": 74, "norm_label": "settingspage" }, { @@ -36666,7 +37863,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L14", "id": "page_objects_settings_page_settingspage_init", - "community": 81, + "community": 74, "norm_label": ".__init__()" }, { @@ -36675,7 +37872,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L18", "id": "page_objects_settings_page_dialog", - "community": 81, + "community": 74, "norm_label": "dialog()" }, { @@ -36684,7 +37881,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L23", "id": "page_objects_settings_page_incomplete_banner", - "community": 81, + "community": 74, "norm_label": "incomplete_banner()" }, { @@ -36693,7 +37890,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L27", "id": "page_objects_settings_page_settingspage_nav", - "community": 81, + "community": 74, "norm_label": ".nav()" }, { @@ -36702,7 +37899,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L31", "id": "page_objects_settings_page_settingspage_section", - "community": 81, + "community": 74, "norm_label": ".section()" }, { @@ -36711,7 +37908,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L36", "id": "page_objects_settings_page_paths_templates", - "community": 81, + "community": 74, "norm_label": "paths_templates()" }, { @@ -36720,7 +37917,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L41", "id": "page_objects_settings_page_paths_plugin", - "community": 81, + "community": 74, "norm_label": "paths_plugin()" }, { @@ -36729,7 +37926,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L46", "id": "page_objects_settings_page_paths_local_root", - "community": 81, + "community": 74, "norm_label": "paths_local_root()" }, { @@ -36738,7 +37935,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L51", "id": "page_objects_settings_page_lims_password_primary", - "community": 81, + "community": 74, "norm_label": "lims_password_primary()" }, { @@ -36747,7 +37944,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L56", "id": "page_objects_settings_page_lims_password_secondary", - "community": 81, + "community": 74, "norm_label": "lims_password_secondary()" }, { @@ -36756,7 +37953,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L61", "id": "page_objects_settings_page_lims_password_input", - "community": 81, + "community": 74, "norm_label": "lims_password_input()" }, { @@ -36765,7 +37962,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L66", "id": "page_objects_settings_page_lims_password_save", - "community": 81, + "community": 74, "norm_label": "lims_password_save()" }, { @@ -36774,7 +37971,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L71", "id": "page_objects_settings_page_lims_password_cancel", - "community": 81, + "community": 74, "norm_label": "lims_password_cancel()" }, { @@ -36783,7 +37980,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L76", "id": "page_objects_settings_page_lims_password_clear_confirm", - "community": 81, + "community": 74, "norm_label": "lims_password_clear_confirm()" }, { @@ -36792,7 +37989,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L81", "id": "page_objects_settings_page_lims_password_status", - "community": 81, + "community": 74, "norm_label": "lims_password_status()" }, { @@ -36801,7 +37998,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L86", "id": "page_objects_settings_page_equipment_id", - "community": 81, + "community": 74, "norm_label": "equipment_id()" }, { @@ -36810,7 +38007,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L91", "id": "page_objects_settings_page_equipment_add", - "community": 81, + "community": 74, "norm_label": "equipment_add()" }, { @@ -36819,7 +38016,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L96", "id": "page_objects_settings_page_save", - "community": 81, + "community": 74, "norm_label": "save()" }, { @@ -36828,7 +38025,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L101", "id": "page_objects_settings_page_discard", - "community": 81, + "community": 74, "norm_label": "discard()" }, { @@ -36837,7 +38034,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L106", "id": "page_objects_settings_page_saved_marker", - "community": 81, + "community": 74, "norm_label": "saved_marker()" }, { @@ -36846,7 +38043,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L1", "id": "page_objects_settings_page_rationale_1", - "community": 81, + "community": 74, "norm_label": "page object for the settings dialog. frontend spec \u00a76.7." }, { @@ -36855,7 +38052,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L12", "id": "page_objects_settings_page_rationale_12", - "community": 81, + "community": 74, "norm_label": "locators for the settings dialog's nine-section layout." }, { @@ -36864,7 +38061,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L19", "id": "page_objects_settings_page_rationale_19", - "community": 543, + "community": 568, "norm_label": "the settings dialog card." }, { @@ -36873,7 +38070,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L24", "id": "page_objects_settings_page_rationale_24", - "community": 544, + "community": 569, "norm_label": "the setup-incomplete banner shown inside the dialog." }, { @@ -36882,7 +38079,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L28", "id": "page_objects_settings_page_rationale_28", - "community": 81, + "community": 74, "norm_label": "the sidebar nav row for a section." }, { @@ -36891,7 +38088,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L32", "id": "page_objects_settings_page_rationale_32", - "community": 81, + "community": 74, "norm_label": "the body container for a section." }, { @@ -36900,7 +38097,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L37", "id": "page_objects_settings_page_rationale_37", - "community": 545, + "community": 570, "norm_label": "paths section: templates directory input." }, { @@ -36909,7 +38106,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L42", "id": "page_objects_settings_page_rationale_42", - "community": 546, + "community": 571, "norm_label": "paths section: plugin directory input." }, { @@ -36918,7 +38115,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L47", "id": "page_objects_settings_page_rationale_47", - "community": 547, + "community": 572, "norm_label": "paths section: local data root input." }, { @@ -36927,7 +38124,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L52", "id": "page_objects_settings_page_rationale_52", - "community": 548, + "community": 573, "norm_label": "lims section: the credential row's primary button ([set] / [replace])." }, { @@ -36936,7 +38133,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L57", "id": "page_objects_settings_page_rationale_57", - "community": 549, + "community": 574, "norm_label": "lims section: the credential row's secondary button ([clear])." }, { @@ -36945,7 +38142,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L62", "id": "page_objects_settings_page_rationale_62", - "community": 550, + "community": 575, "norm_label": "lims section: the inline password input shown while editing." }, { @@ -36954,7 +38151,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L67", "id": "page_objects_settings_page_rationale_67", - "community": 551, + "community": 576, "norm_label": "lims section: the credential row's save button (editing state)." }, { @@ -36963,7 +38160,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L72", "id": "page_objects_settings_page_rationale_72", - "community": 552, + "community": 577, "norm_label": "lims section: the credential row's cancel button (editing state)." }, { @@ -36972,7 +38169,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L77", "id": "page_objects_settings_page_rationale_77", - "community": 553, + "community": 578, "norm_label": "lims section: the confirm button in the clear-credential dialog." }, { @@ -36981,7 +38178,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L82", "id": "page_objects_settings_page_rationale_82", - "community": 554, + "community": 579, "norm_label": "lims section: the credential row's status line (resting states)." }, { @@ -36990,7 +38187,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L87", "id": "page_objects_settings_page_rationale_87", - "community": 555, + "community": 580, "norm_label": "equipment section: equipment-id input." }, { @@ -36999,7 +38196,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L92", "id": "page_objects_settings_page_rationale_92", - "community": 556, + "community": 581, "norm_label": "equipment section: add-equipment button." }, { @@ -37008,7 +38205,7 @@ "source_file": "tests/e2e/page_objects/settings_page.py", "source_location": "L107", "id": "page_objects_settings_page_rationale_107", - "community": 557, + "community": 582, "norm_label": "the marker shown after a successful save." }, { @@ -37017,7 +38214,7 @@ "source_file": "tests/e2e/page_objects/__init__.py", "source_location": "L1", "id": "tests_e2e_page_objects_init_py", - "community": 511, + "community": 535, "norm_label": "__init__.py" }, { @@ -37026,7 +38223,7 @@ "source_file": "tests/e2e/page_objects/__init__.py", "source_location": "L1", "id": "page_objects_init_rationale_1", - "community": 511, + "community": 535, "norm_label": "page object package for the phase 16 e2e suite. each module wraps the stable ``" }, { @@ -37035,7 +38232,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L1", "id": "tests_e2e_page_objects_wizard_equipment_page_py", - "community": 142, + "community": 150, "norm_label": "wizard_equipment_page.py" }, { @@ -37044,7 +38241,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L8", "id": "page_objects_wizard_equipment_page_wizardequipmentpage", - "community": 224, + "community": 186, "norm_label": "wizardequipmentpage" }, { @@ -37053,7 +38250,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L9", "id": "page_objects_wizard_equipment_page_wizardequipmentpage_init", - "community": 224, + "community": 186, "norm_label": ".__init__()" }, { @@ -37062,7 +38259,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L14", "id": "page_objects_wizard_equipment_page_step_identity", - "community": 142, + "community": 150, "norm_label": "step_identity()" }, { @@ -37071,7 +38268,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L18", "id": "page_objects_wizard_equipment_page_equipment_id", - "community": 142, + "community": 150, "norm_label": "equipment_id()" }, { @@ -37080,7 +38277,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L22", "id": "page_objects_wizard_equipment_page_label", - "community": 142, + "community": 150, "norm_label": "label()" }, { @@ -37089,7 +38286,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L26", "id": "page_objects_wizard_equipment_page_step_paths", - "community": 142, + "community": 150, "norm_label": "step_paths()" }, { @@ -37098,7 +38295,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L31", "id": "page_objects_wizard_equipment_page_local_root", - "community": 142, + "community": 150, "norm_label": "local_root()" }, { @@ -37107,7 +38304,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L35", "id": "page_objects_wizard_equipment_page_nas_root", - "community": 142, + "community": 150, "norm_label": "nas_root()" }, { @@ -37116,7 +38313,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L42", "id": "page_objects_wizard_equipment_page_sync_mode", - "community": 142, + "community": 150, "norm_label": "sync_mode()" }, { @@ -37125,7 +38322,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L46", "id": "page_objects_wizard_equipment_page_nas_note", - "community": 142, + "community": 150, "norm_label": "nas_note()" }, { @@ -37134,7 +38331,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L50", "id": "page_objects_wizard_equipment_page_stage_note", - "community": 142, + "community": 150, "norm_label": "stage_note()" }, { @@ -37143,7 +38340,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L55", "id": "page_objects_wizard_equipment_page_confirm", - "community": 142, + "community": 150, "norm_label": "confirm()" }, { @@ -37152,7 +38349,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L59", "id": "page_objects_wizard_equipment_page_cancel", - "community": 142, + "community": 150, "norm_label": "cancel()" }, { @@ -37161,7 +38358,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L63", "id": "page_objects_wizard_equipment_page_next_button", - "community": 142, + "community": 150, "norm_label": "next_button()" }, { @@ -37170,7 +38367,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L67", "id": "page_objects_wizard_equipment_page_back", - "community": 142, + "community": 150, "norm_label": "back()" }, { @@ -37179,7 +38376,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L71", "id": "page_objects_wizard_equipment_page_success", - "community": 142, + "community": 150, "norm_label": "success()" }, { @@ -37188,7 +38385,7 @@ "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L1", "id": "page_objects_wizard_equipment_page_rationale_1", - "community": 142, + "community": 150, "norm_label": "page object for the add-equipment wizard (redesign \u00a76)." }, { @@ -37197,7 +38394,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L1", "id": "tests_e2e_page_objects_staging_page_py", - "community": 209, + "community": 208, "norm_label": "staging_page.py" }, { @@ -37206,7 +38403,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L11", "id": "page_objects_staging_page_stagingpage", - "community": 209, + "community": 208, "norm_label": "stagingpage" }, { @@ -37215,7 +38412,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L14", "id": "page_objects_staging_page_stagingpage_init", - "community": 209, + "community": 208, "norm_label": ".__init__()" }, { @@ -37224,7 +38421,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L18", "id": "page_objects_staging_page_dock", - "community": 209, + "community": 208, "norm_label": "dock()" }, { @@ -37233,7 +38430,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L22", "id": "page_objects_staging_page_stagingpage_row", - "community": 209, + "community": 208, "norm_label": ".row()" }, { @@ -37242,7 +38439,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L26", "id": "page_objects_staging_page_stagingpage_force_sync", - "community": 209, + "community": 208, "norm_label": ".force_sync()" }, { @@ -37251,7 +38448,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L30", "id": "page_objects_staging_page_stagingpage_clear", - "community": 209, + "community": 208, "norm_label": ".clear()" }, { @@ -37260,7 +38457,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L34", "id": "page_objects_staging_page_stagingpage_view_log", - "community": 209, + "community": 208, "norm_label": ".view_log()" }, { @@ -37269,7 +38466,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L39", "id": "page_objects_staging_page_clear_verified", - "community": 209, + "community": 208, "norm_label": "clear_verified()" }, { @@ -37278,7 +38475,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L1", "id": "page_objects_staging_page_rationale_1", - "community": 209, + "community": 208, "norm_label": "page object for the orchestrator staging dock. frontend spec \u00a73.9." }, { @@ -37287,7 +38484,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L12", "id": "page_objects_staging_page_rationale_12", - "community": 209, + "community": 208, "norm_label": "locators for the staging dock + per-row actions." }, { @@ -37296,7 +38493,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L19", "id": "page_objects_staging_page_rationale_19", - "community": 558, + "community": 583, "norm_label": "the staging dock container." }, { @@ -37305,7 +38502,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L27", "id": "page_objects_staging_page_rationale_27", - "community": 209, + "community": 208, "norm_label": "the force-sync button on the nth row." }, { @@ -37314,7 +38511,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L31", "id": "page_objects_staging_page_rationale_31", - "community": 209, + "community": 208, "norm_label": "the clear button on the nth row." }, { @@ -37323,7 +38520,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L35", "id": "page_objects_staging_page_rationale_35", - "community": 209, + "community": 208, "norm_label": "the view-log button on the nth row." }, { @@ -37332,7 +38529,7 @@ "source_file": "tests/e2e/page_objects/staging_page.py", "source_location": "L40", "id": "page_objects_staging_page_rationale_40", - "community": 559, + "community": 584, "norm_label": "the toolbar clear-verified-runs button." }, { @@ -37341,7 +38538,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L1", "id": "tests_e2e_page_objects_wizard_run_page_py", - "community": 152, + "community": 159, "norm_label": "wizard_run_page.py" }, { @@ -37350,7 +38547,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L11", "id": "page_objects_wizard_run_page_wizardrunpage", - "community": 152, + "community": 159, "norm_label": "wizardrunpage" }, { @@ -37359,7 +38556,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L14", "id": "page_objects_wizard_run_page_wizardrunpage_init", - "community": 152, + "community": 159, "norm_label": ".__init__()" }, { @@ -37368,7 +38565,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L18", "id": "page_objects_wizard_run_page_stepper", - "community": 152, + "community": 159, "norm_label": "stepper()" }, { @@ -37377,7 +38574,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L23", "id": "page_objects_wizard_run_page_title", - "community": 152, + "community": 159, "norm_label": "title()" }, { @@ -37386,7 +38583,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L28", "id": "page_objects_wizard_run_page_mode_badge_experimental", - "community": 152, + "community": 159, "norm_label": "mode_badge_experimental()" }, { @@ -37395,7 +38592,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L33", "id": "page_objects_wizard_run_page_mode_badge_test", - "community": 152, + "community": 159, "norm_label": "mode_badge_test()" }, { @@ -37404,7 +38601,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L37", "id": "page_objects_wizard_run_page_wizardrunpage_step", - "community": 152, + "community": 159, "norm_label": ".step()" }, { @@ -37413,7 +38610,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L42", "id": "page_objects_wizard_run_page_back", - "community": 152, + "community": 159, "norm_label": "back()" }, { @@ -37422,7 +38619,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L50", "id": "page_objects_wizard_run_page_cancel", - "community": 152, + "community": 159, "norm_label": "cancel()" }, { @@ -37431,7 +38628,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L55", "id": "page_objects_wizard_run_page_next", - "community": 152, + "community": 159, "norm_label": "next()" }, { @@ -37440,7 +38637,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L60", "id": "page_objects_wizard_run_page_submit", - "community": 152, + "community": 159, "norm_label": "submit()" }, { @@ -37449,7 +38646,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L65", "id": "page_objects_wizard_run_page_success_card", - "community": 152, + "community": 159, "norm_label": "success_card()" }, { @@ -37458,7 +38655,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L1", "id": "page_objects_wizard_run_page_rationale_1", - "community": 152, + "community": 159, "norm_label": "page object for the new run wizard. frontend spec \u00a76.4." }, { @@ -37467,7 +38664,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L12", "id": "page_objects_wizard_run_page_rationale_12", - "community": 152, + "community": 159, "norm_label": "locators for the run wizard (experimental + test mode)." }, { @@ -37476,7 +38673,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L19", "id": "page_objects_wizard_run_page_rationale_19", - "community": 560, + "community": 585, "norm_label": "the vertical stepper that holds the six steps." }, { @@ -37485,7 +38682,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L24", "id": "page_objects_wizard_run_page_rationale_24", - "community": 561, + "community": 586, "norm_label": "the wizard's title label (changes per run kind)." }, { @@ -37494,7 +38691,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L29", "id": "page_objects_wizard_run_page_rationale_29", - "community": 562, + "community": 587, "norm_label": "the mode badge for experimental runs." }, { @@ -37503,7 +38700,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L34", "id": "page_objects_wizard_run_page_rationale_34", - "community": 563, + "community": 588, "norm_label": "the mode badge for test runs." }, { @@ -37512,7 +38709,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L38", "id": "page_objects_wizard_run_page_rationale_38", - "community": 152, + "community": 159, "norm_label": "locator for a specific step container." }, { @@ -37521,7 +38718,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L43", "id": "page_objects_wizard_run_page_rationale_43", - "community": 564, + "community": 589, "norm_label": "the back button on the active stepper navigation. absent on the first s" }, { @@ -37530,7 +38727,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L51", "id": "page_objects_wizard_run_page_rationale_51", - "community": 565, + "community": 590, "norm_label": "the cancel button; present on every step, returns to /main." }, { @@ -37539,7 +38736,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L56", "id": "page_objects_wizard_run_page_rationale_56", - "community": 566, + "community": 591, "norm_label": "the primary advance button on the active stepper navigation." }, { @@ -37548,7 +38745,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L61", "id": "page_objects_wizard_run_page_rationale_61", - "community": 567, + "community": 592, "norm_label": "the create button on the confirm step." }, { @@ -37557,7 +38754,7 @@ "source_file": "tests/e2e/page_objects/wizard_run_page.py", "source_location": "L66", "id": "page_objects_wizard_run_page_rationale_66", - "community": 568, + "community": 593, "norm_label": "the success indicator rendered after submit." }, { @@ -37566,7 +38763,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L1", "id": "tests_e2e_page_objects_wizard_project_page_py", - "community": 191, + "community": 193, "norm_label": "wizard_project_page.py" }, { @@ -37575,7 +38772,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L11", "id": "page_objects_wizard_project_page_wizardprojectpage", - "community": 191, + "community": 193, "norm_label": "wizardprojectpage" }, { @@ -37584,7 +38781,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L14", "id": "page_objects_wizard_project_page_wizardprojectpage_init", - "community": 191, + "community": 193, "norm_label": ".__init__()" }, { @@ -37593,7 +38790,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L18", "id": "page_objects_wizard_project_page_card", - "community": 191, + "community": 193, "norm_label": "card()" }, { @@ -37602,7 +38799,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L23", "id": "page_objects_wizard_project_page_stepper", - "community": 191, + "community": 193, "norm_label": "stepper()" }, { @@ -37611,7 +38808,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L27", "id": "page_objects_wizard_project_page_wizardprojectpage_step", - "community": 191, + "community": 193, "norm_label": ".step()" }, { @@ -37620,7 +38817,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L32", "id": "page_objects_wizard_project_page_lims_gate", - "community": 191, + "community": 193, "norm_label": "lims_gate()" }, { @@ -37629,7 +38826,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L41", "id": "page_objects_wizard_project_page_lims_id", - "community": 191, + "community": 193, "norm_label": "lims_id()" }, { @@ -37638,7 +38835,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L46", "id": "page_objects_wizard_project_page_back", - "community": 191, + "community": 193, "norm_label": "back()" }, { @@ -37647,7 +38844,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L54", "id": "page_objects_wizard_project_page_cancel", - "community": 191, + "community": 193, "norm_label": "cancel()" }, { @@ -37656,7 +38853,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L59", "id": "page_objects_wizard_project_page_next", - "community": 191, + "community": 193, "norm_label": "next()" }, { @@ -37665,7 +38862,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L64", "id": "page_objects_wizard_project_page_submit", - "community": 191, + "community": 193, "norm_label": "submit()" }, { @@ -37674,7 +38871,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L69", "id": "page_objects_wizard_project_page_success_card", - "community": 191, + "community": 193, "norm_label": "success_card()" }, { @@ -37683,7 +38880,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L1", "id": "page_objects_wizard_project_page_rationale_1", - "community": 191, + "community": 193, "norm_label": "page object for the new project wizard. frontend spec \u00a76.3." }, { @@ -37692,7 +38889,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L12", "id": "page_objects_wizard_project_page_rationale_12", - "community": 191, + "community": 193, "norm_label": "locators for the new-project wizard's seven-step stepper." }, { @@ -37701,7 +38898,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L19", "id": "page_objects_wizard_project_page_rationale_19", - "community": 569, + "community": 594, "norm_label": "the wizard's outermost card element." }, { @@ -37710,7 +38907,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L24", "id": "page_objects_wizard_project_page_rationale_24", - "community": 570, + "community": 595, "norm_label": "the vertical stepper that holds the seven steps." }, { @@ -37719,7 +38916,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L28", "id": "page_objects_wizard_project_page_rationale_28", - "community": 191, + "community": 193, "norm_label": "locator for a specific step container." }, { @@ -37728,7 +38925,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L33", "id": "page_objects_wizard_project_page_rationale_33", - "community": 571, + "community": 596, "norm_label": "the manual-entry gate button on the lims project step. rendered only wh" }, { @@ -37737,7 +38934,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L42", "id": "page_objects_wizard_project_page_rationale_42", - "community": 572, + "community": 597, "norm_label": "the manual lims short-id input (revealed by ``lims_gate``)." }, { @@ -37746,7 +38943,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L47", "id": "page_objects_wizard_project_page_rationale_47", - "community": 573, + "community": 598, "norm_label": "the back button on the active stepper navigation. absent on the first s" }, { @@ -37755,7 +38952,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L55", "id": "page_objects_wizard_project_page_rationale_55", - "community": 574, + "community": 599, "norm_label": "the cancel button; present on every step, returns to /main." }, { @@ -37764,7 +38961,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L60", "id": "page_objects_wizard_project_page_rationale_60", - "community": 575, + "community": 600, "norm_label": "the primary advance button on the active stepper navigation." }, { @@ -37773,7 +38970,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L65", "id": "page_objects_wizard_project_page_rationale_65", - "community": 576, + "community": 601, "norm_label": "the create button on the confirm step." }, { @@ -37782,7 +38979,7 @@ "source_file": "tests/e2e/page_objects/wizard_project_page.py", "source_location": "L70", "id": "page_objects_wizard_project_page_rationale_70", - "community": 577, + "community": 602, "norm_label": "the success indicator rendered after submit." }, { @@ -37791,7 +38988,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L1", "id": "tests_e2e_page_objects_main_page_py", - "community": 150, + "community": 216, "norm_label": "main_page.py" }, { @@ -37800,7 +38997,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L15", "id": "page_objects_main_page_mainpage", - "community": 150, + "community": 217, "norm_label": "mainpage" }, { @@ -37809,7 +39006,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L18", "id": "page_objects_main_page_mainpage_init", - "community": 150, + "community": 217, "norm_label": ".__init__()" }, { @@ -37818,7 +39015,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L22", "id": "page_objects_main_page_tree", - "community": 150, + "community": 216, "norm_label": "tree()" }, { @@ -37827,7 +39024,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L27", "id": "page_objects_main_page_setup_incomplete_banner", - "community": 150, + "community": 216, "norm_label": "setup_incomplete_banner()" }, { @@ -37836,7 +39033,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L32", "id": "page_objects_main_page_toolbar_new_project", - "community": 150, + "community": 216, "norm_label": "toolbar_new_project()" }, { @@ -37845,7 +39042,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L37", "id": "page_objects_main_page_toolbar_new_run", - "community": 150, + "community": 216, "norm_label": "toolbar_new_run()" }, { @@ -37854,7 +39051,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L42", "id": "page_objects_main_page_toolbar_new_test_run", - "community": 150, + "community": 216, "norm_label": "toolbar_new_test_run()" }, { @@ -37863,7 +39060,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L47", "id": "page_objects_main_page_toolbar_settings", - "community": 150, + "community": 216, "norm_label": "toolbar_settings()" }, { @@ -37872,7 +39069,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L52", "id": "page_objects_main_page_toolbar_refresh", - "community": 150, + "community": 216, "norm_label": "toolbar_refresh()" }, { @@ -37881,7 +39078,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L57", "id": "page_objects_main_page_toolbar_add_equipment", - "community": 150, + "community": 216, "norm_label": "toolbar_add_equipment()" }, { @@ -37890,7 +39087,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L62", "id": "page_objects_main_page_search_box", - "community": 150, + "community": 216, "norm_label": "search_box()" }, { @@ -37899,7 +39096,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L67", "id": "page_objects_main_page_tab_metadata", - "community": 150, + "community": 216, "norm_label": "tab_metadata()" }, { @@ -37908,7 +39105,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L72", "id": "page_objects_main_page_tab_problems", - "community": 150, + "community": 216, "norm_label": "tab_problems()" }, { @@ -37917,7 +39114,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L77", "id": "page_objects_main_page_toggle_right_pane", - "community": 150, + "community": 216, "norm_label": "toggle_right_pane()" }, { @@ -37926,7 +39123,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L82", "id": "page_objects_main_page_footer_clear_verified", - "community": 150, + "community": 216, "norm_label": "footer_clear_verified()" }, { @@ -37935,7 +39132,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L87", "id": "page_objects_main_page_footer_staging_segment", - "community": 150, + "community": 216, "norm_label": "footer_staging_segment()" }, { @@ -37944,7 +39141,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L1", "id": "page_objects_main_page_rationale_1", - "community": 150, + "community": 216, "norm_label": "page object for the main window. frontend spec \u00a76. selectors target ``data-test" }, { @@ -37953,7 +39150,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L16", "id": "page_objects_main_page_rationale_16", - "community": 150, + "community": 217, "norm_label": "page object for the main window. frontend spec \u00a76.1, \u00a76.2." }, { @@ -37962,7 +39159,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L23", "id": "page_objects_main_page_rationale_23", - "community": 578, + "community": 603, "norm_label": "the left-pane project / session tree (\u00a76.2.1)." }, { @@ -37971,7 +39168,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L28", "id": "page_objects_main_page_rationale_28", - "community": 579, + "community": 604, "norm_label": "banner shown while the setup gate is open (\u00a76.2.4)." }, { @@ -37980,7 +39177,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L33", "id": "page_objects_main_page_rationale_33", - "community": 580, + "community": 605, "norm_label": "toolbar button that opens the new-project wizard (\u00a76.2.2)." }, { @@ -37989,7 +39186,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L38", "id": "page_objects_main_page_rationale_38", - "community": 581, + "community": 606, "norm_label": "toolbar button that opens the new-run wizard (\u00a76.2.2)." }, { @@ -37998,7 +39195,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L43", "id": "page_objects_main_page_rationale_43", - "community": 582, + "community": 607, "norm_label": "toolbar button that opens the new-test-run wizard (\u00a76.2.2)." }, { @@ -38007,7 +39204,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L48", "id": "page_objects_main_page_rationale_48", - "community": 583, + "community": 608, "norm_label": "toolbar button that opens the settings dialog (\u00a76.2.2)." }, { @@ -38016,7 +39213,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L53", "id": "page_objects_main_page_rationale_53", - "community": 584, + "community": 609, "norm_label": "toolbar refresh button (\u00a76.2.2)." }, { @@ -38025,7 +39222,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L58", "id": "page_objects_main_page_rationale_58", - "community": 585, + "community": 610, "norm_label": "toolbar add-equipment button (redesign \u00a74 / \u00a76)." }, { @@ -38034,7 +39231,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L63", "id": "page_objects_main_page_rationale_63", - "community": 586, + "community": 611, "norm_label": "the tree search input (\u00a76.2.1)." }, { @@ -38043,7 +39240,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L68", "id": "page_objects_main_page_rationale_68", - "community": 587, + "community": 612, "norm_label": "metadata tab (redesign \u00a74.4)." }, { @@ -38052,7 +39249,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L73", "id": "page_objects_main_page_rationale_73", - "community": 588, + "community": 613, "norm_label": "problems tab (\u00a76.2.3 / redesign \u00a74.4)." }, { @@ -38061,7 +39258,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L78", "id": "page_objects_main_page_rationale_78", - "community": 589, + "community": 614, "norm_label": "right-pane collapse toggle (redesign \u00a74)." }, { @@ -38070,7 +39267,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L83", "id": "page_objects_main_page_rationale_83", - "community": 590, + "community": 615, "norm_label": "footer bulk clear-verified button (redesign \u00a74.6)." }, { @@ -38079,7 +39276,7 @@ "source_file": "tests/e2e/page_objects/main_page.py", "source_location": "L88", "id": "page_objects_main_page_rationale_88", - "community": 591, + "community": 616, "norm_label": "footer staging status segment (redesign \u00a74.6)." }, { @@ -38088,7 +39285,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L1", "id": "tests_e2e_page_objects_welcome_page_py", - "community": 300, + "community": 215, "norm_label": "welcome_page.py" }, { @@ -38097,7 +39294,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L11", "id": "page_objects_welcome_page_welcomepage", - "community": 244, + "community": 215, "norm_label": "welcomepage" }, { @@ -38106,7 +39303,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L14", "id": "page_objects_welcome_page_welcomepage_init", - "community": 244, + "community": 215, "norm_label": ".__init__()" }, { @@ -38115,7 +39312,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L18", "id": "page_objects_welcome_page_card", - "community": 300, + "community": 215, "norm_label": "card()" }, { @@ -38124,7 +39321,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L23", "id": "page_objects_welcome_page_headline", - "community": 300, + "community": 215, "norm_label": "headline()" }, { @@ -38133,7 +39330,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L28", "id": "page_objects_welcome_page_autostart_toggle", - "community": 300, + "community": 215, "norm_label": "autostart_toggle()" }, { @@ -38142,7 +39339,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L33", "id": "page_objects_welcome_page_get_started", - "community": 300, + "community": 215, "norm_label": "get_started()" }, { @@ -38151,7 +39348,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L38", "id": "page_objects_welcome_page_skip_for_now", - "community": 300, + "community": 215, "norm_label": "skip_for_now()" }, { @@ -38160,7 +39357,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L43", "id": "page_objects_welcome_page_status_marker", - "community": 300, + "community": 215, "norm_label": "status_marker()" }, { @@ -38169,7 +39366,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L1", "id": "page_objects_welcome_page_rationale_1", - "community": 300, + "community": 215, "norm_label": "page object for the first-launch welcome card. frontend spec \u00a76.1." }, { @@ -38178,7 +39375,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L12", "id": "page_objects_welcome_page_rationale_12", - "community": 244, + "community": 215, "norm_label": "page object for the welcome card shown on first launch. frontend spec \u00a76.1." }, { @@ -38187,7 +39384,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L19", "id": "page_objects_welcome_page_rationale_19", - "community": 592, + "community": 617, "norm_label": "the welcome card container." }, { @@ -38196,7 +39393,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L24", "id": "page_objects_welcome_page_rationale_24", - "community": 593, + "community": 618, "norm_label": "the welcome card headline / title element." }, { @@ -38205,7 +39402,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L29", "id": "page_objects_welcome_page_rationale_29", - "community": 594, + "community": 619, "norm_label": "the autostart-on-login toggle on the welcome card." }, { @@ -38214,7 +39411,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L34", "id": "page_objects_welcome_page_rationale_34", - "community": 595, + "community": 620, "norm_label": "the primary \"get started\" cta on the welcome card." }, { @@ -38223,7 +39420,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L39", "id": "page_objects_welcome_page_rationale_39", - "community": 596, + "community": 621, "norm_label": "the secondary \"skip for now\" cta on the welcome card." }, { @@ -38232,7 +39429,7 @@ "source_file": "tests/e2e/page_objects/welcome_page.py", "source_location": "L44", "id": "page_objects_welcome_page_rationale_44", - "community": 597, + "community": 622, "norm_label": "hidden marker emitted by the test app to surface state." }, { @@ -38241,7 +39438,7 @@ "source_file": "docs/source/conf.py", "source_location": "L1", "id": "docs_source_conf_py", - "community": 301, + "community": 308, "norm_label": "conf.py" }, { @@ -38250,7 +39447,7 @@ "source_file": "docs/source/conf.py", "source_location": "L200", "id": "source_conf_noisefilter", - "community": 301, + "community": 308, "norm_label": "_noisefilter" }, { @@ -38259,7 +39456,7 @@ "source_file": "docs/source/conf.py", "source_location": "L208", "id": "source_conf_noisefilter_init", - "community": 301, + "community": 308, "norm_label": ".__init__()" }, { @@ -38268,7 +39465,7 @@ "source_file": "docs/source/conf.py", "source_location": "L212", "id": "source_conf_noisefilter_filter", - "community": 301, + "community": 308, "norm_label": ".filter()" }, { @@ -38277,7 +39474,7 @@ "source_file": "docs/source/conf.py", "source_location": "L271", "id": "source_conf_setup", - "community": 301, + "community": 308, "norm_label": "setup()" }, { @@ -38286,7 +39483,7 @@ "source_file": "docs/source/conf.py", "source_location": "L1", "id": "source_conf_rationale_1", - "community": 301, + "community": 308, "norm_label": "sphinx configuration for exlab-wizard documentation. the configuration wires th" }, { @@ -38295,7 +39492,7 @@ "source_file": "docs/source/conf.py", "source_location": "L201", "id": "source_conf_rationale_201", - "community": 301, + "community": 308, "norm_label": "drop uncategorised warnings whose message text matches a known needle. inse" }, { @@ -38304,7 +39501,7 @@ "source_file": "docs/source/conf.py", "source_location": "L272", "id": "source_conf_rationale_272", - "community": 301, + "community": 308, "norm_label": "install the noise filter at the head of the warning handler chain. sphinx w" }, { @@ -38313,7 +39510,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L1", "id": "scripts_generate_screenshots_py", - "community": 108, + "community": 116, "norm_label": "generate_screenshots.py" }, { @@ -38322,7 +39519,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L69", "id": "scripts_generate_screenshots_free_port", - "community": 108, + "community": 116, "norm_label": "_free_port()" }, { @@ -38331,7 +39528,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L76", "id": "scripts_generate_screenshots_start_server", - "community": 108, + "community": 116, "norm_label": "_start_server()" }, { @@ -38340,7 +39537,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L138", "id": "scripts_generate_screenshots_stop_server", - "community": 108, + "community": 116, "norm_label": "_stop_server()" }, { @@ -38349,7 +39546,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L148", "id": "scripts_generate_screenshots_capture", - "community": 108, + "community": 116, "norm_label": "_capture()" }, { @@ -38358,7 +39555,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L178", "id": "scripts_generate_screenshots_capture_capability", - "community": 108, + "community": 116, "norm_label": "_capture_capability()" }, { @@ -38367,7 +39564,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L209", "id": "scripts_generate_screenshots_capability_plan", - "community": 108, + "community": 116, "norm_label": "_capability_plan()" }, { @@ -38376,7 +39573,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L337", "id": "scripts_generate_screenshots_main", - "community": 108, + "community": 116, "norm_label": "main()" }, { @@ -38385,7 +39582,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L1", "id": "scripts_generate_screenshots_rationale_1", - "community": 108, + "community": 116, "norm_label": "generate playwright screenshots for the sphinx user guide. cli: python scr" }, { @@ -38394,7 +39591,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L70", "id": "scripts_generate_screenshots_rationale_70", - "community": 108, + "community": 116, "norm_label": "return a free tcp port on 127.0.0.1." }, { @@ -38403,7 +39600,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L77", "id": "scripts_generate_screenshots_rationale_77", - "community": 108, + "community": 116, "norm_label": "spawn the uvicorn-hosted e2e test app; return (proc, base_url). mirrors the" }, { @@ -38412,7 +39609,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L139", "id": "scripts_generate_screenshots_rationale_139", - "community": 108, + "community": 116, "norm_label": "best-effort termination of the uvicorn subprocess." }, { @@ -38421,7 +39618,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L158", "id": "scripts_generate_screenshots_rationale_158", - "community": 108, + "community": 116, "norm_label": "navigate to ``route``, optionally wait for a selector, screenshot. returns" }, { @@ -38430,7 +39627,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L185", "id": "scripts_generate_screenshots_rationale_185", - "community": 108, + "community": 116, "norm_label": "capture every step in the capability; return (succeeded, total)." }, { @@ -38439,7 +39636,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L210", "id": "scripts_generate_screenshots_rationale_210", - "community": 108, + "community": 116, "norm_label": "return the (capability_id, steps) list driving the screenshot run. routes a" }, { @@ -38448,7 +39645,7 @@ "source_file": "scripts/generate_screenshots.py", "source_location": "L338", "id": "scripts_generate_screenshots_rationale_338", - "community": 108, + "community": 116, "norm_label": "entry point; returns a process exit code (0 on full success)." }, { @@ -38457,7 +39654,7 @@ "source_file": "scripts/build_local.ps1", "source_location": "L1", "id": "scripts_build_local_ps1", - "community": 598, + "community": 623, "norm_label": "build_local.ps1" }, { @@ -38466,7 +39663,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L1", "id": "src_exlab_wizard_paths_py", - "community": 60, + "community": 187, "norm_label": "paths.py" }, { @@ -38475,7 +39672,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L95", "id": "exlab_wizard_paths_app_name", - "community": 64, + "community": 76, "norm_label": "_app_name()" }, { @@ -38484,7 +39681,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L107", "id": "exlab_wizard_paths_platform", - "community": 64, + "community": 76, "norm_label": "_platform()" }, { @@ -38493,7 +39690,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L118", "id": "exlab_wizard_paths_home", - "community": 64, + "community": 76, "norm_label": "_home()" }, { @@ -38502,7 +39699,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L127", "id": "exlab_wizard_paths_env_path", - "community": 64, + "community": 76, "norm_label": "_env_path()" }, { @@ -38511,7 +39708,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L133", "id": "exlab_wizard_paths_os_config_path", - "community": 64, + "community": 76, "norm_label": "os_config_path()" }, { @@ -38520,7 +39717,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L145", "id": "exlab_wizard_paths_os_state_path", - "community": 235, + "community": 239, "norm_label": "os_state_path()" }, { @@ -38529,7 +39726,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L157", "id": "exlab_wizard_paths_os_cache_path", - "community": 64, + "community": 76, "norm_label": "os_cache_path()" }, { @@ -38538,7 +39735,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L169", "id": "exlab_wizard_paths_os_central_log_path", - "community": 274, + "community": 238, "norm_label": "os_central_log_path()" }, { @@ -38547,7 +39744,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L188", "id": "exlab_wizard_paths_suggested_staging_root", - "community": 64, + "community": 76, "norm_label": "suggested_staging_root()" }, { @@ -38556,7 +39753,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L220", "id": "exlab_wizard_paths_ensure_dir", - "community": 235, + "community": 238, "norm_label": "ensure_dir()" }, { @@ -38565,7 +39762,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L226", "id": "exlab_wizard_paths_ensure_state_dir", - "community": 235, + "community": 239, "norm_label": "ensure_state_dir()" }, { @@ -38574,7 +39771,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L231", "id": "exlab_wizard_paths_ensure_central_log_dir", - "community": 274, + "community": 238, "norm_label": "ensure_central_log_dir()" }, { @@ -38583,7 +39780,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L241", "id": "exlab_wizard_paths_canonicalize_equipment_id", - "community": 82, + "community": 75, "norm_label": "canonicalize_equipment_id()" }, { @@ -38592,7 +39789,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L272", "id": "exlab_wizard_paths_validate_project_short_id", - "community": 60, + "community": 78, "norm_label": "validate_project_short_id()" }, { @@ -38601,7 +39798,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L290", "id": "exlab_wizard_paths_project_name_violations", - "community": 252, + "community": 256, "norm_label": "project_name_violations()" }, { @@ -38610,7 +39807,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L348", "id": "exlab_wizard_paths_validate_project_name", - "community": 252, + "community": 256, "norm_label": "validate_project_name()" }, { @@ -38619,7 +39816,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L360", "id": "exlab_wizard_paths_compose_run_path", - "community": 167, + "community": 176, "norm_label": "compose_run_path()" }, { @@ -38628,7 +39825,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L396", "id": "exlab_wizard_paths_compose_project_path", - "community": 82, + "community": 75, "norm_label": "compose_project_path()" }, { @@ -38637,7 +39834,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L420", "id": "exlab_wizard_paths_lims_slot_satisfied", - "community": 60, + "community": 187, "norm_label": "_lims_slot_satisfied()" }, { @@ -38646,7 +39843,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L437", "id": "exlab_wizard_paths_paths_complete", - "community": 60, + "community": 187, "norm_label": "_paths_complete()" }, { @@ -38655,7 +39852,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L447", "id": "exlab_wizard_paths_nas_in_use", - "community": 60, + "community": 187, "norm_label": "_nas_in_use()" }, { @@ -38664,7 +39861,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L454", "id": "exlab_wizard_paths_nas_remote_satisfied", - "community": 60, + "community": 187, "norm_label": "_nas_remote_satisfied()" }, { @@ -38673,7 +39870,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L466", "id": "exlab_wizard_paths_evaluate_setup_state", - "community": 52, + "community": 59, "norm_label": "evaluate_setup_state()" }, { @@ -38682,7 +39879,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L514", "id": "exlab_wizard_paths_orchestrator_identity_complete", - "community": 60, + "community": 187, "norm_label": "_orchestrator_identity_complete()" }, { @@ -38691,7 +39888,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L525", "id": "exlab_wizard_paths_setup_state_missing", - "community": 60, + "community": 177, "norm_label": "setup_state_missing()" }, { @@ -38700,7 +39897,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L560", "id": "exlab_wizard_paths_missing_nas_fields", - "community": 60, + "community": 187, "norm_label": "_missing_nas_fields()" }, { @@ -38709,7 +39906,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L571", "id": "exlab_wizard_paths_missing_orchestrator_fields", - "community": 60, + "community": 177, "norm_label": "_missing_orchestrator_fields()" }, { @@ -38718,7 +39915,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L581", "id": "exlab_wizard_paths_missing_paths_fields", - "community": 60, + "community": 177, "norm_label": "_missing_paths_fields()" }, { @@ -38727,7 +39924,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L594", "id": "exlab_wizard_paths_missing_lims_fields", - "community": 60, + "community": 177, "norm_label": "_missing_lims_fields()" }, { @@ -38736,7 +39933,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L613", "id": "exlab_wizard_paths_setup_state_next_action", - "community": 210, + "community": 75, "norm_label": "setup_state_next_action()" }, { @@ -38745,7 +39942,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L643", "id": "exlab_wizard_paths_cache_dir", - "community": 210, + "community": 3, "norm_label": "cache_dir()" }, { @@ -38754,7 +39951,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L648", "id": "exlab_wizard_paths_creation_json_path", - "community": 25, + "community": 16, "norm_label": "creation_json_path()" }, { @@ -38763,7 +39960,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L653", "id": "exlab_wizard_paths_equipment_json_path", - "community": 210, + "community": 56, "norm_label": "equipment_json_path()" }, { @@ -38772,7 +39969,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L658", "id": "exlab_wizard_paths_readme_fields_json_path", - "community": 210, + "community": 491, "norm_label": "readme_fields_json_path()" }, { @@ -38781,7 +39978,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L668", "id": "exlab_wizard_paths_is_run_dir", - "community": 109, + "community": 71, "norm_label": "is_run_dir()" }, { @@ -38790,7 +39987,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L678", "id": "exlab_wizard_paths_is_test_run_dir", - "community": 213, + "community": 11, "norm_label": "is_test_run_dir()" }, { @@ -38799,7 +39996,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L683", "id": "exlab_wizard_paths_run_dir_stem", - "community": 210, + "community": 56, "norm_label": "run_dir_stem()" }, { @@ -38808,7 +40005,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L1", "id": "exlab_wizard_paths_rationale_1", - "community": 60, + "community": 187, "norm_label": "path composition + os-appropriate directories + equipment-id canonicalization." }, { @@ -38817,7 +40014,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L96", "id": "exlab_wizard_paths_rationale_96", - "community": 64, + "community": 76, "norm_label": "``app_name`` (suffixed ``-test`` when ``exlab_wizard_test_mode=1``)." }, { @@ -38826,7 +40023,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L108", "id": "exlab_wizard_paths_rationale_108", - "community": 64, + "community": 76, "norm_label": "return a normalized platform tag for os-conditional path dispatch." }, { @@ -38835,7 +40032,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L119", "id": "exlab_wizard_paths_rationale_119", - "community": 64, + "community": 76, "norm_label": "return the operator's home directory. centralized so test fixtures can monk" }, { @@ -38844,7 +40041,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L128", "id": "exlab_wizard_paths_rationale_128", - "community": 64, + "community": 76, "norm_label": "return ``path(os.environ[var])`` if the var is set and non-empty, else ``fallbac" }, { @@ -38853,7 +40050,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L134", "id": "exlab_wizard_paths_rationale_134", - "community": 64, + "community": 76, "norm_label": "return the os-appropriate path of ``config.yaml``. backend spec \u00a79." }, { @@ -38862,7 +40059,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L146", "id": "exlab_wizard_paths_rationale_146", - "community": 235, + "community": 239, "norm_label": "return the os-appropriate state directory. backend spec \u00a715.7." }, { @@ -38871,7 +40068,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L158", "id": "exlab_wizard_paths_rationale_158", - "community": 64, + "community": 76, "norm_label": "return the os-appropriate cache directory. backend spec \u00a77.2.4." }, { @@ -38880,7 +40077,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L170", "id": "exlab_wizard_paths_rationale_170", - "community": 274, + "community": 238, "norm_label": "return the os-appropriate central log file. backend spec \u00a716.3." }, { @@ -38889,7 +40086,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L189", "id": "exlab_wizard_paths_rationale_189", - "community": 64, + "community": 76, "norm_label": "suggested (not default) ``orchestrator.staging_root``. backend spec \u00a79, \u00a713." }, { @@ -38898,7 +40095,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L221", "id": "exlab_wizard_paths_rationale_221", - "community": 235, + "community": 238, "norm_label": "``mkdir -p`` the given path; return it. idempotent." }, { @@ -38907,7 +40104,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L227", "id": "exlab_wizard_paths_rationale_227", - "community": 235, + "community": 239, "norm_label": "``ensure_dir(os_state_path())``." }, { @@ -38916,7 +40113,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L232", "id": "exlab_wizard_paths_rationale_232", - "community": 274, + "community": 238, "norm_label": "``ensure_dir(os_central_log_path().parent)``." }, { @@ -38925,7 +40122,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L242", "id": "exlab_wizard_paths_rationale_242", - "community": 82, + "community": 75, "norm_label": "validate ``value`` against the \u00a73.1 equipment-id regex. returns ``value`` u" }, { @@ -38934,7 +40131,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L273", "id": "exlab_wizard_paths_rationale_273", - "community": 60, + "community": 78, "norm_label": "validate ``value`` against ``project_short_id_pattern``. returns the input" }, { @@ -38943,7 +40140,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L291", "id": "exlab_wizard_paths_rationale_291", - "community": 252, + "community": 256, "norm_label": "return every way ``value`` fails the \u00a73.2 project-name rule. the project fo" }, { @@ -38952,7 +40149,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L349", "id": "exlab_wizard_paths_rationale_349", - "community": 252, + "community": 256, "norm_label": "validate ``value`` as a \u00a73.2 project-folder name. returns the input unchang" }, { @@ -38961,7 +40158,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L368", "id": "exlab_wizard_paths_rationale_368", - "community": 167, + "community": 176, "norm_label": "compose the absolute on-disk path for a new run. paths follow backend spec" }, { @@ -38970,7 +40167,7 @@ "source_file": "src/exlab_wizard/paths.py", "source_location": "L402", "id": "exlab_wizard_paths_rationale_402", - "community": 82, + "community": 75, "norm_label": "compose the project-level directory. ``//`` or ``testrun_``." }, { @@ -39132,7 +40329,7 @@ "source_file": "src/exlab_wizard/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_init_py", - "community": 512, + "community": 536, "norm_label": "__init__.py" }, { @@ -39141,7 +40338,7 @@ "source_file": "src/exlab_wizard/__init__.py", "source_location": "L1", "id": "exlab_wizard_init_rationale_1", - "community": 512, + "community": 536, "norm_label": "exlab-wizard package root. backend spec \u00a74." }, { @@ -39150,7 +40347,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L1", "id": "src_exlab_wizard_errors_py", - "community": 23, + "community": 15, "norm_label": "errors.py" }, { @@ -39159,7 +40356,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L19", "id": "exlab_wizard_errors_exlaberror", - "community": 23, + "community": 15, "norm_label": "exlaberror" }, { @@ -39168,7 +40365,7 @@ "source_file": "", "source_location": "", "id": "exception", - "community": 90, + "community": 104, "norm_label": "exception" }, { @@ -39177,7 +40374,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L23", "id": "exlab_wizard_errors_configerror", - "community": 0, + "community": 10, "norm_label": "configerror" }, { @@ -39186,7 +40383,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L27", "id": "exlab_wizard_errors_validationerror", - "community": 9, + "community": 10, "norm_label": "validationerror" }, { @@ -39195,7 +40392,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L31", "id": "exlab_wizard_errors_templateloaderror", - "community": 23, + "community": 15, "norm_label": "templateloaderror" }, { @@ -39204,7 +40401,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L35", "id": "exlab_wizard_errors_templatecorefieldredeclarederror", - "community": 23, + "community": 15, "norm_label": "templatecorefieldredeclarederror" }, { @@ -39213,7 +40410,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L39", "id": "exlab_wizard_errors_pluginerror", - "community": 58, + "community": 15, "norm_label": "pluginerror" }, { @@ -39222,7 +40419,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L43", "id": "exlab_wizard_errors_plugininputrequired", - "community": 23, + "community": 15, "norm_label": "plugininputrequired" }, { @@ -39231,7 +40428,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L46", "id": "exlab_wizard_errors_plugininputrequired_init", - "community": 23, + "community": 15, "norm_label": ".__init__()" }, { @@ -39240,7 +40437,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L51", "id": "exlab_wizard_errors_reason", - "community": 23, + "community": 15, "norm_label": "reason()" }, { @@ -39249,7 +40446,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L55", "id": "exlab_wizard_errors_schemamajormismatcherror", - "community": 23, + "community": 15, "norm_label": "schemamajormismatcherror" }, { @@ -39258,7 +40455,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L58", "id": "exlab_wizard_errors_schemamajormismatcherror_init", - "community": 23, + "community": 15, "norm_label": ".__init__()" }, { @@ -39267,7 +40464,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L64", "id": "exlab_wizard_errors_keyringunavailableerror", - "community": 171, + "community": 179, "norm_label": "keyringunavailableerror" }, { @@ -39276,7 +40473,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L68", "id": "exlab_wizard_errors_setupincompleteerror", - "community": 23, + "community": 15, "norm_label": "setupincompleteerror" }, { @@ -39285,7 +40482,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L1", "id": "exlab_wizard_errors_rationale_1", - "community": 23, + "community": 15, "norm_label": "top-level exception hierarchy. backend spec \u00a74.3 errors.py." }, { @@ -39294,7 +40491,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L20", "id": "exlab_wizard_errors_rationale_20", - "community": 23, + "community": 15, "norm_label": "base class for all exlab-wizard exceptions." }, { @@ -39303,7 +40500,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L24", "id": "exlab_wizard_errors_rationale_24", - "community": 0, + "community": 10, "norm_label": "raised on config.yaml validation failures. backend spec \u00a79." }, { @@ -39312,7 +40509,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L28", "id": "exlab_wizard_errors_rationale_28", - "community": 9, + "community": 10, "norm_label": "raised by the validator engine on creation-time gates. backend spec \u00a78.1." }, { @@ -39321,7 +40518,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L32", "id": "exlab_wizard_errors_rationale_32", - "community": 23, + "community": 15, "norm_label": "raised when a copier template fails to load. backend spec \u00a75." }, { @@ -39330,7 +40527,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L36", "id": "exlab_wizard_errors_rationale_36", - "community": 23, + "community": 15, "norm_label": "raised when a template redeclares label / operator / objective. backend spec \u00a710" }, { @@ -39339,7 +40536,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L40", "id": "exlab_wizard_errors_rationale_40", - "community": 58, + "community": 15, "norm_label": "raised by plugin workers to signal expected failure. backend spec \u00a76." }, { @@ -39348,7 +40545,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L44", "id": "exlab_wizard_errors_rationale_44", - "community": 23, + "community": 15, "norm_label": "raised by plugin workers to escalate for additional input. backend spec \u00a76.4." }, { @@ -39357,7 +40554,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L56", "id": "exlab_wizard_errors_rationale_56", - "community": 23, + "community": 15, "norm_label": "raised when a cache file's schema major version exceeds reader support. backend" }, { @@ -39366,7 +40563,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L65", "id": "exlab_wizard_errors_rationale_65", - "community": 171, + "community": 179, "norm_label": "raised when no os keyring backend is reachable and fallback is exhausted. backen" }, { @@ -39375,7 +40572,7 @@ "source_file": "src/exlab_wizard/errors.py", "source_location": "L69", "id": "exlab_wizard_errors_rationale_69", - "community": 23, + "community": 15, "norm_label": "raised when a creation gate runs while setup state is incomplete_*. backend spec" }, { @@ -39384,7 +40581,7 @@ "source_file": "src/exlab_wizard/__main__.py", "source_location": "L1", "id": "src_exlab_wizard_main_py", - "community": 461, + "community": 490, "norm_label": "__main__.py" }, { @@ -39393,7 +40590,7 @@ "source_file": "src/exlab_wizard/__main__.py", "source_location": "L6", "id": "exlab_wizard_main_main", - "community": 461, + "community": 490, "norm_label": "main()" }, { @@ -39402,7 +40599,7 @@ "source_file": "src/exlab_wizard/__main__.py", "source_location": "L1", "id": "exlab_wizard_main_rationale_1", - "community": 461, + "community": 490, "norm_label": "cli alias entry point. backend spec \u00a74.3." }, { @@ -39411,7 +40608,7 @@ "source_file": "src/exlab_wizard/ui/theme.py", "source_location": "L1", "id": "src_exlab_wizard_ui_theme_py", - "community": 177, + "community": 39, "norm_label": "theme.py" }, { @@ -39420,34 +40617,34 @@ "source_file": "src/exlab_wizard/ui/theme.py", "source_location": "L25", "id": "ui_theme_build_root_css", - "community": 177, + "community": 39, "norm_label": "build_root_css()" }, { "label": "register_theme()", "file_type": "code", "source_file": "src/exlab_wizard/ui/theme.py", - "source_location": "L112", + "source_location": "L128", "id": "ui_theme_register_theme", - "community": 177, + "community": 39, "norm_label": "register_theme()" }, { "label": "resolve_assets_dir()", "file_type": "code", "source_file": "src/exlab_wizard/ui/theme.py", - "source_location": "L141", + "source_location": "L157", "id": "ui_theme_resolve_assets_dir", - "community": 177, + "community": 39, "norm_label": "resolve_assets_dir()" }, { "label": "register_static_assets()", "file_type": "code", "source_file": "src/exlab_wizard/ui/theme.py", - "source_location": "L156", + "source_location": "L172", "id": "ui_theme_register_static_assets", - "community": 177, + "community": 39, "norm_label": "register_static_assets()" }, { @@ -39456,7 +40653,7 @@ "source_file": "src/exlab_wizard/ui/theme.py", "source_location": "L1", "id": "ui_theme_rationale_1", - "community": 177, + "community": 39, "norm_label": "theme registration for nicegui / quasar. per frontend spec \u00a72.1.1, this module" }, { @@ -39465,34 +40662,34 @@ "source_file": "src/exlab_wizard/ui/theme.py", "source_location": "L26", "id": "ui_theme_rationale_26", - "community": 177, + "community": 39, "norm_label": "render the canonical ``:root { ... }`` css block from design tokens. the st" }, { "label": "Register the design tokens with NiceGUI / Quasar at app start. Imports Nice", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/theme.py", - "source_location": "L113", - "id": "ui_theme_rationale_113", - "community": 177, + "source_location": "L129", + "id": "ui_theme_rationale_129", + "community": 39, "norm_label": "register the design tokens with nicegui / quasar at app start. imports nice" }, { "label": "Return the absolute path to the bundled ``assets/`` directory. Resolves bot", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/theme.py", - "source_location": "L142", - "id": "ui_theme_rationale_142", - "community": 177, + "source_location": "L158", + "id": "ui_theme_rationale_158", + "community": 39, "norm_label": "return the absolute path to the bundled ``assets/`` directory. resolves bot" }, { "label": "Mount the project's ``assets/`` directory at ``/assets``. Idempotent: a mod", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/theme.py", - "source_location": "L157", - "id": "ui_theme_rationale_157", - "community": 177, + "source_location": "L173", + "id": "ui_theme_rationale_173", + "community": 39, "norm_label": "mount the project's ``assets/`` directory at ``/assets``. idempotent: a mod" }, { @@ -39501,7 +40698,7 @@ "source_file": "src/exlab_wizard/ui/equipment_form.py", "source_location": "L1", "id": "src_exlab_wizard_ui_equipment_form_py", - "community": 197, + "community": 194, "norm_label": "equipment_form.py" }, { @@ -39510,7 +40707,7 @@ "source_file": "src/exlab_wizard/ui/equipment_form.py", "source_location": "L21", "id": "ui_equipment_form_build_equipment_config", - "community": 197, + "community": 194, "norm_label": "build_equipment_config()" }, { @@ -39519,7 +40716,7 @@ "source_file": "src/exlab_wizard/ui/equipment_form.py", "source_location": "L1", "id": "ui_equipment_form_rationale_1", - "community": 197, + "community": 194, "norm_label": "shared assembler for an :class:`equipmentconfig` from raw form fields. gui/orch" }, { @@ -39528,7 +40725,7 @@ "source_file": "src/exlab_wizard/ui/equipment_form.py", "source_location": "L29", "id": "ui_equipment_form_rationale_29", - "community": 197, + "community": 194, "norm_label": "assemble a validated :class:`equipmentconfig` from raw form fields. redesig" }, { @@ -39537,7 +40734,7 @@ "source_file": "src/exlab_wizard/ui/design.py", "source_location": "L1", "id": "src_exlab_wizard_ui_design_py", - "community": 513, + "community": 537, "norm_label": "design.py" }, { @@ -39546,7 +40743,7 @@ "source_file": "src/exlab_wizard/ui/design.py", "source_location": "L1", "id": "ui_design_rationale_1", - "community": 513, + "community": 537, "norm_label": "design tokens. mirrors design.md verbatim with the frontend spec \u00a72.1 typography" }, { @@ -39555,7 +40752,7 @@ "source_file": "src/exlab_wizard/ui/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_ui_init_py", - "community": 419, + "community": 456, "norm_label": "__init__.py" }, { @@ -39564,7 +40761,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L1", "id": "src_exlab_wizard_ui_notifications_py", - "community": 56, + "community": 90, "norm_label": "notifications.py" }, { @@ -39573,7 +40770,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L35", "id": "ui_notifications_severity", - "community": 56, + "community": 90, "norm_label": "severity" }, { @@ -39582,7 +40779,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L44", "id": "ui_notifications_bannerid", - "community": 56, + "community": 90, "norm_label": "bannerid" }, { @@ -39591,7 +40788,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L58", "id": "ui_notifications_containerid", - "community": 56, + "community": 90, "norm_label": "containerid" }, { @@ -39600,7 +40797,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L67", "id": "ui_notifications_actionspec", - "community": 59, + "community": 352, "norm_label": "actionspec" }, { @@ -39609,7 +40806,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L106", "id": "ui_notifications_emit_toast", - "community": 56, + "community": 90, "norm_label": "_emit_toast()" }, { @@ -39618,7 +40815,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L165", "id": "ui_notifications_notify_success", - "community": 56, + "community": 90, "norm_label": "notify_success()" }, { @@ -39627,7 +40824,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L179", "id": "ui_notifications_notify_info", - "community": 56, + "community": 90, "norm_label": "notify_info()" }, { @@ -39636,7 +40833,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L190", "id": "ui_notifications_notify_warning", - "community": 56, + "community": 90, "norm_label": "notify_warning()" }, { @@ -39645,7 +40842,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L204", "id": "ui_notifications_notify_error", - "community": 56, + "community": 90, "norm_label": "notify_error()" }, { @@ -39654,7 +40851,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L223", "id": "ui_notifications_notify_field_error", - "community": 56, + "community": 90, "norm_label": "notify_field_error()" }, { @@ -39663,7 +40860,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L233", "id": "ui_notifications_notify_form_error", - "community": 56, + "community": 90, "norm_label": "notify_form_error()" }, { @@ -39672,7 +40869,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L243", "id": "ui_notifications_clear_field_error", - "community": 56, + "community": 90, "norm_label": "clear_field_error()" }, { @@ -39681,7 +40878,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L249", "id": "ui_notifications_clear_form_errors", - "community": 56, + "community": 90, "norm_label": "clear_form_errors()" }, { @@ -39690,7 +40887,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L255", "id": "ui_notifications_get_field_error", - "community": 56, + "community": 90, "norm_label": "get_field_error()" }, { @@ -39699,7 +40896,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L261", "id": "ui_notifications_get_form_error", - "community": 56, + "community": 90, "norm_label": "get_form_error()" }, { @@ -39708,7 +40905,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L272", "id": "ui_notifications_show_banner", - "community": 56, + "community": 353, "norm_label": "show_banner()" }, { @@ -39717,7 +40914,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L312", "id": "ui_notifications_clear_banner", - "community": 56, + "community": 90, "norm_label": "clear_banner()" }, { @@ -39726,7 +40923,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L318", "id": "ui_notifications_list_active_banners", - "community": 56, + "community": 398, "norm_label": "list_active_banners()" }, { @@ -39735,7 +40932,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L334", "id": "ui_notifications_banner_overflow_count", - "community": 56, + "community": 398, "norm_label": "banner_overflow_count()" }, { @@ -39744,7 +40941,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L341", "id": "ui_notifications_reset_for_tests", - "community": 43, + "community": 353, "norm_label": "reset_for_tests()" }, { @@ -39753,7 +40950,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L1", "id": "ui_notifications_rationale_1", - "community": 56, + "community": 90, "norm_label": "canonical notification helpers (frontend spec \u00a72.2). this module is the **only*" }, { @@ -39762,7 +40959,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L36", "id": "ui_notifications_rationale_36", - "community": 56, + "community": 90, "norm_label": "banner severity (frontend \u00a72.2.3)." }, { @@ -39771,7 +40968,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L45", "id": "ui_notifications_rationale_45", - "community": 56, + "community": 90, "norm_label": "closed-set banner triggers (frontend \u00a72.2.3). adding a new banner is a deli" }, { @@ -39780,7 +40977,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L59", "id": "ui_notifications_rationale_59", - "community": 56, + "community": 90, "norm_label": "banner placement scopes (frontend \u00a72.2.3)." }, { @@ -39789,7 +40986,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L68", "id": "ui_notifications_rationale_68", - "community": 59, + "community": 352, "norm_label": "a single action affordance attached to a notification. at most one action p" }, { @@ -39798,7 +40995,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L113", "id": "ui_notifications_rationale_113", - "community": 56, + "community": 90, "norm_label": "lower-level wrapper around ``ui.notify``. calls into nicegui lazily to avoi" }, { @@ -39807,7 +41004,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L166", "id": "ui_notifications_rationale_166", - "community": 56, + "community": 90, "norm_label": "show a success toast (frontend \u00a72.2.2). 4 s default duration; 12 s when an" }, { @@ -39816,7 +41013,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L180", "id": "ui_notifications_rationale_180", - "community": 56, + "community": 90, "norm_label": "show an info toast (frontend \u00a72.2.2)." }, { @@ -39825,7 +41022,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L191", "id": "ui_notifications_rationale_191", - "community": 56, + "community": 90, "norm_label": "show a warning toast (frontend \u00a72.2.2). 8 s default duration; 12 s when an" }, { @@ -39834,7 +41031,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L205", "id": "ui_notifications_rationale_205", - "community": 56, + "community": 90, "norm_label": "show an error toast (frontend \u00a72.2.2). 8 s default duration; 12 s when an a" }, { @@ -39843,7 +41040,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L224", "id": "ui_notifications_rationale_224", - "community": 56, + "community": 90, "norm_label": "register a field-level inline error (frontend \u00a72.2.4)." }, { @@ -39852,7 +41049,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L234", "id": "ui_notifications_rationale_234", - "community": 56, + "community": 90, "norm_label": "register a form-level inline error (frontend \u00a72.2.4)." }, { @@ -39861,7 +41058,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L244", "id": "ui_notifications_rationale_244", - "community": 56, + "community": 90, "norm_label": "clear a previously registered field-level error." }, { @@ -39870,7 +41067,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L250", "id": "ui_notifications_rationale_250", - "community": 56, + "community": 90, "norm_label": "clear all form-level errors registered against ``form_id``." }, { @@ -39879,7 +41076,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L256", "id": "ui_notifications_rationale_256", - "community": 56, + "community": 90, "norm_label": "return the registered field-level error for ``field_id`` or ``none``." }, { @@ -39888,7 +41085,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L262", "id": "ui_notifications_rationale_262", - "community": 56, + "community": 90, "norm_label": "return the registered form-level error for ``form_id`` or ``none``." }, { @@ -39897,7 +41094,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L281", "id": "ui_notifications_rationale_281", - "community": 56, + "community": 353, "norm_label": "activate a banner from the closed \u00a72.2.3 set. raises: valueerror: w" }, { @@ -39906,7 +41103,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L313", "id": "ui_notifications_rationale_313", - "community": 56, + "community": 90, "norm_label": "deactivate a banner if it was active." }, { @@ -39915,7 +41112,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L321", "id": "ui_notifications_rationale_321", - "community": 56, + "community": 398, "norm_label": "return active banners, optionally filtered by container. banners are return" }, { @@ -39924,7 +41121,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L335", "id": "ui_notifications_rationale_335", - "community": 56, + "community": 398, "norm_label": "how many banners exceed the stacking cap of 2 (frontend \u00a72.2.3)." }, { @@ -39933,7 +41130,7 @@ "source_file": "src/exlab_wizard/ui/notifications.py", "source_location": "L342", "id": "ui_notifications_rationale_342", - "community": 43, + "community": 353, "norm_label": "clear all module-level state. test fixtures only." }, { @@ -39942,1033 +41139,997 @@ "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1", "id": "src_exlab_wizard_ui_mount_py", - "community": 45, + "community": 77, "norm_label": "mount.py" }, { "label": "_spawn_background()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L58", + "source_location": "L61", "id": "ui_mount_spawn_background", - "community": 68, + "community": 55, "norm_label": "_spawn_background()" }, { "label": "mount_ui()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L66", + "source_location": "L69", "id": "ui_mount_mount_ui", - "community": 177, + "community": 39, "norm_label": "mount_ui()" }, { "label": "_register_pages()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L94", + "source_location": "L97", "id": "ui_mount_register_pages", - "community": 177, + "community": 39, "norm_label": "_register_pages()" }, { "label": "_lims_credential_handlers()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L466", + "source_location": "L469", "id": "ui_mount_lims_credential_handlers", - "community": 45, + "community": 77, "norm_label": "_lims_credential_handlers()" }, { "label": "_nas_test_connection()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L522", + "source_location": "L525", "id": "ui_mount_nas_test_connection", - "community": 237, + "community": 228, "norm_label": "_nas_test_connection()" }, { "label": "_persist_config()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L578", + "source_location": "L581", "id": "ui_mount_persist_config", - "community": 193, + "community": 77, "norm_label": "_persist_config()" }, { "label": "_ensure_staging_root()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L610", + "source_location": "L613", "id": "ui_mount_ensure_staging_root", - "community": 193, + "community": 77, "norm_label": "_ensure_staging_root()" }, { "label": "_apply_live_config()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L636", + "source_location": "L639", "id": "ui_mount_apply_live_config", - "community": 193, + "community": 77, "norm_label": "_apply_live_config()" }, { "label": "_nas_remote_missing()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L653", + "source_location": "L656", "id": "ui_mount_nas_remote_missing", - "community": 204, + "community": 82, "norm_label": "_nas_remote_missing()" }, { "label": "_is_setup_ready()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L677", + "source_location": "L680", "id": "ui_mount_is_setup_ready", - "community": 45, + "community": 52, "norm_label": "_is_setup_ready()" }, { "label": "_apply_autostart()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L709", + "source_location": "L712", "id": "ui_mount_apply_autostart", - "community": 149, + "community": 153, "norm_label": "_apply_autostart()" }, { "label": "_build_main_state()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L728", + "source_location": "L731", "id": "ui_mount_build_main_state", - "community": 45, + "community": 52, "norm_label": "_build_main_state()" }, { "label": "_panel_sessions()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L768", + "source_location": "L786", "id": "ui_mount_panel_sessions", - "community": 45, + "community": 204, "norm_label": "_panel_sessions()" }, { "label": "_operation_counts()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L785", + "source_location": "L803", "id": "ui_mount_operation_counts", - "community": 45, + "community": 204, "norm_label": "_operation_counts()" }, { "label": "_setup_next_action()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L802", + "source_location": "L820", "id": "ui_mount_setup_next_action", - "community": 45, + "community": 52, "norm_label": "_setup_next_action()" }, { "label": "_build_main_query()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L825", + "source_location": "L843", "id": "ui_mount_build_main_query", - "community": 302, + "community": 209, "norm_label": "_build_main_query()" }, { "label": "_classify_node()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L865", + "source_location": "L883", "id": "ui_mount_classify_node", - "community": 303, + "community": 209, "norm_label": "_classify_node()" }, { "label": "_build_metadata_payload()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L905", + "source_location": "L923", "id": "ui_mount_build_metadata_payload", - "community": 176, + "community": 151, "norm_label": "_build_metadata_payload()" }, { "label": "_metadata_for_owned_equipment()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L936", + "source_location": "L954", "id": "ui_mount_metadata_for_owned_equipment", - "community": 176, + "community": 151, "norm_label": "_metadata_for_owned_equipment()" }, { "label": "_metadata_for_relay_equipment()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L951", + "source_location": "L969", "id": "ui_mount_metadata_for_relay_equipment", - "community": 176, + "community": 151, "norm_label": "_metadata_for_relay_equipment()" }, { "label": "_metadata_for_project()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L965", + "source_location": "L983", "id": "ui_mount_metadata_for_project", - "community": 226, + "community": 210, "norm_label": "_metadata_for_project()" }, { "label": "_count_dir_children()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L999", + "source_location": "L1017", "id": "ui_mount_count_dir_children", - "community": 226, + "community": 210, "norm_label": "_count_dir_children()" }, { "label": "_metadata_for_run()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1014", + "source_location": "L1032", "id": "ui_mount_metadata_for_run", - "community": 192, + "community": 163, "norm_label": "_metadata_for_run()" }, { "label": "_build_selected_file()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1053", + "source_location": "L1071", "id": "ui_mount_build_selected_file", - "community": 192, + "community": 163, "norm_label": "_build_selected_file()" }, { "label": "_build_selected_folder()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1102", + "source_location": "L1120", "id": "ui_mount_build_selected_folder", - "community": 192, + "community": 163, "norm_label": "_build_selected_folder()" }, { "label": "_drive_folder_feed()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1147", + "source_location": "L1165", "id": "ui_mount_drive_folder_feed", - "community": 203, + "community": 188, "norm_label": "_drive_folder_feed()" }, { "label": "_fetch_folder_async()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1208", + "source_location": "L1226", "id": "ui_mount_fetch_folder_async", - "community": 203, + "community": 188, "norm_label": "_fetch_folder_async()" }, { "label": "_refresh_selected_folder()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1232", + "source_location": "L1250", "id": "ui_mount_refresh_selected_folder", - "community": 68, + "community": 55, "norm_label": "_refresh_selected_folder()" }, { "label": "_run_staging_action()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1272", + "source_location": "L1290", "id": "ui_mount_run_staging_action", - "community": 68, + "community": 55, "norm_label": "_run_staging_action()" }, { - "label": "_bulk_clear_verified()", + "label": "_file_context_action()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1330", - "id": "ui_mount_bulk_clear_verified", - "community": 168, - "norm_label": "_bulk_clear_verified()" - }, - { - "label": "_file_context_action()", - "file_type": "code", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1368", + "source_location": "L1348", "id": "ui_mount_file_context_action", - "community": 168, + "community": 161, "norm_label": "_file_context_action()" }, { "label": "_toggle_keep_local()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1408", + "source_location": "L1388", "id": "ui_mount_toggle_keep_local", - "community": 68, + "community": 55, "norm_label": "_toggle_keep_local()" }, { "label": "_open_in_os()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1457", + "source_location": "L1437", "id": "ui_mount_open_in_os", - "community": 175, + "community": 164, "norm_label": "_open_in_os()" }, { "label": "_build_operation_rows()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1485", + "source_location": "L1465", "id": "ui_mount_build_operation_rows", - "community": 57, + "community": 28, "norm_label": "_build_operation_rows()" }, { "label": "_open_operations_modal()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1497", + "source_location": "L1477", "id": "ui_mount_open_operations_modal", - "community": 57, + "community": 28, "norm_label": "_open_operations_modal()" }, { "label": "_open_operation_details()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1521", + "source_location": "L1501", "id": "ui_mount_open_operation_details", - "community": 175, + "community": 164, "norm_label": "_open_operation_details()" }, { "label": "_resume_operation()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1555", + "source_location": "L1535", "id": "ui_mount_resume_operation", - "community": 154, + "community": 28, "norm_label": "_resume_operation()" }, { "label": "_open_input_required_dialog()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1579", + "source_location": "L1559", "id": "ui_mount_open_input_required_dialog", - "community": 154, + "community": 40, "norm_label": "_open_input_required_dialog()" }, { "label": "_cancel_operation()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1625", + "source_location": "L1605", "id": "ui_mount_cancel_operation", - "community": 57, + "community": 28, "norm_label": "_cancel_operation()" }, { "label": "_cancel_session()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1634", + "source_location": "L1614", "id": "ui_mount_cancel_session", - "community": 57, + "community": 28, "norm_label": "_cancel_session()" }, { "label": "_open_log_dialog()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1675", + "source_location": "L1655", "id": "ui_mount_open_log_dialog", - "community": 68, + "community": 55, "norm_label": "_open_log_dialog()" }, { "label": "_missing_setup_sections()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1723", + "source_location": "L1703", "id": "ui_mount_missing_setup_sections", - "community": 204, + "community": 82, "norm_label": "_missing_setup_sections()" }, { "label": "_templates_dir()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1756", + "source_location": "L1736", "id": "ui_mount_templates_dir", - "community": 69, + "community": 40, "norm_label": "_templates_dir()" }, { "label": "_template_names()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1764", + "source_location": "L1744", "id": "ui_mount_template_names", - "community": 69, + "community": 40, "norm_label": "_template_names()" }, { "label": "_template_questions_map()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1781", + "source_location": "L1761", "id": "ui_mount_template_questions_map", - "community": 69, + "community": 63, "norm_label": "_template_questions_map()" }, { "label": "_lims_catalogue_projects()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1814", + "source_location": "L1794", "id": "ui_mount_lims_catalogue_projects", - "community": 119, + "community": 162, "norm_label": "_lims_catalogue_projects()" }, { "label": "_lims_projects()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1848", + "source_location": "L1828", "id": "ui_mount_lims_projects", - "community": 266, + "community": 162, "norm_label": "_lims_projects()" }, { "label": "_equipment_ids()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1878", + "source_location": "L1858", "id": "ui_mount_equipment_ids", - "community": 119, + "community": 63, "norm_label": "_equipment_ids()" }, { "label": "_await_session()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1886", + "source_location": "L1866", "id": "ui_mount_await_session", - "community": 100, + "community": 63, "norm_label": "_await_session()" }, { "label": "_consume_session_progress()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1903", + "source_location": "L1883", "id": "ui_mount_consume_session_progress", - "community": 194, + "community": 40, "norm_label": "_consume_session_progress()" }, { "label": "_close_dialog()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1948", + "source_location": "L1928", "id": "ui_mount_close_dialog", - "community": 194, + "community": 40, "norm_label": "_close_dialog()" }, { "label": "_submit_project()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1956", + "source_location": "L1936", "id": "ui_mount_submit_project", - "community": 119, + "community": 63, "norm_label": "_submit_project()" }, { "label": "_submit_run()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1989", + "source_location": "L1969", "id": "ui_mount_submit_run", - "community": 69, + "community": 99, "norm_label": "_submit_run()" }, { "label": "_run_creation()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L2022", + "source_location": "L2002", "id": "ui_mount_run_creation", - "community": 100, + "community": 99, "norm_label": "_run_creation()" }, { "label": "_render_run_wizard()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L2059", + "source_location": "L2039", "id": "ui_mount_render_run_wizard", - "community": 69, + "community": 63, "norm_label": "_render_run_wizard()" }, { "label": "_safe_audit()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L2073", + "source_location": "L2053", "id": "ui_mount_safe_audit", - "community": 100, + "community": 99, "norm_label": "_safe_audit()" }, - { - "label": "_build_staging_state()", - "file_type": "code", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L2085", - "id": "ui_mount_build_staging_state", - "community": 45, - "norm_label": "_build_staging_state()" - }, { "label": "_show_toast()", "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L2104", + "source_location": "L2065", "id": "ui_mount_show_toast", - "community": 193, + "community": 77, "norm_label": "_show_toast()" }, - { - "label": "_render_unavailable()", - "file_type": "code", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L2117", - "id": "ui_mount_render_unavailable", - "community": 45, - "norm_label": "_render_unavailable()" - }, { "label": "NiceGUI mount helper. Backend Spec \u00a74.3, \u00a715.3.2. ``mount_ui`` is the single en", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1", "id": "ui_mount_rationale_1", - "community": 45, + "community": 77, "norm_label": "nicegui mount helper. backend spec \u00a74.3, \u00a715.3.2. ``mount_ui`` is the single en" }, { "label": "Schedule ``coro`` and keep a strong reference until it finishes.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L59", - "id": "ui_mount_rationale_59", - "community": 68, + "source_location": "L62", + "id": "ui_mount_rationale_62", + "community": 55, "norm_label": "schedule ``coro`` and keep a strong reference until it finishes." }, { "label": "Register every wizard page on ``app`` and mount NiceGUI at ``/``. ``storage", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L67", - "id": "ui_mount_rationale_67", - "community": 177, + "source_location": "L70", + "id": "ui_mount_rationale_70", + "community": 39, "norm_label": "register every wizard page on ``app`` and mount nicegui at ``/``. ``storage" }, { "label": "Define every ``@ui.page(...)`` handler. Called from :func:`mount_ui`.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L95", - "id": "ui_mount_rationale_95", - "community": 177, + "source_location": "L98", + "id": "ui_mount_rationale_98", + "community": 39, "norm_label": "define every ``@ui.page(...)`` handler. called from :func:`mount_ui`." }, { "label": "Build the LIMS-password Save / Clear handlers for the settings dialog. Cred", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L469", - "id": "ui_mount_rationale_469", - "community": 45, + "source_location": "L472", + "id": "ui_mount_rationale_472", + "community": 77, "norm_label": "build the lims-password save / clear handlers for the settings dialog. cred" }, { "label": "Run the rclone NAS-remote probe and adapt it for the inline panel. rclone.c", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L523", - "id": "ui_mount_rationale_523", - "community": 237, + "source_location": "L526", + "id": "ui_mount_rationale_526", + "community": 228, "norm_label": "run the rclone nas-remote probe and adapt it for the inline panel. rclone.c" }, { "label": "Write ``updated`` via ``deps.save_config`` and hot-reload components. Retur", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L579", - "id": "ui_mount_rationale_579", - "community": 193, + "source_location": "L582", + "id": "ui_mount_rationale_582", + "community": 77, "norm_label": "write ``updated`` via ``deps.save_config`` and hot-reload components. retur" }, { "label": "Create the staging directory when the operator saved a non-empty path. ``st", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L611", - "id": "ui_mount_rationale_611", - "community": 193, + "source_location": "L614", + "id": "ui_mount_rationale_614", + "community": 77, "norm_label": "create the staging directory when the operator saved a non-empty path. ``st" }, { "label": "Push ``updated`` into the running components (no tray relaunch). Wraps :fun", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L637", - "id": "ui_mount_rationale_637", - "community": 193, + "source_location": "L640", + "id": "ui_mount_rationale_640", + "community": 77, "norm_label": "push ``updated`` into the running components (no tray relaunch). wraps :fun" }, { "label": "True when nas-mode equipment exist but the ``nas:`` remote is unusable. rcl", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L654", - "id": "ui_mount_rationale_654", - "community": 204, + "source_location": "L657", + "id": "ui_mount_rationale_657", + "community": 82, "norm_label": "true when nas-mode equipment exist but the ``nas:`` remote is unusable. rcl" }, { "label": "Return True when the \u00a74.9 setup state is ``READY``. Delegates to :func:`api", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L678", - "id": "ui_mount_rationale_678", - "community": 45, + "source_location": "L681", + "id": "ui_mount_rationale_681", + "community": 52, "norm_label": "return true when the \u00a74.9 setup state is ``ready``. delegates to :func:`api" }, { "label": "Register / unregister platform autostart; return the real post-op state. Re", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L710", - "id": "ui_mount_rationale_710", - "community": 149, + "source_location": "L713", + "id": "ui_mount_rationale_713", + "community": 153, "norm_label": "register / unregister platform autostart; return the real post-op state. re" }, { "label": "Return the (session_id, session) pairs the Operations panel shows. The \u00a79.5", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L769", - "id": "ui_mount_rationale_769", - "community": 45, + "source_location": "L787", + "id": "ui_mount_rationale_787", + "community": 204, "norm_label": "return the (session_id, session) pairs the operations panel shows. the \u00a79.5" }, { "label": "Return ``(panel_count, input_required, active)`` operation counts. ``panel_", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L786", - "id": "ui_mount_rationale_786", - "community": 45, + "source_location": "L804", + "id": "ui_mount_rationale_804", + "community": 204, "norm_label": "return ``(panel_count, input_required, active)`` operation counts. ``panel_" }, { "label": "Return the \u00a74.9.3 next-action string for the banner subline. Unlike :func:`", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L803", - "id": "ui_mount_rationale_803", - "community": 45, + "source_location": "L821", + "id": "ui_mount_rationale_821", + "community": 52, "norm_label": "return the \u00a74.9.3 next-action string for the banner subline. unlike :func:`" }, { "label": "Compose the ``?selected=...&right_pane=...`` query string for /main. Omits", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L833", - "id": "ui_mount_rationale_833", - "community": 302, + "source_location": "L851", + "id": "ui_mount_rationale_851", + "community": 209, "norm_label": "compose the ``?selected=...&right_pane=...`` query string for /main. omits" }, { "label": "Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L866", - "id": "ui_mount_rationale_866", - "community": 303, + "source_location": "L884", + "id": "ui_mount_rationale_884", + "community": 209, "norm_label": "map a selected node id to ``(kind, is_received)``. mirrors the shape classi" }, { "label": "Build the metadata-pane payload for the selected node, by kind. Returns ``{", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L910", - "id": "ui_mount_rationale_910", - "community": 176, + "source_location": "L928", + "id": "ui_mount_rationale_928", + "community": 151, "norm_label": "build the metadata-pane payload for the selected node, by kind. returns ``{" }, { "label": "Project equipment-config fields into the owned-equipment payload.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L937", - "id": "ui_mount_rationale_937", - "community": 176, + "source_location": "L955", + "id": "ui_mount_rationale_955", + "community": 151, "norm_label": "project equipment-config fields into the owned-equipment payload." }, { "label": "Return the relay-equipment payload (label, source_host).", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L952", - "id": "ui_mount_rationale_952", - "community": 176, + "source_location": "L970", + "id": "ui_mount_rationale_970", + "community": 151, "norm_label": "return the relay-equipment payload (label, source_host)." }, { "label": "Derive a project payload from the on-disk project directory. ``node_id`` is", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L966", - "id": "ui_mount_rationale_966", - "community": 226, + "source_location": "L984", + "id": "ui_mount_rationale_984", + "community": 210, "norm_label": "derive a project payload from the on-disk project directory. ``node_id`` is" }, { "label": "Count immediate child directories of ``parent`` whose names start with ``pre", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1000", - "id": "ui_mount_rationale_1000", - "community": 192, + "source_location": "L1018", + "id": "ui_mount_rationale_1018", + "community": 210, "norm_label": "count immediate child directories of ``parent`` whose names start with ``pre" }, { "label": "Decode the run's creation.json into the metadata-pane payload. Returns ``{}", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1015", - "id": "ui_mount_rationale_1015", - "community": 192, + "source_location": "L1033", + "id": "ui_mount_rationale_1033", + "community": 163, "norm_label": "decode the run's creation.json into the metadata-pane payload. returns ``{}" }, { "label": "Resolve a centre-list selection (file or folder) to a render payload. Phase", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1058", - "id": "ui_mount_rationale_1058", - "community": 192, + "source_location": "L1076", + "id": "ui_mount_rationale_1076", + "community": 163, "norm_label": "resolve a centre-list selection (file or folder) to a render payload. phase" }, { "label": "Aggregate a one-level folder scan into a folder-card payload (OQ-4/B). Phas", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1107", - "id": "ui_mount_rationale_1107", - "community": 192, + "source_location": "L1125", + "id": "ui_mount_rationale_1125", + "community": 163, "norm_label": "aggregate a one-level folder scan into a folder-card payload (oq-4/b). phas" }, { "label": "Mount / rebind the per-tab FolderFeed and return current entries. Uses ``ap", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1148", - "id": "ui_mount_rationale_1148", - "community": 203, + "source_location": "L1166", + "id": "ui_mount_rationale_1166", + "community": 188, "norm_label": "mount / rebind the per-tab folderfeed and return current entries. uses ``ap" }, { "label": "FolderFeed fetch hook. Skips when the tree just walked. Runs the synchronou", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1209", - "id": "ui_mount_rationale_1209", - "community": 203, + "source_location": "L1227", + "id": "ui_mount_rationale_1227", + "community": 188, "norm_label": "folderfeed fetch hook. skips when the tree just walked. runs the synchronou" }, { "label": "Force a fresh single-folder scan and prime the feed payload (OQ-1/A). The F", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1233", - "id": "ui_mount_rationale_1233", - "community": 68, + "source_location": "L1251", + "id": "ui_mount_rationale_1251", + "community": 55, "norm_label": "force a fresh single-folder scan and prime the feed payload (oq-1/a). the f" }, { "label": "Dispatch a per-run context action to its backend surface. Mirrors :func:`ap", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1273", - "id": "ui_mount_rationale_1273", - "community": 68, + "source_location": "L1291", + "id": "ui_mount_rationale_1291", + "community": 55, "norm_label": "dispatch a per-run context action to its backend surface. mirrors :func:`ap" }, - { - "label": "Bulk-clear every staged run whose sync job is verified. Wired from the file", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1331", - "id": "ui_mount_rationale_1331", - "community": 168, - "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file" - }, { "label": "Handle ``Open in OS`` / ``Copy path`` / ``Keep local`` file actions.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1376", - "id": "ui_mount_rationale_1376", - "community": 168, + "source_location": "L1356", + "id": "ui_mount_rationale_1356", + "community": 161, "norm_label": "handle ``open in os`` / ``copy path`` / ``keep local`` file actions." }, { "label": "Flip a file's ``keep_local`` flag via the orchestrator's writer. Operator-f", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1415", - "id": "ui_mount_rationale_1415", - "community": 68, + "source_location": "L1395", + "id": "ui_mount_rationale_1395", + "community": 55, "norm_label": "flip a file's ``keep_local`` flag via the orchestrator's writer. operator-f" }, { "label": "Launch the host OS's default opener for ``path``. Returns False on platform", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1458", - "id": "ui_mount_rationale_1458", - "community": 175, + "source_location": "L1438", + "id": "ui_mount_rationale_1438", + "community": 164, "norm_label": "launch the host os's default opener for ``path``. returns false on platform" }, { "label": "Build the Operations-panel rows from the live session store (T3). Uses the", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1486", - "id": "ui_mount_rationale_1486", - "community": 57, + "source_location": "L1466", + "id": "ui_mount_rationale_1466", + "community": 28, "norm_label": "build the operations-panel rows from the live session store (t3). uses the" }, { "label": "Open the in-flight Operations panel (Frontend \u00a79.5). Builds a fresh snapsho", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1498", - "id": "ui_mount_rationale_1498", - "community": 154, + "source_location": "L1478", + "id": "ui_mount_rationale_1478", + "community": 28, "norm_label": "open the in-flight operations panel (frontend \u00a79.5). builds a fresh snapsho" }, { "label": "Show a lightweight details/\"log\" dialog for one in-flight operation. The \u00a79", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1522", - "id": "ui_mount_rationale_1522", - "community": 175, + "source_location": "L1502", + "id": "ui_mount_rationale_1502", + "community": 164, "norm_label": "show a lightweight details/\"log\" dialog for one in-flight operation. the \u00a79" }, { "label": "Resume a suspended session by re-opening its \u00a79.1 input dialog (T5). Reads", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1556", - "id": "ui_mount_rationale_1556", - "community": 154, + "source_location": "L1536", + "id": "ui_mount_rationale_1536", + "community": 28, "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads" }, { "label": "Open the \u00a79.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1588", - "id": "ui_mount_rationale_1588", - "community": 154, + "source_location": "L1568", + "id": "ui_mount_rationale_1568", + "community": 40, "norm_label": "open the \u00a79.1 escalation dialog; submit resumes, cancel confirms (t5). subm" }, { "label": "Resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1626", - "id": "ui_mount_rationale_1626", - "community": 57, + "source_location": "L1606", + "id": "ui_mount_rationale_1606", + "community": 28, "norm_label": "resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog." }, { "label": "Cancel an in-flight session via the \u00a79.4 Discard / Keep dialog (T4). The op", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1635", - "id": "ui_mount_rationale_1635", - "community": 57, + "source_location": "L1615", + "id": "ui_mount_rationale_1615", + "community": 28, "norm_label": "cancel an in-flight session via the \u00a79.4 discard / keep dialog (t4). the op" }, { "label": "Open a NiceGUI dialog showing the run's sync-queue job state. The operator-", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1676", - "id": "ui_mount_rationale_1676", - "community": 68, + "source_location": "L1656", + "id": "ui_mount_rationale_1656", + "community": 55, "norm_label": "open a nicegui dialog showing the run's sync-queue job state. the operator-" }, { "label": "Return the settings sections the operator still needs to fill in. Mirrors a", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1724", - "id": "ui_mount_rationale_1724", - "community": 204, + "source_location": "L1704", + "id": "ui_mount_rationale_1704", + "community": 82, "norm_label": "return the settings sections the operator still needs to fill in. mirrors a" }, { "label": "Return the configured templates directory, or ``None``.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1757", - "id": "ui_mount_rationale_1757", - "community": 69, + "source_location": "L1737", + "id": "ui_mount_rationale_1737", + "community": 40, "norm_label": "return the configured templates directory, or ``none``." }, { "label": "List template directory names of ``template_type`` under templates_dir.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1765", - "id": "ui_mount_rationale_1765", - "community": 69, + "source_location": "L1745", + "id": "ui_mount_rationale_1745", + "community": 40, "norm_label": "list template directory names of ``template_type`` under templates_dir." }, { "label": "Map each ``template_type`` template name to its parsed copier questions. Re", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1782", - "id": "ui_mount_rationale_1782", - "community": 69, + "source_location": "L1762", + "id": "ui_mount_rationale_1762", + "community": 63, "norm_label": "map each ``template_type`` template name to its parsed copier questions. re" }, { "label": "Read the offline-catalogue projects (disconnected-workstation source). Read", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1815", - "id": "ui_mount_rationale_1815", - "community": 119, + "source_location": "L1795", + "id": "ui_mount_rationale_1795", + "community": 162, "norm_label": "read the offline-catalogue projects (disconnected-workstation source). read" }, { "label": "Return the LIMS projects backing the project wizard's picker. Tries the liv", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1849", - "id": "ui_mount_rationale_1849", - "community": 266, + "source_location": "L1829", + "id": "ui_mount_rationale_1829", + "community": 162, "norm_label": "return the lims projects backing the project wizard's picker. tries the liv" }, { "label": "Return the configured equipment IDs.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1879", - "id": "ui_mount_rationale_1879", - "community": 119, + "source_location": "L1859", + "id": "ui_mount_rationale_1859", + "community": 40, "norm_label": "return the configured equipment ids." }, { "label": "Await a controller session's pipeline task and return the final handle. ``c", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1887", - "id": "ui_mount_rationale_1887", - "community": 100, + "source_location": "L1867", + "id": "ui_mount_rationale_1867", + "community": 63, "norm_label": "await a controller session's pipeline task and return the final handle. ``c" }, { "label": "Fold the controller's WS frames into the wizard's live phase bar (T2) and su", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1906", - "id": "ui_mount_rationale_1906", - "community": 194, + "source_location": "L1886", + "id": "ui_mount_rationale_1886", + "community": 40, "norm_label": "fold the controller's ws frames into the wizard's live phase bar (t2) and su" }, { "label": "Best-effort close of a NiceGUI dialog (no-op when ``None`` / test mode).", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1949", - "id": "ui_mount_rationale_1949", - "community": 194, + "source_location": "L1929", + "id": "ui_mount_rationale_1929", + "community": 40, "norm_label": "best-effort close of a nicegui dialog (no-op when ``none`` / test mode)." }, { "label": "Build a ProjectCreateRequest from the wizard state and run it.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1957", - "id": "ui_mount_rationale_1957", - "community": 119, + "source_location": "L1937", + "id": "ui_mount_rationale_1937", + "community": 63, "norm_label": "build a projectcreaterequest from the wizard state and run it." }, { "label": "Build a RunCreateRequest from the wizard state and run it.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1990", - "id": "ui_mount_rationale_1990", - "community": 69, + "source_location": "L1970", + "id": "ui_mount_rationale_1970", + "community": 99, "norm_label": "build a runcreaterequest from the wizard state and run it." }, { "label": "Drive a create_* call to completion and toast the outcome. When ``wizard_st", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L2031", - "id": "ui_mount_rationale_2031", - "community": 100, + "source_location": "L2011", + "id": "ui_mount_rationale_2011", + "community": 99, "norm_label": "drive a create_* call to completion and toast the outcome. when ``wizard_st" }, { "label": "Run the validator audit, swallowing failures to a WARN log.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L2074", - "id": "ui_mount_rationale_2074", - "community": 100, + "source_location": "L2054", + "id": "ui_mount_rationale_2054", + "community": 99, "norm_label": "run the validator audit, swallowing failures to a warn log." }, { @@ -40977,7 +42138,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L1", "id": "src_exlab_wizard_ui_keyboard_py", - "community": 236, + "community": 240, "norm_label": "keyboard.py" }, { @@ -40986,7 +42147,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L24", "id": "ui_keyboard_shortcut", - "community": 236, + "community": 240, "norm_label": "shortcut" }, { @@ -40995,7 +42156,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L39", "id": "ui_keyboard_keycombo", - "community": 155, + "community": 165, "norm_label": "keycombo" }, { @@ -41004,7 +42165,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L48", "id": "ui_keyboard_keycombo_matches", - "community": 236, + "community": 240, "norm_label": ".matches()" }, { @@ -41013,7 +42174,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L61", "id": "ui_keyboard_shortcutbinding", - "community": 236, + "community": 240, "norm_label": "shortcutbinding" }, { @@ -41022,7 +42183,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L130", "id": "ui_keyboard_shortcutregistry", - "community": 253, + "community": 257, "norm_label": "shortcutregistry" }, { @@ -41031,7 +42192,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L140", "id": "ui_keyboard_shortcutregistry_register", - "community": 253, + "community": 257, "norm_label": ".register()" }, { @@ -41040,7 +42201,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L154", "id": "ui_keyboard_shortcutregistry_dispatch", - "community": 253, + "community": 257, "norm_label": ".dispatch()" }, { @@ -41049,7 +42210,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L175", "id": "ui_keyboard_list_bindings", - "community": 355, + "community": 356, "norm_label": "list_bindings()" }, { @@ -41058,7 +42219,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L181", "id": "ui_keyboard_get_binding", - "community": 155, + "community": 165, "norm_label": "get_binding()" }, { @@ -41067,7 +42228,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L194", "id": "ui_keyboard_is_macos", - "community": 236, + "community": 240, "norm_label": "is_macos()" }, { @@ -41076,7 +42237,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L200", "id": "ui_keyboard_combo_for_current_os", - "community": 354, + "community": 357, "norm_label": "combo_for_current_os()" }, { @@ -41085,7 +42246,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L207", "id": "ui_keyboard_resolve", - "community": 236, + "community": 240, "norm_label": "resolve()" }, { @@ -41094,7 +42255,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L224", "id": "ui_keyboard_bind_global_shortcuts", - "community": 236, + "community": 240, "norm_label": "bind_global_shortcuts()" }, { @@ -41103,7 +42264,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L1", "id": "ui_keyboard_rationale_1", - "community": 236, + "community": 240, "norm_label": "keyboard-shortcut registry (frontend spec \u00a73.7). the bindings are intentionally" }, { @@ -41112,7 +42273,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L25", "id": "ui_keyboard_rationale_25", - "community": 236, + "community": 240, "norm_label": "identifiers for the app-level shortcut set (frontend \u00a73.7)." }, { @@ -41121,7 +42282,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L40", "id": "ui_keyboard_rationale_40", - "community": 155, + "community": 165, "norm_label": "a modifier-and-key combination." }, { @@ -41130,7 +42291,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L49", "id": "ui_keyboard_rationale_49", - "community": 236, + "community": 240, "norm_label": "return true if a nicegui ``keyeventarguments`` matches this combo." }, { @@ -41139,7 +42300,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L62", "id": "ui_keyboard_rationale_62", - "community": 236, + "community": 240, "norm_label": "one row in the \u00a73.7 shortcut table." }, { @@ -41148,7 +42309,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L131", "id": "ui_keyboard_rationale_131", - "community": 253, + "community": 257, "norm_label": "a populated registry of shortcut handlers. pages instantiate one registry," }, { @@ -41157,7 +42318,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L141", "id": "ui_keyboard_rationale_141", - "community": 253, + "community": 257, "norm_label": "attach a handler. only one handler per shortcut. raises: va" }, { @@ -41166,7 +42327,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L155", "id": "ui_keyboard_rationale_155", - "community": 253, + "community": 257, "norm_label": "invoke the handler for ``shortcut`` if registered. returns ``true`` if" }, { @@ -41175,7 +42336,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L176", "id": "ui_keyboard_rationale_176", - "community": 355, + "community": 356, "norm_label": "return the canonical bindings table (frontend \u00a73.7)." }, { @@ -41184,7 +42345,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L182", "id": "ui_keyboard_rationale_182", - "community": 155, + "community": 165, "norm_label": "return the :class:`shortcutbinding` for the given shortcut id. raises:" }, { @@ -41193,7 +42354,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L195", "id": "ui_keyboard_rationale_195", - "community": 236, + "community": 240, "norm_label": "return ``true`` when running on macos (used for combo selection)." }, { @@ -41202,7 +42363,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L201", "id": "ui_keyboard_rationale_201", - "community": 354, + "community": 357, "norm_label": "resolve the :class:`keycombo` for the current os." }, { @@ -41211,7 +42372,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L215", "id": "ui_keyboard_rationale_215", - "community": 236, + "community": 240, "norm_label": "find the shortcut id matching the given key event, if any." }, { @@ -41220,7 +42381,7 @@ "source_file": "src/exlab_wizard/ui/keyboard.py", "source_location": "L225", "id": "ui_keyboard_rationale_225", - "community": 236, + "community": 240, "norm_label": "install a nicegui keyboard listener for the registry. nicegui is imported l" }, { @@ -41229,14 +42390,14 @@ "source_file": "src/exlab_wizard/ui/components/file_list.py", "source_location": "L1", "id": "src_exlab_wizard_ui_components_file_list_py", - "community": 195, + "community": 202, "norm_label": "file_list.py" }, { "label": "FileListEntry", "file_type": "code", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L38", + "source_location": "L39", "id": "components_file_list_filelistentry", "community": 0, "norm_label": "filelistentry" @@ -41245,63 +42406,63 @@ "label": "FileListState", "file_type": "code", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L58", + "source_location": "L59", "id": "components_file_list_fileliststate", - "community": 211, + "community": 147, "norm_label": "fileliststate" }, { "label": "FileListDiff", "file_type": "code", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L71", + "source_location": "L72", "id": "components_file_list_filelistdiff", - "community": 195, + "community": 201, "norm_label": "filelistdiff" }, { "label": "diff_file_lists()", "file_type": "code", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L79", + "source_location": "L80", "id": "components_file_list_diff_file_lists", - "community": 169, + "community": 201, "norm_label": "diff_file_lists()" }, { "label": "row_background()", "file_type": "code", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L115", + "source_location": "L116", "id": "components_file_list_row_background", - "community": 169, + "community": 139, "norm_label": "row_background()" }, { "label": "render_file_list()", "file_type": "code", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L172", + "source_location": "L173", "id": "components_file_list_render_file_list", - "community": 195, + "community": 202, "norm_label": "render_file_list()" }, { "label": "_render_header()", "file_type": "code", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L220", + "source_location": "L223", "id": "components_file_list_render_header", - "community": 195, + "community": 202, "norm_label": "_render_header()" }, { "label": "_render_row()", "file_type": "code", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L245", + "source_location": "L248", "id": "components_file_list_render_row", - "community": 195, + "community": 202, "norm_label": "_render_row()" }, { @@ -41310,15 +42471,15 @@ "source_file": "src/exlab_wizard/ui/components/file_list.py", "source_location": "L1", "id": "components_file_list_rationale_1", - "community": 195, + "community": 202, "norm_label": "live file-list component for the rebuilt main window. gui/orchestrator redesign" }, { "label": "One row in the centre-pane file list. ``keep_local`` mirrors the file's ``s", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L39", - "id": "components_file_list_rationale_39", + "source_location": "L40", + "id": "components_file_list_rationale_40", "community": 0, "norm_label": "one row in the centre-pane file list. ``keep_local`` mirrors the file's ``s" }, @@ -41326,54 +42487,54 @@ "label": "Mutable state for the file list, consumed by the renderer.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L59", - "id": "components_file_list_rationale_59", - "community": 211, + "source_location": "L60", + "id": "components_file_list_rationale_60", + "community": 147, "norm_label": "mutable state for the file list, consumed by the renderer." }, { "label": "Result of comparing two successive folder-list snapshots.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L72", - "id": "components_file_list_rationale_72", - "community": 195, + "source_location": "L73", + "id": "components_file_list_rationale_73", + "community": 201, "norm_label": "result of comparing two successive folder-list snapshots." }, { "label": "Return additions / removals / modifications between two snapshots. Pure fun", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L83", - "id": "components_file_list_rationale_83", - "community": 169, + "source_location": "L84", + "id": "components_file_list_rationale_84", + "community": 201, "norm_label": "return additions / removals / modifications between two snapshots. pure fun" }, { "label": "Return the CSS background + decoration fragment for one file-list row. Pure", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L122", - "id": "components_file_list_rationale_122", - "community": 169, + "source_location": "L123", + "id": "components_file_list_rationale_123", + "community": 139, "norm_label": "return the css background + decoration fragment for one file-list row. pure" }, { "label": "Render the centre-pane file list. Pure render function. Double-clicking a f", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L179", - "id": "components_file_list_rationale_179", - "community": 195, + "source_location": "L180", + "id": "components_file_list_rationale_180", + "community": 202, "norm_label": "render the centre-pane file list. pure render function. double-clicking a f" }, { "label": "Render the file-list column header row (Name / Size / Modified / Status).", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L221", - "id": "components_file_list_rationale_221", - "community": 195, + "source_location": "L224", + "id": "components_file_list_rationale_224", + "community": 202, "norm_label": "render the file-list column header row (name / size / modified / status)." }, { @@ -41382,7 +42543,7 @@ "source_file": "src/exlab_wizard/ui/components/test_connection_panel.py", "source_location": "L1", "id": "src_exlab_wizard_ui_components_test_connection_panel_py", - "community": 237, + "community": 228, "norm_label": "test_connection_panel.py" }, { @@ -41391,7 +42552,7 @@ "source_file": "src/exlab_wizard/ui/components/test_connection_panel.py", "source_location": "L29", "id": "components_test_connection_panel_testconnectionresult", - "community": 237, + "community": 228, "norm_label": "testconnectionresult" }, { @@ -41400,7 +42561,7 @@ "source_file": "src/exlab_wizard/ui/components/test_connection_panel.py", "source_location": "L38", "id": "components_test_connection_panel_panel_props", - "community": 237, + "community": 228, "norm_label": "panel_props()" }, { @@ -41409,7 +42570,7 @@ "source_file": "src/exlab_wizard/ui/components/test_connection_panel.py", "source_location": "L69", "id": "components_test_connection_panel_test_connection_panel", - "community": 237, + "community": 228, "norm_label": "test_connection_panel()" }, { @@ -41418,7 +42579,7 @@ "source_file": "src/exlab_wizard/ui/components/test_connection_panel.py", "source_location": "L1", "id": "components_test_connection_panel_rationale_1", - "community": 237, + "community": 228, "norm_label": "test-connection result panel (frontend spec \u00a77.4.2). a persistent inline panel" }, { @@ -41427,7 +42588,7 @@ "source_file": "src/exlab_wizard/ui/components/test_connection_panel.py", "source_location": "L30", "id": "components_test_connection_panel_rationale_30", - "community": 237, + "community": 228, "norm_label": "one result rendered in the panel." }, { @@ -41436,7 +42597,7 @@ "source_file": "src/exlab_wizard/ui/components/test_connection_panel.py", "source_location": "L39", "id": "components_test_connection_panel_rationale_39", - "community": 237, + "community": 228, "norm_label": "compute the rendered props for the panel. returns a dict suitable for asser" }, { @@ -41445,7 +42606,7 @@ "source_file": "src/exlab_wizard/ui/components/test_connection_panel.py", "source_location": "L74", "id": "components_test_connection_panel_rationale_74", - "community": 237, + "community": 228, "norm_label": "build the inline result panel. returns a nicegui element, or the props dict" }, { @@ -41454,7 +42615,7 @@ "source_file": "src/exlab_wizard/ui/components/override_badge.py", "source_location": "L1", "id": "src_exlab_wizard_ui_components_override_badge_py", - "community": 356, + "community": 358, "norm_label": "override_badge.py" }, { @@ -41463,7 +42624,7 @@ "source_file": "src/exlab_wizard/ui/components/override_badge.py", "source_location": "L20", "id": "components_override_badge_override_badge_props", - "community": 356, + "community": 358, "norm_label": "override_badge_props()" }, { @@ -41472,7 +42633,7 @@ "source_file": "src/exlab_wizard/ui/components/override_badge.py", "source_location": "L38", "id": "components_override_badge_override_badge", - "community": 356, + "community": 358, "norm_label": "override_badge()" }, { @@ -41481,7 +42642,7 @@ "source_file": "src/exlab_wizard/ui/components/override_badge.py", "source_location": "L1", "id": "components_override_badge_rationale_1", - "community": 356, + "community": 358, "norm_label": "override pill (frontend spec \u00a73.6.1, \u00a711). a pill that appears next to a run's" }, { @@ -41490,7 +42651,7 @@ "source_file": "src/exlab_wizard/ui/components/override_badge.py", "source_location": "L21", "id": "components_override_badge_rationale_21", - "community": 356, + "community": 358, "norm_label": "compute styling props for the override pill." }, { @@ -41499,7 +42660,7 @@ "source_file": "src/exlab_wizard/ui/components/override_badge.py", "source_location": "L39", "id": "components_override_badge_rationale_39", - "community": 356, + "community": 358, "norm_label": "build a clickable badge for the override state. clicking opens the \u00a711.5 ov" }, { @@ -41508,7 +42669,7 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L1", "id": "src_exlab_wizard_ui_components_tree_py", - "community": 83, + "community": 79, "norm_label": "tree.py" }, { @@ -41517,7 +42678,7 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L71", "id": "components_tree_treefilters", - "community": 83, + "community": 79, "norm_label": "treefilters" }, { @@ -41526,7 +42687,7 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L81", "id": "components_tree_equipmentnode", - "community": 83, + "community": 79, "norm_label": "equipmentnode" }, { @@ -41535,7 +42696,7 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L90", "id": "components_tree_projectnode", - "community": 83, + "community": 79, "norm_label": "projectnode" }, { @@ -41544,7 +42705,7 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L97", "id": "components_tree_runnode", - "community": 83, + "community": 79, "norm_label": "runnode" }, { @@ -41553,7 +42714,7 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L105", "id": "components_tree_treenode", - "community": 83, + "community": 79, "norm_label": "treenode" }, { @@ -41562,7 +42723,7 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L117", "id": "components_tree_matches_search", - "community": 83, + "community": 79, "norm_label": "_matches_search()" }, { @@ -41571,7 +42732,7 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L125", "id": "components_tree_filter_project", - "community": 83, + "community": 79, "norm_label": "filter_project()" }, { @@ -41580,7 +42741,7 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L139", "id": "components_tree_filter_run", - "community": 83, + "community": 79, "norm_label": "filter_run()" }, { @@ -41589,7 +42750,7 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L148", "id": "components_tree_build_nodes", - "community": 83, + "community": 79, "norm_label": "build_nodes()" }, { @@ -41598,7 +42759,7 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L235", "id": "components_tree_sync_icon_url", - "community": 83, + "community": 79, "norm_label": "_sync_icon_url()" }, { @@ -41607,34 +42768,34 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L251", "id": "components_tree_to_nicegui_nodes", - "community": 83, + "community": 79, "norm_label": "to_nicegui_nodes()" }, { "label": "_ctx_emit()", "file_type": "code", "source_file": "src/exlab_wizard/ui/components/tree.py", - "source_location": "L297", + "source_location": "L305", "id": "components_tree_ctx_emit", - "community": 83, + "community": 79, "norm_label": "_ctx_emit()" }, { "label": "_tree_header_slot()", "file_type": "code", "source_file": "src/exlab_wizard/ui/components/tree.py", - "source_location": "L312", + "source_location": "L320", "id": "components_tree_tree_header_slot", - "community": 83, + "community": 79, "norm_label": "_tree_header_slot()" }, { "label": "build_tree()", "file_type": "code", "source_file": "src/exlab_wizard/ui/components/tree.py", - "source_location": "L363", + "source_location": "L372", "id": "components_tree_build_tree", - "community": 83, + "community": 79, "norm_label": "build_tree()" }, { @@ -41643,7 +42804,7 @@ "source_file": "src/exlab_wizard/ui/components/tree.py", "source_location": "L1", "id": "components_tree_rationale_1", - "community": 83, + "community": 79, "norm_label": "project / equipment tree (frontend spec \u00a73.5). renders the ``/``; returns none on 404. ``uid_or_short_id``" }, { @@ -45585,7 +46890,7 @@ "source_file": "src/exlab_wizard/lims/client.py", "source_location": "L140", "id": "lims_client_rationale_140", - "community": 84, + "community": 98, "norm_label": "``get /api/v1/me``; returns the current operator's row." }, { @@ -45594,7 +46899,7 @@ "source_file": "src/exlab_wizard/lims/client.py", "source_location": "L145", "id": "lims_client_rationale_145", - "community": 84, + "community": 98, "norm_label": "return a ``healthstatus`` snapshot. backend spec \u00a77.2.3. calls ``get /a" }, { @@ -45603,7 +46908,7 @@ "source_file": "src/exlab_wizard/lims/client.py", "source_location": "L168", "id": "lims_client_rationale_168", - "community": 84, + "community": 98, "norm_label": "close the underlying ``httpx.asyncclient``. idempotent." }, { @@ -45612,7 +46917,7 @@ "source_file": "src/exlab_wizard/lims/client.py", "source_location": "L181", "id": "lims_client_rationale_181", - "community": 84, + "community": 98, "norm_label": "issue one request; on 401 retry once after a fresh ``login``." }, { @@ -45621,7 +46926,7 @@ "source_file": "src/exlab_wizard/lims/client.py", "source_location": "L191", "id": "lims_client_rationale_191", - "community": 602, + "community": 627, "norm_label": "decode one ``/projects`` row into limsproject. adds a fresh utc ``fetch" }, { @@ -45630,7 +46935,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L1", "id": "src_exlab_wizard_lims_cache_py", - "community": 257, + "community": 254, "norm_label": "cache.py" }, { @@ -45639,7 +46944,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L102", "id": "lims_cache_limscache", - "community": 122, + "community": 128, "norm_label": "limscache" }, { @@ -45648,7 +46953,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L110", "id": "lims_cache_limscache_init", - "community": 122, + "community": 128, "norm_label": ".__init__()" }, { @@ -45657,7 +46962,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L123", "id": "lims_cache_limscache_close", - "community": 122, + "community": 128, "norm_label": ".close()" }, { @@ -45666,7 +46971,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L129", "id": "lims_cache_limscache_upsert_many", - "community": 257, + "community": 254, "norm_label": ".upsert_many()" }, { @@ -45675,7 +46980,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L156", "id": "lims_cache_limscache_list_projects", - "community": 257, + "community": 254, "norm_label": ".list_projects()" }, { @@ -45684,7 +46989,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L171", "id": "lims_cache_limscache_get_project", - "community": 257, + "community": 254, "norm_label": ".get_project()" }, { @@ -45693,7 +46998,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L180", "id": "lims_cache_limscache_is_fresh", - "community": 257, + "community": 254, "norm_label": ".is_fresh()" }, { @@ -45702,7 +47007,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L202", "id": "lims_cache_limscache_require_conn", - "community": 257, + "community": 254, "norm_label": "._require_conn()" }, { @@ -45711,7 +47016,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L209", "id": "lims_cache_row_to_project", - "community": 257, + "community": 254, "norm_label": "_row_to_project()" }, { @@ -45720,7 +47025,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L1", "id": "lims_cache_rationale_1", - "community": 257, + "community": 254, "norm_label": "aiosqlite-backed cache for lims project rows. backend spec \u00a77.2.4. the cache li" }, { @@ -45729,7 +47034,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L103", "id": "lims_cache_rationale_103", - "community": 122, + "community": 128, "norm_label": "sqlite ttl cache for lims project rows. backend spec \u00a77.2.4. the cache is a" }, { @@ -45738,7 +47043,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L116", "id": "lims_cache_rationale_116", - "community": 122, + "community": 128, "norm_label": "create the table and index if absent. idempotent." }, { @@ -45747,7 +47052,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L124", "id": "lims_cache_rationale_124", - "community": 122, + "community": 128, "norm_label": "close the underlying aiosqlite connection." }, { @@ -45756,7 +47061,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L130", "id": "lims_cache_rationale_130", - "community": 257, + "community": 254, "norm_label": "insert or update every row. ``last_refreshed`` is taken from each ``lims" }, { @@ -45765,7 +47070,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L159", "id": "lims_cache_rationale_159", - "community": 257, + "community": 254, "norm_label": "return every cached project for ``endpoint``, optionally filtered by ``s" }, { @@ -45774,7 +47079,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L172", "id": "lims_cache_rationale_172", - "community": 257, + "community": 254, "norm_label": "return one project by uid or short_id, or none if absent." }, { @@ -45783,7 +47088,7 @@ "source_file": "src/exlab_wizard/lims/cache.py", "source_location": "L181", "id": "lims_cache_rationale_181", - "community": 257, + "community": 254, "norm_label": "true iff the most recent ``last_refreshed`` is within ``ttl_hours`` of t" }, { @@ -45792,7 +47097,7 @@ "source_file": "src/exlab_wizard/lims/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_lims_init_py", - "community": 433, + "community": 471, "norm_label": "__init__.py" }, { @@ -45801,7 +47106,7 @@ "source_file": "src/exlab_wizard/lims/schemas.py", "source_location": "L1", "id": "src_exlab_wizard_lims_schemas_py", - "community": 84, + "community": 98, "norm_label": "schemas.py" }, { @@ -45810,7 +47115,7 @@ "source_file": "src/exlab_wizard/lims/schemas.py", "source_location": "L36", "id": "lims_schemas_limsproject", - "community": 84, + "community": 137, "norm_label": "limsproject" }, { @@ -45819,7 +47124,7 @@ "source_file": "", "source_location": "", "id": "struct", - "community": 229, + "community": 0, "norm_label": "struct" }, { @@ -45828,7 +47133,7 @@ "source_file": "src/exlab_wizard/lims/schemas.py", "source_location": "L60", "id": "lims_schemas_limsuser", - "community": 84, + "community": 98, "norm_label": "limsuser" }, { @@ -45837,7 +47142,7 @@ "source_file": "src/exlab_wizard/lims/schemas.py", "source_location": "L79", "id": "lims_schemas_healthstatus", - "community": 84, + "community": 98, "norm_label": "healthstatus" }, { @@ -45846,7 +47151,7 @@ "source_file": "src/exlab_wizard/lims/schemas.py", "source_location": "L1", "id": "lims_schemas_rationale_1", - "community": 84, + "community": 98, "norm_label": "msgspec.struct types for the lims read-only client. backend spec \u00a77.2. these ty" }, { @@ -45855,7 +47160,7 @@ "source_file": "src/exlab_wizard/lims/schemas.py", "source_location": "L41", "id": "lims_schemas_rationale_41", - "community": 84, + "community": 137, "norm_label": "one lims project row. backend spec \u00a77.2.3. the ``metadata`` field is a json" }, { @@ -45864,7 +47169,7 @@ "source_file": "src/exlab_wizard/lims/schemas.py", "source_location": "L66", "id": "lims_schemas_rationale_66", - "community": 84, + "community": 98, "norm_label": "one lims user row. backend spec \u00a77.2.3. mirrors the upstream ``safe_user``" }, { @@ -45873,7 +47178,7 @@ "source_file": "src/exlab_wizard/lims/schemas.py", "source_location": "L80", "id": "lims_schemas_rationale_80", - "community": 84, + "community": 98, "norm_label": "result of ``limsclient.health_check()``. backend spec \u00a77.2.3. ``ok`` is tru" }, { @@ -45882,7 +47187,7 @@ "source_file": "src/exlab_wizard/lims/catalogue.py", "source_location": "L1", "id": "src_exlab_wizard_lims_catalogue_py", - "community": 158, + "community": 137, "norm_label": "catalogue.py" }, { @@ -45891,7 +47196,7 @@ "source_file": "src/exlab_wizard/lims/catalogue.py", "source_location": "L51", "id": "lims_catalogue_offlinecatalogue", - "community": 158, + "community": 137, "norm_label": "offlinecatalogue" }, { @@ -45900,7 +47205,7 @@ "source_file": "src/exlab_wizard/lims/catalogue.py", "source_location": "L72", "id": "lims_catalogue_read_catalogue", - "community": 158, + "community": 137, "norm_label": "read_catalogue()" }, { @@ -45909,7 +47214,7 @@ "source_file": "src/exlab_wizard/lims/catalogue.py", "source_location": "L135", "id": "lims_catalogue_write_catalogue", - "community": 158, + "community": 137, "norm_label": "write_catalogue()" }, { @@ -45918,7 +47223,7 @@ "source_file": "src/exlab_wizard/lims/catalogue.py", "source_location": "L155", "id": "lims_catalogue_project_to_dict", - "community": 158, + "community": 137, "norm_label": "_project_to_dict()" }, { @@ -45927,7 +47232,7 @@ "source_file": "src/exlab_wizard/lims/catalogue.py", "source_location": "L1", "id": "lims_catalogue_rationale_1", - "community": 158, + "community": 137, "norm_label": "offline lims project catalogue read/write. backend spec \u00a77.2.9. a catalogue is" }, { @@ -45936,7 +47241,7 @@ "source_file": "src/exlab_wizard/lims/catalogue.py", "source_location": "L52", "id": "lims_catalogue_rationale_52", - "community": 158, + "community": 137, "norm_label": "decoded offline catalogue. backend spec \u00a77.2.9.1. ``schema_version`` is pin" }, { @@ -45945,7 +47250,7 @@ "source_file": "src/exlab_wizard/lims/catalogue.py", "source_location": "L73", "id": "lims_catalogue_rationale_73", - "community": 158, + "community": 137, "norm_label": "read and validate the catalogue file. returns ``none`` (and logs a warn) wh" }, { @@ -45954,7 +47259,7 @@ "source_file": "src/exlab_wizard/lims/catalogue.py", "source_location": "L136", "id": "lims_catalogue_rationale_136", - "community": 158, + "community": 137, "norm_label": "atomically write ``catalogue`` to ``path``. backend spec \u00a77.2.9.2. protocol" }, { @@ -45963,7 +47268,7 @@ "source_file": "src/exlab_wizard/lims/catalogue.py", "source_location": "L156", "id": "lims_catalogue_rationale_156", - "community": 158, + "community": 137, "norm_label": "re-emit a limsproject as a serializable dict." }, { @@ -45972,7 +47277,7 @@ "source_file": "src/exlab_wizard/validator/findings.py", "source_location": "L1", "id": "src_exlab_wizard_validator_findings_py", - "community": 462, + "community": 10, "norm_label": "findings.py" }, { @@ -45981,7 +47286,7 @@ "source_file": "src/exlab_wizard/validator/findings.py", "source_location": "L41", "id": "validator_findings_finding", - "community": 9, + "community": 10, "norm_label": "finding" }, { @@ -45990,7 +47295,7 @@ "source_file": "src/exlab_wizard/validator/findings.py", "source_location": "L90", "id": "validator_findings_finding_to_dict", - "community": 9, + "community": 10, "norm_label": ".to_dict()" }, { @@ -45999,7 +47304,7 @@ "source_file": "src/exlab_wizard/validator/findings.py", "source_location": "L101", "id": "validator_findings_from_dict", - "community": 462, + "community": 10, "norm_label": "from_dict()" }, { @@ -46008,7 +47313,7 @@ "source_file": "src/exlab_wizard/validator/findings.py", "source_location": "L1", "id": "validator_findings_rationale_1", - "community": 462, + "community": 10, "norm_label": "validator finding dataclass and serialization helpers. backend spec \u00a711.8 (find" }, { @@ -46017,7 +47322,7 @@ "source_file": "src/exlab_wizard/validator/findings.py", "source_location": "L42", "id": "validator_findings_rationale_42", - "community": 9, + "community": 10, "norm_label": "one validator finding. backend spec \u00a78.1, \u00a711.8. frozen so findings can be" }, { @@ -46026,7 +47331,7 @@ "source_file": "src/exlab_wizard/validator/findings.py", "source_location": "L91", "id": "validator_findings_rationale_91", - "community": 9, + "community": 10, "norm_label": "return the \u00a711.8 json shape for this finding. the dictionary is suitabl" }, { @@ -46035,7 +47340,7 @@ "source_file": "src/exlab_wizard/validator/findings.py", "source_location": "L102", "id": "validator_findings_rationale_102", - "community": 603, + "community": 628, "norm_label": "reconstruct a :class:`finding` from its \u00a711.8 json shape. the inverse o" }, { @@ -46044,7 +47349,7 @@ "source_file": "src/exlab_wizard/validator/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_validator_init_py", - "community": 434, + "community": 472, "norm_label": "__init__.py" }, { @@ -46053,7 +47358,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L1", "id": "src_exlab_wizard_validator_rules_py", - "community": 228, + "community": 236, "norm_label": "rules.py" }, { @@ -46062,7 +47367,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L83", "id": "validator_rules_check_unresolved_placeholder", - "community": 159, + "community": 148, "norm_label": "check_unresolved_placeholder()" }, { @@ -46071,7 +47376,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L122", "id": "validator_rules_scan_for_placeholders", - "community": 228, + "community": 236, "norm_label": "_scan_for_placeholders()" }, { @@ -46080,7 +47385,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L185", "id": "validator_rules_check_illegal_filesystem_character", - "community": 228, + "community": 148, "norm_label": "check_illegal_filesystem_character()" }, { @@ -46089,7 +47394,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L210", "id": "validator_rules_scan_for_illegal_chars", - "community": 228, + "community": 236, "norm_label": "_scan_for_illegal_chars()" }, { @@ -46098,7 +47403,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L269", "id": "validator_rules_check_reserved_filesystem_name", - "community": 399, + "community": 236, "norm_label": "check_reserved_filesystem_name()" }, { @@ -46107,7 +47412,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L305", "id": "validator_rules_check_unsafe_project_name", - "community": 400, + "community": 236, "norm_label": "check_unsafe_project_name()" }, { @@ -46116,7 +47421,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L339", "id": "validator_rules_check_mode_prefix_mismatch", - "community": 258, + "community": 252, "norm_label": "check_mode_prefix_mismatch()" }, { @@ -46125,7 +47430,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L429", "id": "validator_rules_check_orphan", - "community": 332, + "community": 329, "norm_label": "check_orphan()" }, { @@ -46152,7 +47457,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L520", "id": "validator_rules_check_malformed_yaml_front_matter", - "community": 159, + "community": 302, "norm_label": "check_malformed_yaml_front_matter()" }, { @@ -46161,7 +47466,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L1", "id": "validator_rules_rationale_1", - "community": 228, + "community": 236, "norm_label": "validator rule functions. backend spec \u00a78.1. this module is a pure-function lib" }, { @@ -46170,7 +47475,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L89", "id": "validator_rules_rationale_89", - "community": 159, + "community": 148, "norm_label": "\u00a78.1.1: detect angle-bracket and jinja placeholder tokens. hard-tier. uses" }, { @@ -46179,7 +47484,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L127", "id": "validator_rules_rationale_127", - "community": 228, + "community": 236, "norm_label": "return one finding per placeholder match in ``text``." }, { @@ -46188,7 +47493,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L190", "id": "validator_rules_rationale_190", - "community": 228, + "community": 148, "norm_label": "\u00a78.1.2: detect windows-illegal characters in any segment / file name. illeg" }, { @@ -46197,7 +47502,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L211", "id": "validator_rules_rationale_211", - "community": 228, + "community": 236, "norm_label": "return one finding per illegal character / trailing-rule violation in ``name``." }, { @@ -46206,7 +47511,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L270", "id": "validator_rules_rationale_270", - "community": 399, + "community": 236, "norm_label": "\u00a78.1.2: detect windows reserved names (``con``, ``prn``, ``aux``, ``nul``, `" }, { @@ -46215,7 +47520,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L306", "id": "validator_rules_rationale_306", - "community": 400, + "community": 236, "norm_label": "\u00a73.2: flag a project directory whose name is not a safe path segment. the p" }, { @@ -46224,7 +47529,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L345", "id": "validator_rules_rationale_345", - "community": 258, + "community": 252, "norm_label": "\u00a78.1.3: detect three-way disagreement between ``run_kind``, leaf prefix, and" }, { @@ -46233,7 +47538,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L430", "id": "validator_rules_rationale_430", - "community": 332, + "community": 329, "norm_label": "\u00a78.1.4: detect missing ``creation.json`` at project / run level (not equipme" }, { @@ -46260,7 +47565,7 @@ "source_file": "src/exlab_wizard/validator/rules.py", "source_location": "L521", "id": "validator_rules_rationale_521", - "community": 159, + "community": 302, "norm_label": "\u00a78.1: detect malformed yaml front matter at the head of a markdown file." }, { @@ -46269,7 +47574,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1", "id": "src_exlab_wizard_validator_engine_py", - "community": 198, + "community": 195, "norm_label": "engine.py" }, { @@ -46278,7 +47583,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L114", "id": "validator_engine_creationvalidationinput", - "community": 9, + "community": 10, "norm_label": "creationvalidationinput" }, { @@ -46287,7 +47592,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L162", "id": "validator_engine_split_path_segments", - "community": 32, + "community": 36, "norm_label": "_split_path_segments()" }, { @@ -46296,7 +47601,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L193", "id": "validator_engine_auditscopeequipment", - "community": 198, + "community": 195, "norm_label": "auditscopeequipment" }, { @@ -46305,7 +47610,7 @@ "source_file": "", "source_location": "", "id": "typeddict", - "community": 198, + "community": 195, "norm_label": "typeddict" }, { @@ -46314,7 +47619,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L206", "id": "validator_engine_auditscopeproject", - "community": 198, + "community": 195, "norm_label": "auditscopeproject" }, { @@ -46323,7 +47628,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L217", "id": "validator_engine_auditscopeall", - "community": 198, + "community": 195, "norm_label": "auditscopeall" }, { @@ -46332,7 +47637,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L236", "id": "validator_engine_validator", - "community": 109, + "community": 71, "norm_label": "validator" }, { @@ -46341,7 +47646,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L251", "id": "validator_engine_validator_init", - "community": 112, + "community": 211, "norm_label": ".__init__()" }, { @@ -46350,7 +47655,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L267", "id": "validator_engine_config", - "community": 198, + "community": 195, "norm_label": "config()" }, { @@ -46359,7 +47664,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L275", "id": "validator_engine_validator_reconfigure", - "community": 133, + "community": 211, "norm_label": ".reconfigure()" }, { @@ -46368,7 +47673,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L303", "id": "validator_engine_validator_validate_creation", - "community": 198, + "community": 195, "norm_label": ".validate_creation()" }, { @@ -46377,7 +47682,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L398", "id": "validator_engine_materialise", - "community": 198, + "community": 195, "norm_label": "_materialise()" }, { @@ -46386,7 +47691,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L428", "id": "validator_engine_from_config", - "community": 198, + "community": 195, "norm_label": "from_config()" }, { @@ -46395,7 +47700,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L451", "id": "validator_engine_validator_audit", - "community": 307, + "community": 71, "norm_label": ".audit()" }, { @@ -46404,7 +47709,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L482", "id": "validator_engine_validator_query_problems", - "community": 307, + "community": 71, "norm_label": ".query_problems()" }, { @@ -46413,7 +47718,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L494", "id": "validator_engine_validator_resolve_scope_roots", - "community": 307, + "community": 71, "norm_label": "._resolve_scope_roots()" }, { @@ -46422,7 +47727,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L513", "id": "validator_engine_validator_walk_root", - "community": 307, + "community": 71, "norm_label": "._walk_root()" }, { @@ -46431,7 +47736,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L532", "id": "validator_engine_validator_walk_dir", - "community": 109, + "community": 71, "norm_label": "._walk_dir()" }, { @@ -46440,7 +47745,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L602", "id": "validator_engine_validator_classify_level", - "community": 109, + "community": 71, "norm_label": "._classify_level()" }, { @@ -46449,7 +47754,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L655", "id": "validator_engine_validator_compute_run_path", - "community": 109, + "community": 71, "norm_label": "._compute_run_path()" }, { @@ -46458,7 +47763,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L697", "id": "validator_engine_validator_apply_directory_rules", - "community": 109, + "community": 71, "norm_label": "._apply_directory_rules()" }, { @@ -46467,7 +47772,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L787", "id": "validator_engine_validator_extend_findings", - "community": 109, + "community": 71, "norm_label": "._extend_findings()" }, { @@ -46476,7 +47781,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L814", "id": "validator_engine_validator_apply_missing_required_field_rule", - "community": 109, + "community": 71, "norm_label": "._apply_missing_required_field_rule()" }, { @@ -46485,7 +47790,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L862", "id": "validator_engine_validator_apply_directory_name_rules", - "community": 109, + "community": 71, "norm_label": "._apply_directory_name_rules()" }, { @@ -46494,7 +47799,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L905", "id": "validator_engine_validator_apply_file_rules", - "community": 109, + "community": 71, "norm_label": "._apply_file_rules()" }, { @@ -46503,7 +47808,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L978", "id": "validator_engine_validator_content_scan_eligible", - "community": 109, + "community": 71, "norm_label": "._content_scan_eligible()" }, { @@ -46512,7 +47817,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L996", "id": "validator_engine_validator_read_text_for_scan", - "community": 109, + "community": 71, "norm_label": "._read_text_for_scan()" }, { @@ -46521,7 +47826,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1014", "id": "validator_engine_validator_read_creation_for", - "community": 109, + "community": 71, "norm_label": "._read_creation_for()" }, { @@ -46530,7 +47835,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1041", "id": "validator_engine_extract_overrides_and_sync", - "community": 109, + "community": 71, "norm_label": "_extract_overrides_and_sync()" }, { @@ -46539,7 +47844,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1061", "id": "validator_engine_materialise_audit", - "community": 198, + "community": 195, "norm_label": "_materialise_audit()" }, { @@ -46548,7 +47853,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1112", "id": "validator_engine_tier_rank", - "community": 198, + "community": 195, "norm_label": "_tier_rank()" }, { @@ -46557,7 +47862,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1126", "id": "validator_engine_finding_sort_key", - "community": 198, + "community": 195, "norm_label": "_finding_sort_key()" }, { @@ -46566,7 +47871,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1143", "id": "validator_engine_level_for_orphan", - "community": 401, + "community": 422, "norm_label": "_level_for_orphan()" }, { @@ -46575,7 +47880,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1", "id": "validator_engine_rationale_1", - "community": 198, + "community": 195, "norm_label": "validator engine. backend spec \u00a74.4.4, \u00a78.1, \u00a711.7, \u00a711.8. the engine is the si" }, { @@ -46584,7 +47889,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L115", "id": "validator_engine_rationale_115", - "community": 9, + "community": 10, "norm_label": "input bundle for creation-time validation. backend spec \u00a78.1, \u00a711.8. all fi" }, { @@ -46593,7 +47898,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L163", "id": "validator_engine_rationale_163", - "community": 32, + "community": 36, "norm_label": "split ``proposed_path`` into per-segment names. accepts both posix and wind" }, { @@ -46602,7 +47907,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L194", "id": "validator_engine_rationale_194", - "community": 198, + "community": 195, "norm_label": "audit one equipment subtree. spec \u00a711.8. the ``value`` is the equipment id" }, { @@ -46611,7 +47916,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L207", "id": "validator_engine_rationale_207", - "community": 198, + "community": 195, "norm_label": "audit one ``/`` subtree. spec \u00a711.8. the ``value`` is a" }, { @@ -46620,7 +47925,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L218", "id": "validator_engine_rationale_218", - "community": 198, + "community": 195, "norm_label": "audit every configured equipment + staging when orchestrator on. spec \u00a711.8" }, { @@ -46629,7 +47934,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L237", "id": "validator_engine_rationale_237", - "community": 109, + "community": 71, "norm_label": "run \u00a78.1 rules in creation-time and audit modes. backend spec \u00a711.8. the co" }, { @@ -46638,7 +47943,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L268", "id": "validator_engine_rationale_268", - "community": 604, + "community": 629, "norm_label": "the :class:`validatorconfig` this engine instance was built with. expos" }, { @@ -46647,7 +47952,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L282", "id": "validator_engine_rationale_282", - "community": 133, + "community": 211, "norm_label": "re-seed the config + audit-mode roots in place (no tray relaunch). mirr" }, { @@ -46656,7 +47961,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L304", "id": "validator_engine_rationale_304", - "community": 198, + "community": 195, "norm_label": "run every \u00a78.1 creation-time rule against ``params``. returns a flat li" }, { @@ -46665,7 +47970,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L399", "id": "validator_engine_rationale_399", - "community": 605, + "community": 630, "norm_label": "wrap a rule-helper dict in a :class:`finding`. the \u00a78.1 rule helpers re" }, { @@ -46674,7 +47979,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L429", "id": "validator_engine_rationale_429", - "community": 606, + "community": 631, "norm_label": "build a :class:`validator` from the full ``config.yaml`` model. project" }, { @@ -46683,7 +47988,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L452", "id": "validator_engine_rationale_452", - "community": 307, + "community": 71, "norm_label": "walk a directory subtree and return all findings. backend spec \u00a711.8. u" }, { @@ -46692,7 +47997,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L483", "id": "validator_engine_rationale_483", - "community": 307, + "community": 71, "norm_label": "public read-only alias for :meth:`audit`. backend spec \u00a711.8. read-only" }, { @@ -46701,7 +48006,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L495", "id": "validator_engine_rationale_495", - "community": 307, + "community": 71, "norm_label": "map an :class:`auditscope` onto the directory roots to walk." }, { @@ -46710,7 +48015,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L514", "id": "validator_engine_rationale_514", - "community": 307, + "community": 71, "norm_label": "walk a single subtree rooted at ``root`` (depth-first). returns a flat" }, { @@ -46719,7 +48024,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L539", "id": "validator_engine_rationale_539", - "community": 109, + "community": 71, "norm_label": "recursive ``os.scandir`` walk; apply rules at every level. per-director" }, { @@ -46728,7 +48033,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L607", "id": "validator_engine_rationale_607", - "community": 109, + "community": 71, "norm_label": "classify a directory's role in an equipment subtree. equipment root is" }, { @@ -46737,7 +48042,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L661", "id": "validator_engine_rationale_661", - "community": 109, + "community": 71, "norm_label": "return the \u00a711.8 ``run_path`` for findings at ``directory``. per spec," }, { @@ -46746,7 +48051,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L707", "id": "validator_engine_rationale_707", - "community": 109, + "community": 71, "norm_label": "apply rules whose scope is the run-level directory itself. three rule f" }, { @@ -46755,7 +48060,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L797", "id": "validator_engine_rationale_797", - "community": 109, + "community": 71, "norm_label": "materialise raw rule output into :class:`finding` instances. reduces au" }, { @@ -46764,7 +48069,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L824", "id": "validator_engine_rationale_824", - "community": 109, + "community": 71, "norm_label": "read ``readme_fields.json`` and call ``check_missing_required_field``." }, { @@ -46773,7 +48078,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L871", "id": "validator_engine_rationale_871", - "community": 109, + "community": 71, "norm_label": "apply name-level rules (placeholder + illegal char) to a directory. res" }, { @@ -46782,7 +48087,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L914", "id": "validator_engine_rationale_914", - "community": 109, + "community": 71, "norm_label": "apply file-name + file-content rules to a single file. filename rules (" }, { @@ -46791,7 +48096,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L979", "id": "validator_engine_rationale_979", - "community": 109, + "community": 71, "norm_label": "return true iff the file passes the size + extension gates. spec \u00a78.1.1" }, { @@ -46800,7 +48105,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L997", "id": "validator_engine_rationale_997", - "community": 109, + "community": 71, "norm_label": "read text bytes for placeholder scan, applying the binary sniff. return" }, { @@ -46809,7 +48114,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1017", "id": "validator_engine_rationale_1017", - "community": 109, + "community": 71, "norm_label": "read ``/.exlab-wizard/creation.json`` if present. returns ``" }, { @@ -46818,7 +48123,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1044", "id": "validator_engine_rationale_1044", - "community": 607, + "community": 632, "norm_label": "return ``(active_problem_classes, sync_status)`` for a payload. ``activ" }, { @@ -46827,7 +48132,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1069", "id": "validator_engine_rationale_1069", - "community": 608, + "community": 633, "norm_label": "audit-mode counterpart of :meth:`_materialise`. computes ``override_act" }, { @@ -46836,7 +48141,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1113", "id": "validator_engine_rationale_1113", - "community": 198, + "community": 195, "norm_label": "hard tier sorts before soft tier (\u00a711.8). returns 0 for ``\"hard\"`` and 1 fo" }, { @@ -46845,7 +48150,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1127", "id": "validator_engine_rationale_1127", - "community": 198, + "community": 195, "norm_label": "sort key for the \u00a711.8 finding list ordering. tuple: ``(tier_rank, rule, of" }, { @@ -46854,7 +48159,7 @@ "source_file": "src/exlab_wizard/validator/engine.py", "source_location": "L1144", "id": "validator_engine_rationale_1144", - "community": 401, + "community": 422, "norm_label": "translate the engine-level enum into the rules.check_orphan input. the orph" }, { @@ -46863,7 +48168,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L1", "id": "src_exlab_wizard_cache_equipment_py", - "community": 93, + "community": 231, "norm_label": "equipment.py" }, { @@ -46872,7 +48177,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L63", "id": "cache_equipment_equipmentcachewriter", - "community": 46, + "community": 57, "norm_label": "equipmentcachewriter" }, { @@ -46881,7 +48186,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L73", "id": "cache_equipment_equipmentcachewriter_write_equipment", - "community": 46, + "community": 57, "norm_label": ".write_equipment()" }, { @@ -46890,7 +48195,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L91", "id": "cache_equipment_equipmentcachewriter_read_equipment", - "community": 46, + "community": 57, "norm_label": ".read_equipment()" }, { @@ -46899,7 +48204,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L106", "id": "cache_equipment_equipmentcachewriter_write_test_runs_marker", - "community": 46, + "community": 57, "norm_label": ".write_test_runs_marker()" }, { @@ -46908,7 +48213,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L127", "id": "cache_equipment_write_equipment_sync", - "community": 93, + "community": 231, "norm_label": "_write_equipment_sync()" }, { @@ -46917,7 +48222,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L151", "id": "cache_equipment_read_equipment_sync", - "community": 93, + "community": 231, "norm_label": "_read_equipment_sync()" }, { @@ -46926,7 +48231,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L154", "id": "cache_equipment_equipmentcachewriter_read_test_runs_marker", - "community": 46, + "community": 57, "norm_label": ".read_test_runs_marker()" }, { @@ -46935,7 +48240,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L163", "id": "cache_equipment_read_test_runs_marker_sync", - "community": 93, + "community": 231, "norm_label": "_read_test_runs_marker_sync()" }, { @@ -46944,7 +48249,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L167", "id": "cache_equipment_write_test_runs_marker_sync", - "community": 93, + "community": 231, "norm_label": "_write_test_runs_marker_sync()" }, { @@ -46953,7 +48258,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L183", "id": "cache_equipment_read_existing_first_seen_at", - "community": 93, + "community": 231, "norm_label": "_read_existing_first_seen_at()" }, { @@ -46962,7 +48267,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L1", "id": "cache_equipment_rationale_1", - "community": 93, + "community": 231, "norm_label": "writer for ``equipment.json`` (registry) and ``test_runs.json`` (marker). backe" }, { @@ -46971,7 +48276,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L64", "id": "cache_equipment_rationale_64", - "community": 46, + "community": 57, "norm_label": "writer for ``equipment.json`` and ``test_runs.json``. instances are statele" }, { @@ -46980,7 +48285,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L74", "id": "cache_equipment_rationale_74", - "community": 46, + "community": 57, "norm_label": "write or rewrite the per-equipment ``equipment.json`` file. stamping ru" }, { @@ -46989,7 +48294,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L92", "id": "cache_equipment_rationale_92", - "community": 46, + "community": 57, "norm_label": "read and decode an existing ``equipment.json`` file. uses ``msgspec.jso" }, { @@ -46998,7 +48303,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L107", "id": "cache_equipment_rationale_107", - "community": 46, + "community": 57, "norm_label": "write the ``test_runs.json`` marker file. idempotent per \u00a711.4.2: if th" }, { @@ -47007,7 +48312,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L155", "id": "cache_equipment_rationale_155", - "community": 46, + "community": 57, "norm_label": "read and decode a ``test_runs.json`` marker file. raises ``schemamajorm" }, { @@ -47016,7 +48321,7 @@ "source_file": "src/exlab_wizard/cache/equipment.py", "source_location": "L184", "id": "cache_equipment_rationale_184", - "community": 93, + "community": 231, "norm_label": "return the on-disk ``first_seen_at`` if the file exists. returns ``none`` w" }, { @@ -47025,7 +48330,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_schema.py", "source_location": "L1", "id": "src_exlab_wizard_cache_sync_state_schema_py", - "community": 229, + "community": 6, "norm_label": "sync_state_schema.py" }, { @@ -47034,7 +48339,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_schema.py", "source_location": "L19", "id": "cache_sync_state_schema_filesyncrecord", - "community": 229, + "community": 6, "norm_label": "filesyncrecord" }, { @@ -47043,7 +48348,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_schema.py", "source_location": "L55", "id": "cache_sync_state_schema_syncstatejson", - "community": 229, + "community": 6, "norm_label": "syncstatejson" }, { @@ -47052,7 +48357,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_schema.py", "source_location": "L1", "id": "cache_sync_state_schema_rationale_1", - "community": 229, + "community": 6, "norm_label": "``msgspec.struct`` types for the per-run ``sync_state.json`` cache. operator-fr" }, { @@ -47061,7 +48366,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_schema.py", "source_location": "L24", "id": "cache_sync_state_schema_rationale_24", - "community": 229, + "community": 6, "norm_label": "per-file sync record stored under ``sync_state.json``'s ``files`` map. one" }, { @@ -47070,7 +48375,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_schema.py", "source_location": "L60", "id": "cache_sync_state_schema_rationale_60", - "community": 229, + "community": 6, "norm_label": "``sync_state.json`` per-run sync-state record at schema version 1.0. writte" }, { @@ -47079,7 +48384,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L1", "id": "src_exlab_wizard_cache_sync_state_writer_py", - "community": 93, + "community": 6, "norm_label": "sync_state_writer.py" }, { @@ -47088,7 +48393,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L52", "id": "cache_sync_state_writer_sync_state_path", - "community": 93, + "community": 6, "norm_label": "_sync_state_path()" }, { @@ -47097,7 +48402,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L57", "id": "cache_sync_state_writer_ensure_cache_dir", - "community": 93, + "community": 6, "norm_label": "_ensure_cache_dir()" }, { @@ -47106,7 +48411,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L69", "id": "cache_sync_state_writer_empty_state", - "community": 93, + "community": 6, "norm_label": "_empty_state()" }, { @@ -47115,7 +48420,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L74", "id": "cache_sync_state_writer_syncstatewriter", - "community": 5, + "community": 6, "norm_label": "syncstatewriter" }, { @@ -47124,7 +48429,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L82", "id": "cache_sync_state_writer_syncstatewriter_read", - "community": 251, + "community": 255, "norm_label": ".read()" }, { @@ -47133,7 +48438,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L92", "id": "cache_sync_state_writer_syncstatewriter_read_sync", - "community": 93, + "community": 6, "norm_label": ".read_sync()" }, { @@ -47142,7 +48447,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L108", "id": "cache_sync_state_writer_syncstatewriter_upsert_file", - "community": 5, + "community": 6, "norm_label": ".upsert_file()" }, { @@ -47151,7 +48456,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L147", "id": "cache_sync_state_writer_syncstatewriter_set_keep_local", - "community": 5, + "community": 6, "norm_label": ".set_keep_local()" }, { @@ -47160,7 +48465,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L161", "id": "cache_sync_state_writer_syncstatewriter_mark_cleared", - "community": 5, + "community": 6, "norm_label": ".mark_cleared()" }, { @@ -47169,7 +48474,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L169", "id": "cache_sync_state_writer_syncstatewriter_mark_cleared_sync", - "community": 93, + "community": 6, "norm_label": ".mark_cleared_sync()" }, { @@ -47178,7 +48483,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L180", "id": "cache_sync_state_writer_rollup_state", - "community": 93, + "community": 6, "norm_label": "rollup_state()" }, { @@ -47187,7 +48492,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L202", "id": "cache_sync_state_writer_syncstatewriter_read_blocking", - "community": 93, + "community": 6, "norm_label": "._read_blocking()" }, { @@ -47196,7 +48501,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L208", "id": "cache_sync_state_writer_decode_locked", - "community": 93, + "community": 6, "norm_label": "_decode_locked()" }, { @@ -47205,7 +48510,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L217", "id": "cache_sync_state_writer_syncstatewriter_upsert_file_blocking", - "community": 93, + "community": 6, "norm_label": "._upsert_file_blocking()" }, { @@ -47214,7 +48519,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L256", "id": "cache_sync_state_writer_syncstatewriter_set_keep_local_blocking", - "community": 93, + "community": 6, "norm_label": "._set_keep_local_blocking()" }, { @@ -47223,7 +48528,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L278", "id": "cache_sync_state_writer_syncstatewriter_mark_cleared_blocking", - "community": 93, + "community": 6, "norm_label": "._mark_cleared_blocking()" }, { @@ -47232,7 +48537,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L289", "id": "cache_sync_state_writer_with_file", - "community": 93, + "community": 6, "norm_label": "_with_file()" }, { @@ -47241,7 +48546,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L1", "id": "cache_sync_state_writer_rationale_1", - "community": 93, + "community": 6, "norm_label": "orchestrator-only writer for ``sync_state.json``. operator-free per-file nas sy" }, { @@ -47250,7 +48555,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L53", "id": "cache_sync_state_writer_rationale_53", - "community": 93, + "community": 6, "norm_label": "return the ``sync_state.json`` path under a run directory." }, { @@ -47259,7 +48564,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L58", "id": "cache_sync_state_writer_rationale_58", - "community": 93, + "community": 6, "norm_label": "create ``path``'s parent (the run's ``.exlab-wizard/`` cache) dir. neither" }, { @@ -47268,7 +48573,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L70", "id": "cache_sync_state_writer_rationale_70", - "community": 93, + "community": 6, "norm_label": "return a fresh, file-less :class:`syncstatejson` at the current version." }, { @@ -47277,7 +48582,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L75", "id": "cache_sync_state_writer_rationale_75", - "community": 5, + "community": 6, "norm_label": "writer for ``sync_state.json``. orchestrator-mode only. all public methods" }, { @@ -47286,7 +48591,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L83", "id": "cache_sync_state_writer_rationale_83", - "community": 251, + "community": 255, "norm_label": "read and decode the run's ``sync_state.json``. returns a fresh empty :c" }, { @@ -47295,7 +48600,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L93", "id": "cache_sync_state_writer_rationale_93", - "community": 93, + "community": 6, "norm_label": "blocking variant of :meth:`read` for synchronous callers. :meth:`read`" }, { @@ -47304,7 +48609,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L117", "id": "cache_sync_state_writer_rationale_117", - "community": 5, + "community": 6, "norm_label": "create or update one file record under an exclusive lock. the record fo" }, { @@ -47313,7 +48618,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L153", "id": "cache_sync_state_writer_rationale_153", - "community": 5, + "community": 6, "norm_label": "toggle a file's ``keep_local`` flag, creating the record if absent." }, { @@ -47322,7 +48627,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L162", "id": "cache_sync_state_writer_rationale_162", - "community": 5, + "community": 6, "norm_label": "stamp ``cleared_at`` with the current utc time. called once the run's s" }, { @@ -47331,7 +48636,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L170", "id": "cache_sync_state_writer_rationale_170", - "community": 93, + "community": 6, "norm_label": "blocking variant of :meth:`mark_cleared` for synchronous callers. used" }, { @@ -47340,7 +48645,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L181", "id": "cache_sync_state_writer_rationale_181", - "community": 609, + "community": 634, "norm_label": "derive the run-level :class:`runsyncstate` rollup from ``state``. pure" }, { @@ -47349,7 +48654,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L209", "id": "cache_sync_state_writer_rationale_209", - "community": 610, + "community": 635, "norm_label": "decode ``sync_state.json``, returning an empty state if absent. caller" }, { @@ -47358,7 +48663,7 @@ "source_file": "src/exlab_wizard/cache/sync_state_writer.py", "source_location": "L294", "id": "cache_sync_state_writer_rationale_294", - "community": 611, + "community": 636, "norm_label": "return a copy of ``payload`` with ``files[rel_path]`` set to ``record``." }, { @@ -47367,7 +48672,7 @@ "source_file": "src/exlab_wizard/cache/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_cache_init_py", - "community": 93, + "community": 6, "norm_label": "__init__.py" }, { @@ -47376,7 +48681,7 @@ "source_file": "src/exlab_wizard/cache/__init__.py", "source_location": "L14", "id": "cache_init_lock_path_for", - "community": 93, + "community": 6, "norm_label": "lock_path_for()" }, { @@ -47385,7 +48690,7 @@ "source_file": "src/exlab_wizard/cache/__init__.py", "source_location": "L15", "id": "cache_init_rationale_15", - "community": 93, + "community": 6, "norm_label": "return the advisory file-lock path string for ``path``. centralizes the ``s" }, { @@ -47394,7 +48699,7 @@ "source_file": "src/exlab_wizard/cache/log_writer.py", "source_location": "L1", "id": "src_exlab_wizard_cache_log_writer_py", - "community": 33, + "community": 34, "norm_label": "log_writer.py" }, { @@ -47403,7 +48708,7 @@ "source_file": "src/exlab_wizard/cache/log_writer.py", "source_location": "L72", "id": "cache_log_writer_format_log_line", - "community": 33, + "community": 34, "norm_label": "format_log_line()" }, { @@ -47412,7 +48717,7 @@ "source_file": "src/exlab_wizard/cache/log_writer.py", "source_location": "L115", "id": "cache_log_writer_render_tags", - "community": 33, + "community": 34, "norm_label": "_render_tags()" }, { @@ -47421,7 +48726,7 @@ "source_file": "src/exlab_wizard/cache/log_writer.py", "source_location": "L143", "id": "cache_log_writer_truncate_if_needed", - "community": 33, + "community": 34, "norm_label": "_truncate_if_needed()" }, { @@ -47430,7 +48735,7 @@ "source_file": "src/exlab_wizard/cache/log_writer.py", "source_location": "L182", "id": "cache_log_writer_append_log_line", - "community": 33, + "community": 34, "norm_label": "append_log_line()" }, { @@ -47439,7 +48744,7 @@ "source_file": "src/exlab_wizard/cache/log_writer.py", "source_location": "L1", "id": "cache_log_writer_rationale_1", - "community": 33, + "community": 34, "norm_label": "append-only writer for ``wizard..log`` files. backend spec \u00a711.5, \u00a716." }, { @@ -47448,7 +48753,7 @@ "source_file": "src/exlab_wizard/cache/log_writer.py", "source_location": "L83", "id": "cache_log_writer_rationale_83", - "community": 33, + "community": 34, "norm_label": "render a structured log line per backend spec \u00a711.5 / \u00a716.4. tags are omitt" }, { @@ -47457,7 +48762,7 @@ "source_file": "src/exlab_wizard/cache/log_writer.py", "source_location": "L123", "id": "cache_log_writer_rationale_123", - "community": 33, + "community": 34, "norm_label": "render the supplied context as ``[host:..] [equip:..] ...``. returns the em" }, { @@ -47466,7 +48771,7 @@ "source_file": "src/exlab_wizard/cache/log_writer.py", "source_location": "L144", "id": "cache_log_writer_rationale_144", - "community": 33, + "community": 34, "norm_label": "trim ``line`` so its utf-8 byte length is at most ``log_line_max_bytes``. t" }, { @@ -47475,7 +48780,7 @@ "source_file": "src/exlab_wizard/cache/log_writer.py", "source_location": "L183", "id": "cache_log_writer_rationale_183", - "community": 33, + "community": 34, "norm_label": "append a single ``line`` to a ``wizard..log`` file. creates the p" }, { @@ -47484,7 +48789,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L1", "id": "src_exlab_wizard_cache_creation_writer_py", - "community": 207, + "community": 233, "norm_label": "creation_writer.py" }, { @@ -47493,7 +48798,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L69", "id": "cache_creation_writer_select_active_overrides", - "community": 128, + "community": 152, "norm_label": "select_active_overrides()" }, { @@ -47502,7 +48807,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L123", "id": "cache_creation_writer_is_future", - "community": 207, + "community": 134, "norm_label": "_is_future()" }, { @@ -47511,7 +48816,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L143", "id": "cache_creation_writer_apply_migration_defaults", - "community": 207, + "community": 233, "norm_label": "_apply_migration_defaults()" }, { @@ -47520,7 +48825,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L188", "id": "cache_creation_writer_creationwriter", - "community": 28, + "community": 1, "norm_label": "creationwriter" }, { @@ -47529,7 +48834,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L191", "id": "cache_creation_writer_creationwriter_init", - "community": 28, + "community": 1, "norm_label": ".__init__()" }, { @@ -47538,7 +48843,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L204", "id": "cache_creation_writer_creationwriter_write_creation", - "community": 28, + "community": 1, "norm_label": ".write_creation()" }, { @@ -47547,7 +48852,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L214", "id": "cache_creation_writer_creationwriter_update_creation_atomic", - "community": 28, + "community": 1, "norm_label": ".update_creation_atomic()" }, { @@ -47556,7 +48861,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L232", "id": "cache_creation_writer_creationwriter_read_creation_snapshot", - "community": 28, + "community": 1, "norm_label": ".read_creation_snapshot()" }, { @@ -47565,7 +48870,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L243", "id": "cache_creation_writer_creationwriter_write_creation_sync", - "community": 207, + "community": 233, "norm_label": "._write_creation_sync()" }, { @@ -47574,7 +48879,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L248", "id": "cache_creation_writer_creationwriter_update_creation_sync", - "community": 207, + "community": 233, "norm_label": "._update_creation_sync()" }, { @@ -47583,7 +48888,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L267", "id": "cache_creation_writer_creationwriter_read_creation_sync", - "community": 207, + "community": 233, "norm_label": "._read_creation_sync()" }, { @@ -47592,7 +48897,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L276", "id": "cache_creation_writer_creationwriter_decode_raw", - "community": 207, + "community": 233, "norm_label": "._decode_raw()" }, { @@ -47601,7 +48906,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L300", "id": "cache_creation_writer_creationwriter_encode_and_replace", - "community": 207, + "community": 233, "norm_label": "._encode_and_replace()" }, { @@ -47610,7 +48915,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L316", "id": "cache_creation_writer_payload_to_dict", - "community": 207, + "community": 233, "norm_label": "_payload_to_dict()" }, { @@ -47619,7 +48924,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L327", "id": "cache_creation_writer_merge_unknown_fields", - "community": 207, + "community": 233, "norm_label": "_merge_unknown_fields()" }, { @@ -47628,7 +48933,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L1", "id": "cache_creation_writer_rationale_1", - "community": 207, + "community": 233, "norm_label": "atomic reader/writer for ``creation.json``. backend spec \u00a74.4.5. all ``creation" }, { @@ -47637,7 +48942,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L74", "id": "cache_creation_writer_rationale_74", - "community": 128, + "community": 152, "norm_label": "return the subset of override entries that are currently active. implements" }, { @@ -47646,7 +48951,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L124", "id": "cache_creation_writer_rationale_124", - "community": 207, + "community": 134, "norm_label": "return true if ``expires_at`` (utc iso-8601) is strictly after ``now``. the" }, { @@ -47655,7 +48960,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L144", "id": "cache_creation_writer_rationale_144", - "community": 207, + "community": 233, "norm_label": "apply \u00a711.3 history-table defaults for fields missing on old minors. return" }, { @@ -47664,7 +48969,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L189", "id": "cache_creation_writer_rationale_189", - "community": 28, + "community": 1, "norm_label": "atomic reader/writer for ``creation.json``. backend spec \u00a74.4.5." }, { @@ -47673,7 +48978,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L192", "id": "cache_creation_writer_rationale_192", - "community": 28, + "community": 1, "norm_label": "construct the writer. ``lock_timeout_seconds`` is the wall-clock cap fo" }, { @@ -47682,7 +48987,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L205", "id": "cache_creation_writer_rationale_205", - "community": 28, + "community": 1, "norm_label": "write a fresh ``creation.json``. reserved for initial creation. acquire" }, { @@ -47691,7 +48996,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L219", "id": "cache_creation_writer_rationale_219", - "community": 28, + "community": 1, "norm_label": "read, mutate, and write ``creation.json`` under one ``lock_ex``. the fu" }, { @@ -47700,7 +49005,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L233", "id": "cache_creation_writer_rationale_233", - "community": 28, + "community": 1, "norm_label": "read a snapshot under ``lock_sh`` (shared/read lock). concurrent reader" }, { @@ -47709,7 +49014,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L277", "id": "cache_creation_writer_rationale_277", - "community": 207, + "community": 233, "norm_label": "load the file as a raw ``dict`` (no struct conversion yet). we need the" }, { @@ -47718,7 +49023,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L301", "id": "cache_creation_writer_rationale_301", - "community": 207, + "community": 233, "norm_label": "encode ``payload`` to bytes, write atomically via atomic_write_bytes. t" }, { @@ -47727,7 +49032,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L317", "id": "cache_creation_writer_rationale_317", - "community": 207, + "community": 233, "norm_label": "recursively convert a ``creationjson`` into a plain ``dict``. uses :func:`m" }, { @@ -47736,7 +49041,7 @@ "source_file": "src/exlab_wizard/cache/creation_writer.py", "source_location": "L328", "id": "cache_creation_writer_rationale_328", - "community": 207, + "community": 233, "norm_label": "copy keys from ``raw`` that are not in ``new_dict`` back into it. this is h" }, { @@ -47745,7 +49050,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L1", "id": "src_exlab_wizard_config_models_py", - "community": 79, + "community": 38, "norm_label": "models.py" }, { @@ -47754,7 +49059,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L69", "id": "config_models_parse_hhmm", - "community": 79, + "community": 38, "norm_label": "_parse_hhmm()" }, { @@ -47781,7 +49086,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L124", "id": "config_models_readmedefaultfield", - "community": 166, + "community": 4, "norm_label": "readmedefaultfield" }, { @@ -47790,7 +49095,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L139", "id": "config_models_id_matches_question_id_grammar", - "community": 79, + "community": 38, "norm_label": "_id_matches_question_id_grammar()" }, { @@ -47799,7 +49104,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L149", "id": "config_models_serialize_type", - "community": 79, + "community": 38, "norm_label": "_serialize_type()" }, { @@ -47808,7 +49113,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L154", "id": "config_models_choice_requires_non_empty_options", - "community": 79, + "community": 38, "norm_label": "_choice_requires_non_empty_options()" }, { @@ -47817,7 +49122,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L165", "id": "config_models_readmeconfig", - "community": 79, + "community": 38, "norm_label": "readmeconfig" }, { @@ -47826,7 +49131,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L178", "id": "config_models_bandwidthwindow", - "community": 80, + "community": 89, "norm_label": "bandwidthwindow" }, { @@ -47835,7 +49140,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L188", "id": "config_models_serialize_days", - "community": 79, + "community": 38, "norm_label": "_serialize_days()" }, { @@ -47844,7 +49149,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L192", "id": "config_models_from_must_precede_to", - "community": 79, + "community": 38, "norm_label": "_from_must_precede_to()" }, { @@ -47853,7 +49158,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L201", "id": "config_models_bandwidthconfig", - "community": 134, + "community": 1, "norm_label": "bandwidthconfig" }, { @@ -47862,7 +49167,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L211", "id": "config_models_upload_mbps_positive_or_none", - "community": 79, + "community": 38, "norm_label": "_upload_mbps_positive_or_none()" }, { @@ -47871,7 +49176,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L223", "id": "config_models_rcloneperf", - "community": 174, + "community": 8, "norm_label": "rcloneperf" }, { @@ -47898,7 +49203,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L290", "id": "config_models_serialize_sync_mode", - "community": 79, + "community": 38, "norm_label": "_serialize_sync_mode()" }, { @@ -47907,7 +49212,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L295", "id": "config_models_validate_equipment_id", - "community": 79, + "community": 38, "norm_label": "_validate_equipment_id()" }, { @@ -47916,7 +49221,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L311", "id": "config_models_nascleanupconfig", - "community": 351, + "community": 37, "norm_label": "nascleanupconfig" }, { @@ -47925,7 +49230,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L327", "id": "config_models_loggingconfig", - "community": 271, + "community": 19, "norm_label": "loggingconfig" }, { @@ -47934,7 +49239,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L338", "id": "config_models_normalize_and_validate_level", - "community": 79, + "community": 38, "norm_label": "_normalize_and_validate_level()" }, { @@ -47943,7 +49248,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L358", "id": "config_models_operatorsconfig", - "community": 370, + "community": 38, "norm_label": "operatorsconfig" }, { @@ -47952,7 +49257,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L371", "id": "config_models_default_content_scan_extensions", - "community": 79, + "community": 38, "norm_label": "_default_content_scan_extensions()" }, { @@ -47961,7 +49266,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L390", "id": "config_models_validatorconfig", - "community": 133, + "community": 211, "norm_label": "validatorconfig" }, { @@ -47970,7 +49275,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L402", "id": "config_models_extensions_must_start_with_dot", - "community": 79, + "community": 38, "norm_label": "_extensions_must_start_with_dot()" }, { @@ -47979,7 +49284,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L415", "id": "config_models_pluginsconfig", - "community": 79, + "community": 423, "norm_label": "pluginsconfig" }, { @@ -47988,7 +49293,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L428", "id": "config_models_default_ignore_globs", - "community": 79, + "community": 38, "norm_label": "_default_ignore_globs()" }, { @@ -47997,7 +49302,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L432", "id": "config_models_syncconfig", - "community": 166, + "community": 292, "norm_label": "syncconfig" }, { @@ -48006,7 +49311,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L449", "id": "config_models_orchestratorstagingcleanup", - "community": 8, + "community": 13, "norm_label": "orchestratorstagingcleanup" }, { @@ -48015,7 +49320,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L460", "id": "config_models_serialize_mode", - "community": 79, + "community": 38, "norm_label": "_serialize_mode()" }, { @@ -48042,7 +49347,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L520", "id": "config_models_cross_field_invariants", - "community": 79, + "community": 38, "norm_label": "_cross_field_invariants()" }, { @@ -48051,7 +49356,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L540", "id": "config_models_config_with_equipment_appended", - "community": 250, + "community": 261, "norm_label": "config_with_equipment_appended()" }, { @@ -48060,7 +49365,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L1", "id": "config_models_rationale_1", - "community": 79, + "community": 38, "norm_label": "pydantic models that mirror ``config.yaml``. backend spec \u00a79. these models are" }, { @@ -48069,7 +49374,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L70", "id": "config_models_rationale_70", - "community": 79, + "community": 38, "norm_label": "return ``datetime.time`` for a strict zero-padded ``hh:mm`` string. the wiz" }, { @@ -48096,7 +49401,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L125", "id": "config_models_rationale_125", - "community": 166, + "community": 4, "norm_label": "one operator-defined extra readme field. backend spec \u00a79, \u00a710." }, { @@ -48105,7 +49410,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L166", "id": "config_models_rationale_166", - "community": 79, + "community": 38, "norm_label": "``readme:`` block. lab-policy fields layered on top of the core set." }, { @@ -48114,7 +49419,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L179", "id": "config_models_rationale_179", - "community": 80, + "community": 89, "norm_label": "one ``{days, from, to}`` window. backend spec \u00a79." }, { @@ -48123,7 +49428,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L202", "id": "config_models_rationale_202", - "community": 134, + "community": 1, "norm_label": "``bandwidth:`` sub-block on a transport." }, { @@ -48132,7 +49437,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L224", "id": "config_models_rationale_224", - "community": 174, + "community": 8, "norm_label": "parallelism knobs forwarded to rclone (``--transfers`` / ``--checkers``). t" }, { @@ -48159,7 +49464,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L312", "id": "config_models_rationale_312", - "community": 351, + "community": 37, "norm_label": "``nas_cleanup:`` block. local-copy retention after nas verify." }, { @@ -48168,7 +49473,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L328", "id": "config_models_rationale_328", - "community": 271, + "community": 19, "norm_label": "``logging:`` block. central app-log rotation + level." }, { @@ -48177,7 +49482,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L359", "id": "config_models_rationale_359", - "community": 370, + "community": 38, "norm_label": "``operators:`` block. optional case-sensitive allowlist." }, { @@ -48186,7 +49491,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L391", "id": "config_models_rationale_391", - "community": 133, + "community": 211, "norm_label": "``validator:`` block. content-scan tuning. backend spec \u00a78.1.1, \u00a711.8." }, { @@ -48195,7 +49500,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L416", "id": "config_models_rationale_416", - "community": 79, + "community": 423, "norm_label": "``plugins:`` block. master opt-in for network-declaring plugins." }, { @@ -48204,7 +49509,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L433", "id": "config_models_rationale_433", - "community": 166, + "community": 292, "norm_label": "``sync:`` block. nas sync engine kill-switch + retry / quiescence policy." }, { @@ -48213,7 +49518,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L450", "id": "config_models_rationale_450", - "community": 8, + "community": 13, "norm_label": "``orchestrator.staging_cleanup:`` sub-block. backend spec \u00a713.7." }, { @@ -48240,7 +49545,7 @@ "source_file": "src/exlab_wizard/config/models.py", "source_location": "L541", "id": "config_models_rationale_541", - "community": 250, + "community": 261, "norm_label": "return a copy of ``config`` with ``equipment`` appended. the single place t" }, { @@ -48249,7 +49554,7 @@ "source_file": "src/exlab_wizard/config/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_config_init_py", - "community": 435, + "community": 474, "norm_label": "__init__.py" }, { @@ -48258,7 +49563,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L1", "id": "src_exlab_wizard_config_loader_py", - "community": 13, + "community": 268, "norm_label": "loader.py" }, { @@ -48267,7 +49572,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L33", "id": "config_loader_test_mode_enabled", - "community": 13, + "community": 268, "norm_label": "_test_mode_enabled()" }, { @@ -48276,7 +49581,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L43", "id": "config_loader_apply_test_mode_prefix", - "community": 13, + "community": 108, "norm_label": "apply_test_mode_prefix()" }, { @@ -48285,7 +49590,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L79", "id": "config_loader_yaml", - "community": 13, + "community": 268, "norm_label": "_yaml()" }, { @@ -48294,7 +49599,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L92", "id": "config_loader_load_config", - "community": 13, + "community": 174, "norm_label": "load_config()" }, { @@ -48303,7 +49608,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L108", "id": "config_loader_load_config_from_text", - "community": 13, + "community": 108, "norm_label": "load_config_from_text()" }, { @@ -48312,7 +49617,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L128", "id": "config_loader_save_config", - "community": 13, + "community": 174, "norm_label": "save_config()" }, { @@ -48321,7 +49626,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L157", "id": "config_loader_deep_merge", - "community": 13, + "community": 268, "norm_label": "_deep_merge()" }, { @@ -48330,7 +49635,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L171", "id": "config_loader_dump_config", - "community": 13, + "community": 268, "norm_label": "dump_config()" }, { @@ -48339,7 +49644,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L1", "id": "config_loader_rationale_1", - "community": 13, + "community": 268, "norm_label": "config.yaml round-trip loader. backend spec \u00a79. uses ruamel.yaml in round-trip" }, { @@ -48348,7 +49653,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L34", "id": "config_loader_rationale_34", - "community": 13, + "community": 268, "norm_label": "return true when the env var :data:`test_mode_env` is truthy. centralized h" }, { @@ -48357,7 +49662,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L44", "id": "config_loader_rationale_44", - "community": 13, + "community": 108, "norm_label": "return ``config`` with each equipment id prefixed by :data:`test_mode_prefix`." }, { @@ -48366,7 +49671,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L80", "id": "config_loader_rationale_80", - "community": 13, + "community": 268, "norm_label": "build a configured ruamel.yaml instance. typ='rt' is round-trip mode (prese" }, { @@ -48375,7 +49680,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L93", "id": "config_loader_rationale_93", - "community": 13, + "community": 174, "norm_label": "load a config.yaml from disk and validate against the pydantic model. raise" }, { @@ -48384,7 +49689,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L109", "id": "config_loader_rationale_109", - "community": 13, + "community": 108, "norm_label": "load a config from yaml text. same semantics as load_config but for in-memory in" }, { @@ -48393,7 +49698,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L129", "id": "config_loader_rationale_129", - "community": 13, + "community": 174, "norm_label": "atomically write `config` back to `path`. if `original_text` is supplied, r" }, { @@ -48402,7 +49707,7 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L158", "id": "config_loader_rationale_158", - "community": 13, + "community": 268, "norm_label": "in-place deep-merge source into target. used by save_config to overlay new" }, { @@ -48411,16 +49716,70 @@ "source_file": "src/exlab_wizard/config/loader.py", "source_location": "L172", "id": "config_loader_rationale_172", - "community": 13, + "community": 268, "norm_label": "serialize config to a yaml string. no comment preservation; tests use this." }, + { + "label": "test_bootstrap.py", + "file_type": "code", + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L1", + "id": "src_exlab_wizard_config_test_bootstrap_py", + "community": 399, + "norm_label": "test_bootstrap.py" + }, + { + "label": "write_starter_test_config()", + "file_type": "code", + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L18", + "id": "config_test_bootstrap_write_starter_test_config", + "community": 0, + "norm_label": "write_starter_test_config()" + }, + { + "label": "bootstrap_test_config()", + "file_type": "code", + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L68", + "id": "config_test_bootstrap_bootstrap_test_config", + "community": 399, + "norm_label": "bootstrap_test_config()" + }, + { + "label": "Starter ``config.yaml`` bootstrap for the ``-test`` sandbox. Shared by the tray", + "file_type": "rationale", + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L1", + "id": "config_test_bootstrap_rationale_1", + "community": 399, + "norm_label": "starter ``config.yaml`` bootstrap for the ``-test`` sandbox. shared by the tray" + }, + { + "label": "Write a starter test ``config.yaml`` if one does not already exist. Preseed", + "file_type": "rationale", + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L19", + "id": "config_test_bootstrap_rationale_19", + "community": 0, + "norm_label": "write a starter test ``config.yaml`` if one does not already exist. preseed" + }, + { + "label": "Tray ``--test`` bootstrap: write the starter config, optionally seed samples.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L69", + "id": "config_test_bootstrap_rationale_69", + "community": 399, + "norm_label": "tray ``--test`` bootstrap: write the starter config, optionally seed samples." + }, { "label": "registry.py", "file_type": "code", "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L1", "id": "src_exlab_wizard_plugins_registry_py", - "community": 4, + "community": 7, "norm_label": "registry.py" }, { @@ -48429,7 +49788,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L62", "id": "plugins_registry_pluginmanifest", - "community": 4, + "community": 7, "norm_label": "pluginmanifest" }, { @@ -48438,7 +49797,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L83", "id": "plugins_registry_pluginrecord", - "community": 4, + "community": 7, "norm_label": "pluginrecord" }, { @@ -48447,7 +49806,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L103", "id": "plugins_registry_pluginplan", - "community": 4, + "community": 7, "norm_label": "pluginplan" }, { @@ -48456,7 +49815,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L115", "id": "plugins_registry_registryreport", - "community": 4, + "community": 7, "norm_label": "registryreport" }, { @@ -48465,7 +49824,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L128", "id": "plugins_registry_pluginregistry", - "community": 4, + "community": 7, "norm_label": "pluginregistry" }, { @@ -48474,7 +49833,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L140", "id": "plugins_registry_pluginregistry_init", - "community": 4, + "community": 7, "norm_label": ".__init__()" }, { @@ -48483,7 +49842,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L157", "id": "plugins_registry_pluginregistry_reload", - "community": 4, + "community": 7, "norm_label": ".reload()" }, { @@ -48492,7 +49851,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L181", "id": "plugins_registry_pluginregistry_absorb", - "community": 4, + "community": 7, "norm_label": "._absorb()" }, { @@ -48501,7 +49860,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L210", "id": "plugins_registry_pluginregistry_iter_root", - "community": 4, + "community": 7, "norm_label": "._iter_root()" }, { @@ -48510,7 +49869,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L230", "id": "plugins_registry_pluginregistry_load_plugin", - "community": 4, + "community": 7, "norm_label": "._load_plugin()" }, { @@ -48519,7 +49878,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L354", "id": "plugins_registry_pluginregistry_get", - "community": 4, + "community": 7, "norm_label": ".get()" }, { @@ -48528,7 +49887,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L358", "id": "plugins_registry_pluginregistry_list_all", - "community": 4, + "community": 7, "norm_label": ".list_all()" }, { @@ -48537,7 +49896,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L362", "id": "plugins_registry_pluginregistry_candidates_for", - "community": 4, + "community": 7, "norm_label": ".candidates_for()" }, { @@ -48546,7 +49905,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L386", "id": "plugins_registry_as_str_list", - "community": 4, + "community": 7, "norm_label": "_as_str_list()" }, { @@ -48555,7 +49914,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L393", "id": "plugins_registry_suffix_or_full", - "community": 4, + "community": 7, "norm_label": "_suffix_or_full()" }, { @@ -48564,7 +49923,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L1", "id": "plugins_registry_rationale_1", - "community": 4, + "community": 7, "norm_label": "plugin registry -- manifest-driven discovery + dispatch resolution. backend spe" }, { @@ -48573,7 +49932,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L63", "id": "plugins_registry_rationale_63", - "community": 4, + "community": 7, "norm_label": "parsed ``manifest.yml`` contents. backend spec \u00a76.1.2. mirrors the schema d" }, { @@ -48582,7 +49941,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L84", "id": "plugins_registry_rationale_84", - "community": 4, + "community": 7, "norm_label": "one plugin in the registry. carries the parsed manifest, the source-on-disk" }, { @@ -48591,7 +49950,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L104", "id": "plugins_registry_rationale_104", - "community": 4, + "community": 7, "norm_label": "one plugin paired with the files in the rendered tree it matches. built by" }, { @@ -48600,7 +49959,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L116", "id": "plugins_registry_rationale_116", - "community": 4, + "community": 7, "norm_label": "outcome of a :meth:`pluginregistry.reload` pass. ``loaded`` is the list of" }, { @@ -48609,7 +49968,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L129", "id": "plugins_registry_rationale_129", - "community": 4, + "community": 7, "norm_label": "manifest-driven plugin registry. constructed at host startup with the two c" }, { @@ -48618,7 +49977,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L158", "id": "plugins_registry_rationale_158", - "community": 4, + "community": 7, "norm_label": "re-scan both plugin roots and rebuild the in-memory record table. bundl" }, { @@ -48627,7 +49986,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L187", "id": "plugins_registry_rationale_187", - "community": 4, + "community": 7, "norm_label": "merge one parsed plugin (or one rejection) into the report." }, { @@ -48636,7 +49995,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L215", "id": "plugins_registry_rationale_215", - "community": 4, + "community": 7, "norm_label": "walk one plugin root and yield ``(record_or_none, reason_or_none)`` pairs." }, { @@ -48645,7 +50004,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L235", "id": "plugins_registry_rationale_235", - "community": 4, + "community": 7, "norm_label": "parse one plugin directory. returns ``(record, none)`` or ``(none, (name, reason" }, { @@ -48654,7 +50013,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L355", "id": "plugins_registry_rationale_355", - "community": 4, + "community": 7, "norm_label": "return the record registered under ``name``, or ``none``." }, { @@ -48663,7 +50022,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L359", "id": "plugins_registry_rationale_359", - "community": 4, + "community": 7, "norm_label": "return all registered records, sorted by name for stable output." }, { @@ -48672,7 +50031,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L363", "id": "plugins_registry_rationale_363", - "community": 4, + "community": 7, "norm_label": "resolve plugins that match the given files by extension. for each regis" }, { @@ -48681,7 +50040,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L387", "id": "plugins_registry_rationale_387", - "community": 4, + "community": 7, "norm_label": "coerce a yaml node into a ``list[str]``; non-list / non-string entries are dropp" }, { @@ -48690,7 +50049,7 @@ "source_file": "src/exlab_wizard/plugins/registry.py", "source_location": "L394", "id": "plugins_registry_rationale_394", - "community": 4, + "community": 7, "norm_label": "return the final suffix (``.xlsx``) for matching against ``supported_extensions`" }, { @@ -48699,7 +50058,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L1", "id": "src_exlab_wizard_plugins_host_py", - "community": 15, + "community": 21, "norm_label": "host.py" }, { @@ -48708,7 +50067,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L86", "id": "plugins_host_pluginrecord", - "community": 15, + "community": 21, "norm_label": "pluginrecord" }, { @@ -48717,7 +50076,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L116", "id": "plugins_host_pluginregistryprotocol", - "community": 15, + "community": 21, "norm_label": "pluginregistryprotocol" }, { @@ -48726,7 +50085,7 @@ "source_file": "", "source_location": "", "id": "protocol", - "community": 15, + "community": 21, "norm_label": "protocol" }, { @@ -48735,7 +50094,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L126", "id": "plugins_host_pluginregistryprotocol_get_record", - "community": 15, + "community": 21, "norm_label": ".get_record()" }, { @@ -48744,7 +50103,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L135", "id": "plugins_host_inputrequiredpayload", - "community": 9, + "community": 10, "norm_label": "inputrequiredpayload" }, { @@ -48753,7 +50112,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L150", "id": "plugins_host_pluginpassresult", - "community": 9, + "community": 10, "norm_label": "pluginpassresult" }, { @@ -48762,7 +50121,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L168", "id": "plugins_host_apply_rlimits", - "community": 15, + "community": 21, "norm_label": "_apply_rlimits()" }, { @@ -48771,7 +50130,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L214", "id": "plugins_host_sanitized_env", - "community": 15, + "community": 21, "norm_label": "_sanitized_env()" }, { @@ -48780,7 +50139,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L240", "id": "plugins_host_snapshot_tree", - "community": 15, + "community": 21, "norm_label": "_snapshot_tree()" }, { @@ -48789,7 +50148,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L280", "id": "plugins_host_is_forbidden_write", - "community": 15, + "community": 21, "norm_label": "_is_forbidden_write()" }, { @@ -48798,7 +50157,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L285", "id": "plugins_host_diff_and_collect_violations", - "community": 15, + "community": 21, "norm_label": "_diff_and_collect_violations()" }, { @@ -48807,7 +50166,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L338", "id": "plugins_host_read_silently", - "community": 15, + "community": 21, "norm_label": "_read_silently()" }, { @@ -48816,7 +50175,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L346", "id": "plugins_host_revert_to_snapshot", - "community": 15, + "community": 21, "norm_label": "_revert_to_snapshot()" }, { @@ -48825,7 +50184,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L397", "id": "plugins_host_drain_stderr", - "community": 15, + "community": 21, "norm_label": "_drain_stderr()" }, { @@ -48834,7 +50193,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L447", "id": "plugins_host_emit_forwarded_log", - "community": 15, + "community": 21, "norm_label": "_emit_forwarded_log()" }, { @@ -48843,7 +50202,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L472", "id": "plugins_host_resolve_run_id", - "community": 15, + "community": 21, "norm_label": "_resolve_run_id()" }, { @@ -48870,7 +50229,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L502", "id": "plugins_host_pluginhost_run_pass", - "community": 15, + "community": 21, "norm_label": ".run_pass()" }, { @@ -48879,7 +50238,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L548", "id": "plugins_host_pluginhost_run_one", - "community": 15, + "community": 21, "norm_label": "._run_one()" }, { @@ -48888,7 +50247,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L629", "id": "plugins_host_pluginhost_spawn_worker", - "community": 15, + "community": 21, "norm_label": "._spawn_worker()" }, { @@ -48897,7 +50256,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L766", "id": "plugins_host_pluginhost_terminate", - "community": 15, + "community": 21, "norm_label": "._terminate()" }, { @@ -48906,7 +50265,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L783", "id": "plugins_host_pluginhost_stderr_path_for", - "community": 15, + "community": 21, "norm_label": "._stderr_path_for()" }, { @@ -48915,7 +50274,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L797", "id": "plugins_host_spawnoutcome", - "community": 15, + "community": 21, "norm_label": "_spawnoutcome" }, { @@ -48924,7 +50283,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L807", "id": "plugins_host_failure", - "community": 15, + "community": 21, "norm_label": "failure()" }, { @@ -48933,7 +50292,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L817", "id": "plugins_host_read_stdout_envelope", - "community": 15, + "community": 21, "norm_label": "_read_stdout_envelope()" }, { @@ -48942,7 +50301,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L838", "id": "plugins_host_build_applied_entry", - "community": 15, + "community": 21, "norm_label": "_build_applied_entry()" }, { @@ -48951,7 +50310,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L876", "id": "plugins_host_exit_code_to_status", - "community": 15, + "community": 21, "norm_label": "_exit_code_to_status()" }, { @@ -48960,7 +50319,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L900", "id": "plugins_host_listbackedregistry", - "community": 15, + "community": 21, "norm_label": "_listbackedregistry" }, { @@ -48969,7 +50328,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L911", "id": "plugins_host_listbackedregistry_get_record", - "community": 15, + "community": 21, "norm_label": ".get_record()" }, { @@ -48978,7 +50337,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L918", "id": "plugins_host_build_test_registry", - "community": 15, + "community": 21, "norm_label": "build_test_registry()" }, { @@ -48987,7 +50346,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L925", "id": "plugins_host_applied_entry_as_json", - "community": 15, + "community": 21, "norm_label": "applied_entry_as_json()" }, { @@ -48996,7 +50355,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L1", "id": "plugins_host_rationale_1", - "community": 15, + "community": 21, "norm_label": "plugin host: spawns plugin worker subprocesses with strict isolation. backend s" }, { @@ -49005,7 +50364,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L87", "id": "plugins_host_rationale_87", - "community": 15, + "community": 21, "norm_label": "one resolved plugin, ready to be spawned. backend spec \u00a76.2.1. attributes:" }, { @@ -49014,7 +50373,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L117", "id": "plugins_host_rationale_117", - "community": 15, + "community": 21, "norm_label": "read-only registry surface the host depends on. backend spec \u00a76.2. the conc" }, { @@ -49023,7 +50382,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L136", "id": "plugins_host_rationale_136", - "community": 9, + "community": 10, "norm_label": "frame surfaced to the controller when a plugin needs more input. backend sp" }, { @@ -49032,7 +50391,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L151", "id": "plugins_host_rationale_151", - "community": 9, + "community": 10, "norm_label": "aggregate result returned by :meth:`pluginhost.run_pass`. backend spec \u00a76.2" }, { @@ -49041,7 +50400,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L169", "id": "plugins_host_rationale_169", - "community": 15, + "community": 21, "norm_label": "``preexec_fn`` for the worker subprocess: install posix rlimits. backend sp" }, { @@ -49050,7 +50409,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L215", "id": "plugins_host_rationale_215", - "community": 15, + "community": 21, "norm_label": "return the worker's ``env`` mapping (backend spec \u00a76.3.1)." }, { @@ -49059,7 +50418,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L241", "id": "plugins_host_rationale_241", - "community": 15, + "community": 21, "norm_label": "capture a small fingerprint per file in ``root``. the returned mapping is k" }, { @@ -49068,7 +50427,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L281", "id": "plugins_host_rationale_281", - "community": 15, + "community": 21, "norm_label": "return ``true`` when ``rel_path`` is in the \u00a76.1.5 forbidden set." }, { @@ -49077,7 +50436,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L289", "id": "plugins_host_rationale_289", - "community": 15, + "community": 21, "norm_label": "return ``(violations, modified_files)``. ``violations`` lists relative path" }, { @@ -49086,7 +50445,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L339", "id": "plugins_host_rationale_339", - "community": 15, + "community": 21, "norm_label": "return the file's bytes or ``none`` on read failure." }, { @@ -49095,7 +50454,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L350", "id": "plugins_host_rationale_350", - "community": 15, + "community": 21, "norm_label": "best-effort revert of every change after a forbidden-write plugin. removes" }, { @@ -49104,7 +50463,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L403", "id": "plugins_host_rationale_403", - "community": 15, + "community": 21, "norm_label": "read the worker's stderr line-by-line. json-shaped lines are forwarded into" }, { @@ -49113,7 +50472,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L453", "id": "plugins_host_rationale_453", - "community": 15, + "community": 21, "norm_label": "forward a worker log frame into the canonical logger chain." }, { @@ -49122,7 +50481,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L473", "id": "plugins_host_rationale_473", - "community": 15, + "community": 21, "norm_label": "return a filesystem-safe run identifier for stderr capture paths." }, { @@ -49140,7 +50499,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L509", "id": "plugins_host_rationale_509", - "community": 15, + "community": 21, "norm_label": "drive the plugin pass for a single creation session. spawns one worker" }, { @@ -49149,7 +50508,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L555", "id": "plugins_host_rationale_555", - "community": 15, + "community": 21, "norm_label": "run a single plugin worker, including resume on input-required. returns" }, { @@ -49158,7 +50517,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L637", "id": "plugins_host_rationale_637", - "community": 15, + "community": 21, "norm_label": "spawn one worker subprocess and supervise it to completion. returns a :" }, { @@ -49167,7 +50526,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L767", "id": "plugins_host_rationale_767", - "community": 15, + "community": 21, "norm_label": "sigterm, wait the grace period, sigkill. backend spec \u00a76.3.4." }, { @@ -49176,7 +50535,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L784", "id": "plugins_host_rationale_784", - "community": 15, + "community": 21, "norm_label": "return the path the worker's stderr should be captured to." }, { @@ -49185,7 +50544,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L798", "id": "plugins_host_rationale_798", - "community": 15, + "community": 21, "norm_label": "result of supervising a single worker invocation." }, { @@ -49194,7 +50553,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L818", "id": "plugins_host_rationale_818", - "community": 15, + "community": 21, "norm_label": "read and json-decode the worker's stdout envelope." }, { @@ -49203,7 +50562,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L847", "id": "plugins_host_rationale_847", - "community": 15, + "community": 21, "norm_label": "shape one ``plugins_applied[]`` entry for ``creation.json``." }, { @@ -49212,7 +50571,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L877", "id": "plugins_host_rationale_877", - "community": 15, + "community": 21, "norm_label": "map a worker exit code to one of the \u00a76.2.4 status values." }, { @@ -49221,7 +50580,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L901", "id": "plugins_host_rationale_901", - "community": 15, + "community": 21, "norm_label": "minimal :class:`pluginregistryprotocol` implementation used for tests. test" }, { @@ -49230,7 +50589,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L919", "id": "plugins_host_rationale_919", - "community": 15, + "community": 21, "norm_label": "return a tiny in-memory registry over ``records``. tests only." }, { @@ -49239,7 +50598,7 @@ "source_file": "src/exlab_wizard/plugins/host.py", "source_location": "L926", "id": "plugins_host_rationale_926", - "community": 15, + "community": 21, "norm_label": "return ``entry`` as a json-friendly dict (deep-copied)." }, { @@ -49248,7 +50607,7 @@ "source_file": "src/exlab_wizard/plugins/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_plugins_init_py", - "community": 371, + "community": 374, "norm_label": "__init__.py" }, { @@ -49257,7 +50616,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L1", "id": "src_exlab_wizard_plugins_logger_py", - "community": 44, + "community": 20, "norm_label": "logger.py" }, { @@ -49266,7 +50625,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L46", "id": "plugins_logger_pluginlogframe", - "community": 44, + "community": 20, "norm_label": "pluginlogframe" }, { @@ -49275,7 +50634,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L59", "id": "plugins_logger_pluginlogger", - "community": 58, + "community": 20, "norm_label": "pluginlogger" }, { @@ -49284,7 +50643,7 @@ "source_file": "", "source_location": "", "id": "abc", - "community": 58, + "community": 20, "norm_label": "abc" }, { @@ -49293,7 +50652,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L69", "id": "plugins_logger_debug", - "community": 44, + "community": 20, "norm_label": "debug()" }, { @@ -49302,7 +50661,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L73", "id": "plugins_logger_info", - "community": 44, + "community": 20, "norm_label": "info()" }, { @@ -49311,7 +50670,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L77", "id": "plugins_logger_warning", - "community": 44, + "community": 20, "norm_label": "warning()" }, { @@ -49320,7 +50679,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L81", "id": "plugins_logger_error", - "community": 44, + "community": 20, "norm_label": "error()" }, { @@ -49329,7 +50688,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L85", "id": "plugins_logger_hostpluginlogger", - "community": 44, + "community": 20, "norm_label": "hostpluginlogger" }, { @@ -49338,7 +50697,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L95", "id": "plugins_logger_hostpluginlogger_init", - "community": 29, + "community": 19, "norm_label": ".__init__()" }, { @@ -49347,7 +50706,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L98", "id": "plugins_logger_hostpluginlogger_debug", - "community": 44, + "community": 20, "norm_label": ".debug()" }, { @@ -49356,7 +50715,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L101", "id": "plugins_logger_hostpluginlogger_info", - "community": 44, + "community": 20, "norm_label": ".info()" }, { @@ -49365,7 +50724,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L104", "id": "plugins_logger_hostpluginlogger_warning", - "community": 44, + "community": 20, "norm_label": ".warning()" }, { @@ -49374,7 +50733,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L107", "id": "plugins_logger_hostpluginlogger_error", - "community": 44, + "community": 20, "norm_label": ".error()" }, { @@ -49383,7 +50742,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L110", "id": "plugins_logger_hostpluginlogger_emit", - "community": 44, + "community": 20, "norm_label": "._emit()" }, { @@ -49392,7 +50751,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L121", "id": "plugins_logger_workerpluginlogger", - "community": 44, + "community": 20, "norm_label": "workerpluginlogger" }, { @@ -49401,7 +50760,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L137", "id": "plugins_logger_workerpluginlogger_init", - "community": 44, + "community": 20, "norm_label": ".__init__()" }, { @@ -49410,7 +50769,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L140", "id": "plugins_logger_workerpluginlogger_debug", - "community": 44, + "community": 20, "norm_label": ".debug()" }, { @@ -49419,7 +50778,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L143", "id": "plugins_logger_workerpluginlogger_info", - "community": 44, + "community": 20, "norm_label": ".info()" }, { @@ -49428,7 +50787,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L146", "id": "plugins_logger_workerpluginlogger_warning", - "community": 44, + "community": 20, "norm_label": ".warning()" }, { @@ -49437,7 +50796,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L149", "id": "plugins_logger_workerpluginlogger_error", - "community": 44, + "community": 20, "norm_label": ".error()" }, { @@ -49446,7 +50805,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L152", "id": "plugins_logger_workerpluginlogger_emit", - "community": 44, + "community": 20, "norm_label": "._emit()" }, { @@ -49455,7 +50814,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L1", "id": "plugins_logger_rationale_1", - "community": 44, + "community": 20, "norm_label": "plugin logger shim. backend spec \u00a76.1.4 / \u00a76.3.2. plugins call ``ctx.log.info(." }, { @@ -49464,7 +50823,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L47", "id": "plugins_logger_rationale_47", - "community": 44, + "community": 20, "norm_label": "wire format for worker-side log records. the worker subprocess emits one ``" }, { @@ -49473,7 +50832,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L60", "id": "plugins_logger_rationale_60", - "community": 58, + "community": 20, "norm_label": "abstract structured-log interface plugins receive on ``ctx.log``. implement" }, { @@ -49482,7 +50841,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L70", "id": "plugins_logger_rationale_70", - "community": 612, + "community": 637, "norm_label": "emit a debug-level structured log record." }, { @@ -49491,7 +50850,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L74", "id": "plugins_logger_rationale_74", - "community": 613, + "community": 638, "norm_label": "emit an info-level structured log record." }, { @@ -49500,7 +50859,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L78", "id": "plugins_logger_rationale_78", - "community": 614, + "community": 639, "norm_label": "emit a warning-level structured log record." }, { @@ -49509,7 +50868,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L82", "id": "plugins_logger_rationale_82", - "community": 615, + "community": 640, "norm_label": "emit an error-level structured log record." }, { @@ -49518,7 +50877,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L86", "id": "plugins_logger_rationale_86", - "community": 44, + "community": 20, "norm_label": "in-process forwarder used when plugins run without subprocess isolation. us" }, { @@ -49527,7 +50886,7 @@ "source_file": "src/exlab_wizard/plugins/logger.py", "source_location": "L122", "id": "plugins_logger_rationale_122", - "community": 44, + "community": 20, "norm_label": "worker-side forwarder. emits json frames on stderr. used inside the plugin" }, { @@ -49536,7 +50895,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L1", "id": "src_exlab_wizard_plugins_base_py", - "community": 58, + "community": 20, "norm_label": "base.py" }, { @@ -49545,7 +50904,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L53", "id": "plugins_base_filechange", - "community": 58, + "community": 330, "norm_label": "filechange" }, { @@ -49554,7 +50913,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L73", "id": "plugins_base_plugincontext", - "community": 9, + "community": 10, "norm_label": "plugincontext" }, { @@ -49563,7 +50922,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L96", "id": "plugins_base_plugin", - "community": 58, + "community": 20, "norm_label": "plugin" }, { @@ -49572,7 +50931,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L135", "id": "plugins_base_can_handle", - "community": 58, + "community": 20, "norm_label": "can_handle()" }, { @@ -49581,7 +50940,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L143", "id": "plugins_base_transform", - "community": 58, + "community": 20, "norm_label": "transform()" }, { @@ -49590,7 +50949,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L153", "id": "plugins_base_plugin_validate_variables", - "community": 58, + "community": 20, "norm_label": ".validate_variables()" }, { @@ -49599,7 +50958,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L170", "id": "plugins_base_plugin_pre_transform_all", - "community": 58, + "community": 20, "norm_label": ".pre_transform_all()" }, { @@ -49608,7 +50967,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L179", "id": "plugins_base_plugin_post_transform_all", - "community": 58, + "community": 20, "norm_label": ".post_transform_all()" }, { @@ -49617,7 +50976,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L186", "id": "plugins_base_plugin_describe_changes", - "community": 58, + "community": 330, "norm_label": ".describe_changes()" }, { @@ -49626,7 +50985,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L201", "id": "plugins_base_plugin_on_plugin_failure", - "community": 58, + "community": 20, "norm_label": ".on_plugin_failure()" }, { @@ -49635,7 +50994,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L1", "id": "plugins_base_rationale_1", - "community": 58, + "community": 20, "norm_label": "plugin contract base class. backend spec \u00a76.1. defines the public surface that" }, { @@ -49644,7 +51003,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L54", "id": "plugins_base_rationale_54", - "community": 58, + "community": 330, "norm_label": "a single mutation a plugin would make. used by ``describe_changes``. backen" }, { @@ -49653,7 +51012,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L74", "id": "plugins_base_rationale_74", - "community": 9, + "community": 10, "norm_label": "read-only context handed to every plugin lifecycle hook. constructed once p" }, { @@ -49662,7 +51021,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L97", "id": "plugins_base_rationale_97", - "community": 58, + "community": 20, "norm_label": "abstract base class for all exlab-wizard plugins. backend spec \u00a76.1.3." }, { @@ -49671,7 +51030,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L136", "id": "plugins_base_rationale_136", - "community": 616, + "community": 641, "norm_label": "secondary filter, called after the extension match. cheap and side-effe" }, { @@ -49680,7 +51039,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L144", "id": "plugins_base_rationale_144", - "community": 617, + "community": 642, "norm_label": "mutate ``file_path`` in place. on unrecoverable failure raise :class:`p" }, { @@ -49689,7 +51048,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L154", "id": "plugins_base_rationale_154", - "community": 58, + "community": 20, "norm_label": "return a list of error strings; empty list means \"valid\". default imple" }, { @@ -49698,7 +51057,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L171", "id": "plugins_base_rationale_171", - "community": 58, + "community": 20, "norm_label": "called once before the file loop. default: no-op. use for batch setup t" }, { @@ -49707,7 +51066,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L180", "id": "plugins_base_rationale_180", - "community": 58, + "community": 20, "norm_label": "called once after the file loop. default: no-op. symmetric to :meth:`pr" }, { @@ -49716,7 +51075,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L187", "id": "plugins_base_rationale_187", - "community": 58, + "community": 330, "norm_label": "return the dry-run preview for what ``transform`` would do. default ret" }, { @@ -49725,7 +51084,7 @@ "source_file": "src/exlab_wizard/plugins/base.py", "source_location": "L202", "id": "plugins_base_rationale_202", - "community": 58, + "community": 20, "norm_label": "called if any prior hook raised. default: no-op. use to roll back parti" }, { @@ -49734,7 +51093,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L1", "id": "src_exlab_wizard_plugins_worker_py", - "community": 181, + "community": 53, "norm_label": "_worker.py" }, { @@ -49743,7 +51102,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L57", "id": "plugins_worker_workeroutcome", - "community": 58, + "community": 53, "norm_label": "_workeroutcome" }, { @@ -49752,7 +51111,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L73", "id": "plugins_worker_read_stdin_envelope", - "community": 181, + "community": 53, "norm_label": "_read_stdin_envelope()" }, { @@ -49761,7 +51120,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L88", "id": "plugins_worker_decode_files", - "community": 181, + "community": 53, "norm_label": "_decode_files()" }, { @@ -49770,7 +51129,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L105", "id": "plugins_worker_build_context", - "community": 181, + "community": 53, "norm_label": "_build_context()" }, { @@ -49779,7 +51138,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L144", "id": "plugins_worker_load_plugin_class", - "community": 181, + "community": 53, "norm_label": "_load_plugin_class()" }, { @@ -49788,7 +51147,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L170", "id": "plugins_worker_run_lifecycle", - "community": 181, + "community": 53, "norm_label": "_run_lifecycle()" }, { @@ -49797,7 +51156,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L296", "id": "plugins_worker_serialize_change", - "community": 181, + "community": 53, "norm_label": "_serialize_change()" }, { @@ -49806,7 +51165,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L311", "id": "plugins_worker_swallowcallbackerrors", - "community": 181, + "community": 53, "norm_label": "_swallowcallbackerrors" }, { @@ -49815,7 +51174,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L319", "id": "plugins_worker_swallowcallbackerrors_enter", - "community": 181, + "community": 53, "norm_label": ".__enter__()" }, { @@ -49824,7 +51183,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L322", "id": "plugins_worker_swallowcallbackerrors_exit", - "community": 181, + "community": 53, "norm_label": ".__exit__()" }, { @@ -49833,7 +51192,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L350", "id": "plugins_worker_main", - "community": 181, + "community": 53, "norm_label": "main()" }, { @@ -49842,7 +51201,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L1", "id": "plugins_worker_rationale_1", - "community": 181, + "community": 53, "norm_label": "plugin worker entry point. backend spec \u00a76.3.1, \u00a76.3.2. invoked as ``python -m" }, { @@ -49851,7 +51210,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L58", "id": "plugins_worker_rationale_58", - "community": 58, + "community": 53, "norm_label": "aggregated worker-side result before stdout serialization." }, { @@ -49860,7 +51219,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L74", "id": "plugins_worker_rationale_74", - "community": 181, + "community": 53, "norm_label": "read a single json object from stdin and return it as a dict. the host writ" }, { @@ -49869,7 +51228,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L89", "id": "plugins_worker_rationale_89", - "community": 181, + "community": 53, "norm_label": "resolve incoming file path strings against ``dst_root``. paths are accepted" }, { @@ -49878,7 +51237,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L110", "id": "plugins_worker_rationale_110", - "community": 181, + "community": 53, "norm_label": "materialize a :class:`plugincontext` from the stdin envelope. returns the c" }, { @@ -49887,7 +51246,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L145", "id": "plugins_worker_rationale_145", - "community": 181, + "community": 53, "norm_label": "import the plugin module and return the exported ``plugin`` symbol. the hos" }, { @@ -49896,7 +51255,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L177", "id": "plugins_worker_rationale_177", - "community": 181, + "community": 53, "norm_label": "execute the plugin's transform lifecycle against ``files``. the lifecycle i" }, { @@ -49905,7 +51264,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L297", "id": "plugins_worker_rationale_297", - "community": 181, + "community": 53, "norm_label": "convert a :class:`filechange` to its ipc dict shape." }, { @@ -49914,7 +51273,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L312", "id": "plugins_worker_rationale_312", - "community": 181, + "community": 53, "norm_label": "context manager that suppresses errors from ``on_plugin_failure``. per back" }, { @@ -49923,7 +51282,7 @@ "source_file": "src/exlab_wizard/plugins/_worker.py", "source_location": "L351", "id": "plugins_worker_rationale_351", - "community": 181, + "community": 53, "norm_label": "worker entry point. returns the process exit code." }, { @@ -49932,7 +51291,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L1", "id": "src_exlab_wizard_constants_enums_py", - "community": 19, + "community": 29, "norm_label": "enums.py" }, { @@ -49941,7 +51300,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L14", "id": "constants_enums_runkind", - "community": 83, + "community": 79, "norm_label": "runkind" }, { @@ -49950,7 +51309,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L24", "id": "constants_enums_syncstatus", - "community": 19, + "community": 78, "norm_label": "syncstatus" }, { @@ -49959,7 +51318,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L41", "id": "constants_enums_tier", - "community": 138, + "community": 143, "norm_label": "tier" }, { @@ -49968,7 +51327,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L48", "id": "constants_enums_problemclass", - "community": 19, + "community": 29, "norm_label": "problemclass" }, { @@ -49977,7 +51336,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L65", "id": "constants_enums_findingkind", - "community": 19, + "community": 29, "norm_label": "findingkind" }, { @@ -49986,7 +51345,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L76", "id": "constants_enums_templatetype", - "community": 19, + "community": 359, "norm_label": "templatetype" }, { @@ -49995,7 +51354,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L84", "id": "constants_enums_runscope", - "community": 19, + "community": 359, "norm_label": "runscope" }, { @@ -50004,7 +51363,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L95", "id": "constants_enums_limsprojectstatus", - "community": 19, + "community": 29, "norm_label": "limsprojectstatus" }, { @@ -50013,7 +51372,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L109", "id": "constants_enums_limsprojectsource", - "community": 397, + "community": 29, "norm_label": "limsprojectsource" }, { @@ -50022,7 +51381,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L117", "id": "constants_enums_runsyncstate", - "community": 83, + "community": 79, "norm_label": "runsyncstate" }, { @@ -50031,7 +51390,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L137", "id": "constants_enums_setupstate", - "community": 19, + "community": 29, "norm_label": "setupstate" }, { @@ -50040,7 +51399,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L159", "id": "constants_enums_syncmode", - "community": 19, + "community": 78, "norm_label": "syncmode" }, { @@ -50049,7 +51408,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L173", "id": "constants_enums_stagingcleanupmode", - "community": 19, + "community": 29, "norm_label": "stagingcleanupmode" }, { @@ -50058,7 +51417,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L180", "id": "constants_enums_pluginstatus", - "community": 15, + "community": 21, "norm_label": "pluginstatus" }, { @@ -50067,7 +51426,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L190", "id": "constants_enums_creationlevel", - "community": 19, + "community": 29, "norm_label": "creationlevel" }, { @@ -50076,7 +51435,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L200", "id": "constants_enums_fieldtype", - "community": 19, + "community": 29, "norm_label": "fieldtype" }, { @@ -50085,7 +51444,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L210", "id": "constants_enums_bandwidthday", - "community": 19, + "community": 29, "norm_label": "bandwidthday" }, { @@ -50094,7 +51453,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L222", "id": "constants_enums_sessionkind", - "community": 19, + "community": 29, "norm_label": "sessionkind" }, { @@ -50103,7 +51462,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L234", "id": "constants_enums_nextaction", - "community": 19, + "community": 29, "norm_label": "nextaction" }, { @@ -50112,7 +51471,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L241", "id": "constants_enums_auditscopekind", - "community": 398, + "community": 29, "norm_label": "auditscopekind" }, { @@ -50121,7 +51480,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L254", "id": "constants_enums_directorylevel", - "community": 19, + "community": 29, "norm_label": "directorylevel" }, { @@ -50130,7 +51489,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L271", "id": "constants_enums_platform", - "community": 19, + "community": 29, "norm_label": "platform" }, { @@ -50139,7 +51498,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L279", "id": "constants_enums_setupnextaction", - "community": 19, + "community": 29, "norm_label": "setupnextaction" }, { @@ -50148,7 +51507,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L293", "id": "constants_enums_synchandlestate", - "community": 19, + "community": 29, "norm_label": "synchandlestate" }, { @@ -50157,7 +51516,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L305", "id": "constants_enums_pluginsourceroot", - "community": 19, + "community": 29, "norm_label": "pluginsourceroot" }, { @@ -50166,7 +51525,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L312", "id": "constants_enums_treeprojectstatus", - "community": 83, + "community": 79, "norm_label": "treeprojectstatus" }, { @@ -50175,7 +51534,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L1", "id": "constants_enums_rationale_1", - "community": 19, + "community": 29, "norm_label": "closed-set enumerations referenced by the cache files, rest api, and ui. every" }, { @@ -50184,7 +51543,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L15", "id": "constants_enums_rationale_15", - "community": 83, + "community": 79, "norm_label": "whether a run is a real experiment or a dry-run/test. stored under ``run_ki" }, { @@ -50193,7 +51552,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L25", "id": "constants_enums_rationale_25", - "community": 19, + "community": 78, "norm_label": "state machine for an item in the nas sync queue. stored under ``sync_status" }, { @@ -50202,7 +51561,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L42", "id": "constants_enums_rationale_42", - "community": 138, + "community": 143, "norm_label": "validator severity tier. backend spec \u00a78.1.6." }, { @@ -50211,7 +51570,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L49", "id": "constants_enums_rationale_49", - "community": 19, + "community": 29, "norm_label": "closed set of validator problem classes. backend spec \u00a78.1. values are the" }, { @@ -50220,7 +51579,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L66", "id": "constants_enums_rationale_66", - "community": 19, + "community": 29, "norm_label": "what kind of artefact a validator finding refers to. used for grouping find" }, { @@ -50229,7 +51588,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L77", "id": "constants_enums_rationale_77", - "community": 19, + "community": 359, "norm_label": "high-level copier-template category. backend spec \u00a75.2." }, { @@ -50238,7 +51597,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L85", "id": "constants_enums_rationale_85", - "community": 19, + "community": 359, "norm_label": "run-scope tag declared in a run template's ``_exlab_run_scope``. backend sp" }, { @@ -50247,7 +51606,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L96", "id": "constants_enums_rationale_96", - "community": 19, + "community": 29, "norm_label": "project status as returned by the lims rest api. the wire format is pascalc" }, { @@ -50256,7 +51615,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L110", "id": "constants_enums_rationale_110", - "community": 397, + "community": 29, "norm_label": "origin of a lims project row presented to the ui. backend spec \u00a711.3." }, { @@ -50265,7 +51624,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L118", "id": "constants_enums_rationale_118", - "community": 83, + "community": 79, "norm_label": "derived run-level rollup of a run's per-file nas sync progress. operator-fr" }, { @@ -50274,7 +51633,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L138", "id": "constants_enums_rationale_138", - "community": 19, + "community": 29, "norm_label": "first-run / setup-readiness state used by the launcher. backend spec \u00a74.9.1" }, { @@ -50283,7 +51642,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L160", "id": "constants_enums_rationale_160", - "community": 19, + "community": 78, "norm_label": "per-equipment sync role. gui/orchestrator redesign spec \u00a73.2. replaces the" }, { @@ -50292,7 +51651,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L174", "id": "constants_enums_rationale_174", - "community": 19, + "community": 29, "norm_label": "how nas staging directories are eventually purged. backend spec \u00a713.7." }, { @@ -50301,7 +51660,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L181", "id": "constants_enums_rationale_181", - "community": 15, + "community": 21, "norm_label": "plugin invocation outcome reported by the host. backend spec \u00a76.2.4." }, { @@ -50310,7 +51669,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L191", "id": "constants_enums_rationale_191", - "community": 19, + "community": 29, "norm_label": "whether a creation.json describes a project root or a run directory. stored" }, { @@ -50319,7 +51678,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L201", "id": "constants_enums_rationale_201", - "community": 19, + "community": 29, "norm_label": "allowed input types for readme field declarations. backend spec \u00a710." }, { @@ -50328,7 +51687,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L211", "id": "constants_enums_rationale_211", - "community": 19, + "community": 29, "norm_label": "day-of-week values for nas sync bandwidth windows. backend spec \u00a77.1." }, { @@ -50337,7 +51696,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L223", "id": "constants_enums_rationale_223", - "community": 19, + "community": 29, "norm_label": "whether a wizard session creates a project root or a run directory. mirrors" }, { @@ -50346,7 +51705,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L235", "id": "constants_enums_rationale_235", - "community": 19, + "community": 29, "norm_label": "outcome of a session-store transition. backend spec \u00a74.7." }, { @@ -50355,7 +51714,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L242", "id": "constants_enums_rationale_242", - "community": 398, + "community": 29, "norm_label": "kind discriminator for validator audit scopes. backend spec \u00a78.1. values ma" }, { @@ -50364,7 +51723,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L255", "id": "constants_enums_rationale_255", - "community": 19, + "community": 29, "norm_label": "result of classifying a directory in the validator engine. used internally" }, { @@ -50373,7 +51732,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L272", "id": "constants_enums_rationale_272", - "community": 19, + "community": 29, "norm_label": "normalized platform tag used for os-conditional path dispatch." }, { @@ -50382,7 +51741,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L280", "id": "constants_enums_rationale_280", - "community": 19, + "community": 29, "norm_label": "next action returned by ``paths.setup_state_next_action``. backend spec \u00a74." }, { @@ -50391,7 +51750,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L294", "id": "constants_enums_rationale_294", - "community": 19, + "community": 29, "norm_label": "in-process state of a nas sync job handle as observed by callers. distinct" }, { @@ -50400,7 +51759,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L306", "id": "constants_enums_rationale_306", - "community": 19, + "community": 29, "norm_label": "origin of a plugin record. backend spec \u00a76.1.1." }, { @@ -50409,7 +51768,7 @@ "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L313", "id": "constants_enums_rationale_313", - "community": 83, + "community": 79, "norm_label": "ui-layer project status displayed in the tree view. distinct from :class:`l" }, { @@ -50418,7 +51777,7 @@ "source_file": "src/exlab_wizard/constants/patterns.py", "source_location": "L1", "id": "src_exlab_wizard_constants_patterns_py", - "community": 518, + "community": 541, "norm_label": "patterns.py" }, { @@ -50427,7 +51786,7 @@ "source_file": "src/exlab_wizard/constants/patterns.py", "source_location": "L1", "id": "constants_patterns_rationale_1", - "community": 518, + "community": 541, "norm_label": "regex patterns and filename-rule literals used by validators. each regex is pro" }, { @@ -50436,7 +51795,7 @@ "source_file": "src/exlab_wizard/constants/limits.py", "source_location": "L1", "id": "src_exlab_wizard_constants_limits_py", - "community": 519, + "community": 542, "norm_label": "limits.py" }, { @@ -50445,7 +51804,7 @@ "source_file": "src/exlab_wizard/constants/limits.py", "source_location": "L1", "id": "constants_limits_rationale_1", - "community": 519, + "community": 542, "norm_label": "hard-coded numeric limits, timeouts, and policy ceilings. every value here is c" }, { @@ -50454,7 +51813,7 @@ "source_file": "src/exlab_wizard/constants/filenames.py", "source_location": "L1", "id": "src_exlab_wizard_constants_filenames_py", - "community": 520, + "community": 543, "norm_label": "filenames.py" }, { @@ -50463,7 +51822,7 @@ "source_file": "src/exlab_wizard/constants/filenames.py", "source_location": "L1", "id": "constants_filenames_rationale_1", - "community": 520, + "community": 543, "norm_label": "canonical filenames and on-disk path fragments used throughout the app. all val" }, { @@ -50472,7 +51831,7 @@ "source_file": "src/exlab_wizard/constants/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_constants_init_py", - "community": 439, + "community": 475, "norm_label": "__init__.py" }, { @@ -50481,7 +51840,7 @@ "source_file": "src/exlab_wizard/constants/keyring.py", "source_location": "L1", "id": "src_exlab_wizard_constants_keyring_py", - "community": 2, + "community": 43, "norm_label": "keyring.py" }, { @@ -50490,7 +51849,7 @@ "source_file": "src/exlab_wizard/constants/keyring.py", "source_location": "L1", "id": "constants_keyring_rationale_1", - "community": 2, + "community": 43, "norm_label": "os-keyring service/username conventions used for credential storage. the wizard" }, { @@ -50499,7 +51858,7 @@ "source_file": "src/exlab_wizard/constants/app.py", "source_location": "L1", "id": "src_exlab_wizard_constants_app_py", - "community": 521, + "community": 544, "norm_label": "app.py" }, { @@ -50508,7 +51867,7 @@ "source_file": "src/exlab_wizard/constants/app.py", "source_location": "L1", "id": "constants_app_rationale_1", - "community": 521, + "community": 544, "norm_label": "app-level identifiers used as path / keyring / branding fragments. single sourc" }, { @@ -50517,7 +51876,7 @@ "source_file": "src/exlab_wizard/constants/schema_versions.py", "source_location": "L1", "id": "src_exlab_wizard_constants_schema_versions_py", - "community": 522, + "community": 545, "norm_label": "schema_versions.py" }, { @@ -50526,7 +51885,7 @@ "source_file": "src/exlab_wizard/constants/schema_versions.py", "source_location": "L1", "id": "constants_schema_versions_rationale_1", - "community": 522, + "community": 545, "norm_label": "schema version pins for every json/yaml artifact the wizard reads or writes. ev" }, { @@ -50535,7 +51894,7 @@ "source_file": "src/exlab_wizard/io/json_files.py", "source_location": "L1", "id": "src_exlab_wizard_io_json_files_py", - "community": 66, + "community": 117, "norm_label": "json_files.py" }, { @@ -50544,7 +51903,7 @@ "source_file": "src/exlab_wizard/io/json_files.py", "source_location": "L28", "id": "io_json_files_require_schema_major", - "community": 66, + "community": 117, "norm_label": "require_schema_major()" }, { @@ -50553,7 +51912,7 @@ "source_file": "src/exlab_wizard/io/json_files.py", "source_location": "L53", "id": "io_json_files_read_msgspec_json", - "community": 66, + "community": 231, "norm_label": "read_msgspec_json()" }, { @@ -50562,7 +51921,7 @@ "source_file": "src/exlab_wizard/io/json_files.py", "source_location": "L73", "id": "io_json_files_read_msgspec_json_raw", - "community": 66, + "community": 117, "norm_label": "read_msgspec_json_raw()" }, { @@ -50571,7 +51930,7 @@ "source_file": "src/exlab_wizard/io/json_files.py", "source_location": "L94", "id": "io_json_files_peek_and_check_major", - "community": 66, + "community": 117, "norm_label": "_peek_and_check_major()" }, { @@ -50580,7 +51939,7 @@ "source_file": "src/exlab_wizard/io/json_files.py", "source_location": "L1", "id": "io_json_files_rationale_1", - "community": 66, + "community": 117, "norm_label": "msgspec json readers with optional schema-major gating. centralizes the ``path." }, { @@ -50589,7 +51948,7 @@ "source_file": "src/exlab_wizard/io/json_files.py", "source_location": "L29", "id": "io_json_files_rationale_29", - "community": 66, + "community": 117, "norm_label": "raise ``schemamajormismatcherror`` when ``version`` is a different major. b" }, { @@ -50598,7 +51957,7 @@ "source_file": "src/exlab_wizard/io/json_files.py", "source_location": "L59", "id": "io_json_files_rationale_59", - "community": 66, + "community": 231, "norm_label": "read ``path`` and decode it as ``type_``, optionally gating on major. when" }, { @@ -50607,7 +51966,7 @@ "source_file": "src/exlab_wizard/io/json_files.py", "source_location": "L78", "id": "io_json_files_rationale_78", - "community": 66, + "community": 117, "norm_label": "two-pass read returning the raw dict for migration-default patching. some r" }, { @@ -50616,7 +51975,7 @@ "source_file": "src/exlab_wizard/io/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_io_init_py", - "community": 523, + "community": 546, "norm_label": "__init__.py" }, { @@ -50625,7 +51984,7 @@ "source_file": "src/exlab_wizard/io/__init__.py", "source_location": "L1", "id": "io_init_rationale_1", - "community": 523, + "community": 546, "norm_label": "filesystem i/o helpers shared across the codebase. backend spec \u00a74.4 (file io d" }, { @@ -50634,7 +51993,7 @@ "source_file": "src/exlab_wizard/io/atomic_write.py", "source_location": "L1", "id": "src_exlab_wizard_io_atomic_write_py", - "community": 259, + "community": 262, "norm_label": "atomic_write.py" }, { @@ -50643,7 +52002,7 @@ "source_file": "src/exlab_wizard/io/atomic_write.py", "source_location": "L21", "id": "io_atomic_write_atomic_write_bytes", - "community": 259, + "community": 262, "norm_label": "atomic_write_bytes()" }, { @@ -50652,7 +52011,7 @@ "source_file": "src/exlab_wizard/io/atomic_write.py", "source_location": "L1", "id": "io_atomic_write_rationale_1", - "community": 259, + "community": 262, "norm_label": "atomic file writes via the \u00a74.4.5 temp-file + ``os.replace`` recipe. this is th" }, { @@ -50661,7 +52020,7 @@ "source_file": "src/exlab_wizard/io/atomic_write.py", "source_location": "L22", "id": "io_atomic_write_rationale_22", - "community": 259, + "community": 262, "norm_label": "write ``data`` to ``path`` atomically. implementation follows the \u00a74.4.5 re" }, { @@ -50670,7 +52029,7 @@ "source_file": "src/exlab_wizard/io/yaml_files.py", "source_location": "L1", "id": "src_exlab_wizard_io_yaml_files_py", - "community": 4, + "community": 7, "norm_label": "yaml_files.py" }, { @@ -50679,7 +52038,7 @@ "source_file": "src/exlab_wizard/io/yaml_files.py", "source_location": "L20", "id": "io_yaml_files_load_yaml_manifest", - "community": 4, + "community": 7, "norm_label": "load_yaml_manifest()" }, { @@ -50688,7 +52047,7 @@ "source_file": "src/exlab_wizard/io/yaml_files.py", "source_location": "L1", "id": "io_yaml_files_rationale_1", - "community": 4, + "community": 7, "norm_label": "shared yaml manifest reader (pyyaml safe-load). used for read-only manifests wh" }, { @@ -50697,7 +52056,7 @@ "source_file": "src/exlab_wizard/io/yaml_files.py", "source_location": "L21", "id": "io_yaml_files_rationale_21", - "community": 4, + "community": 7, "norm_label": "read and ``safe_load`` a yaml manifest into a plain dict. raises ``filenotf" }, { @@ -50706,7 +52065,7 @@ "source_file": "src/exlab_wizard/template/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_template_init_py", - "community": 441, + "community": 477, "norm_label": "__init__.py" }, { @@ -50715,7 +52074,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L1", "id": "src_exlab_wizard_template_copier_driver_py", - "community": 333, + "community": 49, "norm_label": "copier_driver.py" }, { @@ -50724,7 +52083,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L60", "id": "template_copier_driver_resolvedtemplate", - "community": 9, + "community": 10, "norm_label": "resolvedtemplate" }, { @@ -50733,7 +52092,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L95", "id": "template_copier_driver_renderresult", - "community": 9, + "community": 10, "norm_label": "renderresult" }, { @@ -50742,7 +52101,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L109", "id": "template_copier_driver_templateengine", - "community": 61, + "community": 49, "norm_label": "templateengine" }, { @@ -50751,7 +52110,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L112", "id": "template_copier_driver_templateengine_resolve", - "community": 19, + "community": 359, "norm_label": ".resolve()" }, { @@ -50760,7 +52119,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L228", "id": "template_copier_driver_extract_readme_fields", - "community": 333, + "community": 49, "norm_label": "_extract_readme_fields()" }, { @@ -50769,7 +52128,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L257", "id": "template_copier_driver_templateengine_render", - "community": 333, + "community": 49, "norm_label": ".render()" }, { @@ -50778,7 +52137,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L307", "id": "template_copier_driver_snapshot_files", - "community": 333, + "community": 49, "norm_label": "_snapshot_files()" }, { @@ -50787,7 +52146,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L1", "id": "template_copier_driver_rationale_1", - "community": 333, + "community": 49, "norm_label": "copier template-engine wrapper. backend spec \u00a74.4.2 / \u00a75. this module wraps cop" }, { @@ -50796,7 +52155,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L61", "id": "template_copier_driver_rationale_61", - "community": 9, + "community": 10, "norm_label": "a loaded template's metadata. backend spec \u00a75.2. attributes: name:" }, { @@ -50805,7 +52164,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L96", "id": "template_copier_driver_rationale_96", - "community": 9, + "community": 10, "norm_label": "outcome of a render call. attributes: dst_path: the absolute destin" }, { @@ -50814,7 +52173,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L110", "id": "template_copier_driver_rationale_110", - "community": 61, + "community": 49, "norm_label": "wraps the copier python api behind the \u00a74.4.2 contract." }, { @@ -50823,7 +52182,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L113", "id": "template_copier_driver_rationale_113", - "community": 19, + "community": 359, "norm_label": "load + validate a template's ``copier.yml``. args: template" }, { @@ -50832,7 +52191,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L231", "id": "template_copier_driver_rationale_231", - "community": 618, + "community": 643, "norm_label": "pull ``_exlab_readme.fields`` and reject core-field collisions. tolerat" }, { @@ -50841,7 +52200,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L263", "id": "template_copier_driver_rationale_263", - "community": 333, + "community": 49, "norm_label": "render the template into ``dst`` via copier. args: tpl: a p" }, { @@ -50850,7 +52209,7 @@ "source_file": "src/exlab_wizard/template/copier_driver.py", "source_location": "L308", "id": "template_copier_driver_rationale_308", - "community": 333, + "community": 49, "norm_label": "return the set of regular files under ``root`` (recursively). returns the e" }, { @@ -50859,7 +52218,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L1", "id": "src_exlab_wizard_utils_time_py", - "community": 123, + "community": 134, "norm_label": "time.py" }, { @@ -50868,7 +52227,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L28", "id": "utils_time_utc_now", - "community": 10, + "community": 18, "norm_label": "utc_now()" }, { @@ -50877,7 +52236,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L39", "id": "utils_time_utc_now_or", - "community": 313, + "community": 265, "norm_label": "utc_now_or()" }, { @@ -50886,7 +52245,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L49", "id": "utils_time_utc_now_iso", - "community": 123, + "community": 25, "norm_label": "utc_now_iso()" }, { @@ -50895,7 +52254,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L58", "id": "utils_time_dt_to_iso", - "community": 123, + "community": 134, "norm_label": "dt_to_iso()" }, { @@ -50904,7 +52263,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L69", "id": "utils_time_parse_utc_iso", - "community": 123, + "community": 134, "norm_label": "parse_utc_iso()" }, { @@ -50913,7 +52272,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L84", "id": "utils_time_parse_utc_iso_or_none", - "community": 123, + "community": 134, "norm_label": "parse_utc_iso_or_none()" }, { @@ -50922,7 +52281,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L1", "id": "utils_time_rationale_1", - "community": 123, + "community": 134, "norm_label": "utc iso-8601 timestamp helpers. backend spec \u00a713.4 fixes the wire format used i" }, { @@ -50931,7 +52290,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L29", "id": "utils_time_rationale_29", - "community": 10, + "community": 18, "norm_label": "return the current utc time as a timezone-aware ``datetime``. use this when" }, { @@ -50940,7 +52299,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L40", "id": "utils_time_rationale_40", - "community": 313, + "community": 265, "norm_label": "return ``dt`` when supplied, otherwise the current utc time. mirrors the ``" }, { @@ -50949,7 +52308,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L50", "id": "utils_time_rationale_50", - "community": 123, + "community": 25, "norm_label": "return the current utc time as ``yyyy-mm-ddthh:mm:ssz``. seconds-resolution" }, { @@ -50958,7 +52317,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L59", "id": "utils_time_rationale_59", - "community": 123, + "community": 134, "norm_label": "format a utc-aware ``datetime`` as ``yyyy-mm-ddthh:mm:ssz``. naive datetime" }, { @@ -50967,7 +52326,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L70", "id": "utils_time_rationale_70", - "community": 123, + "community": 134, "norm_label": "parse an iso-8601 string into a utc-aware ``datetime``. accepts both the ca" }, { @@ -50976,7 +52335,7 @@ "source_file": "src/exlab_wizard/utils/time.py", "source_location": "L85", "id": "utils_time_rationale_85", - "community": 123, + "community": 134, "norm_label": "like :func:`parse_utc_iso` but returns ``none`` on missing or bad input. us" }, { @@ -50985,7 +52344,7 @@ "source_file": "src/exlab_wizard/utils/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_utils_init_py", - "community": 524, + "community": 547, "norm_label": "__init__.py" }, { @@ -50994,7 +52353,7 @@ "source_file": "src/exlab_wizard/utils/__init__.py", "source_location": "L1", "id": "utils_init_rationale_1", - "community": 524, + "community": 547, "norm_label": "generic, dependency-free helpers used across the codebase. backend spec \u00a713.4 (" }, { @@ -51003,7 +52362,7 @@ "source_file": "src/exlab_wizard/utils/state.py", "source_location": "L1", "id": "src_exlab_wizard_utils_state_py", - "community": 22, + "community": 24, "norm_label": "state.py" }, { @@ -51012,7 +52371,7 @@ "source_file": "src/exlab_wizard/utils/state.py", "source_location": "L14", "id": "utils_state_assert_forward_transition", - "community": 22, + "community": 24, "norm_label": "assert_forward_transition()" }, { @@ -51021,7 +52380,7 @@ "source_file": "src/exlab_wizard/utils/state.py", "source_location": "L1", "id": "utils_state_rationale_1", - "community": 22, + "community": 24, "norm_label": "generic forward-transition guard for closed-set state machines. used by both th" }, { @@ -51030,7 +52389,7 @@ "source_file": "src/exlab_wizard/utils/state.py", "source_location": "L19", "id": "utils_state_rationale_19", - "community": 22, + "community": 24, "norm_label": "raise ``valueerror`` when ``current -> new_state`` is not in ``table``. ``t" }, { @@ -51039,7 +52398,7 @@ "source_file": "src/exlab_wizard/tray/icon.py", "source_location": "L1", "id": "src_exlab_wizard_tray_icon_py", - "community": 99, + "community": 103, "norm_label": "icon.py" }, { @@ -51048,7 +52407,7 @@ "source_file": "src/exlab_wizard/tray/icon.py", "source_location": "L39", "id": "tray_icon_default_icon_image", - "community": 99, + "community": 103, "norm_label": "default_icon_image()" }, { @@ -51057,7 +52416,7 @@ "source_file": "src/exlab_wizard/tray/icon.py", "source_location": "L58", "id": "tray_icon_build_icon", - "community": 99, + "community": 103, "norm_label": "build_icon()" }, { @@ -51066,7 +52425,7 @@ "source_file": "src/exlab_wizard/tray/icon.py", "source_location": "L94", "id": "tray_icon_import_pystray", - "community": 99, + "community": 103, "norm_label": "_import_pystray()" }, { @@ -51075,7 +52434,7 @@ "source_file": "src/exlab_wizard/tray/icon.py", "source_location": "L101", "id": "tray_icon_safe_call", - "community": 99, + "community": 103, "norm_label": "_safe_call()" }, { @@ -51084,7 +52443,7 @@ "source_file": "src/exlab_wizard/tray/icon.py", "source_location": "L1", "id": "tray_icon_rationale_1", - "community": 99, + "community": 103, "norm_label": "pystray icon construction. backend spec \u00a74.3.2. the tray icon's menu has three" }, { @@ -51093,7 +52452,7 @@ "source_file": "src/exlab_wizard/tray/icon.py", "source_location": "L40", "id": "tray_icon_rationale_40", - "community": 99, + "community": 103, "norm_label": "return a small pil.image used as the tray icon bitmap. imported lazily so t" }, { @@ -51102,7 +52461,7 @@ "source_file": "src/exlab_wizard/tray/icon.py", "source_location": "L68", "id": "tray_icon_rationale_68", - "community": 99, + "community": 103, "norm_label": "build the pystray icon with the \u00a74.1 menu. ``status_provider`` is invoked e" }, { @@ -51111,7 +52470,7 @@ "source_file": "src/exlab_wizard/tray/icon.py", "source_location": "L95", "id": "tray_icon_rationale_95", - "community": 99, + "community": 103, "norm_label": "lazy import so unit tests on headless hosts can mock pystray." }, { @@ -51120,7 +52479,7 @@ "source_file": "src/exlab_wizard/tray/icon.py", "source_location": "L102", "id": "tray_icon_rationale_102", - "community": 99, + "community": 103, "norm_label": "invoke a menu callback; log + swallow exceptions. the pystray menu handler" }, { @@ -51129,7 +52488,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L1", "id": "src_exlab_wizard_tray_server_runner_py", - "community": 74, + "community": 27, "norm_label": "server_runner.py" }, { @@ -51138,7 +52497,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L41", "id": "tray_server_runner_pick_free_port", - "community": 74, + "community": 27, "norm_label": "pick_free_port()" }, { @@ -51147,7 +52506,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L55", "id": "tray_server_runner_serverrunner", - "community": 74, + "community": 27, "norm_label": "serverrunner" }, { @@ -51156,7 +52515,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L61", "id": "tray_server_runner_serverrunner_init", - "community": 74, + "community": 27, "norm_label": ".__init__()" }, { @@ -51165,7 +52524,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L75", "id": "tray_server_runner_serverrunner_start", - "community": 74, + "community": 27, "norm_label": ".start()" }, { @@ -51174,7 +52533,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L103", "id": "tray_server_runner_serverrunner_stop", - "community": 74, + "community": 27, "norm_label": ".stop()" }, { @@ -51183,7 +52542,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L124", "id": "tray_server_runner_port", - "community": 74, + "community": 27, "norm_label": "port()" }, { @@ -51192,7 +52551,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L135", "id": "tray_server_runner_is_running", - "community": 74, + "community": 27, "norm_label": "is_running()" }, { @@ -51201,7 +52560,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L142", "id": "tray_server_runner_state_file", - "community": 74, + "community": 27, "norm_label": "state_file()" }, { @@ -51210,7 +52569,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L150", "id": "tray_server_runner_serverrunner_build_uvicorn", - "community": 74, + "community": 27, "norm_label": "._build_uvicorn()" }, { @@ -51219,7 +52578,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L170", "id": "tray_server_runner_serverrunner_write_state_file", - "community": 74, + "community": 27, "norm_label": "._write_state_file()" }, { @@ -51228,7 +52587,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L183", "id": "tray_server_runner_serverrunner_delete_state_file", - "community": 74, + "community": 27, "norm_label": "._delete_state_file()" }, { @@ -51237,7 +52596,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L1", "id": "tray_server_runner_rationale_1", - "community": 74, + "community": 27, "norm_label": "programmatic uvicorn launcher with atomic ``server.json`` writes. backend spec \u00a7" }, { @@ -51246,7 +52605,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L42", "id": "tray_server_runner_rationale_42", - "community": 74, + "community": 27, "norm_label": "return a free localhost port from the os. binds a sock_stream socket to ``(" }, { @@ -51255,7 +52614,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L56", "id": "tray_server_runner_rationale_56", - "community": 74, + "community": 27, "norm_label": "starts uvicorn on a free localhost port and tracks its state file. backend" }, { @@ -51264,7 +52623,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L76", "id": "tray_server_runner_rationale_76", - "community": 74, + "community": 27, "norm_label": "pick a port, launch uvicorn in a worker thread, write server.json. retu" }, { @@ -51273,7 +52632,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L104", "id": "tray_server_runner_rationale_104", - "community": 74, + "community": 27, "norm_label": "signal uvicorn to exit, join the worker thread, delete server.json. ide" }, { @@ -51282,7 +52641,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L125", "id": "tray_server_runner_rationale_125", - "community": 619, + "community": 644, "norm_label": "return the port the server is bound to. raises ``runtimeerror`` when ca" }, { @@ -51291,7 +52650,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L136", "id": "tray_server_runner_rationale_136", - "community": 620, + "community": 645, "norm_label": "return ``true`` while the worker thread is alive." }, { @@ -51300,7 +52659,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L143", "id": "tray_server_runner_rationale_143", - "community": 621, + "community": 646, "norm_label": "return the absolute path of the ``server.json`` state file." }, { @@ -51309,7 +52668,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L151", "id": "tray_server_runner_rationale_151", - "community": 74, + "community": 27, "norm_label": "return ``(uvicorn.config, uvicorn.server)`` for the given port. split o" }, { @@ -51318,7 +52677,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L171", "id": "tray_server_runner_rationale_171", - "community": 74, + "community": 27, "norm_label": "atomically write ``server.json``. backend spec \u00a74.4.5 idiom." }, { @@ -51327,7 +52686,7 @@ "source_file": "src/exlab_wizard/tray/server_runner.py", "source_location": "L184", "id": "tray_server_runner_rationale_184", - "community": 74, + "community": 27, "norm_label": "best-effort delete; missing file is fine." }, { @@ -51336,7 +52695,7 @@ "source_file": "src/exlab_wizard/tray/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_tray_init_py", - "community": 442, + "community": 478, "norm_label": "__init__.py" }, { @@ -51345,7 +52704,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L1", "id": "src_exlab_wizard_tray_autostart_py", - "community": 101, + "community": 213, "norm_label": "autostart.py" }, { @@ -51354,7 +52713,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L54", "id": "tray_autostart_autostartmanager", - "community": 73, + "community": 72, "norm_label": "autostartmanager" }, { @@ -51363,7 +52722,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L70", "id": "tray_autostart_autostartmanager_init", - "community": 73, + "community": 213, "norm_label": ".__init__()" }, { @@ -51372,7 +52731,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L93", "id": "tray_autostart_autostartmanager_is_registered", - "community": 101, + "community": 72, "norm_label": ".is_registered()" }, { @@ -51381,7 +52740,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L103", "id": "tray_autostart_autostartmanager_register", - "community": 101, + "community": 72, "norm_label": ".register()" }, { @@ -51390,7 +52749,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L113", "id": "tray_autostart_autostartmanager_unregister", - "community": 101, + "community": 72, "norm_label": ".unregister()" }, { @@ -51399,7 +52758,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L125", "id": "tray_autostart_executable_path", - "community": 101, + "community": 213, "norm_label": "executable_path()" }, { @@ -51408,7 +52767,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L130", "id": "tray_autostart_platform", - "community": 73, + "community": 213, "norm_label": "platform()" }, { @@ -51417,7 +52776,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L138", "id": "tray_autostart_autostartmanager_plist_path", - "community": 101, + "community": 72, "norm_label": "._plist_path()" }, { @@ -51426,7 +52785,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L141", "id": "tray_autostart_autostartmanager_write_plist", - "community": 101, + "community": 72, "norm_label": "._write_plist()" }, { @@ -51435,7 +52794,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L151", "id": "tray_autostart_autostartmanager_systemd_path", - "community": 101, + "community": 72, "norm_label": "._systemd_path()" }, { @@ -51444,7 +52803,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L154", "id": "tray_autostart_autostartmanager_desktop_path", - "community": 101, + "community": 72, "norm_label": "._desktop_path()" }, { @@ -51453,7 +52812,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L157", "id": "tray_autostart_autostartmanager_register_linux", - "community": 101, + "community": 72, "norm_label": "._register_linux()" }, { @@ -51462,7 +52821,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L163", "id": "tray_autostart_autostartmanager_write_systemd_unit", - "community": 101, + "community": 72, "norm_label": "._write_systemd_unit()" }, { @@ -51471,7 +52830,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L168", "id": "tray_autostart_autostartmanager_write_desktop_file", - "community": 101, + "community": 72, "norm_label": "._write_desktop_file()" }, { @@ -51480,7 +52839,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L177", "id": "tray_autostart_autostartmanager_set_win_reg_value", - "community": 101, + "community": 72, "norm_label": "._set_win_reg_value()" }, { @@ -51489,7 +52848,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L183", "id": "tray_autostart_autostartmanager_delete_win_reg_value", - "community": 101, + "community": 72, "norm_label": "._delete_win_reg_value()" }, { @@ -51498,7 +52857,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L193", "id": "tray_autostart_autostartmanager_win_reg_value", - "community": 101, + "community": 72, "norm_label": "._win_reg_value()" }, { @@ -51507,7 +52866,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L210", "id": "tray_autostart_render_plist", - "community": 101, + "community": 213, "norm_label": "_render_plist()" }, { @@ -51516,7 +52875,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L236", "id": "tray_autostart_render_systemd_unit", - "community": 101, + "community": 213, "norm_label": "_render_systemd_unit()" }, { @@ -51525,7 +52884,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L251", "id": "tray_autostart_render_desktop_file", - "community": 101, + "community": 213, "norm_label": "_render_desktop_file()" }, { @@ -51534,7 +52893,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L268", "id": "tray_autostart_detect_platform", - "community": 73, + "community": 213, "norm_label": "_detect_platform()" }, { @@ -51543,7 +52902,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L276", "id": "tray_autostart_silently_unlink", - "community": 101, + "community": 213, "norm_label": "_silently_unlink()" }, { @@ -51552,7 +52911,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L281", "id": "tray_autostart_import_winreg", - "community": 101, + "community": 72, "norm_label": "_import_winreg()" }, { @@ -51561,7 +52920,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L1", "id": "tray_autostart_rationale_1", - "community": 101, + "community": 213, "norm_label": "per-platform autostart registration. backend spec \u00a74.3.2 + \u00a715.7. registers ``e" }, { @@ -51570,7 +52929,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L55", "id": "tray_autostart_rationale_55", - "community": 73, + "community": 72, "norm_label": "per-platform autostart register / unregister / is_registered. construction-" }, { @@ -51579,7 +52938,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L94", "id": "tray_autostart_rationale_94", - "community": 101, + "community": 72, "norm_label": "return true iff a per-platform autostart record exists." }, { @@ -51588,7 +52947,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L104", "id": "tray_autostart_rationale_104", - "community": 101, + "community": 72, "norm_label": "create the per-platform autostart record. idempotent." }, { @@ -51597,7 +52956,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L114", "id": "tray_autostart_rationale_114", - "community": 101, + "community": 72, "norm_label": "remove the per-platform autostart record. idempotent." }, { @@ -51606,7 +52965,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L126", "id": "tray_autostart_rationale_126", - "community": 622, + "community": 647, "norm_label": "return the absolute path the autostart record points at." }, { @@ -51615,7 +52974,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L131", "id": "tray_autostart_rationale_131", - "community": 623, + "community": 648, "norm_label": "return the platform dispatch this manager is configured for." }, { @@ -51624,7 +52983,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L211", "id": "tray_autostart_rationale_211", - "community": 101, + "community": 213, "norm_label": "return the macos launchagent plist body. backend spec \u00a715.7.1." }, { @@ -51633,7 +52992,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L237", "id": "tray_autostart_rationale_237", - "community": 101, + "community": 213, "norm_label": "return the linux systemd-user unit body. backend spec \u00a715.7.1." }, { @@ -51642,7 +53001,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L252", "id": "tray_autostart_rationale_252", - "community": 101, + "community": 213, "norm_label": "return the xdg ``.desktop`` autostart body. backend spec \u00a715.7.1." }, { @@ -51651,7 +53010,7 @@ "source_file": "src/exlab_wizard/tray/autostart.py", "source_location": "L282", "id": "tray_autostart_rationale_282", - "community": 101, + "community": 72, "norm_label": "import ``winreg`` lazily so the module loads on macos / linux too. returns" }, { @@ -51660,7 +53019,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L1", "id": "src_exlab_wizard_tray_quit_coordinator_py", - "community": 47, + "community": 58, "norm_label": "quit_coordinator.py" }, { @@ -51669,7 +53028,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L49", "id": "tray_quit_coordinator_quitcoordinator", - "community": 47, + "community": 58, "norm_label": "quitcoordinator" }, { @@ -51678,7 +53037,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L57", "id": "tray_quit_coordinator_quitcoordinator_init", - "community": 47, + "community": 58, "norm_label": ".__init__()" }, { @@ -51687,7 +53046,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L82", "id": "tray_quit_coordinator_quitcoordinator_quit", - "community": 47, + "community": 58, "norm_label": ".quit()" }, { @@ -51696,7 +53055,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L112", "id": "tray_quit_coordinator_quitcoordinator_is_idle", - "community": 47, + "community": 58, "norm_label": "._is_idle()" }, { @@ -51705,7 +53064,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L125", "id": "tray_quit_coordinator_quitcoordinator_wait_for_idle", - "community": 47, + "community": 58, "norm_label": "._wait_for_idle()" }, { @@ -51714,7 +53073,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L147", "id": "tray_quit_coordinator_quitcoordinator_prompt_force_quit", - "community": 47, + "community": 58, "norm_label": "._prompt_force_quit()" }, { @@ -51723,7 +53082,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L163", "id": "tray_quit_coordinator_safe_count", - "community": 47, + "community": 58, "norm_label": "_safe_count()" }, { @@ -51732,7 +53091,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L1", "id": "tray_quit_coordinator_rationale_1", - "community": 47, + "community": 58, "norm_label": "graceful tray shutdown coordinator. backend spec \u00a74.3.2. steps documented in \u00a74" }, { @@ -51741,7 +53100,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L50", "id": "tray_quit_coordinator_rationale_50", - "community": 47, + "community": 58, "norm_label": "drive the \u00a74.3.2 graceful-shutdown protocol. construction-time dependencies" }, { @@ -51750,7 +53109,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L83", "id": "tray_quit_coordinator_rationale_83", - "community": 47, + "community": 58, "norm_label": "run the graceful-shutdown protocol. ``sigterm=true`` reduces the wait w" }, { @@ -51759,7 +53118,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L113", "id": "tray_quit_coordinator_rationale_113", - "community": 47, + "community": 58, "norm_label": "return true iff the \u00a74.3.2 predicate holds. ``sessionstore.active_sessi" }, { @@ -51768,7 +53127,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L126", "id": "tray_quit_coordinator_rationale_126", - "community": 47, + "community": 58, "norm_label": "poll :meth:`_is_idle` up to ``deadline_seconds`` seconds. returns true" }, { @@ -51777,7 +53136,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L148", "id": "tray_quit_coordinator_rationale_148", - "community": 47, + "community": 58, "norm_label": "invoke the operator-facing force-quit prompt. returns ``true`` to indic" }, { @@ -51786,7 +53145,7 @@ "source_file": "src/exlab_wizard/tray/quit_coordinator.py", "source_location": "L164", "id": "tray_quit_coordinator_rationale_164", - "community": 47, + "community": 58, "norm_label": "return ``int(obj.)`` defensively. falls through ``none``, missing att" }, { @@ -51795,7 +53154,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L1", "id": "src_exlab_wizard_tray_window_launcher_py", - "community": 86, + "community": 88, "norm_label": "window_launcher.py" }, { @@ -51804,7 +53163,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L35", "id": "tray_window_launcher_resolve_window_executable", - "community": 86, + "community": 88, "norm_label": "_resolve_window_executable()" }, { @@ -51813,7 +53172,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L55", "id": "tray_window_launcher_windowlauncher", - "community": 86, + "community": 88, "norm_label": "windowlauncher" }, { @@ -51822,7 +53181,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L63", "id": "tray_window_launcher_windowlauncher_init", - "community": 86, + "community": 88, "norm_label": ".__init__()" }, { @@ -51831,7 +53190,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L77", "id": "tray_window_launcher_windowlauncher_open", - "community": 86, + "community": 88, "norm_label": ".open()" }, { @@ -51840,7 +53199,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L89", "id": "tray_window_launcher_windowlauncher_close", - "community": 86, + "community": 88, "norm_label": ".close()" }, { @@ -51849,7 +53208,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L103", "id": "tray_window_launcher_is_alive", - "community": 86, + "community": 88, "norm_label": "is_alive()" }, { @@ -51858,7 +53217,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L110", "id": "tray_window_launcher_pid", - "community": 86, + "community": 88, "norm_label": "pid()" }, { @@ -51867,7 +53226,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L120", "id": "tray_window_launcher_windowlauncher_argv", - "community": 86, + "community": 88, "norm_label": "._argv()" }, { @@ -51876,7 +53235,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L126", "id": "tray_window_launcher_windowlauncher_focus_existing", - "community": 86, + "community": 88, "norm_label": "._focus_existing()" }, { @@ -51885,7 +53244,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L1", "id": "tray_window_launcher_rationale_1", - "community": 86, + "community": 88, "norm_label": "spawn / focus the on-demand window subprocess. backend spec \u00a74.3.2. the tray cl" }, { @@ -51894,7 +53253,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L36", "id": "tray_window_launcher_rationale_36", - "community": 86, + "community": 88, "norm_label": "return the argv prefix for spawning ``exlab-wizard-window``. resolution ord" }, { @@ -51903,7 +53262,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L56", "id": "tray_window_launcher_rationale_56", - "community": 86, + "community": 88, "norm_label": "spawn ``exlab-wizard-window`` as a subprocess, track its pid. on a re-open" }, { @@ -51912,7 +53271,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L78", "id": "tray_window_launcher_rationale_78", - "community": 86, + "community": 88, "norm_label": "spawn a window subprocess, or focus the existing one." }, { @@ -51921,7 +53280,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L90", "id": "tray_window_launcher_rationale_90", - "community": 86, + "community": 88, "norm_label": "terminate the live window subprocess, if any. idempotent." }, { @@ -51930,7 +53289,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L104", "id": "tray_window_launcher_rationale_104", - "community": 624, + "community": 649, "norm_label": "return ``true`` while the window subprocess is running." }, { @@ -51939,7 +53298,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L111", "id": "tray_window_launcher_rationale_111", - "community": 625, + "community": 650, "norm_label": "return the live window's pid, or ``none`` if no window is up." }, { @@ -51948,7 +53307,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L121", "id": "tray_window_launcher_rationale_121", - "community": 86, + "community": 88, "norm_label": "return the argv to spawn the window subprocess." }, { @@ -51957,7 +53316,7 @@ "source_file": "src/exlab_wizard/tray/window_launcher.py", "source_location": "L127", "id": "tray_window_launcher_rationale_127", - "community": 86, + "community": 88, "norm_label": "best-effort raise/focus of the existing window. v1 logs the request; th" }, { @@ -51966,7 +53325,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L1", "id": "src_exlab_wizard_tray_notifications_py", - "community": 36, + "community": 44, "norm_label": "notifications.py" }, { @@ -51975,7 +53334,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L50", "id": "tray_notifications_notify", - "community": 36, + "community": 44, "norm_label": "notify()" }, { @@ -51984,7 +53343,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L70", "id": "tray_notifications_default_notifier", - "community": 36, + "community": 44, "norm_label": "_default_notifier()" }, { @@ -51993,7 +53352,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L80", "id": "tray_notifications_noop_notifier", - "community": 36, + "community": 44, "norm_label": "_noop_notifier()" }, { @@ -52002,7 +53361,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L90", "id": "tray_notifications_bucket", - "community": 36, + "community": 44, "norm_label": "_bucket" }, { @@ -52011,7 +53370,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L99", "id": "tray_notifications_notificationbus", - "community": 36, + "community": 44, "norm_label": "notificationbus" }, { @@ -52020,7 +53379,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L108", "id": "tray_notifications_notificationbus_init", - "community": 36, + "community": 44, "norm_label": ".__init__()" }, { @@ -52029,7 +53388,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L125", "id": "tray_notifications_notificationbus_emit", - "community": 36, + "community": 44, "norm_label": ".emit()" }, { @@ -52038,7 +53397,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L153", "id": "tray_notifications_notificationbus_flush_pending", - "community": 36, + "community": 44, "norm_label": ".flush_pending()" }, { @@ -52047,7 +53406,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L166", "id": "tray_notifications_notificationbus_cancel_all", - "community": 36, + "community": 44, "norm_label": ".cancel_all()" }, { @@ -52056,7 +53415,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L178", "id": "tray_notifications_notificationbus_flush", - "community": 36, + "community": 44, "norm_label": "._flush()" }, { @@ -52065,7 +53424,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L192", "id": "tray_notifications_coalesced_message", - "community": 36, + "community": 44, "norm_label": "_coalesced_message()" }, { @@ -52074,7 +53433,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L1", "id": "tray_notifications_rationale_1", - "community": 36, + "community": 44, "norm_label": "os notifications via plyer with 5-second coalescing. backend spec \u00a715.7.3. two" }, { @@ -52083,7 +53442,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L56", "id": "tray_notifications_rationale_56", - "community": 36, + "community": 44, "norm_label": "fire a plyer notification (or an injected stub). ``notifier`` defaults to `" }, { @@ -52092,7 +53451,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L71", "id": "tray_notifications_rationale_71", - "community": 36, + "community": 44, "norm_label": "resolve the plyer notifier lazily; safe even when plyer's backend errors." }, { @@ -52101,7 +53460,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L91", "id": "tray_notifications_rationale_91", - "community": 36, + "community": 44, "norm_label": "per-trigger coalescing bucket." }, { @@ -52110,7 +53469,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L100", "id": "tray_notifications_rationale_100", - "community": 36, + "community": 44, "norm_label": "coalescing layer over :func:`notify`. the launcher constructs one bus and t" }, { @@ -52119,7 +53478,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L126", "id": "tray_notifications_rationale_126", - "community": 36, + "community": 44, "norm_label": "submit a notification trigger. if the window is foregrounded the call i" }, { @@ -52128,7 +53487,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L154", "id": "tray_notifications_rationale_154", - "community": 36, + "community": 44, "norm_label": "drain every active bucket synchronously. returns the bucket count. used" }, { @@ -52137,7 +53496,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L167", "id": "tray_notifications_rationale_167", - "community": 36, + "community": 44, "norm_label": "cancel every active timer without firing the notifications." }, { @@ -52146,7 +53505,7 @@ "source_file": "src/exlab_wizard/tray/notifications.py", "source_location": "L193", "id": "tray_notifications_rationale_193", - "community": 36, + "community": 44, "norm_label": "render the coalesced summary string for a burst of ``count`` events." }, { @@ -52155,7 +53514,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L1", "id": "src_exlab_wizard_tray_main_py", - "community": 114, + "community": 110, "norm_label": "main.py" }, { @@ -52164,7 +53523,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L49", "id": "tray_main_trayapp", - "community": 20, + "community": 9, "norm_label": "trayapp" }, { @@ -52173,7 +53532,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L69", "id": "tray_main_trayapp_start_server", - "community": 114, + "community": 110, "norm_label": ".start_server()" }, { @@ -52182,7 +53541,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L73", "id": "tray_main_trayapp_open_window", - "community": 20, + "community": 9, "norm_label": ".open_window()" }, { @@ -52191,7 +53550,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L77", "id": "tray_main_trayapp_request_quit", - "community": 114, + "community": 110, "norm_label": ".request_quit()" }, { @@ -52200,7 +53559,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L91", "id": "tray_main_trayapp_shutdown", - "community": 114, + "community": 110, "norm_label": ".shutdown()" }, { @@ -52209,7 +53568,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L98", "id": "tray_main_trayapp_run", - "community": 114, + "community": 110, "norm_label": ".run()" }, { @@ -52218,7 +53577,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L129", "id": "tray_main_build_default_app", - "community": 114, + "community": 110, "norm_label": "_build_default_app()" }, { @@ -52227,7 +53586,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L153", "id": "tray_main_build_default_components", - "community": 114, + "community": 110, "norm_label": "_build_default_components()" }, { @@ -52236,7 +53595,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L194", "id": "tray_main_tray_backend_available", - "community": 114, + "community": 110, "norm_label": "_tray_backend_available()" }, { @@ -52245,34 +53604,25 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L207", "id": "tray_main_parse_argv", - "community": 218, + "community": 9, "norm_label": "_parse_argv()" }, - { - "label": "_bootstrap_test_config()", - "file_type": "code", - "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L272", - "id": "tray_main_bootstrap_test_config", - "community": 0, - "norm_label": "_bootstrap_test_config()" - }, { "label": "_run_smoke()", "file_type": "code", "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L350", + "source_location": "L276", "id": "tray_main_run_smoke", - "community": 114, + "community": 110, "norm_label": "_run_smoke()" }, { "label": "main()", "file_type": "code", "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L383", + "source_location": "L309", "id": "tray_main_main", - "community": 114, + "community": 110, "norm_label": "main()" }, { @@ -52281,7 +53631,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L1", "id": "tray_main_rationale_1", - "community": 114, + "community": 110, "norm_label": "``exlab-wizard-tray`` console_scripts entry point. backend spec \u00a74.3.2. wires t" }, { @@ -52290,7 +53640,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L50", "id": "tray_main_rationale_50", - "community": 20, + "community": 9, "norm_label": "bundle of long-lived tray components. the launcher constructs one and calls" }, { @@ -52299,7 +53649,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L70", "id": "tray_main_rationale_70", - "community": 114, + "community": 110, "norm_label": "start the in-process fastapi server. returns the bound port." }, { @@ -52308,7 +53658,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L74", "id": "tray_main_rationale_74", - "community": 20, + "community": 9, "norm_label": "spawn or focus the window subprocess." }, { @@ -52317,7 +53667,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L78", "id": "tray_main_rationale_78", - "community": 114, + "community": 110, "norm_label": "trigger the graceful-shutdown protocol on the icon thread." }, { @@ -52326,7 +53676,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L92", "id": "tray_main_rationale_92", - "community": 114, + "community": 110, "norm_label": "tear down sub-components synchronously." }, { @@ -52335,7 +53685,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L99", "id": "tray_main_rationale_99", - "community": 114, + "community": 110, "norm_label": "start the server, build the icon, run the pystray loop. ``run_loop`` is" }, { @@ -52344,7 +53694,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L130", "id": "tray_main_rationale_130", - "community": 114, + "community": 110, "norm_label": "return the production fastapi app for the tray. constructs the live :class:" }, { @@ -52353,7 +53703,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L158", "id": "tray_main_rationale_158", - "community": 114, + "community": 110, "norm_label": "construct the production trayapp wiring. split out so :func:`main` can stay" }, { @@ -52362,7 +53712,7 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L195", "id": "tray_main_rationale_195", - "community": 114, + "community": 110, "norm_label": "true when a ``pystray`` backend can be imported. when it cannot (e.g. a hea" }, { @@ -52371,34 +53721,25 @@ "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L208", "id": "tray_main_rationale_208", - "community": 218, + "community": 9, "norm_label": "parse the tray's cli arguments. the tray accepts: - ``--version`` -- p" }, - { - "label": "Write a starter test ``config.yaml`` if one does not already exist. Called", - "file_type": "rationale", - "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L273", - "id": "tray_main_rationale_273", - "community": 0, - "norm_label": "write a starter test ``config.yaml`` if one does not already exist. called" - }, { "label": "Server-only loop. Boots the FastAPI server, prints the published port, waits", "file_type": "rationale", "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L351", - "id": "tray_main_rationale_351", - "community": 114, + "source_location": "L277", + "id": "tray_main_rationale_277", + "community": 110, "norm_label": "server-only loop. boots the fastapi server, prints the published port, waits" }, { "label": "``exlab-wizard-tray`` entry point. The main thread runs pystray; the FastAP", "file_type": "rationale", "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L384", - "id": "tray_main_rationale_384", - "community": 114, + "source_location": "L310", + "id": "tray_main_rationale_310", + "community": 110, "norm_label": "``exlab-wizard-tray`` entry point. the main thread runs pystray; the fastap" }, { @@ -52407,7 +53748,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L1", "id": "src_exlab_wizard_tray_dependencies_py", - "community": 14, + "community": 22, "norm_label": "dependencies.py" }, { @@ -52416,7 +53757,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L46", "id": "tray_dependencies_build_production_dependencies", - "community": 14, + "community": 22, "norm_label": "build_production_dependencies()" }, { @@ -52425,7 +53766,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L159", "id": "tray_dependencies_apply_live_config", - "community": 97, + "community": 101, "norm_label": "apply_live_config()" }, { @@ -52434,7 +53775,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L256", "id": "tray_dependencies_plugin_dir", - "community": 14, + "community": 22, "norm_label": "_plugin_dir()" }, { @@ -52443,7 +53784,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L262", "id": "tray_dependencies_lims_identity", - "community": 97, + "community": 101, "norm_label": "_lims_identity()" }, { @@ -52452,7 +53793,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L274", "id": "tray_dependencies_refresh_plugin_host_status", - "community": 97, + "community": 101, "norm_label": "_refresh_plugin_host_status()" }, { @@ -52461,7 +53802,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L289", "id": "tray_dependencies_reload_lims_client", - "community": 14, + "community": 22, "norm_label": "_reload_lims_client()" }, { @@ -52470,7 +53811,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L310", "id": "tray_dependencies_reload_nas_sync", - "community": 14, + "community": 22, "norm_label": "_reload_nas_sync()" }, { @@ -52479,7 +53820,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L341", "id": "tray_dependencies_reload_quiescence_poller", - "community": 14, + "community": 22, "norm_label": "_reload_quiescence_poller()" }, { @@ -52488,7 +53829,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L369", "id": "tray_dependencies_schedule_bringup", - "community": 14, + "community": 22, "norm_label": "_schedule_bringup()" }, { @@ -52497,7 +53838,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L394", "id": "tray_dependencies_fire_and_forget", - "community": 14, + "community": 22, "norm_label": "_fire_and_forget()" }, { @@ -52506,7 +53847,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L407", "id": "tray_dependencies_try", - "community": 14, + "community": 22, "norm_label": "_try()" }, { @@ -52515,7 +53856,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L416", "id": "tray_dependencies_load_config_safely", - "community": 64, + "community": 76, "norm_label": "_load_config_safely()" }, { @@ -52524,7 +53865,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L424", "id": "tray_dependencies_make_save_config", - "community": 14, + "community": 22, "norm_label": "_make_save_config()" }, { @@ -52533,7 +53874,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L434", "id": "tray_dependencies_derive_validator_inputs", - "community": 14, + "community": 22, "norm_label": "_derive_validator_inputs()" }, { @@ -52542,7 +53883,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L460", "id": "tray_dependencies_build_validator", - "community": 14, + "community": 22, "norm_label": "_build_validator()" }, { @@ -52551,7 +53892,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L471", "id": "tray_dependencies_build_session_store", - "community": 14, + "community": 22, "norm_label": "_build_session_store()" }, { @@ -52560,7 +53901,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L477", "id": "tray_dependencies_build_creation_writer", - "community": 14, + "community": 22, "norm_label": "_build_creation_writer()" }, { @@ -52569,7 +53910,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L483", "id": "tray_dependencies_build_equipment_writer", - "community": 14, + "community": 22, "norm_label": "_build_equipment_writer()" }, { @@ -52578,7 +53919,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L489", "id": "tray_dependencies_build_template_engine", - "community": 14, + "community": 22, "norm_label": "_build_template_engine()" }, { @@ -52587,7 +53928,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L495", "id": "tray_dependencies_build_plugin_host", - "community": 14, + "community": 22, "norm_label": "_build_plugin_host()" }, { @@ -52596,7 +53937,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L517", "id": "tray_dependencies_build_controller", - "community": 96, + "community": 224, "norm_label": "_build_controller()" }, { @@ -52605,7 +53946,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L551", "id": "tray_dependencies_build_keyring_store", - "community": 14, + "community": 22, "norm_label": "_build_keyring_store()" }, { @@ -52614,7 +53955,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L568", "id": "tray_dependencies_lims_keyring_password", - "community": 14, + "community": 22, "norm_label": "_lims_keyring_password()" }, { @@ -52623,7 +53964,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L588", "id": "tray_dependencies_check_keyring_present", - "community": 14, + "community": 22, "norm_label": "_check_keyring_present()" }, { @@ -52632,7 +53973,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L598", "id": "tray_dependencies_build_lims_client", - "community": 84, + "community": 98, "norm_label": "_build_lims_client()" }, { @@ -52641,7 +53982,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L616", "id": "tray_dependencies_hydrate_nas_remotes", - "community": 38, + "community": 68, "norm_label": "_hydrate_nas_remotes()" }, { @@ -52650,7 +53991,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L637", "id": "tray_dependencies_make_equipment_probe", - "community": 48, + "community": 43, "norm_label": "_make_equipment_probe()" }, { @@ -52659,7 +54000,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L676", "id": "tray_dependencies_make_lims_probe", - "community": 14, + "community": 22, "norm_label": "_make_lims_probe()" }, { @@ -52668,7 +54009,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L693", "id": "tray_dependencies_build_nas_sync", - "community": 14, + "community": 22, "norm_label": "_build_nas_sync()" }, { @@ -52677,7 +54018,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L736", "id": "tray_dependencies_make_nas_sync_snapshot", - "community": 14, + "community": 22, "norm_label": "_make_nas_sync_snapshot()" }, { @@ -52686,7 +54027,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L748", "id": "tray_dependencies_build_sync_state_writer", - "community": 14, + "community": 22, "norm_label": "_build_sync_state_writer()" }, { @@ -52695,7 +54036,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L760", "id": "tray_dependencies_build_quiescence_poller", - "community": 14, + "community": 22, "norm_label": "_build_quiescence_poller()" }, { @@ -52704,7 +54045,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L793", "id": "tray_dependencies_make_autostart_toggle", - "community": 14, + "community": 22, "norm_label": "_make_autostart_toggle()" }, { @@ -52713,7 +54054,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L805", "id": "tray_dependencies_make_session_store_snapshot", - "community": 14, + "community": 22, "norm_label": "_make_session_store_snapshot()" }, { @@ -52722,7 +54063,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L1", "id": "tray_dependencies_rationale_1", - "community": 14, + "community": 22, "norm_label": "production :class:`appdependencies` factory. backend spec \u00a74.5, \u00a74.6. the tray" }, { @@ -52731,7 +54072,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L47", "id": "tray_dependencies_rationale_47", - "community": 14, + "community": 22, "norm_label": "return a populated :class:`appdependencies` for the live tray. every per-co" }, { @@ -52740,7 +54081,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L160", "id": "tray_dependencies_rationale_160", - "community": 97, + "community": 101, "norm_label": "push a freshly saved ``config.yaml`` into the running components. replaces" }, { @@ -52749,7 +54090,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L263", "id": "tray_dependencies_rationale_263", - "community": 97, + "community": 101, "norm_label": "return the ``(endpoint, email)`` pair that defines a lims client. trailing" }, { @@ -52758,7 +54099,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L275", "id": "tray_dependencies_rationale_275", - "community": 97, + "community": 101, "norm_label": "re-derive the plugin-host status counters after a rebuild. mirrors the boot" }, { @@ -52767,7 +54108,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L290", "id": "tray_dependencies_rationale_290", - "community": 14, + "community": 22, "norm_label": "rebuild ``deps.lims_client`` for a changed endpoint / email. builds a fresh" }, { @@ -52776,7 +54117,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L311", "id": "tray_dependencies_rationale_311", - "community": 14, + "community": 22, "norm_label": "reconfigure the nas-sync client in place, or build it fresh. returns ``true" }, { @@ -52785,7 +54126,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L342", "id": "tray_dependencies_rationale_342", - "community": 14, + "community": 22, "norm_label": "reconfigure the quiescence poller in place, or build it fresh. returns ``tr" }, { @@ -52794,7 +54135,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L370", "id": "tray_dependencies_rationale_370", - "community": 14, + "community": 22, "norm_label": "schedule ``nas_sync.init()`` / ``poller.start()`` on the running loop. used" }, { @@ -52803,7 +54144,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L395", "id": "tray_dependencies_rationale_395", - "community": 14, + "community": 22, "norm_label": "run ``coro`` on the running loop, logging failures; no-op if loop-less." }, { @@ -52812,7 +54153,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L408", "id": "tray_dependencies_rationale_408", - "community": 14, + "community": 22, "norm_label": "run ``fn(*args, **kwargs)`` swallowing exceptions with a warn log." }, { @@ -52821,7 +54162,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L435", "id": "tray_dependencies_rationale_435", - "community": 14, + "community": 22, "norm_label": "derive ``(validator_config, equipment_roots, staging_root)`` from config. s" }, { @@ -52830,7 +54171,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L552", "id": "tray_dependencies_rationale_552", - "community": 14, + "community": 22, "norm_label": "build the lims/nas secret store with an optional fallback passphrase. when" }, { @@ -52839,7 +54180,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L569", "id": "tray_dependencies_rationale_569", - "community": 14, + "community": 22, "norm_label": "return the stored lims password, or ``none`` if absent/unavailable. the cre" }, { @@ -52848,7 +54189,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L617", "id": "tray_dependencies_rationale_617", - "community": 38, + "community": 68, "norm_label": "snapshot the rclone remotes defined in the operator's rclone.conf. rclone.c" }, { @@ -52857,7 +54198,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L638", "id": "tray_dependencies_rationale_638", - "community": 48, + "community": 43, "norm_label": "build the ``deps.equipment_probe`` callable. rclone.conf nas-sync migration" }, { @@ -52866,7 +54207,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L701", "id": "tray_dependencies_rationale_701", - "community": 14, + "community": 22, "norm_label": "build the :class:`nassyncclient` -- the public nas-sync surface. the client" }, { @@ -52875,7 +54216,7 @@ "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L749", "id": "tray_dependencies_rationale_749", - "community": 14, + "community": 22, "norm_label": "build the orchestrator-only ``sync_state.json`` writer. operator-free per-f" }, { @@ -52884,7 +54225,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L1", "id": "src_exlab_wizard_tray_status_py", - "community": 40, + "community": 47, "norm_label": "status.py" }, { @@ -52893,7 +54234,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L45", "id": "tray_status_statussnapshot", - "community": 40, + "community": 47, "norm_label": "statussnapshot" }, { @@ -52902,7 +54243,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L53", "id": "tray_status_snapshot_status", - "community": 40, + "community": 47, "norm_label": "snapshot_status()" }, { @@ -52911,7 +54252,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L76", "id": "tray_status_format_status", - "community": 40, + "community": 47, "norm_label": "format_status()" }, { @@ -52920,7 +54261,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L91", "id": "tray_status_statusticker", - "community": 40, + "community": 47, "norm_label": "statusticker" }, { @@ -52929,7 +54270,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L100", "id": "tray_status_statusticker_init", - "community": 40, + "community": 47, "norm_label": ".__init__()" }, { @@ -52938,7 +54279,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L120", "id": "tray_status_statusticker_start", - "community": 40, + "community": 47, "norm_label": ".start()" }, { @@ -52947,7 +54288,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L129", "id": "tray_status_statusticker_stop", - "community": 40, + "community": 47, "norm_label": ".stop()" }, { @@ -52956,7 +54297,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L136", "id": "tray_status_statusticker_tick_once", - "community": 40, + "community": 47, "norm_label": ".tick_once()" }, { @@ -52965,7 +54306,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L156", "id": "tray_status_statusticker_run", - "community": 40, + "community": 47, "norm_label": "._run()" }, { @@ -52974,7 +54315,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L162", "id": "tray_status_safe_int", - "community": 40, + "community": 47, "norm_label": "_safe_int()" }, { @@ -52983,7 +54324,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L1", "id": "tray_status_rationale_1", - "community": 40, + "community": 47, "norm_label": "status-submenu rendering. backend spec \u00a74.3.2. the tray's status submenu shows" }, { @@ -52992,7 +54333,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L46", "id": "tray_status_rationale_46", - "community": 40, + "community": 47, "norm_label": "immutable view over the \u00a74.3.2 status inputs." }, { @@ -53001,7 +54342,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L58", "id": "tray_status_rationale_58", - "community": 40, + "community": 47, "norm_label": "build a :class:`statussnapshot` from live component references. each compon" }, { @@ -53010,7 +54351,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L77", "id": "tray_status_rationale_77", - "community": 40, + "community": 47, "norm_label": "return the menu-label string for the \u00a74.3.2 formatter." }, { @@ -53019,7 +54360,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L92", "id": "tray_status_rationale_92", - "community": 40, + "community": 47, "norm_label": "polls :func:`snapshot_status` on a fixed cadence. on every tick the formatt" }, { @@ -53028,7 +54369,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L121", "id": "tray_status_rationale_121", - "community": 40, + "community": 47, "norm_label": "spawn the ticker thread. idempotent." }, { @@ -53037,7 +54378,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L130", "id": "tray_status_rationale_130", - "community": 40, + "community": 47, "norm_label": "signal the ticker to exit. idempotent." }, { @@ -53046,7 +54387,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L137", "id": "tray_status_rationale_137", - "community": 40, + "community": 47, "norm_label": "run a single tick synchronously. returns the new label. tests call this" }, { @@ -53055,7 +54396,7 @@ "source_file": "src/exlab_wizard/tray/status.py", "source_location": "L163", "id": "tray_status_rationale_163", - "community": 40, + "community": 47, "norm_label": "best-effort numeric read; missing / none / non-int returns 0." }, { @@ -53064,7 +54405,7 @@ "source_file": "src/exlab_wizard/tray/storage_secret.py", "source_location": "L1", "id": "src_exlab_wizard_tray_storage_secret_py", - "community": 260, + "community": 263, "norm_label": "storage_secret.py" }, { @@ -53073,7 +54414,7 @@ "source_file": "src/exlab_wizard/tray/storage_secret.py", "source_location": "L31", "id": "tray_storage_secret_load_or_create_storage_secret", - "community": 260, + "community": 263, "norm_label": "load_or_create_storage_secret()" }, { @@ -53082,7 +54423,7 @@ "source_file": "src/exlab_wizard/tray/storage_secret.py", "source_location": "L1", "id": "tray_storage_secret_rationale_1", - "community": 260, + "community": 263, "norm_label": "per-installation nicegui ``storage_secret`` token. backend spec \u00a715.3. nicegui'" }, { @@ -53091,7 +54432,7 @@ "source_file": "src/exlab_wizard/tray/storage_secret.py", "source_location": "L32", "id": "tray_storage_secret_rationale_32", - "community": 260, + "community": 263, "norm_label": "return the per-installation storage secret, generating it if absent. the fi" }, { @@ -53100,7 +54441,7 @@ "source_file": "src/exlab_wizard/readme/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_readme_init_py", - "community": 443, + "community": 479, "norm_label": "__init__.py" }, { @@ -53109,7 +54450,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L1", "id": "src_exlab_wizard_readme_generator_py", - "community": 96, + "community": 133, "norm_label": "generator.py" }, { @@ -53118,7 +54459,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L96", "id": "readme_generator_corefields", - "community": 180, + "community": 25, "norm_label": "corefields" }, { @@ -53127,7 +54468,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L110", "id": "readme_generator_templatefielddecl", - "community": 35, + "community": 48, "norm_label": "templatefielddecl" }, { @@ -53136,7 +54477,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L128", "id": "readme_generator_customfield", - "community": 35, + "community": 48, "norm_label": "customfield" }, { @@ -53145,7 +54486,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L140", "id": "readme_generator_systemfields", - "community": 180, + "community": 224, "norm_label": "systemfields" }, { @@ -53154,7 +54495,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L153", "id": "readme_generator_readmecontext", - "community": 180, + "community": 25, "norm_label": "readmecontext" }, { @@ -53163,7 +54504,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L176", "id": "readme_generator_readmegenerator", - "community": 96, + "community": 224, "norm_label": "readmegenerator" }, { @@ -53172,7 +54513,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L179", "id": "readme_generator_readmegenerator_generate", - "community": 96, + "community": 224, "norm_label": ".generate()" }, { @@ -53181,7 +54522,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L197", "id": "readme_generator_readmegenerator_generate_sync", - "community": 96, + "community": 133, "norm_label": "._generate_sync()" }, { @@ -53190,7 +54531,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L228", "id": "readme_generator_validate", - "community": 96, + "community": 133, "norm_label": "_validate()" }, { @@ -53199,7 +54540,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L247", "id": "readme_generator_validate_core_fields", - "community": 96, + "community": 133, "norm_label": "_validate_core_fields()" }, { @@ -53208,7 +54549,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L270", "id": "readme_generator_reject_core_redeclaration", - "community": 96, + "community": 133, "norm_label": "_reject_core_redeclaration()" }, { @@ -53217,7 +54558,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L283", "id": "readme_generator_validate_required_fields", - "community": 96, + "community": 133, "norm_label": "_validate_required_fields()" }, { @@ -53226,7 +54567,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L298", "id": "readme_generator_validate_field_id_uniqueness", - "community": 96, + "community": 133, "norm_label": "_validate_field_id_uniqueness()" }, { @@ -53235,7 +54576,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L313", "id": "readme_generator_validate_typed_fields", - "community": 96, + "community": 133, "norm_label": "_validate_typed_fields()" }, { @@ -53244,7 +54585,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L335", "id": "readme_generator_check_value_type", - "community": 96, + "community": 133, "norm_label": "_check_value_type()" }, { @@ -53253,7 +54594,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L378", "id": "readme_generator_validate_custom_field_labels", - "community": 96, + "community": 133, "norm_label": "_validate_custom_field_labels()" }, { @@ -53262,7 +54603,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L397", "id": "readme_generator_is_present", - "community": 96, + "community": 133, "norm_label": "_is_present()" }, { @@ -53271,7 +54612,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L418", "id": "readme_generator_core_fields_dict", - "community": 96, + "community": 133, "norm_label": "_core_fields_dict()" }, { @@ -53280,7 +54621,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L422", "id": "readme_generator_custom_fields_list", - "community": 96, + "community": 133, "norm_label": "_custom_fields_list()" }, { @@ -53289,7 +54630,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L426", "id": "readme_generator_system_fields_dict", - "community": 96, + "community": 133, "norm_label": "_system_fields_dict()" }, { @@ -53298,7 +54639,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L438", "id": "readme_generator_build_front_matter", - "community": 96, + "community": 133, "norm_label": "_build_front_matter()" }, { @@ -53307,7 +54648,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L458", "id": "readme_generator_render_readme_bytes", - "community": 96, + "community": 133, "norm_label": "_render_readme_bytes()" }, { @@ -53316,7 +54657,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L476", "id": "readme_generator_build_readme_fields", - "community": 96, + "community": 133, "norm_label": "_build_readme_fields()" }, { @@ -53325,7 +54666,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L1", "id": "readme_generator_rationale_1", - "community": 96, + "community": 133, "norm_label": "readme generator. backend spec \u00a710 / \u00a711.4. renders ``readme.md`` (yaml front m" }, { @@ -53334,7 +54675,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L97", "id": "readme_generator_rationale_97", - "community": 180, + "community": 25, "norm_label": "mandatory core fields (user interaction spec \u00a72). all three are non-empty (" }, { @@ -53343,7 +54684,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L111", "id": "readme_generator_rationale_111", - "community": 35, + "community": 48, "norm_label": "field declaration from a template's ``_exlab_readme.fields`` list or from ``" }, { @@ -53352,7 +54693,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L129", "id": "readme_generator_rationale_129", - "community": 35, + "community": 48, "norm_label": "an ad-hoc user-added field. backend spec \u00a710.4. custom fields are plain str" }, { @@ -53361,7 +54702,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L141", "id": "readme_generator_rationale_141", - "community": 180, + "community": 224, "norm_label": "auto-populated, non-editable system fields. backend spec \u00a710.6." }, { @@ -53370,7 +54711,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L154", "id": "readme_generator_rationale_154", - "community": 180, + "community": 25, "norm_label": "inputs to :class:`readmegenerator`. composed by the controller. the control" }, { @@ -53379,7 +54720,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L177", "id": "readme_generator_rationale_177", - "community": 96, + "community": 224, "norm_label": "renders ``readme.md`` + ``readme_fields.json``. backend spec \u00a710." }, { @@ -53388,7 +54729,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L180", "id": "readme_generator_rationale_180", - "community": 96, + "community": 224, "norm_label": "validate ``ctx``, write both files, return ``(readme, cache)``. the des" }, { @@ -53397,7 +54738,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L229", "id": "readme_generator_rationale_229", - "community": 96, + "community": 133, "norm_label": "run every validation gate. raises on the first failure. order matches the s" }, { @@ -53406,7 +54747,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L319", "id": "readme_generator_rationale_319", - "community": 96, + "community": 133, "norm_label": "per-type validation. spec \u00a710.3 type semantics. skips fields whose value is" }, { @@ -53415,7 +54756,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L379", "id": "readme_generator_rationale_379", - "community": 96, + "community": 133, "norm_label": "ensure custom labels do not shadow any layer's field id. the four-layer set" }, { @@ -53424,7 +54765,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L398", "id": "readme_generator_rationale_398", - "community": 96, + "community": 133, "norm_label": "return true iff ``value`` carries a non-empty piece of content. strings are" }, { @@ -53433,7 +54774,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L439", "id": "readme_generator_rationale_439", - "community": 96, + "community": 133, "norm_label": "build the ordered front matter dict for ``yaml.safe_dump``. order matches t" }, { @@ -53442,7 +54783,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L459", "id": "readme_generator_rationale_459", - "community": 96, + "community": 133, "norm_label": "render the full readme markdown into utf-8 bytes. ``yaml.safe_dump`` is con" }, { @@ -53451,7 +54792,7 @@ "source_file": "src/exlab_wizard/readme/generator.py", "source_location": "L481", "id": "readme_generator_rationale_481", - "community": 96, + "community": 133, "norm_label": "build the typed :class:`readmefieldsjson` payload for the cache file." }, { @@ -53460,457 +54801,430 @@ "source_file": "src/exlab_wizard/controller/creation.py", "source_location": "L1", "id": "src_exlab_wizard_controller_creation_py", - "community": 21, + "community": 5, "norm_label": "creation.py" }, { "label": "ProjectCreateRequest", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L141", + "source_location": "L135", "id": "controller_creation_projectcreaterequest", - "community": 9, + "community": 10, "norm_label": "projectcreaterequest" }, { "label": "RunCreateRequest", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L160", + "source_location": "L154", "id": "controller_creation_runcreaterequest", - "community": 9, + "community": 10, "norm_label": "runcreaterequest" }, { "label": "SessionHandle", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L185", + "source_location": "L179", "id": "controller_creation_sessionhandle", - "community": 9, + "community": 10, "norm_label": "sessionhandle" }, { "label": "ReadmeGeneratorProtocol", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L199", + "source_location": "L193", "id": "controller_creation_readmegeneratorprotocol", - "community": 9, + "community": 10, "norm_label": "readmegeneratorprotocol" }, { "label": ".generate()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L207", + "source_location": "L201", "id": "controller_creation_readmegeneratorprotocol_generate", - "community": 9, + "community": 10, "norm_label": ".generate()" }, { "label": "NoOpReadmeGenerator", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L210", + "source_location": "L204", "id": "controller_creation_noopreadmegenerator", - "community": 9, + "community": 10, "norm_label": "noopreadmegenerator" }, { "label": ".generate()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L219", + "source_location": "L213", "id": "controller_creation_noopreadmegenerator_generate", - "community": 210, + "community": 25, "norm_label": ".generate()" }, { "label": "NASSyncProtocol", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L226", + "source_location": "L220", "id": "controller_creation_nassyncprotocol", - "community": 9, + "community": 10, "norm_label": "nassyncprotocol" }, { "label": ".enqueue()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L229", + "source_location": "L223", "id": "controller_creation_nassyncprotocol_enqueue", - "community": 9, + "community": 10, "norm_label": ".enqueue()" }, { "label": "NoOpNASSync", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L232", + "source_location": "L226", "id": "controller_creation_noopnassync", - "community": 9, + "community": 10, "norm_label": "noopnassync" }, { "label": ".enqueue()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L235", + "source_location": "L229", "id": "controller_creation_noopnassync_enqueue", - "community": 9, + "community": 5, "norm_label": ".enqueue()" }, { "label": "CreationController", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L244", + "source_location": "L238", "id": "controller_creation_creationcontroller", - "community": 21, + "community": 5, "norm_label": "creationcontroller" }, { "label": ".__init__()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L252", + "source_location": "L246", "id": "controller_creation_creationcontroller_init", - "community": 9, + "community": 10, "norm_label": ".__init__()" }, { "label": "session_store()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L290", + "source_location": "L284", "id": "controller_creation_session_store", - "community": 21, + "community": 5, "norm_label": "session_store()" }, { "label": ".apply_config()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L294", + "source_location": "L288", "id": "controller_creation_creationcontroller_apply_config", - "community": 21, + "community": 5, "norm_label": ".apply_config()" }, { "label": ".create_project()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L311", + "source_location": "L305", "id": "controller_creation_creationcontroller_create_project", - "community": 21, + "community": 5, "norm_label": ".create_project()" }, { "label": ".create_run()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L324", + "source_location": "L318", "id": "controller_creation_creationcontroller_create_run", - "community": 21, + "community": 5, "norm_label": ".create_run()" }, { "label": ".resume()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L329", + "source_location": "L323", "id": "controller_creation_creationcontroller_resume", - "community": 21, + "community": 5, "norm_label": ".resume()" }, { "label": ".cancel()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L353", + "source_location": "L347", "id": "controller_creation_creationcontroller_cancel", - "community": 21, + "community": 5, "norm_label": ".cancel()" }, { "label": ".status()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L396", + "source_location": "L390", "id": "controller_creation_creationcontroller_status", - "community": 21, + "community": 5, "norm_label": ".status()" }, { "label": ".subscribe()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L403", + "source_location": "L397", "id": "controller_creation_creationcontroller_subscribe", - "community": 21, + "community": 5, "norm_label": ".subscribe()" }, { "label": "._launch()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L427", + "source_location": "L421", "id": "controller_creation_creationcontroller_launch", - "community": 21, + "community": 5, "norm_label": "._launch()" }, { "label": "._validate_inputs()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L465", + "source_location": "L459", "id": "controller_creation_creationcontroller_validate_inputs", - "community": 21, + "community": 5, "norm_label": "._validate_inputs()" }, { "label": "._run_pipeline()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L607", + "source_location": "L601", "id": "controller_creation_creationcontroller_run_pipeline", - "community": 21, + "community": 5, "norm_label": "._run_pipeline()" }, { "label": "._pipeline_states()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L627", + "source_location": "L621", "id": "controller_creation_creationcontroller_pipeline_states", - "community": 21, + "community": 5, "norm_label": "._pipeline_states()" }, { "label": "._resolve_template()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L728", + "source_location": "L722", "id": "controller_creation_creationcontroller_resolve_template", - "community": 21, + "community": 5, "norm_label": "._resolve_template()" }, { "label": "_short_id_for()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L733", + "source_location": "L727", "id": "controller_creation_short_id_for", - "community": 21, + "community": 5, "norm_label": "_short_id_for()" }, { "label": "_project_name_for()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L749", + "source_location": "L743", "id": "controller_creation_project_name_for", - "community": 21, + "community": 5, "norm_label": "_project_name_for()" }, { "label": "._resolve_run_lims_block()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L762", + "source_location": "L756", "id": "controller_creation_creationcontroller_resolve_run_lims_block", - "community": 21, + "community": 5, "norm_label": "._resolve_run_lims_block()" }, { "label": "_run_kind_value_for()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L782", + "source_location": "L776", "id": "controller_creation_run_kind_value_for", - "community": 21, + "community": 5, "norm_label": "_run_kind_value_for()" }, { "label": "._compose_destination_path()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L793", + "source_location": "L787", "id": "controller_creation_creationcontroller_compose_destination_path", - "community": 21, + "community": 5, "norm_label": "._compose_destination_path()" }, { "label": "._render()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L810", + "source_location": "L804", "id": "controller_creation_creationcontroller_render", - "community": 21, + "community": 5, "norm_label": "._render()" }, { "label": "._plugin_pass()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L837", + "source_location": "L831", "id": "controller_creation_creationcontroller_plugin_pass", - "community": 21, + "community": 5, "norm_label": "._plugin_pass()" }, { "label": "._build_readme_context()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L898", + "source_location": "L892", "id": "controller_creation_creationcontroller_build_readme_context", - "community": 180, + "community": 5, "norm_label": "._build_readme_context()" }, { "label": "._write_cache()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L963", + "source_location": "L933", "id": "controller_creation_creationcontroller_write_cache", - "community": 397, + "community": 25, "norm_label": "._write_cache()" }, { "label": "._write_equipment_json()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1078", + "source_location": "L1040", "id": "controller_creation_creationcontroller_write_equipment_json", - "community": 21, + "community": 25, "norm_label": "._write_equipment_json()" }, { "label": "._post_validate()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1114", + "source_location": "L1076", "id": "controller_creation_creationcontroller_post_validate", - "community": 21, + "community": 5, "norm_label": "._post_validate()" }, { "label": "._transition()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1162", + "source_location": "L1124", "id": "controller_creation_creationcontroller_transition", - "community": 21, + "community": 5, "norm_label": "._transition()" }, { "label": "._publish()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1183", + "source_location": "L1145", "id": "controller_creation_creationcontroller_publish", - "community": 21, + "community": 5, "norm_label": "._publish()" }, { "label": "._fail()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1188", + "source_location": "L1150", "id": "controller_creation_creationcontroller_fail", - "community": 21, + "community": 5, "norm_label": "._fail()" }, { "label": "._cleanup()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1198", + "source_location": "L1160", "id": "controller_creation_creationcontroller_cleanup", - "community": 21, + "community": 5, "norm_label": "._cleanup()" }, { "label": "._handle()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1217", + "source_location": "L1179", "id": "controller_creation_creationcontroller_handle", - "community": 21, + "community": 5, "norm_label": "._handle()" }, { "label": "_format_error()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1226", + "source_location": "L1188", "id": "controller_creation_format_error", - "community": 21, + "community": 5, "norm_label": "_format_error()" }, { "label": "._append_log()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1231", + "source_location": "L1193", "id": "controller_creation_creationcontroller_append_log", - "community": 21, + "community": 5, "norm_label": "._append_log()" }, { "label": "_required_field_ids()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1256", + "source_location": "L1218", "id": "controller_creation_required_field_ids", - "community": 21, + "community": 5, "norm_label": "_required_field_ids()" }, - { - "label": "_readme_decls_from_template()", - "file_type": "code", - "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1269", - "id": "controller_creation_readme_decls_from_template", - "community": 180, - "norm_label": "_readme_decls_from_template()" - }, - { - "label": "_readme_decls_from_config()", - "file_type": "code", - "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1301", - "id": "controller_creation_readme_decls_from_config", - "community": 180, - "norm_label": "_readme_decls_from_config()" - }, - { - "label": "_os_username()", - "file_type": "code", - "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1326", - "id": "controller_creation_os_username", - "community": 180, - "norm_label": "_os_username()" - }, { "label": "_has_hard_finding()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1339", + "source_location": "L1231", "id": "controller_creation_has_hard_finding", - "community": 21, + "community": 5, "norm_label": "_has_hard_finding()" }, { "label": "_attach_resolved()", "file_type": "code", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1343", + "source_location": "L1235", "id": "controller_creation_attach_resolved", - "community": 21, + "community": 5, "norm_label": "_attach_resolved()" }, { @@ -53919,331 +55233,304 @@ "source_file": "src/exlab_wizard/controller/creation.py", "source_location": "L1", "id": "controller_creation_rationale_1", - "community": 21, + "community": 5, "norm_label": "creation controller. backend spec \u00a74.4.1, \u00a74.7, \u00a74.8. composes the validator, t" }, { "label": "Inputs for :meth:`CreationController.create_project`. Backend Spec \u00a74.6.1 /", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L142", - "id": "controller_creation_rationale_142", - "community": 9, + "source_location": "L136", + "id": "controller_creation_rationale_136", + "community": 10, "norm_label": "inputs for :meth:`creationcontroller.create_project`. backend spec \u00a74.6.1 /" }, { "label": "Inputs for :meth:`CreationController.create_run`. Backend Spec \u00a74.6.1 / UI-", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L161", - "id": "controller_creation_rationale_161", - "community": 9, + "source_location": "L155", + "id": "controller_creation_rationale_155", + "community": 10, "norm_label": "inputs for :meth:`creationcontroller.create_run`. backend spec \u00a74.6.1 / ui-" }, { "label": "Snapshot of session state. Backend Spec \u00a74.4.1.", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L186", - "id": "controller_creation_rationale_186", - "community": 9, + "source_location": "L180", + "id": "controller_creation_rationale_180", + "community": 10, "norm_label": "snapshot of session state. backend spec \u00a74.4.1." }, { "label": "The README generator surface the controller depends on. Backend \u00a710. Mirror", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L200", - "id": "controller_creation_rationale_200", - "community": 9, + "source_location": "L194", + "id": "controller_creation_rationale_194", + "community": 10, "norm_label": "the readme generator surface the controller depends on. backend \u00a710. mirror" }, { "label": "Lightweight README generator for tests / headless fixtures. Writes a tiny `", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L211", - "id": "controller_creation_rationale_211", - "community": 9, + "source_location": "L205", + "id": "controller_creation_rationale_205", + "community": 10, "norm_label": "lightweight readme generator for tests / headless fixtures. writes a tiny `" }, { "label": "The NAS sync surface the controller depends on. Phase 10.", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L227", - "id": "controller_creation_rationale_227", - "community": 9, + "source_location": "L221", + "id": "controller_creation_rationale_221", + "community": 10, "norm_label": "the nas sync surface the controller depends on. phase 10." }, { "label": "No-op stand-in for :class:`NASSyncClient` until Phase 10 lands.", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L233", - "id": "controller_creation_rationale_233", - "community": 9, + "source_location": "L227", + "id": "controller_creation_rationale_227", + "community": 10, "norm_label": "no-op stand-in for :class:`nassyncclient` until phase 10 lands." }, { "label": "Drives the \u00a74.7 state machine end-to-end. Composes the validator (Phase 4),", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L245", - "id": "controller_creation_rationale_245", - "community": 21, + "source_location": "L239", + "id": "controller_creation_rationale_239", + "community": 5, "norm_label": "drives the \u00a74.7 state machine end-to-end. composes the validator (phase 4)," }, { "label": "Expose the in-memory session store for the API surface.", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L291", - "id": "controller_creation_rationale_291", - "community": 626, + "source_location": "L285", + "id": "controller_creation_rationale_285", + "community": 651, "norm_label": "expose the in-memory session store for the api surface." }, { "label": "Swap the controller's config (and optionally plugin host) in place. Eve", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L295", - "id": "controller_creation_rationale_295", - "community": 21, + "source_location": "L289", + "id": "controller_creation_rationale_289", + "community": 5, "norm_label": "swap the controller's config (and optionally plugin host) in place. eve" }, { "label": "Open a project-creation session and start the pipeline. The session is", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L312", - "id": "controller_creation_rationale_312", - "community": 21, + "source_location": "L306", + "id": "controller_creation_rationale_306", + "community": 5, "norm_label": "open a project-creation session and start the pipeline. the session is" }, { "label": "Open a run-creation session and start the pipeline.", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L325", - "id": "controller_creation_rationale_325", - "community": 21, + "source_location": "L319", + "id": "controller_creation_rationale_319", + "community": 5, "norm_label": "open a run-creation session and start the pipeline." }, { "label": "Supply ``extra_inputs`` after a ``PluginInputRequired`` prompt. Pushes", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L330", - "id": "controller_creation_rationale_330", - "community": 21, + "source_location": "L324", + "id": "controller_creation_rationale_324", + "community": 5, "norm_label": "supply ``extra_inputs`` after a ``plugininputrequired`` prompt. pushes" }, { "label": "Abort an in-flight session. Pushes a ``None`` onto the resume queue (so", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L354", - "id": "controller_creation_rationale_354", - "community": 21, + "source_location": "L348", + "id": "controller_creation_rationale_348", + "community": 5, "norm_label": "abort an in-flight session. pushes a ``none`` onto the resume queue (so" }, { "label": "Return a snapshot :class:`SessionHandle` for ``session_id``.", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L397", - "id": "controller_creation_rationale_397", - "community": 21, + "source_location": "L391", + "id": "controller_creation_rationale_391", + "community": 5, "norm_label": "return a snapshot :class:`sessionhandle` for ``session_id``." }, { "label": "Yield WebSocket-event dicts for the named session. Wraps the session's", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L404", - "id": "controller_creation_rationale_404", - "community": 21, + "source_location": "L398", + "id": "controller_creation_rationale_398", + "community": 5, "norm_label": "yield websocket-event dicts for the named session. wraps the session's" }, { "label": "Validate the request, then spawn the pipeline as a background task. The", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L428", - "id": "controller_creation_rationale_428", - "community": 21, + "source_location": "L422", + "id": "controller_creation_rationale_422", + "community": 5, "norm_label": "validate the request, then spawn the pipeline as a background task. the" }, { "label": "Run the \u00a72 mandatory-core-field gate. Raises :class:`ValidationError` o", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L466", - "id": "controller_creation_rationale_466", - "community": 21, + "source_location": "L460", + "id": "controller_creation_rationale_460", + "community": 5, "norm_label": "run the \u00a72 mandatory-core-field gate. raises :class:`validationerror` o" }, { "label": "Drive the session from RENDERING to DONE / FAILED / ABORTED.", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L608", - "id": "controller_creation_rationale_608", - "community": 21, + "source_location": "L602", + "id": "controller_creation_rationale_602", + "community": 5, "norm_label": "drive the session from rendering to done / failed / aborted." }, { "label": "Run the RENDERING \u2192 DONE pipeline once.", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L628", - "id": "controller_creation_rationale_628", - "community": 21, + "source_location": "L622", + "id": "controller_creation_rationale_622", + "community": 5, "norm_label": "run the rendering \u2192 done pipeline once." }, { "label": "Return the LIMS project ``short_id`` for the request. For a project req", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L734", - "id": "controller_creation_rationale_734", - "community": 627, + "source_location": "L728", + "id": "controller_creation_rationale_728", + "community": 652, "norm_label": "return the lims project ``short_id`` for the request. for a project req" }, { "label": "Return the human-readable LIMS project name for the request. This is th", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L750", - "id": "controller_creation_rationale_750", - "community": 628, + "source_location": "L744", + "id": "controller_creation_rationale_744", + "community": 653, "norm_label": "return the human-readable lims project name for the request. this is th" }, { "label": "Read the parent project's ``lims_project`` block for a run. A run inher", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L763", - "id": "controller_creation_rationale_763", - "community": 21, + "source_location": "L757", + "id": "controller_creation_rationale_757", + "community": 5, "norm_label": "read the parent project's ``lims_project`` block for a run. a run inher" }, { "label": "Return the ``run_kind`` value to record on ``creation.json``. Project-l", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L783", - "id": "controller_creation_rationale_783", - "community": 629, + "source_location": "L777", + "id": "controller_creation_rationale_777", + "community": 654, "norm_label": "return the ``run_kind`` value to record on ``creation.json``. project-l" }, { "label": "Render the resolved template into ``dst``. Copier receives the request'", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L816", - "id": "controller_creation_rationale_816", - "community": 21, + "source_location": "L810", + "id": "controller_creation_rationale_810", + "community": 5, "norm_label": "render the resolved template into ``dst``. copier receives the request'" }, { "label": "Compose the \u00a710 four-layer :class:`ReadmeContext` for ``req``. Maps the", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L905", - "id": "controller_creation_rationale_905", - "community": 180, + "source_location": "L899", + "id": "controller_creation_rationale_899", + "community": 5, "norm_label": "compose the \u00a710 four-layer :class:`readmecontext` for ``req``. maps the" }, { "label": "Write README + creation.json into the destination tree.", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L973", - "id": "controller_creation_rationale_973", - "community": 397, + "source_location": "L943", + "id": "controller_creation_rationale_943", + "community": 25, "norm_label": "write readme + creation.json into the destination tree." }, { "label": "Write the per-equipment ``equipment.json`` registry record. Backend Spe", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1083", - "id": "controller_creation_rationale_1083", - "community": 21, + "source_location": "L1045", + "id": "controller_creation_rationale_1045", + "community": 25, "norm_label": "write the per-equipment ``equipment.json`` registry record. backend spe" }, { "label": "Run :meth:`Validator.validate_creation` against the rendered tree. Catc", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1120", - "id": "controller_creation_rationale_1120", - "community": 21, + "source_location": "L1082", + "id": "controller_creation_rationale_1082", + "community": 5, "norm_label": "run :meth:`validator.validate_creation` against the rendered tree. catc" }, { "label": "Remove or leave the partial directory per the spec.", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1199", - "id": "controller_creation_rationale_1199", - "community": 21, + "source_location": "L1161", + "id": "controller_creation_rationale_1161", + "community": 5, "norm_label": "remove or leave the partial directory per the spec." }, { "label": "Best-effort append to the equipment-level log. Backend Spec \u00a711.5. Comp", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1232", - "id": "controller_creation_rationale_1232", - "community": 21, + "source_location": "L1194", + "id": "controller_creation_rationale_1194", + "community": 5, "norm_label": "best-effort append to the equipment-level log. backend spec \u00a711.5. comp" }, { "label": "Return the ``id`` of every entry in ``extra_fields`` with ``required: true``.", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1257", - "id": "controller_creation_rationale_1257", - "community": 21, + "source_location": "L1219", + "id": "controller_creation_rationale_1219", + "community": 5, "norm_label": "return the ``id`` of every entry in ``extra_fields`` with ``required: true``." }, - { - "label": "Map a template's ``_exlab_readme.fields`` dicts to typed declarations. Entr", - "file_type": "rationale", - "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1270", - "id": "controller_creation_rationale_1270", - "community": 180, - "norm_label": "map a template's ``_exlab_readme.fields`` dicts to typed declarations. entr" - }, - { - "label": "Map ``config.readme.defaults`` entries to typed declarations. Core field id", - "file_type": "rationale", - "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1302", - "id": "controller_creation_rationale_1302", - "community": 180, - "norm_label": "map ``config.readme.defaults`` entries to typed declarations. core field id" - }, - { - "label": "Return the creating OS user for the README ``system.created_by``. Distinct", - "file_type": "rationale", - "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1327", - "id": "controller_creation_rationale_1327", - "community": 180, - "norm_label": "return the creating os user for the readme ``system.created_by``. distinct" - }, { "label": "Stash the resolved template on the request so the pipeline can re-use it. T", "file_type": "rationale", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1346", - "id": "controller_creation_rationale_1346", - "community": 21, + "source_location": "L1238", + "id": "controller_creation_rationale_1238", + "community": 5, "norm_label": "stash the resolved template on the request so the pipeline can re-use it. t" }, { @@ -54252,7 +55539,7 @@ "source_file": "src/exlab_wizard/controller/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_controller_init_py", - "community": 392, + "community": 400, "norm_label": "__init__.py" }, { @@ -54261,7 +55548,7 @@ "source_file": "src/exlab_wizard/controller/state_machine.py", "source_location": "L1", "id": "src_exlab_wizard_controller_state_machine_py", - "community": 9, + "community": 10, "norm_label": "state_machine.py" }, { @@ -54270,7 +55557,7 @@ "source_file": "src/exlab_wizard/controller/state_machine.py", "source_location": "L45", "id": "controller_state_machine_sessionstate", - "community": 9, + "community": 10, "norm_label": "sessionstate" }, { @@ -54279,7 +55566,7 @@ "source_file": "src/exlab_wizard/controller/state_machine.py", "source_location": "L66", "id": "controller_state_machine_phase", - "community": 9, + "community": 10, "norm_label": "phase" }, { @@ -54288,7 +55575,7 @@ "source_file": "src/exlab_wizard/controller/state_machine.py", "source_location": "L102", "id": "controller_state_machine_state_to_phase", - "community": 22, + "community": 24, "norm_label": "state_to_phase()" }, { @@ -54297,7 +55584,7 @@ "source_file": "src/exlab_wizard/controller/state_machine.py", "source_location": "L139", "id": "controller_state_machine_build_valid_transitions", - "community": 9, + "community": 10, "norm_label": "_build_valid_transitions()" }, { @@ -54306,7 +55593,7 @@ "source_file": "src/exlab_wizard/controller/state_machine.py", "source_location": "L159", "id": "controller_state_machine_assert_transition", - "community": 22, + "community": 24, "norm_label": "assert_transition()" }, { @@ -54315,7 +55602,7 @@ "source_file": "src/exlab_wizard/controller/state_machine.py", "source_location": "L1", "id": "controller_state_machine_rationale_1", - "community": 9, + "community": 10, "norm_label": "creation-session state machine. backend spec \u00a74.7, \u00a74.7.1. defines two enums an" }, { @@ -54324,7 +55611,7 @@ "source_file": "src/exlab_wizard/controller/state_machine.py", "source_location": "L46", "id": "controller_state_machine_rationale_46", - "community": 9, + "community": 10, "norm_label": "internal creation-session state. backend spec \u00a74.7. values mirror the \u00a74.7" }, { @@ -54333,7 +55620,7 @@ "source_file": "src/exlab_wizard/controller/state_machine.py", "source_location": "L67", "id": "controller_state_machine_rationale_67", - "community": 9, + "community": 10, "norm_label": "externally-emitted ``phase`` event. backend spec \u00a74.6.2. sent over the ``ws" }, { @@ -54342,7 +55629,7 @@ "source_file": "src/exlab_wizard/controller/state_machine.py", "source_location": "L103", "id": "controller_state_machine_rationale_103", - "community": 22, + "community": 24, "norm_label": "return the :class:`phase` event corresponding to ``state``. backend spec \u00a74" }, { @@ -54351,7 +55638,7 @@ "source_file": "src/exlab_wizard/controller/state_machine.py", "source_location": "L140", "id": "controller_state_machine_rationale_140", - "community": 9, + "community": 10, "norm_label": "augment forward transitions with cancel/fail edges." }, { @@ -54360,16 +55647,142 @@ "source_file": "src/exlab_wizard/controller/state_machine.py", "source_location": "L160", "id": "controller_state_machine_rationale_160", - "community": 22, + "community": 24, "norm_label": "raise :class:`valueerror` if ``current -> new_state`` is illegal. defensive" }, + { + "label": "metadata_assembly.py", + "file_type": "code", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L1", + "id": "src_exlab_wizard_controller_metadata_assembly_py", + "community": 25, + "norm_label": "metadata_assembly.py" + }, + { + "label": "TemplateDesc", + "file_type": "code", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L68", + "id": "controller_metadata_assembly_templatedesc", + "community": 25, + "norm_label": "templatedesc" + }, + { + "label": "build_readme_context()", + "file_type": "code", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L96", + "id": "controller_metadata_assembly_build_readme_context", + "community": 25, + "norm_label": "build_readme_context()" + }, + { + "label": "build_creation_json()", + "file_type": "code", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L168", + "id": "controller_metadata_assembly_build_creation_json", + "community": 25, + "norm_label": "build_creation_json()" + }, + { + "label": "_readme_decls_from_template()", + "file_type": "code", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L230", + "id": "controller_metadata_assembly_readme_decls_from_template", + "community": 25, + "norm_label": "_readme_decls_from_template()" + }, + { + "label": "_readme_decls_from_config()", + "file_type": "code", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L262", + "id": "controller_metadata_assembly_readme_decls_from_config", + "community": 25, + "norm_label": "_readme_decls_from_config()" + }, + { + "label": "_os_username()", + "file_type": "code", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L287", + "id": "controller_metadata_assembly_os_username", + "community": 5, + "norm_label": "_os_username()" + }, + { + "label": "Shared metadata value-assembly. Backend Spec \u00a710 / \u00a711.3; design spec \u00a75. This", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L1", + "id": "controller_metadata_assembly_rationale_1", + "community": 25, + "norm_label": "shared metadata value-assembly. backend spec \u00a710 / \u00a711.3; design spec \u00a75. this" + }, + { + "label": "Dependency-light stand-in for ``ResolvedTemplate``. Design spec \u00a75. Carries", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L69", + "id": "controller_metadata_assembly_rationale_69", + "community": 25, + "norm_label": "dependency-light stand-in for ``resolvedtemplate``. design spec \u00a75. carries" + }, + { + "label": "Compose the \u00a710 four-layer :class:`ReadmeContext`. Maps the template's ``_e", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L112", + "id": "controller_metadata_assembly_rationale_112", + "community": 25, + "norm_label": "compose the \u00a710 four-layer :class:`readmecontext`. maps the template's ``_e" + }, + { + "label": "Assemble the \u00a711.3 :class:`CreationJson` payload. Redesign \u00a73.1: creation.j", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L184", + "id": "controller_metadata_assembly_rationale_184", + "community": 25, + "norm_label": "assemble the \u00a711.3 :class:`creationjson` payload. redesign \u00a73.1: creation.j" + }, + { + "label": "Map a template's ``_exlab_readme.fields`` dicts to typed declarations. Entr", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L231", + "id": "controller_metadata_assembly_rationale_231", + "community": 25, + "norm_label": "map a template's ``_exlab_readme.fields`` dicts to typed declarations. entr" + }, + { + "label": "Map ``config.readme.defaults`` entries to typed declarations. Core field id", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L263", + "id": "controller_metadata_assembly_rationale_263", + "community": 25, + "norm_label": "map ``config.readme.defaults`` entries to typed declarations. core field id" + }, + { + "label": "Return the creating OS user for the README ``system.created_by``. Distinct", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L288", + "id": "controller_metadata_assembly_rationale_288", + "community": 5, + "norm_label": "return the creating os user for the readme ``system.created_by``. distinct" + }, { "label": "session_store.py", "file_type": "code", "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L1", "id": "src_exlab_wizard_controller_session_store_py", - "community": 10, + "community": 18, "norm_label": "session_store.py" }, { @@ -54378,7 +55791,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L46", "id": "controller_session_store_session", - "community": 9, + "community": 10, "norm_label": "session" }, { @@ -54387,7 +55800,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L87", "id": "controller_session_store_session_is_terminal", - "community": 9, + "community": 10, "norm_label": ".is_terminal()" }, { @@ -54396,7 +55809,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L92", "id": "controller_session_store_sessionstore", - "community": 10, + "community": 18, "norm_label": "sessionstore" }, { @@ -54405,7 +55818,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L99", "id": "controller_session_store_sessionstore_init", - "community": 10, + "community": 18, "norm_label": ".__init__()" }, { @@ -54414,7 +55827,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L104", "id": "controller_session_store_sessionstore_open", - "community": 10, + "community": 18, "norm_label": ".open()" }, { @@ -54423,7 +55836,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L125", "id": "controller_session_store_sessionstore_get", - "community": 10, + "community": 18, "norm_label": ".get()" }, { @@ -54432,7 +55845,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L129", "id": "controller_session_store_sessionstore_iter_sorted", - "community": 10, + "community": 18, "norm_label": ".iter_sorted()" }, { @@ -54441,7 +55854,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L138", "id": "controller_session_store_sessionstore_transition", - "community": 10, + "community": 18, "norm_label": ".transition()" }, { @@ -54450,7 +55863,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L159", "id": "controller_session_store_sessionstore_attach_event_queue", - "community": 10, + "community": 18, "norm_label": ".attach_event_queue()" }, { @@ -54459,7 +55872,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L171", "id": "controller_session_store_sessionstore_heartbeat", - "community": 10, + "community": 18, "norm_label": ".heartbeat()" }, { @@ -54468,7 +55881,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L182", "id": "controller_session_store_sessionstore_close", - "community": 10, + "community": 18, "norm_label": ".close()" }, { @@ -54477,7 +55890,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L202", "id": "controller_session_store_sessionstore_abandoned_older_than", - "community": 10, + "community": 18, "norm_label": ".abandoned_older_than()" }, { @@ -54486,7 +55899,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L218", "id": "controller_session_store_sessionstore_gc_loop", - "community": 10, + "community": 18, "norm_label": ".gc_loop()" }, { @@ -54495,7 +55908,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L236", "id": "controller_session_store_sessionstore_gc_once", - "community": 10, + "community": 18, "norm_label": "._gc_once()" }, { @@ -54504,7 +55917,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L259", "id": "controller_session_store_on_operations_panel", - "community": 10, + "community": 204, "norm_label": "on_operations_panel()" }, { @@ -54513,7 +55926,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L270", "id": "controller_session_store_project_identifier", - "community": 10, + "community": 18, "norm_label": "project_identifier()" }, { @@ -54522,7 +55935,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L1", "id": "controller_session_store_rationale_1", - "community": 10, + "community": 18, "norm_label": "in-memory session store + gc for creation sessions. backend spec \u00a74.4.7. the :c" }, { @@ -54531,7 +55944,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L47", "id": "controller_session_store_rationale_47", - "community": 9, + "community": 10, "norm_label": "one creation session. backend spec \u00a74.4.7. attributes: session_id:" }, { @@ -54540,7 +55953,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L88", "id": "controller_session_store_rationale_88", - "community": 9, + "community": 10, "norm_label": "return ``true`` if the session reached a terminal state." }, { @@ -54549,7 +55962,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L93", "id": "controller_session_store_rationale_93", - "community": 10, + "community": 18, "norm_label": "in-memory session store. backend spec \u00a74.4.7. sessions are keyed by uuid4 s" }, { @@ -54558,7 +55971,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L105", "id": "controller_session_store_rationale_105", - "community": 10, + "community": 18, "norm_label": "create a fresh session in :data:`sessionstate.pending` state." }, { @@ -54567,7 +55980,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L126", "id": "controller_session_store_rationale_126", - "community": 10, + "community": 18, "norm_label": "return the session keyed by ``session_id``, or ``none``." }, { @@ -54576,7 +55989,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L130", "id": "controller_session_store_rationale_130", - "community": 10, + "community": 18, "norm_label": "return ``(session_id, session)`` pairs, oldest-created first. the publi" }, { @@ -54585,7 +55998,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L139", "id": "controller_session_store_rationale_139", - "community": 10, + "community": 18, "norm_label": "move ``session_id`` to ``new_state``, updating ``current_phase``. valid" }, { @@ -54594,7 +56007,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L160", "id": "controller_session_store_rationale_160", - "community": 10, + "community": 18, "norm_label": "attach a websocket fan-out queue to the session. the controller pushes" }, { @@ -54603,7 +56016,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L172", "id": "controller_session_store_rationale_172", - "community": 10, + "community": 18, "norm_label": "refresh ``last_heartbeat`` so the gc will not close this session. no-op" }, { @@ -54612,7 +56025,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L183", "id": "controller_session_store_rationale_183", - "community": 10, + "community": 18, "norm_label": "stamp a terminal-state session with the outcome envelope. ``outcome`` i" }, { @@ -54621,7 +56034,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L203", "id": "controller_session_store_rationale_203", - "community": 10, + "community": 18, "norm_label": "return ids of :data:`sessionstate.input_required` sessions whose ``last_" }, { @@ -54630,7 +56043,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L219", "id": "controller_session_store_rationale_219", - "community": 10, + "community": 18, "norm_label": "run the abandoned-session gc forever. backend spec \u00a74.4.7. sleeps ``int" }, { @@ -54639,7 +56052,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L237", "id": "controller_session_store_rationale_237", - "community": 10, + "community": 18, "norm_label": "one gc pass: close every abandoned ``input_required`` session." }, { @@ -54648,7 +56061,7 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L260", "id": "controller_session_store_rationale_260", - "community": 10, + "community": 204, "norm_label": "return ``true`` when ``session`` belongs on the operations panel. frontend" }, { @@ -54657,16 +56070,313 @@ "source_file": "src/exlab_wizard/controller/session_store.py", "source_location": "L271", "id": "controller_session_store_rationale_271", - "community": 10, + "community": 18, "norm_label": "pluck a project identifier off a project / run creation request. a project" }, + { + "label": "__init__.py", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/__init__.py", + "source_location": "L1", + "id": "src_exlab_wizard_sample_data_init_py", + "community": 480, + "norm_label": "__init__.py" + }, + { + "label": "spec.py", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L1", + "id": "src_exlab_wizard_sample_data_spec_py", + "community": 78, + "norm_label": "spec.py" + }, + { + "label": "SampleFile", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L29", + "id": "sample_data_spec_samplefile", + "community": 78, + "norm_label": "samplefile" + }, + { + "label": "_check_relpath()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L37", + "id": "sample_data_spec_check_relpath", + "community": 78, + "norm_label": "_check_relpath()" + }, + { + "label": "SampleRun", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L50", + "id": "sample_data_spec_samplerun", + "community": 78, + "norm_label": "samplerun" + }, + { + "label": "SampleProject", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L63", + "id": "sample_data_spec_sampleproject", + "community": 78, + "norm_label": "sampleproject" + }, + { + "label": "_check_short_id()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L75", + "id": "sample_data_spec_check_short_id", + "community": 78, + "norm_label": "_check_short_id()" + }, + { + "label": "_check_name()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L85", + "id": "sample_data_spec_check_name", + "community": 78, + "norm_label": "_check_name()" + }, + { + "label": "SampleEquipment", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L97", + "id": "sample_data_spec_sampleequipment", + "community": 78, + "norm_label": "sampleequipment" + }, + { + "label": "_check_id()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L107", + "id": "sample_data_spec_check_id", + "community": 78, + "norm_label": "_check_id()" + }, + { + "label": "Declarative sample-data model + the ``SAMPLES`` list (design spec \u00a74). ``SAMPLE", + "file_type": "rationale", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L1", + "id": "sample_data_spec_rationale_1", + "community": 78, + "norm_label": "declarative sample-data model + the ``samples`` list (design spec \u00a74). ``sample" + }, + { + "label": "generator.py", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L1", + "id": "src_exlab_wizard_sample_data_generator_py", + "community": 527, + "norm_label": "generator.py" + }, + { + "label": "generate_samples()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L121", + "id": "sample_data_generator_generate_samples", + "community": 109, + "norm_label": "generate_samples()" + }, + { + "label": "SampleDataGenerator", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L147", + "id": "sample_data_generator_sampledatagenerator", + "community": 38, + "norm_label": "sampledatagenerator" + }, + { + "label": ".__init__()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L150", + "id": "sample_data_generator_sampledatagenerator_init", + "community": 38, + "norm_label": ".__init__()" + }, + { + "label": ".generate()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L163", + "id": "sample_data_generator_sampledatagenerator_generate", + "community": 38, + "norm_label": ".generate()" + }, + { + "label": "._generate_async()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L171", + "id": "sample_data_generator_sampledatagenerator_generate_async", + "community": 38, + "norm_label": "._generate_async()" + }, + { + "label": "._build_and_reload_config()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L194", + "id": "sample_data_generator_sampledatagenerator_build_and_reload_config", + "community": 38, + "norm_label": "._build_and_reload_config()" + }, + { + "label": "._wipe()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L239", + "id": "sample_data_generator_sampledatagenerator_wipe", + "community": 38, + "norm_label": "._wipe()" + }, + { + "label": "._write_equipment()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L286", + "id": "sample_data_generator_sampledatagenerator_write_equipment", + "community": 38, + "norm_label": "._write_equipment()" + }, + { + "label": "._write_project()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L313", + "id": "sample_data_generator_sampledatagenerator_write_project", + "community": 38, + "norm_label": "._write_project()" + }, + { + "label": "._write_metadata()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L401", + "id": "sample_data_generator_sampledatagenerator_write_metadata", + "community": 25, + "norm_label": "._write_metadata()" + }, + { + "label": "._run_date()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L469", + "id": "sample_data_generator_sampledatagenerator_run_date", + "community": 38, + "norm_label": "._run_date()" + }, + { + "label": "._write_payload()", + "file_type": "code", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L479", + "id": "sample_data_generator_sampledatagenerator_write_payload", + "community": 38, + "norm_label": "._write_payload()" + }, + { + "label": "Expand the declarative ``SAMPLES`` list into an on-disk demo tree. Design spec", + "file_type": "rationale", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L1", + "id": "sample_data_generator_rationale_1", + "community": 527, + "norm_label": "expand the declarative ``samples`` list into an on-disk demo tree. design spec" + }, + { + "label": "Expand ``SAMPLES`` into an on-disk demo tree under the sandbox. Synchronous", + "file_type": "rationale", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L127", + "id": "sample_data_generator_rationale_127", + "community": 109, + "norm_label": "expand ``samples`` into an on-disk demo tree under the sandbox. synchronous" + }, + { + "label": "Expands :data:`SAMPLES` into an on-disk tree (design spec \u00a76).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L148", + "id": "sample_data_generator_rationale_148", + "community": 38, + "norm_label": "expands :data:`samples` into an on-disk tree (design spec \u00a76)." + }, + { + "label": "Synchronous wrapper running the async core on a fresh loop.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L164", + "id": "sample_data_generator_rationale_164", + "community": 38, + "norm_label": "synchronous wrapper running the async core on a fresh loop." + }, + { + "label": "Merge sample equipment + the seeded README default; reload prefixed. Co", + "file_type": "rationale", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L195", + "id": "sample_data_generator_rationale_195", + "community": 38, + "norm_label": "merge sample equipment + the seeded readme default; reload prefixed. co" + }, + { + "label": "Remove ``local_root/`` for each seeded equipment. Enforces", + "file_type": "rationale", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L240", + "id": "sample_data_generator_rationale_240", + "community": 38, + "norm_label": "remove ``local_root/`` for each seeded equipment. enforces" + }, + { + "label": "Write README + readme_fields.json + creation.json for one folder. Uses", + "file_type": "rationale", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L420", + "id": "sample_data_generator_rationale_420", + "community": 25, + "norm_label": "write readme + readme_fields.json + creation.json for one folder. uses" + }, + { + "label": "Deterministic run instant: ``base_time + (minutes_offset or index+1)``.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L470", + "id": "sample_data_generator_rationale_470", + "community": 38, + "norm_label": "deterministic run instant: ``base_time + (minutes_offset or index+1)``." + }, + { + "label": "Write the run's payload files (or the default pair when None).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L480", + "id": "sample_data_generator_rationale_480", + "community": 38, + "norm_label": "write the run's payload files (or the default pair when none)." + }, { "label": "pywebview_app.py", "file_type": "code", "source_file": "src/exlab_wizard/window/pywebview_app.py", "source_location": "L1", "id": "src_exlab_wizard_window_pywebview_app_py", - "community": 11, + "community": 17, "norm_label": "pywebview_app.py" }, { @@ -54675,7 +56385,7 @@ "source_file": "src/exlab_wizard/window/pywebview_app.py", "source_location": "L42", "id": "window_pywebview_app_build_window_url", - "community": 11, + "community": 17, "norm_label": "build_window_url()" }, { @@ -54684,7 +56394,7 @@ "source_file": "src/exlab_wizard/window/pywebview_app.py", "source_location": "L51", "id": "window_pywebview_app_is_debug_enabled", - "community": 11, + "community": 17, "norm_label": "is_debug_enabled()" }, { @@ -54693,7 +56403,7 @@ "source_file": "src/exlab_wizard/window/pywebview_app.py", "source_location": "L59", "id": "window_pywebview_app_run_window", - "community": 11, + "community": 17, "norm_label": "run_window()" }, { @@ -54702,7 +56412,7 @@ "source_file": "src/exlab_wizard/window/pywebview_app.py", "source_location": "L93", "id": "window_pywebview_app_import_webview", - "community": 11, + "community": 17, "norm_label": "_import_webview()" }, { @@ -54711,7 +56421,7 @@ "source_file": "src/exlab_wizard/window/pywebview_app.py", "source_location": "L1", "id": "window_pywebview_app_rationale_1", - "community": 11, + "community": 17, "norm_label": "pywebview-driven native window. backend spec \u00a715.3.2. opens a single pywebview" }, { @@ -54720,7 +56430,7 @@ "source_file": "src/exlab_wizard/window/pywebview_app.py", "source_location": "L43", "id": "window_pywebview_app_rationale_43", - "community": 11, + "community": 17, "norm_label": "return the url the window points at. always loopback (backend \u00a74.1: \"binds" }, { @@ -54729,7 +56439,7 @@ "source_file": "src/exlab_wizard/window/pywebview_app.py", "source_location": "L52", "id": "window_pywebview_app_rationale_52", - "community": 11, + "community": 17, "norm_label": "true when ``exlab_debug`` is set to a truthy string. backend \u00a715.3.2." }, { @@ -54738,7 +56448,7 @@ "source_file": "src/exlab_wizard/window/pywebview_app.py", "source_location": "L65", "id": "window_pywebview_app_rationale_65", - "community": 11, + "community": 17, "norm_label": "open a single pywebview window pointed at the handshake's port. ``create_wi" }, { @@ -54747,7 +56457,7 @@ "source_file": "src/exlab_wizard/window/pywebview_app.py", "source_location": "L94", "id": "window_pywebview_app_rationale_94", - "community": 11, + "community": 17, "norm_label": "lazily import pywebview to keep the module import cheap." }, { @@ -54756,7 +56466,7 @@ "source_file": "src/exlab_wizard/window/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_window_init_py", - "community": 444, + "community": 481, "norm_label": "__init__.py" }, { @@ -54765,7 +56475,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L1", "id": "src_exlab_wizard_window_main_py", - "community": 11, + "community": 17, "norm_label": "main.py" }, { @@ -54774,7 +56484,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L38", "id": "window_main_serverhandshake", - "community": 11, + "community": 17, "norm_label": "serverhandshake" }, { @@ -54783,7 +56493,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L43", "id": "window_main_serverhandshake_init", - "community": 11, + "community": 17, "norm_label": ".__init__()" }, { @@ -54792,7 +56502,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L49", "id": "window_main_read_server_handshake", - "community": 11, + "community": 17, "norm_label": "read_server_handshake()" }, { @@ -54801,7 +56511,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L74", "id": "window_main_is_pid_alive", - "community": 11, + "community": 17, "norm_label": "is_pid_alive()" }, { @@ -54810,7 +56520,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L92", "id": "window_main_posix_is_pid_alive", - "community": 11, + "community": 17, "norm_label": "_posix_is_pid_alive()" }, { @@ -54819,7 +56529,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L110", "id": "window_main_win_is_pid_alive", - "community": 11, + "community": 17, "norm_label": "_win_is_pid_alive()" }, { @@ -54828,7 +56538,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L133", "id": "window_main_main", - "community": 11, + "community": 17, "norm_label": "main()" }, { @@ -54837,7 +56547,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L173", "id": "window_main_default_handoff", - "community": 11, + "community": 17, "norm_label": "_default_handoff()" }, { @@ -54846,7 +56556,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L1", "id": "window_main_rationale_1", - "community": 11, + "community": 17, "norm_label": "``exlab-wizard-window`` console_scripts entry point. backend spec \u00a715.3.2. read" }, { @@ -54855,7 +56565,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L39", "id": "window_main_rationale_39", - "community": 11, + "community": 17, "norm_label": "resolved ``server.json`` contents: ``port`` / ``pid`` / ``started_at``." }, { @@ -54864,7 +56574,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L50", "id": "window_main_rationale_50", - "community": 11, + "community": 17, "norm_label": "read and validate ``/server.json``. returns the handshake on suc" }, { @@ -54873,7 +56583,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L75", "id": "window_main_rationale_75", - "community": 11, + "community": 17, "norm_label": "cross-platform \"is this pid a live process?\" check. implementation: posix `" }, { @@ -54882,7 +56592,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L140", "id": "window_main_rationale_140", - "community": 11, + "community": 17, "norm_label": "entry point. backend spec \u00a715.3.2. ``argv`` is ignored at this phase (the s" }, { @@ -54891,7 +56601,7 @@ "source_file": "src/exlab_wizard/window/main.py", "source_location": "L174", "id": "window_main_rationale_174", - "community": 11, + "community": 17, "norm_label": "hand off control to :mod:`pywebview_app`." }, { @@ -54900,7 +56610,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L1", "id": "src_exlab_wizard_api_health_py", - "community": 212, + "community": 136, "norm_label": "health.py" }, { @@ -54909,7 +56619,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L35", "id": "api_health_healthresponse", - "community": 212, + "community": 136, "norm_label": "healthresponse" }, { @@ -54918,7 +56628,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L47", "id": "api_health_build_health_router", - "community": 212, + "community": 136, "norm_label": "build_health_router()" }, { @@ -54927,7 +56637,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L72", "id": "api_health_component_rollup", - "community": 212, + "community": 136, "norm_label": "_component_rollup()" }, { @@ -54936,7 +56646,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L83", "id": "api_health_validator_health", - "community": 212, + "community": 136, "norm_label": "_validator_health()" }, { @@ -54945,7 +56655,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L91", "id": "api_health_nas_sync_health", - "community": 212, + "community": 136, "norm_label": "_nas_sync_health()" }, { @@ -54954,7 +56664,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L116", "id": "api_health_lims_health", - "community": 212, + "community": 136, "norm_label": "_lims_health()" }, { @@ -54963,7 +56673,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L131", "id": "api_health_plugin_host_health", - "community": 212, + "community": 136, "norm_label": "_plugin_host_health()" }, { @@ -54972,7 +56682,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L144", "id": "api_health_session_store_health", - "community": 212, + "community": 136, "norm_label": "_session_store_health()" }, { @@ -54981,7 +56691,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L161", "id": "api_health_top_level_status", - "community": 212, + "community": 136, "norm_label": "_top_level_status()" }, { @@ -54990,7 +56700,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L1", "id": "api_health_rationale_1", - "community": 212, + "community": 136, "norm_label": "``get /api/v1/health`` rollup. backend spec \u00a74.6.3. returns a component-health" }, { @@ -54999,7 +56709,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L36", "id": "api_health_rationale_36", - "community": 212, + "community": 136, "norm_label": "``get /health`` response body. backend spec \u00a74.6.3." }, { @@ -55008,7 +56718,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L48", "id": "api_health_rationale_48", - "community": 212, + "community": 136, "norm_label": "construct the health router. always available." }, { @@ -55017,7 +56727,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L73", "id": "api_health_rationale_73", - "community": 212, + "community": 136, "norm_label": "build the \u00a74.6.3 components block from the live dependencies." }, { @@ -55026,7 +56736,7 @@ "source_file": "src/exlab_wizard/api/health.py", "source_location": "L162", "id": "api_health_rationale_162", - "community": 212, + "community": 136, "norm_label": "aggregate per-component statuses into the \u00a74.6.3 top-level value. top-level" }, { @@ -55035,7 +56745,7 @@ "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L1", "id": "src_exlab_wizard_api_dependencies_py", - "community": 261, + "community": 82, "norm_label": "_dependencies.py" }, { @@ -55044,7 +56754,7 @@ "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L31", "id": "api_dependencies_lims_password_present", - "community": 261, + "community": 82, "norm_label": "lims_password_present()" }, { @@ -55053,7 +56763,7 @@ "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L51", "id": "api_dependencies_nas_remote_available", - "community": 261, + "community": 187, "norm_label": "nas_remote_available()" }, { @@ -55062,7 +56772,7 @@ "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L74", "id": "api_dependencies_require_deps", - "community": 127, + "community": 82, "norm_label": "require_deps()" }, { @@ -55071,7 +56781,7 @@ "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L94", "id": "api_dependencies_require_controller", - "community": 261, + "community": 82, "norm_label": "require_controller()" }, { @@ -55080,7 +56790,7 @@ "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L1", "id": "api_dependencies_rationale_1", - "community": 261, + "community": 82, "norm_label": "shared fastapi dependency helpers for the wizard's http routers. the lifespan h" }, { @@ -55089,7 +56799,7 @@ "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L32", "id": "api_dependencies_rationale_32", - "community": 261, + "community": 82, "norm_label": "return whether a lims password is stored -- the repo-wide reader. every sur" }, { @@ -55098,7 +56808,7 @@ "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L52", "id": "api_dependencies_rationale_52", - "community": 261, + "community": 82, "norm_label": "return whether ``remote`` is present in the operator's rclone.conf. rclone." }, { @@ -55107,7 +56817,7 @@ "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L75", "id": "api_dependencies_rationale_75", - "community": 127, + "community": 82, "norm_label": "return ``app.state.dependencies`` or raise a structured 503. a missing depe" }, { @@ -55116,7 +56826,7 @@ "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L95", "id": "api_dependencies_rationale_95", - "community": 261, + "community": 82, "norm_label": "return ``deps.controller`` or raise a structured 503. used by the routes th" }, { @@ -55125,7 +56835,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L1", "id": "src_exlab_wizard_api_events_py", - "community": 16, + "community": 64, "norm_label": "events.py" }, { @@ -55134,7 +56844,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L46", "id": "api_events_phaseevent", - "community": 16, + "community": 64, "norm_label": "phaseevent" }, { @@ -55143,7 +56853,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L63", "id": "api_events_progressevent", - "community": 16, + "community": 64, "norm_label": "progressevent" }, { @@ -55152,7 +56862,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L76", "id": "api_events_inputrequiredevent", - "community": 16, + "community": 64, "norm_label": "inputrequiredevent" }, { @@ -55161,7 +56871,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L96", "id": "api_events_warningevent", - "community": 16, + "community": 64, "norm_label": "warningevent" }, { @@ -55170,7 +56880,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L113", "id": "api_events_doneevent", - "community": 16, + "community": 64, "norm_label": "doneevent" }, { @@ -55179,7 +56889,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L129", "id": "api_events_failedevent", - "community": 16, + "community": 64, "norm_label": "failedevent" }, { @@ -55188,7 +56898,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L146", "id": "api_events_snapshotevent", - "community": 16, + "community": 64, "norm_label": "snapshotevent" }, { @@ -55197,7 +56907,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L163", "id": "api_events_deltaevent", - "community": 16, + "community": 64, "norm_label": "deltaevent" }, { @@ -55206,7 +56916,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L189", "id": "api_events_encode_event", - "community": 16, + "community": 64, "norm_label": "encode_event()" }, { @@ -55215,7 +56925,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L198", "id": "api_events_event_from_dict", - "community": 16, + "community": 64, "norm_label": "event_from_dict()" }, { @@ -55224,7 +56934,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L1", "id": "api_events_rationale_1", - "community": 16, + "community": 64, "norm_label": "websocket frame envelope types. backend spec \u00a74.6.2. these ``msgspec.struct`` t" }, { @@ -55233,7 +56943,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L52", "id": "api_events_rationale_52", - "community": 16, + "community": 64, "norm_label": "per-state phase frame. backend spec \u00a74.6.2. emitted on every state transiti" }, { @@ -55242,7 +56952,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L69", "id": "api_events_rationale_69", - "community": 16, + "community": 64, "norm_label": "progress frame for the long-running plugin pass. backend spec \u00a74.6.2." }, { @@ -55251,7 +56961,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L82", "id": "api_events_rationale_82", - "community": 16, + "community": 64, "norm_label": "plugin escalation frame. backend spec \u00a74.6.2 / \u00a76.4. ``fields`` is the plug" }, { @@ -55260,7 +56970,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L102", "id": "api_events_rationale_102", - "community": 16, + "community": 64, "norm_label": "non-fatal warning frame. backend spec \u00a74.6.2. emitted by the controller whe" }, { @@ -55269,7 +56979,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L119", "id": "api_events_rationale_119", - "community": 16, + "community": 64, "norm_label": "terminal success frame. backend spec \u00a74.6.2. ``result`` carries the final s" }, { @@ -55278,7 +56988,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L135", "id": "api_events_rationale_135", - "community": 16, + "community": 64, "norm_label": "terminal failure frame. backend spec \u00a74.6.2. ``error`` follows the \u00a74.6.3 e" }, { @@ -55287,7 +56997,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L152", "id": "api_events_rationale_152", - "community": 16, + "community": 64, "norm_label": "full audit snapshot frame for the problems pub-sub channel. sent immediatel" }, { @@ -55296,7 +57006,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L169", "id": "api_events_rationale_169", - "community": 16, + "community": 64, "norm_label": "delta frame for the problems pub-sub channel. backend spec \u00a74.6.2. sent on" }, { @@ -55305,7 +57015,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L190", "id": "api_events_rationale_190", - "community": 16, + "community": 64, "norm_label": "encode a typed websocket frame to json bytes via ``msgspec.json``. single d" }, { @@ -55314,7 +57024,7 @@ "source_file": "src/exlab_wizard/api/events.py", "source_location": "L199", "id": "api_events_rationale_199", - "community": 16, + "community": 64, "norm_label": "convert a plain dict (e.g. from the controller's event queue) into the match" }, { @@ -55323,7 +57033,7 @@ "source_file": "src/exlab_wizard/api/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_api_init_py", - "community": 393, + "community": 401, "norm_label": "__init__.py" }, { @@ -55332,7 +57042,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L1", "id": "src_exlab_wizard_api_setup_py", - "community": 7, + "community": 112, "norm_label": "setup.py" }, { @@ -55341,7 +57051,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L71", "id": "api_setup_setupstatusresponse", - "community": 7, + "community": 112, "norm_label": "setupstatusresponse" }, { @@ -55350,7 +57060,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L82", "id": "api_setup_limstestrequest", - "community": 7, + "community": 112, "norm_label": "limstestrequest" }, { @@ -55359,7 +57069,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L98", "id": "api_setup_equipmenttestrequest", - "community": 7, + "community": 112, "norm_label": "equipmenttestrequest" }, { @@ -55368,7 +57078,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L114", "id": "api_setup_proberesult", - "community": 7, + "community": 112, "norm_label": "proberesult" }, { @@ -55377,7 +57087,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L132", "id": "api_setup_autostartrequest", - "community": 7, + "community": 112, "norm_label": "autostartrequest" }, { @@ -55386,7 +57096,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L140", "id": "api_setup_autostartresult", - "community": 7, + "community": 112, "norm_label": "autostartresult" }, { @@ -55395,7 +57105,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L154", "id": "api_setup_compute_setup_state", - "community": 1, + "community": 95, "norm_label": "compute_setup_state()" }, { @@ -55404,7 +57114,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L171", "id": "api_setup_is_creation_blocked", - "community": 7, + "community": 331, "norm_label": "is_creation_blocked()" }, { @@ -55413,7 +57123,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L181", "id": "api_setup_setup_state_gate", - "community": 7, + "community": 331, "norm_label": "setup_state_gate()" }, { @@ -55422,7 +57132,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L216", "id": "api_setup_build_setup_router", - "community": 7, + "community": 94, "norm_label": "build_setup_router()" }, { @@ -55431,7 +57141,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L301", "id": "api_setup_coerce_probe_dict", - "community": 7, + "community": 112, "norm_label": "_coerce_probe_dict()" }, { @@ -55440,7 +57150,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L318", "id": "api_setup_resolve_equipment", - "community": 7, + "community": 112, "norm_label": "_resolve_equipment()" }, { @@ -55449,7 +57159,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L337", "id": "api_setup_await_or_call", - "community": 7, + "community": 112, "norm_label": "_await_or_call()" }, { @@ -55458,7 +57168,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L1", "id": "api_setup_rationale_1", - "community": 7, + "community": 112, "norm_label": "setup-state gate + ``/setup/*`` endpoints. backend spec \u00a74.6, \u00a74.9. two respons" }, { @@ -55467,7 +57177,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L72", "id": "api_setup_rationale_72", - "community": 7, + "community": 112, "norm_label": "``get /setup/status`` response. backend spec \u00a74.9.3." }, { @@ -55476,7 +57186,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L83", "id": "api_setup_rationale_83", - "community": 7, + "community": 112, "norm_label": "``post /setup/test-lims`` request body. either reference the currently-conf" }, { @@ -55485,7 +57195,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L99", "id": "api_setup_rationale_99", - "community": 7, + "community": 112, "norm_label": "``post /setup/test-equipment`` request body. rclone-only nas sync migration" }, { @@ -55494,7 +57204,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L115", "id": "api_setup_rationale_115", - "community": 7, + "community": 112, "norm_label": "common ``ok``/``reason`` payload for the diagnostics endpoints." }, { @@ -55503,7 +57213,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L133", "id": "api_setup_rationale_133", - "community": 7, + "community": 112, "norm_label": "``post /setup/autostart`` request body. backend spec \u00a74.9.5 step 0." }, { @@ -55512,7 +57222,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L141", "id": "api_setup_rationale_141", - "community": 7, + "community": 112, "norm_label": "``post /setup/autostart`` response." }, { @@ -55521,7 +57231,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L155", "id": "api_setup_rationale_155", - "community": 1, + "community": 95, "norm_label": "evaluate the \u00a74.9.1 state for the app's current dependencies. the dependenc" }, { @@ -55530,7 +57240,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L172", "id": "api_setup_rationale_172", - "community": 7, + "community": 331, "norm_label": "return true when ``state`` should gate creation flows. per \u00a74.9.4 the soft" }, { @@ -55539,7 +57249,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L182", "id": "api_setup_rationale_182", - "community": 7, + "community": 331, "norm_label": "fastapi dependency that gates a route on setup state. looks up the app's bo" }, { @@ -55548,7 +57258,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L217", "id": "api_setup_rationale_217", - "community": 7, + "community": 94, "norm_label": "construct the ``/setup/*`` router. always-available endpoints." }, { @@ -55557,7 +57267,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L302", "id": "api_setup_rationale_302", - "community": 7, + "community": 112, "norm_label": "build a ``proberesult`` from a probe's plain-dict return value. wired throu" }, { @@ -55566,7 +57276,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L319", "id": "api_setup_rationale_319", - "community": 7, + "community": 112, "norm_label": "resolve the equipment to probe by id through ``deps.config``. rclone-only n" }, { @@ -55575,7 +57285,7 @@ "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L338", "id": "api_setup_rationale_338", - "community": 7, + "community": 112, "norm_label": "invoke a probe that may be sync or async; await the result. the probes are" }, { @@ -55584,7 +57294,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L1", "id": "src_exlab_wizard_api_schemas_py", - "community": 9, + "community": 0, "norm_label": "schemas.py" }, { @@ -55611,7 +57321,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L118", "id": "api_schemas_pluginisolation", - "community": 9, + "community": 10, "norm_label": "pluginisolation" }, { @@ -55620,7 +57330,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L130", "id": "api_schemas_pluginapplied", - "community": 9, + "community": 25, "norm_label": "pluginapplied" }, { @@ -55638,7 +57348,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L159", "id": "api_schemas_orchestratorblock", - "community": 9, + "community": 25, "norm_label": "orchestratorblock" }, { @@ -55647,7 +57357,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L190", "id": "api_schemas_overrideentry", - "community": 128, + "community": 0, "norm_label": "overrideentry" }, { @@ -55656,7 +57366,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L212", "id": "api_schemas_tombstoneentry", - "community": 229, + "community": 0, "norm_label": "tombstoneentry" }, { @@ -55665,7 +57375,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L232", "id": "api_schemas_override_entry_to_dict", - "community": 128, + "community": 152, "norm_label": "override_entry_to_dict()" }, { @@ -55674,7 +57384,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L242", "id": "api_schemas_tombstone_entry_to_dict", - "community": 128, + "community": 152, "norm_label": "tombstone_entry_to_dict()" }, { @@ -55683,7 +57393,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L249", "id": "api_schemas_parse_validation_override_entry", - "community": 34, + "community": 42, "norm_label": "parse_validation_override_entry()" }, { @@ -55701,7 +57411,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L309", "id": "api_schemas_readmefieldsjson", - "community": 180, + "community": 224, "norm_label": "readmefieldsjson" }, { @@ -55710,7 +57420,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L330", "id": "api_schemas_equipmentjson", - "community": 9, + "community": 10, "norm_label": "equipmentjson" }, { @@ -55719,7 +57429,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L351", "id": "api_schemas_testrunsjson", - "community": 229, + "community": 38, "norm_label": "testrunsjson" }, { @@ -55728,7 +57438,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L1", "id": "api_schemas_rationale_1", - "community": 9, + "community": 0, "norm_label": "msgspec.struct types for the exlab-wizard cache files. this module is the singl" }, { @@ -55755,7 +57465,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L123", "id": "api_schemas_rationale_123", - "community": 9, + "community": 10, "norm_label": "plugin worker isolation telemetry. spec \u00a76.2.4 / \u00a711.3 (added 1.3)." }, { @@ -55764,7 +57474,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L135", "id": "api_schemas_rationale_135", - "community": 9, + "community": 25, "norm_label": "per-plugin invocation record written into ``plugins_applied``. spec \u00a76.2.4" }, { @@ -55782,7 +57492,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L164", "id": "api_schemas_rationale_164", - "community": 9, + "community": 25, "norm_label": "orchestrator-mode metadata. spec \u00a711.3 / \u00a713 / redesign spec \u00a73.3. always p" }, { @@ -55791,7 +57501,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L195", "id": "api_schemas_rationale_195", - "community": 128, + "community": 0, "norm_label": "operator-recorded validation override entry. spec \u00a711.3. ``revoked`` is ``f" }, { @@ -55800,7 +57510,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L217", "id": "api_schemas_rationale_217", - "community": 229, + "community": 0, "norm_label": "tombstone entry that revokes a prior override by ``id``. spec \u00a711.3. ``revo" }, { @@ -55809,7 +57519,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L233", "id": "api_schemas_rationale_233", - "community": 128, + "community": 152, "norm_label": "serialize an ``overrideentry`` to a wire-form dict. uses ``msgspec.structs." }, { @@ -55818,7 +57528,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L243", "id": "api_schemas_rationale_243", - "community": 128, + "community": 152, "norm_label": "serialize a ``tombstoneentry`` to a wire-form dict. mirrors ``override_entry" }, { @@ -55827,7 +57537,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L252", "id": "api_schemas_rationale_252", - "community": 34, + "community": 42, "norm_label": "inspect ``entry[\"revoked\"]`` and ``entry[\"revokes\"]`` to decide which struct" }, { @@ -55845,7 +57555,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L314", "id": "api_schemas_rationale_314", - "community": 180, + "community": 224, "norm_label": "``readme_fields.json`` at schema version 1.1. spec \u00a711.4." }, { @@ -55854,7 +57564,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L335", "id": "api_schemas_rationale_335", - "community": 9, + "community": 10, "norm_label": "``equipment.json`` at schema version 1.0. spec \u00a711.4.1." }, { @@ -55863,7 +57573,7 @@ "source_file": "src/exlab_wizard/api/schemas.py", "source_location": "L356", "id": "api_schemas_rationale_356", - "community": 229, + "community": 38, "norm_label": "``test_runs.json`` marker at schema version 1.0. spec \u00a711.4.2. filename ret" }, { @@ -55872,7 +57582,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L1", "id": "src_exlab_wizard_api_app_py", - "community": 51, + "community": 67, "norm_label": "app.py" }, { @@ -55881,7 +57591,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L77", "id": "api_app_auditchannel", - "community": 51, + "community": 67, "norm_label": "auditchannel" }, { @@ -55890,7 +57600,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L85", "id": "api_app_auditchannel_init", - "community": 51, + "community": 67, "norm_label": ".__init__()" }, { @@ -55899,7 +57609,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L89", "id": "api_app_auditchannel_subscribe", - "community": 51, + "community": 67, "norm_label": ".subscribe()" }, { @@ -55908,7 +57618,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L97", "id": "api_app_auditchannel_publish_snapshot", - "community": 51, + "community": 67, "norm_label": ".publish_snapshot()" }, { @@ -55917,7 +57627,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L106", "id": "api_app_auditchannel_publish_delta", - "community": 51, + "community": 67, "norm_label": ".publish_delta()" }, { @@ -55926,7 +57636,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L123", "id": "api_app_auditchannel_broadcast", - "community": 51, + "community": 67, "norm_label": "._broadcast()" }, { @@ -55935,7 +57645,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L128", "id": "api_app_auditchannel_close", - "community": 51, + "community": 67, "norm_label": ".close()" }, { @@ -55944,7 +57654,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L136", "id": "api_app_drain", - "community": 51, + "community": 67, "norm_label": "_drain()" }, { @@ -55953,7 +57663,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L152", "id": "api_app_finding_to_dict", - "community": 51, + "community": 67, "norm_label": "_finding_to_dict()" }, { @@ -55962,7 +57672,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L167", "id": "api_app_appdependencies", - "community": 1, + "community": 95, "norm_label": "appdependencies" }, { @@ -55971,7 +57681,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L258", "id": "api_app_create_app", - "community": 1, + "community": 94, "norm_label": "create_app()" }, { @@ -55980,7 +57690,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L343", "id": "api_app_audit_loop", - "community": 51, + "community": 67, "norm_label": "_audit_loop()" }, { @@ -55989,7 +57699,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L385", "id": "api_app_diff_findings", - "community": 51, + "community": 67, "norm_label": "_diff_findings()" }, { @@ -55998,7 +57708,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L1", "id": "api_app_rationale_1", - "community": 51, + "community": 67, "norm_label": "fastapi app + lifespan + dependency wiring. backend spec \u00a74.6. the :func:`creat" }, { @@ -56007,7 +57717,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L78", "id": "api_app_rationale_78", - "community": 51, + "community": 67, "norm_label": "multi-subscriber pub-sub for the problems websocket. backend spec \u00a74.6.2. s" }, { @@ -56016,7 +57726,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L90", "id": "api_app_rationale_90", - "community": 51, + "community": 67, "norm_label": "return an async iterator that yields every published frame." }, { @@ -56025,7 +57735,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L129", "id": "api_app_rationale_129", - "community": 51, + "community": 67, "norm_label": "close every subscriber's queue. idempotent." }, { @@ -56034,7 +57744,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L140", "id": "api_app_rationale_140", - "community": 51, + "community": 67, "norm_label": "yield from the subscriber queue until a sentinel arrives." }, { @@ -56043,7 +57753,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L153", "id": "api_app_rationale_153", - "community": 51, + "community": 67, "norm_label": "best-effort serialize a finding-like object to dict." }, { @@ -56052,7 +57762,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L168", "id": "api_app_rationale_168", - "community": 1, + "community": 95, "norm_label": "bundle of live components the api surface dispatches to. production wiring" }, { @@ -56061,7 +57771,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L265", "id": "api_app_rationale_265", - "community": 1, + "community": 94, "norm_label": "build the fastapi app. backend spec \u00a74.6. ``config``: optional pre-loaded `" }, { @@ -56070,7 +57780,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L344", "id": "api_app_rationale_344", - "community": 51, + "community": 67, "norm_label": "background task that re-runs the validator audit every interval. diffs the" }, { @@ -56079,7 +57789,7 @@ "source_file": "src/exlab_wizard/api/app.py", "source_location": "L388", "id": "api_app_rationale_388", - "community": 51, + "community": 67, "norm_label": "return ``(added, removed, changed)`` keyed on ``(rule, offending_path)``. t" }, { @@ -56088,7 +57798,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L1", "id": "src_exlab_wizard_api_errors_py", - "community": 30, + "community": 31, "norm_label": "errors.py" }, { @@ -56097,7 +57807,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L96", "id": "api_errors_extract_or_create_trace_id", - "community": 30, + "community": 31, "norm_label": "extract_or_create_trace_id()" }, { @@ -56106,7 +57816,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L110", "id": "api_errors_build_error_envelope", - "community": 30, + "community": 31, "norm_label": "build_error_envelope()" }, { @@ -56115,7 +57825,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L140", "id": "api_errors_error_response", - "community": 30, + "community": 31, "norm_label": "error_response()" }, { @@ -56124,7 +57834,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L175", "id": "api_errors_exlab_validation_handler", - "community": 30, + "community": 31, "norm_label": "_exlab_validation_handler()" }, { @@ -56133,7 +57843,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L197", "id": "api_errors_pydantic_validation_handler", - "community": 30, + "community": 31, "norm_label": "_pydantic_validation_handler()" }, { @@ -56142,7 +57852,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L228", "id": "api_errors_pydantic_error_to_dict", - "community": 30, + "community": 31, "norm_label": "_pydantic_error_to_dict()" }, { @@ -56151,7 +57861,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L237", "id": "api_errors_config_error_handler", - "community": 30, + "community": 31, "norm_label": "_config_error_handler()" }, { @@ -56160,7 +57870,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L246", "id": "api_errors_keyring_unavailable_handler", - "community": 30, + "community": 31, "norm_label": "_keyring_unavailable_handler()" }, { @@ -56169,7 +57879,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L255", "id": "api_errors_schema_major_mismatch_handler", - "community": 30, + "community": 31, "norm_label": "_schema_major_mismatch_handler()" }, { @@ -56178,7 +57888,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L265", "id": "api_errors_setup_incomplete_handler", - "community": 30, + "community": 31, "norm_label": "_setup_incomplete_handler()" }, { @@ -56187,7 +57897,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L289", "id": "api_errors_template_load_error_handler", - "community": 30, + "community": 31, "norm_label": "_template_load_error_handler()" }, { @@ -56196,7 +57906,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L303", "id": "api_errors_http_exception_handler", - "community": 30, + "community": 31, "norm_label": "_http_exception_handler()" }, { @@ -56205,7 +57915,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L336", "id": "api_errors_status_to_code", - "community": 30, + "community": 31, "norm_label": "_status_to_code()" }, { @@ -56214,7 +57924,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L349", "id": "api_errors_generic_handler", - "community": 30, + "community": 31, "norm_label": "_generic_handler()" }, { @@ -56223,7 +57933,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L368", "id": "api_errors_register_exception_handlers", - "community": 30, + "community": 31, "norm_label": "register_exception_handlers()" }, { @@ -56232,7 +57942,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L395", "id": "api_errors_register", - "community": 30, + "community": 31, "norm_label": "_register()" }, { @@ -56241,7 +57951,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L1", "id": "api_errors_rationale_1", - "community": 30, + "community": 31, "norm_label": "error envelope helpers + fastapi exception handlers. backend spec \u00a74.6.3. every" }, { @@ -56250,7 +57960,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L97", "id": "api_errors_rationale_97", - "community": 30, + "community": 31, "norm_label": "return the request's ``x-trace-id`` header, else a fresh hex id. server-gen" }, { @@ -56259,7 +57969,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L118", "id": "api_errors_rationale_118", - "community": 30, + "community": 31, "norm_label": "build the \u00a74.6.3 envelope dict. ``code`` is validated against :data:`error_" }, { @@ -56268,7 +57978,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L150", "id": "api_errors_rationale_150", - "community": 30, + "community": 31, "norm_label": "build a fastapi jsonresponse carrying the \u00a74.6.3 envelope. ``extra`` is mer" }, { @@ -56277,7 +57987,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L176", "id": "api_errors_rationale_176", - "community": 30, + "community": 31, "norm_label": "translate :class:`exlab_wizard.errors.validationerror` to envelope. the con" }, { @@ -56286,7 +57996,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L200", "id": "api_errors_rationale_200", - "community": 30, + "community": 31, "norm_label": "translate pydantic validation errors to the \u00a74.6.3 envelope. fastapi raises" }, { @@ -56295,7 +58005,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L229", "id": "api_errors_rationale_229", - "community": 30, + "community": 31, "norm_label": "strip pydantic error dicts of unhashable / large fields." }, { @@ -56304,7 +58014,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L266", "id": "api_errors_rationale_266", - "community": 30, + "community": 31, "norm_label": "translate :class:`setupincompleteerror` to the \u00a74.9.2 envelope. the control" }, { @@ -56313,7 +58023,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L304", "id": "api_errors_rationale_304", - "community": 30, + "community": 31, "norm_label": "translate an :class:`httpexception` into the \u00a74.6.3 envelope. routers raise" }, { @@ -56322,7 +58032,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L337", "id": "api_errors_rationale_337", - "community": 30, + "community": 31, "norm_label": "best-effort default code for a bare ``httpexception``." }, { @@ -56331,7 +58041,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L350", "id": "api_errors_rationale_350", - "community": 30, + "community": 31, "norm_label": "catch-all 500 handler. backend spec \u00a74.6.3 last paragraph. the exception's" }, { @@ -56340,7 +58050,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L369", "id": "api_errors_rationale_369", - "community": 30, + "community": 31, "norm_label": "attach the \u00a74.6.3 envelope handlers to a fastapi app. registered in priorit" }, { @@ -56349,7 +58059,7 @@ "source_file": "src/exlab_wizard/api/errors.py", "source_location": "L400", "id": "api_errors_rationale_400", - "community": 30, + "community": 31, "norm_label": "wrap ``app.add_exception_handler`` so the handler is accepted as ``any``. s" }, { @@ -56358,7 +58068,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L1", "id": "src_exlab_wizard_api_routers_browse_py", - "community": 25, + "community": 16, "norm_label": "browse.py" }, { @@ -56367,7 +58077,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L67", "id": "routers_browse_runnode", - "community": 7, + "community": 16, "norm_label": "runnode" }, { @@ -56376,7 +58086,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L77", "id": "routers_browse_projectnode", - "community": 7, + "community": 16, "norm_label": "projectnode" }, { @@ -56385,7 +58095,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L91", "id": "routers_browse_equipmentnode", - "community": 25, + "community": 16, "norm_label": "equipmentnode" }, { @@ -56394,7 +58104,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L109", "id": "routers_browse_relayequipmentnode", - "community": 25, + "community": 16, "norm_label": "relayequipmentnode" }, { @@ -56403,7 +58113,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L125", "id": "routers_browse_treeresponse", - "community": 7, + "community": 0, "norm_label": "treeresponse" }, { @@ -56430,7 +58140,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L165", "id": "routers_browse_rundetail", - "community": 7, + "community": 0, "norm_label": "rundetail" }, { @@ -56439,7 +58149,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L180", "id": "routers_browse_runlogentry", - "community": 25, + "community": 16, "norm_label": "runlogentry" }, { @@ -56448,7 +58158,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L199", "id": "routers_browse_runlogresponse", - "community": 7, + "community": 6, "norm_label": "runlogresponse" }, { @@ -56457,7 +58167,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L214", "id": "routers_browse_build_browse_router", - "community": 25, + "community": 16, "norm_label": "build_browse_router()" }, { @@ -56466,7 +58176,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L341", "id": "routers_browse_run_log_from_queue", - "community": 25, + "community": 16, "norm_label": "_run_log_from_queue()" }, { @@ -56475,7 +58185,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L375", "id": "routers_browse_path_is_under_allowed_root", - "community": 25, + "community": 16, "norm_label": "_path_is_under_allowed_root()" }, { @@ -56484,7 +58194,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L405", "id": "routers_browse_build_equipment_node", - "community": 25, + "community": 16, "norm_label": "_build_equipment_node()" }, { @@ -56493,7 +58203,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L420", "id": "routers_browse_build_received_equipment_nodes", - "community": 25, + "community": 16, "norm_label": "build_received_equipment_nodes()" }, { @@ -56502,7 +58212,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L463", "id": "routers_browse_relay_label_from_first_run", - "community": 25, + "community": 16, "norm_label": "_relay_label_from_first_run()" }, { @@ -56511,7 +58221,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L494", "id": "routers_browse_find_run_root", - "community": 25, + "community": 16, "norm_label": "_find_run_root()" }, { @@ -56520,7 +58230,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L515", "id": "routers_browse_read_sync_state", - "community": 25, + "community": 16, "norm_label": "_read_sync_state()" }, { @@ -56529,7 +58239,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L531", "id": "routers_browse_file_state_from_record", - "community": 25, + "community": 16, "norm_label": "_file_state_from_record()" }, { @@ -56538,7 +58248,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L550", "id": "routers_browse_per_file_sync_status", - "community": 25, + "community": 16, "norm_label": "_per_file_sync_status()" }, { @@ -56547,7 +58257,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L571", "id": "routers_browse_run_relative_posix", - "community": 25, + "community": 16, "norm_label": "_run_relative_posix()" }, { @@ -56556,7 +58266,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L579", "id": "routers_browse_iter_run_or_project_subdirs", - "community": 25, + "community": 16, "norm_label": "_iter_run_or_project_subdirs()" }, { @@ -56565,7 +58275,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L602", "id": "routers_browse_scan_projects", - "community": 25, + "community": 16, "norm_label": "_scan_projects()" }, { @@ -56574,7 +58284,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L610", "id": "routers_browse_build_project_node", - "community": 25, + "community": 16, "norm_label": "_build_project_node()" }, { @@ -56583,7 +58293,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L639", "id": "routers_browse_scan_run_children", - "community": 25, + "community": 16, "norm_label": "_scan_run_children()" }, { @@ -56592,7 +58302,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L652", "id": "routers_browse_build_run_node", - "community": 25, + "community": 16, "norm_label": "_build_run_node()" }, { @@ -56601,7 +58311,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L675", "id": "routers_browse_run_rollup_status", - "community": 25, + "community": 16, "norm_label": "_run_rollup_status()" }, { @@ -56610,7 +58320,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L696", "id": "routers_browse_read_readme", - "community": 25, + "community": 16, "norm_label": "_read_readme()" }, { @@ -56619,7 +58329,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L712", "id": "routers_browse_scan_folder_sync", - "community": 25, + "community": 16, "norm_label": "scan_folder_sync()" }, { @@ -56628,7 +58338,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L808", "id": "routers_browse_tombstone_entries", - "community": 25, + "community": 16, "norm_label": "_tombstone_entries()" }, { @@ -56637,7 +58347,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L853", "id": "routers_browse_build_hierarchy_dict", - "community": 25, + "community": 16, "norm_label": "build_hierarchy_dict()" }, { @@ -56646,7 +58356,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L887", "id": "routers_browse_projects_for_ui_tree", - "community": 25, + "community": 16, "norm_label": "_projects_for_ui_tree()" }, { @@ -56655,7 +58365,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L1", "id": "routers_browse_rationale_1", - "community": 25, + "community": 16, "norm_label": "``/tree`` and ``/run/{path}`` browse endpoints. backend spec \u00a74.6.1. two endpoi" }, { @@ -56664,7 +58374,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L92", "id": "routers_browse_rationale_92", - "community": 25, + "community": 16, "norm_label": "an owned-equipment node in the tree (redesign \u00a73.3). ``sync_mode`` (\"nas\" |" }, { @@ -56673,7 +58383,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L110", "id": "routers_browse_rationale_110", - "community": 25, + "community": 16, "norm_label": "a received-equipment node auto-discovered from the staging area. redesign \u00a7" }, { @@ -56700,7 +58410,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L181", "id": "routers_browse_rationale_181", - "community": 25, + "community": 16, "norm_label": "one row in the ``get /run/{path}/log`` response. the orchestrator does not" }, { @@ -56709,7 +58419,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L200", "id": "routers_browse_rationale_200", - "community": 7, + "community": 6, "norm_label": "``get /run/{path}/log`` response (redesign \u00a74.6 view-log surface)." }, { @@ -56718,7 +58428,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L215", "id": "routers_browse_rationale_215", - "community": 25, + "community": 16, "norm_label": "construct the ``/tree`` + ``/run`` router." }, { @@ -56727,7 +58437,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L342", "id": "routers_browse_rationale_342", - "community": 25, + "community": 16, "norm_label": "derive a run's per-run log from its sync-queue job. returns ``(history, cur" }, { @@ -56736,7 +58446,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L376", "id": "routers_browse_rationale_376", - "community": 25, + "community": 16, "norm_label": "return true if ``path`` is under any of the configured roots. redesign \u00a75 /" }, { @@ -56745,7 +58455,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L421", "id": "routers_browse_rationale_421", - "community": 25, + "community": 16, "norm_label": "walk the staging root and surface received-equipment nodes. redesign \u00a73.3:" }, { @@ -56754,7 +58464,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L464", "id": "routers_browse_rationale_464", - "community": 25, + "community": 16, "norm_label": "best-effort: read the first creation.json under this equipment to pick up th" }, { @@ -56763,7 +58473,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L495", "id": "routers_browse_rationale_495", - "community": 25, + "community": 16, "norm_label": "walk up from ``folder`` to the nearest run directory, or ``none``. a run di" }, { @@ -56772,7 +58482,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L516", "id": "routers_browse_rationale_516", - "community": 25, + "community": 16, "norm_label": "read a run's ``sync_state.json`` via :class:`syncstatewriter`. returns the" }, { @@ -56781,7 +58491,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L532", "id": "routers_browse_rationale_532", - "community": 25, + "community": 16, "norm_label": "map a ``sync_state.json`` record + on-disk presence to a gui state. the fiv" }, { @@ -56790,7 +58500,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L551", "id": "routers_browse_rationale_551", - "community": 25, + "community": 16, "norm_label": "return the per-file gui sync state for a folder-list row. operator-free per" }, { @@ -56799,7 +58509,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L572", "id": "routers_browse_rationale_572", - "community": 25, + "community": 16, "norm_label": "return ``path`` relative to ``run_root`` as a posix string, or ``none``." }, { @@ -56808,7 +58518,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L580", "id": "routers_browse_rationale_580", - "community": 25, + "community": 16, "norm_label": "return name-sorted real subdirectories of ``parent``, sans the cache. hides" }, { @@ -56817,7 +58527,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L603", "id": "routers_browse_rationale_603", - "community": 25, + "community": 16, "norm_label": "return a sorted list of project nodes under an equipment dir." }, { @@ -56826,7 +58536,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L653", "id": "routers_browse_rationale_653", - "community": 25, + "community": 16, "norm_label": "build a tree run node, deriving its rollup from ``sync_state.json``. operat" }, { @@ -56835,7 +58545,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L676", "id": "routers_browse_rationale_676", - "community": 25, + "community": 16, "norm_label": "return a run's derived ``runsyncstate`` rollup value, or ``none``. reads ``" }, { @@ -56844,7 +58554,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L697", "id": "routers_browse_rationale_697", - "community": 25, + "community": 16, "norm_label": "return the run's readme.md text, or ``none`` if absent / unreadable." }, { @@ -56853,7 +58563,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L713", "id": "routers_browse_rationale_713", - "community": 25, + "community": 16, "norm_label": "synchronous core of the ``get /folder/{path}`` endpoint. extracted so the n" }, { @@ -56862,7 +58572,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L814", "id": "routers_browse_rationale_814", - "community": 25, + "community": 16, "norm_label": "build \"on nas\" tombstone rows for cleared-run files absent on disk. operato" }, { @@ -56871,7 +58581,7 @@ "source_file": "src/exlab_wizard/api/routers/browse.py", "source_location": "L854", "id": "routers_browse_rationale_854", - "community": 25, + "community": 16, "norm_label": "compose the nested hierarchy dict that ``ui.components.tree.build_tree`` expects" }, { @@ -56880,7 +58590,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L1", "id": "src_exlab_wizard_api_routers_sessions_py", - "community": 16, + "community": 53, "norm_label": "sessions.py" }, { @@ -56889,7 +58599,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L63", "id": "routers_sessions_projectsessionbody", - "community": 16, + "community": 53, "norm_label": "_projectsessionbody" }, { @@ -56898,7 +58608,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L83", "id": "routers_sessions_runsessionbody", - "community": 16, + "community": 53, "norm_label": "_runsessionbody" }, { @@ -56907,7 +58617,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L105", "id": "routers_sessions_sessionhandleresponse", - "community": 16, + "community": 53, "norm_label": "sessionhandleresponse" }, { @@ -56916,7 +58626,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L119", "id": "routers_sessions_resumebody", - "community": 16, + "community": 53, "norm_label": "_resumebody" }, { @@ -56925,7 +58635,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L127", "id": "routers_sessions_cancelbody", - "community": 16, + "community": 53, "norm_label": "_cancelbody" }, { @@ -56934,7 +58644,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L140", "id": "routers_sessions_build_sessions_router", - "community": 16, + "community": 94, "norm_label": "build_sessions_router()" }, { @@ -56943,7 +58653,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L284", "id": "routers_sessions_build_project_request", - "community": 16, + "community": 53, "norm_label": "_build_project_request()" }, { @@ -56952,7 +58662,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L297", "id": "routers_sessions_build_run_request", - "community": 16, + "community": 53, "norm_label": "_build_run_request()" }, { @@ -56961,7 +58671,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L316", "id": "routers_sessions_handle_to_response", - "community": 16, + "community": 53, "norm_label": "_handle_to_response()" }, { @@ -56970,7 +58680,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L336", "id": "routers_sessions_stream_session_events", - "community": 16, + "community": 64, "norm_label": "_stream_session_events()" }, { @@ -56979,7 +58689,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L1", "id": "routers_sessions_rationale_1", - "community": 16, + "community": 53, "norm_label": "``/sessions`` router. backend spec \u00a74.6.1, \u00a74.6.2. endpoints: * ``post /sessio" }, { @@ -56988,7 +58698,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L64", "id": "routers_sessions_rationale_64", - "community": 16, + "community": 53, "norm_label": "body for a project-creation session. the ``kind`` discriminator selects thi" }, { @@ -56997,7 +58707,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L84", "id": "routers_sessions_rationale_84", - "community": 16, + "community": 53, "norm_label": "body for a run / test-run creation session." }, { @@ -57006,7 +58716,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L106", "id": "routers_sessions_rationale_106", - "community": 16, + "community": 53, "norm_label": "response shape for the create / status endpoints." }, { @@ -57015,7 +58725,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L120", "id": "routers_sessions_rationale_120", - "community": 16, + "community": 53, "norm_label": "``post /sessions/{id}/resume`` body." }, { @@ -57024,7 +58734,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L128", "id": "routers_sessions_rationale_128", - "community": 16, + "community": 53, "norm_label": "``post /sessions/{id}/cancel`` body." }, { @@ -57033,7 +58743,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L141", "id": "routers_sessions_rationale_141", - "community": 16, + "community": 94, "norm_label": "construct the ``/sessions`` router. routes are gated by the setup-state dep" }, { @@ -57042,7 +58752,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L317", "id": "routers_sessions_rationale_317", - "community": 16, + "community": 53, "norm_label": "build the response model from a controller :class:`sessionhandle` and the live s" }, { @@ -57051,7 +58761,7 @@ "source_file": "src/exlab_wizard/api/routers/sessions.py", "source_location": "L341", "id": "routers_sessions_rationale_341", - "community": 16, + "community": 64, "norm_label": "pump events from the controller's queue into the websocket. each frame from" }, { @@ -57060,7 +58770,7 @@ "source_file": "src/exlab_wizard/api/routers/config.py", "source_location": "L1", "id": "src_exlab_wizard_api_routers_config_py", - "community": 352, + "community": 426, "norm_label": "config.py" }, { @@ -57087,7 +58797,7 @@ "source_file": "src/exlab_wizard/api/routers/config.py", "source_location": "L74", "id": "routers_config_build_config_router", - "community": 352, + "community": 94, "norm_label": "build_config_router()" }, { @@ -57096,7 +58806,7 @@ "source_file": "src/exlab_wizard/api/routers/config.py", "source_location": "L163", "id": "routers_config_await_or_call", - "community": 352, + "community": 426, "norm_label": "_await_or_call()" }, { @@ -57105,7 +58815,7 @@ "source_file": "src/exlab_wizard/api/routers/config.py", "source_location": "L171", "id": "routers_config_apply_live_config", - "community": 97, + "community": 101, "norm_label": "_apply_live_config()" }, { @@ -57114,7 +58824,7 @@ "source_file": "src/exlab_wizard/api/routers/config.py", "source_location": "L1", "id": "routers_config_rationale_1", - "community": 352, + "community": 426, "norm_label": "``/config`` router. backend spec \u00a74.6.1, \u00a74.9. endpoints: * ``get /config`` --" }, { @@ -57141,7 +58851,7 @@ "source_file": "src/exlab_wizard/api/routers/config.py", "source_location": "L75", "id": "routers_config_rationale_75", - "community": 352, + "community": 94, "norm_label": "construct the ``/config`` router. routes are always available." }, { @@ -57150,7 +58860,7 @@ "source_file": "src/exlab_wizard/api/routers/config.py", "source_location": "L164", "id": "routers_config_rationale_164", - "community": 352, + "community": 426, "norm_label": "invoke a saver that may be sync or async." }, { @@ -57159,7 +58869,7 @@ "source_file": "src/exlab_wizard/api/routers/config.py", "source_location": "L172", "id": "routers_config_rationale_172", - "community": 97, + "community": 101, "norm_label": "push ``cfg`` into the running components, then keep it as the live config." }, { @@ -57168,7 +58878,7 @@ "source_file": "src/exlab_wizard/api/routers/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_api_routers_init_py", - "community": 525, + "community": 548, "norm_label": "__init__.py" }, { @@ -57177,7 +58887,7 @@ "source_file": "src/exlab_wizard/api/routers/__init__.py", "source_location": "L1", "id": "routers_init_rationale_1", - "community": 525, + "community": 548, "norm_label": "api routers package. backend spec \u00a74." }, { @@ -57186,7 +58896,7 @@ "source_file": "src/exlab_wizard/api/routers/operations.py", "source_location": "L1", "id": "src_exlab_wizard_api_routers_operations_py", - "community": 288, + "community": 290, "norm_label": "operations.py" }, { @@ -57195,7 +58905,7 @@ "source_file": "src/exlab_wizard/api/routers/operations.py", "source_location": "L36", "id": "routers_operations_operationentry", - "community": 288, + "community": 290, "norm_label": "operationentry" }, { @@ -57204,7 +58914,7 @@ "source_file": "src/exlab_wizard/api/routers/operations.py", "source_location": "L51", "id": "routers_operations_operationsresponse", - "community": 288, + "community": 290, "norm_label": "operationsresponse" }, { @@ -57213,7 +58923,7 @@ "source_file": "src/exlab_wizard/api/routers/operations.py", "source_location": "L59", "id": "routers_operations_build_operations_router", - "community": 288, + "community": 290, "norm_label": "build_operations_router()" }, { @@ -57222,7 +58932,7 @@ "source_file": "src/exlab_wizard/api/routers/operations.py", "source_location": "L89", "id": "routers_operations_session_to_entry", - "community": 288, + "community": 290, "norm_label": "_session_to_entry()" }, { @@ -57231,7 +58941,7 @@ "source_file": "src/exlab_wizard/api/routers/operations.py", "source_location": "L1", "id": "routers_operations_rationale_1", - "community": 288, + "community": 290, "norm_label": "``/operations`` router. backend spec \u00a74.6.1, frontend \u00a79.5. lists all in-flight" }, { @@ -57240,7 +58950,7 @@ "source_file": "src/exlab_wizard/api/routers/operations.py", "source_location": "L37", "id": "routers_operations_rationale_37", - "community": 288, + "community": 290, "norm_label": "one row in the operations panel. backend spec \u00a74.6.1, frontend \u00a79.5." }, { @@ -57249,7 +58959,7 @@ "source_file": "src/exlab_wizard/api/routers/operations.py", "source_location": "L52", "id": "routers_operations_rationale_52", - "community": 288, + "community": 290, "norm_label": "``get /operations`` response." }, { @@ -57258,7 +58968,7 @@ "source_file": "src/exlab_wizard/api/routers/operations.py", "source_location": "L60", "id": "routers_operations_rationale_60", - "community": 288, + "community": 290, "norm_label": "construct the ``/operations`` router." }, { @@ -57267,7 +58977,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L1", "id": "src_exlab_wizard_api_routers_problems_py", - "community": 127, + "community": 0, "norm_label": "problems.py" }, { @@ -57276,7 +58986,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L67", "id": "routers_problems_findingresponse", - "community": 127, + "community": 0, "norm_label": "findingresponse" }, { @@ -57285,7 +58995,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L83", "id": "routers_problems_problemsresponse", - "community": 127, + "community": 0, "norm_label": "problemsresponse" }, { @@ -57294,7 +59004,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L92", "id": "routers_problems_overriderequest", - "community": 127, + "community": 0, "norm_label": "overriderequest" }, { @@ -57303,7 +59013,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L103", "id": "routers_problems_overrideresponse", - "community": 127, + "community": 0, "norm_label": "overrideresponse" }, { @@ -57312,7 +59022,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L117", "id": "routers_problems_revokerequest", - "community": 127, + "community": 0, "norm_label": "revokerequest" }, { @@ -57321,7 +59031,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L127", "id": "routers_problems_tombstoneresponse", - "community": 127, + "community": 0, "norm_label": "tombstoneresponse" }, { @@ -57330,7 +59040,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L138", "id": "routers_problems_refreshresponse", - "community": 127, + "community": 0, "norm_label": "refreshresponse" }, { @@ -57339,7 +59049,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L152", "id": "routers_problems_build_problems_router", - "community": 127, + "community": 94, "norm_label": "build_problems_router()" }, { @@ -57348,7 +59058,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L292", "id": "routers_problems_build_scope", - "community": 398, + "community": 29, "norm_label": "_build_scope()" }, { @@ -57357,7 +59067,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L321", "id": "routers_problems_matches_filters", - "community": 127, + "community": 0, "norm_label": "_matches_filters()" }, { @@ -57366,7 +59076,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L327", "id": "routers_problems_last_audit_at", - "community": 123, + "community": 25, "norm_label": "_last_audit_at()" }, { @@ -57375,7 +59085,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L334", "id": "routers_problems_require_validator", - "community": 127, + "community": 82, "norm_label": "_require_validator()" }, { @@ -57384,7 +59094,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L348", "id": "routers_problems_require_cache_writer", - "community": 127, + "community": 82, "norm_label": "_require_cache_writer()" }, { @@ -57393,7 +59103,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L362", "id": "routers_problems_require_creation_json", - "community": 127, + "community": 16, "norm_label": "_require_creation_json()" }, { @@ -57402,7 +59112,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L381", "id": "routers_problems_stream_audit_channel", - "community": 16, + "community": 64, "norm_label": "_stream_audit_channel()" }, { @@ -57411,7 +59121,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L1", "id": "routers_problems_rationale_1", - "community": 127, + "community": 0, "norm_label": "``/problems`` router. backend spec \u00a74.6.1, \u00a711.8. endpoints: * ``get /problems" }, { @@ -57420,7 +59130,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L68", "id": "routers_problems_rationale_68", - "community": 127, + "community": 0, "norm_label": "one finding row in the \u00a711.8 schema." }, { @@ -57429,7 +59139,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L84", "id": "routers_problems_rationale_84", - "community": 127, + "community": 0, "norm_label": "``get /problems`` response." }, { @@ -57438,7 +59148,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L93", "id": "routers_problems_rationale_93", - "community": 127, + "community": 0, "norm_label": "``post /problems/{run_path}/override`` body. backend spec \u00a711.3." }, { @@ -57447,7 +59157,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L104", "id": "routers_problems_rationale_104", - "community": 127, + "community": 0, "norm_label": "override append response." }, { @@ -57456,7 +59166,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L118", "id": "routers_problems_rationale_118", - "community": 127, + "community": 0, "norm_label": "``post /problems/{run_path}/override/revoke`` body. backend spec \u00a711.3." }, { @@ -57465,7 +59175,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L139", "id": "routers_problems_rationale_139", - "community": 127, + "community": 0, "norm_label": "``post /problems/refresh`` response." }, { @@ -57474,7 +59184,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L153", "id": "routers_problems_rationale_153", - "community": 127, + "community": 94, "norm_label": "construct the ``/problems`` router." }, { @@ -57483,7 +59193,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L363", "id": "routers_problems_rationale_363", - "community": 127, + "community": 16, "norm_label": "resolve a ``run_path`` to its ``creation.json`` or raise 404. used by the o" }, { @@ -57492,7 +59202,7 @@ "source_file": "src/exlab_wizard/api/routers/problems.py", "source_location": "L382", "id": "routers_problems_rationale_382", - "community": 16, + "community": 64, "norm_label": "forward each delta frame the audit channel publishes. the channel exposes a" }, { @@ -57501,7 +59211,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L1", "id": "src_exlab_wizard_api_routers_staging_py", - "community": 7, + "community": 6, "norm_label": "staging.py" }, { @@ -57510,7 +59220,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L59", "id": "routers_staging_stagedrunrow", - "community": 7, + "community": 6, "norm_label": "stagedrunrow" }, { @@ -57519,7 +59229,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L75", "id": "routers_staging_staginglistresponse", - "community": 7, + "community": 6, "norm_label": "staginglistresponse" }, { @@ -57528,7 +59238,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L83", "id": "routers_staging_forcesyncresponse", - "community": 7, + "community": 6, "norm_label": "forcesyncresponse" }, { @@ -57537,7 +59247,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L93", "id": "routers_staging_clearresponse", - "community": 7, + "community": 6, "norm_label": "clearresponse" }, { @@ -57546,7 +59256,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L103", "id": "routers_staging_clearverifiedresponse", - "community": 7, + "community": 6, "norm_label": "clearverifiedresponse" }, { @@ -57555,7 +59265,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L111", "id": "routers_staging_keeplocalrequest", - "community": 7, + "community": 6, "norm_label": "keeplocalrequest" }, { @@ -57564,7 +59274,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L126", "id": "routers_staging_keeplocalresponse", - "community": 7, + "community": 6, "norm_label": "keeplocalresponse" }, { @@ -57573,7 +59283,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L141", "id": "routers_staging_build_staging_router", - "community": 7, + "community": 94, "norm_label": "build_staging_router()" }, { @@ -57582,7 +59292,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L315", "id": "routers_staging_row_from_summary", - "community": 7, + "community": 6, "norm_label": "_row_from_summary()" }, { @@ -57591,7 +59301,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L329", "id": "routers_staging_is_real_run", - "community": 25, + "community": 16, "norm_label": "_is_real_run()" }, { @@ -57600,7 +59310,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L352", "id": "routers_staging_require_config", - "community": 7, + "community": 6, "norm_label": "_require_config()" }, { @@ -57609,7 +59319,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L370", "id": "routers_staging_require_nas_sync", - "community": 7, + "community": 6, "norm_label": "_require_nas_sync()" }, { @@ -57618,7 +59328,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L1", "id": "routers_staging_rationale_1", - "community": 7, + "community": 6, "norm_label": "``/staging`` router. backend spec \u00a713.7, \u00a713.8. four endpoints back the orchest" }, { @@ -57627,7 +59337,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L60", "id": "routers_staging_rationale_60", - "community": 7, + "community": 6, "norm_label": "one staging-panel row. backend spec \u00a713.8." }, { @@ -57636,7 +59346,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L76", "id": "routers_staging_rationale_76", - "community": 7, + "community": 6, "norm_label": "``get /staging`` response." }, { @@ -57645,7 +59355,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L84", "id": "routers_staging_rationale_84", - "community": 7, + "community": 6, "norm_label": "``post /staging/{run_path}/force-sync`` response." }, { @@ -57654,7 +59364,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L94", "id": "routers_staging_rationale_94", - "community": 7, + "community": 6, "norm_label": "``post /staging/{run_path}/clear`` response." }, { @@ -57663,7 +59373,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L104", "id": "routers_staging_rationale_104", - "community": 7, + "community": 6, "norm_label": "``post /staging/clear-verified`` response (redesign \u00a74.6)." }, { @@ -57672,7 +59382,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L112", "id": "routers_staging_rationale_112", - "community": 7, + "community": 6, "norm_label": "``post /staging/{run_path}/keep-local`` request body. operator-free per-fil" }, { @@ -57681,7 +59391,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L127", "id": "routers_staging_rationale_127", - "community": 7, + "community": 6, "norm_label": "``post /staging/{run_path}/keep-local`` response." }, { @@ -57690,7 +59400,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L142", "id": "routers_staging_rationale_142", - "community": 7, + "community": 94, "norm_label": "construct the ``/staging`` router. backend spec \u00a713.7, \u00a713.8." }, { @@ -57699,7 +59409,7 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L330", "id": "routers_staging_rationale_330", - "community": 25, + "community": 16, "norm_label": "return true when ``run_path`` is a real run inside an allowed root. a \"real" }, { @@ -57708,16 +59418,70 @@ "source_file": "src/exlab_wizard/api/routers/staging.py", "source_location": "L353", "id": "routers_staging_rationale_353", - "community": 7, + "community": 6, "norm_label": "return the live :class:`config` or raise 503 when no config is wired. redes" }, + { + "label": "__init__.py", + "file_type": "code", + "source_file": "src/exlab_wizard/dev/__init__.py", + "source_location": "L1", + "id": "src_exlab_wizard_dev_init_py", + "community": 549, + "norm_label": "__init__.py" + }, + { + "label": "Developer utilities. Not part of the shipped application surface. Modules here", + "file_type": "rationale", + "source_file": "src/exlab_wizard/dev/__init__.py", + "source_location": "L1", + "id": "dev_init_rationale_1", + "community": 549, + "norm_label": "developer utilities. not part of the shipped application surface. modules here" + }, + { + "label": "seed.py", + "file_type": "code", + "source_file": "src/exlab_wizard/dev/seed.py", + "source_location": "L1", + "id": "src_exlab_wizard_dev_seed_py", + "community": 239, + "norm_label": "seed.py" + }, + { + "label": "main()", + "file_type": "code", + "source_file": "src/exlab_wizard/dev/seed.py", + "source_location": "L15", + "id": "dev_seed_main", + "community": 239, + "norm_label": "main()" + }, + { + "label": "Standalone sample-data seeder -- ``python -m exlab_wizard.dev.seed``. Forces th", + "file_type": "rationale", + "source_file": "src/exlab_wizard/dev/seed.py", + "source_location": "L1", + "id": "dev_seed_rationale_1", + "community": 239, + "norm_label": "standalone sample-data seeder -- ``python -m exlab_wizard.dev.seed``. forces th" + }, + { + "label": "Regenerate the ``-test`` sample-data tree from scratch. Returns the process", + "file_type": "rationale", + "source_file": "src/exlab_wizard/dev/seed.py", + "source_location": "L16", + "id": "dev_seed_rationale_16", + "community": 239, + "norm_label": "regenerate the ``-test`` sample-data tree from scratch. returns the process" + }, { "label": "queue.py", "file_type": "code", "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L1", "id": "src_exlab_wizard_sync_queue_py", - "community": 174, + "community": 3, "norm_label": "queue.py" }, { @@ -57726,7 +59490,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L69", "id": "sync_queue_syncjobstate", - "community": 174, + "community": 3, "norm_label": "syncjobstate" }, { @@ -57735,7 +59499,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L116", "id": "sync_queue_syncjobrow", - "community": 174, + "community": 3, "norm_label": "syncjobrow" }, { @@ -57744,7 +59508,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L134", "id": "sync_queue_decode_files", - "community": 174, + "community": 3, "norm_label": "_decode_files()" }, { @@ -57753,7 +59517,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L151", "id": "sync_queue_encode_files", - "community": 98, + "community": 424, "norm_label": "_encode_files()" }, { @@ -57762,7 +59526,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L156", "id": "sync_queue_row_to_job", - "community": 174, + "community": 3, "norm_label": "_row_to_job()" }, { @@ -57771,7 +59535,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L175", "id": "sync_queue_compute_next_attempt_at", - "community": 313, + "community": 265, "norm_label": "compute_next_attempt_at()" }, { @@ -57780,7 +59544,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L190", "id": "sync_queue_syncqueue", - "community": 98, + "community": 264, "norm_label": "syncqueue" }, { @@ -57789,7 +59553,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L197", "id": "sync_queue_syncqueue_init", - "community": 98, + "community": 264, "norm_label": ".__init__()" }, { @@ -57798,7 +59562,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L202", "id": "sync_queue_db_path", - "community": 174, + "community": 3, "norm_label": "db_path()" }, { @@ -57807,7 +59571,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L229", "id": "sync_queue_syncqueue_close", - "community": 98, + "community": 272, "norm_label": ".close()" }, { @@ -57816,7 +59580,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L235", "id": "sync_queue_syncqueue_require_conn", - "community": 98, + "community": 272, "norm_label": "._require_conn()" }, { @@ -57825,7 +59589,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L241", "id": "sync_queue_syncqueue_require_job", - "community": 98, + "community": 312, "norm_label": "._require_job()" }, { @@ -57834,7 +59598,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L256", "id": "sync_queue_syncqueue_insert", - "community": 98, + "community": 424, "norm_label": ".insert()" }, { @@ -57843,7 +59607,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L310", "id": "sync_queue_syncqueue_get_by_id", - "community": 98, + "community": 312, "norm_label": ".get_by_id()" }, { @@ -57852,7 +59616,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L323", "id": "sync_queue_syncqueue_get_by_run_path", - "community": 98, + "community": 272, "norm_label": ".get_by_run_path()" }, { @@ -57861,7 +59625,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L336", "id": "sync_queue_syncqueue_list_in_state", - "community": 98, + "community": 272, "norm_label": ".list_in_state()" }, { @@ -57870,7 +59634,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L347", "id": "sync_queue_syncqueue_list_all", - "community": 98, + "community": 272, "norm_label": ".list_all()" }, { @@ -57879,7 +59643,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L357", "id": "sync_queue_syncqueue_transition", - "community": 98, + "community": 265, "norm_label": ".transition()" }, { @@ -57888,7 +59652,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L425", "id": "sync_queue_syncqueue_record_failure", - "community": 98, + "community": 265, "norm_label": ".record_failure()" }, { @@ -57897,7 +59661,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L475", "id": "sync_queue_syncqueue_reset_to_queued", - "community": 98, + "community": 312, "norm_label": ".reset_to_queued()" }, { @@ -57906,7 +59670,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L500", "id": "sync_queue_syncqueue_requeue_with_files", - "community": 98, + "community": 312, "norm_label": ".requeue_with_files()" }, { @@ -57915,7 +59679,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L534", "id": "sync_queue_syncqueue_delete", - "community": 98, + "community": 272, "norm_label": ".delete()" }, { @@ -57924,7 +59688,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L541", "id": "sync_queue_is_terminal", - "community": 174, + "community": 3, "norm_label": "is_terminal()" }, { @@ -57933,7 +59697,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L1", "id": "sync_queue_rationale_1", - "community": 174, + "community": 3, "norm_label": "durable sqlite-backed sync-job queue. backend spec \u00a77.1.1, \u00a77.1.2, \u00a77.1.5. the" }, { @@ -57942,7 +59706,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L70", "id": "sync_queue_rationale_70", - "community": 174, + "community": 3, "norm_label": "state machine for a sync job. backend spec \u00a77.1.2." }, { @@ -57951,7 +59715,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L117", "id": "sync_queue_rationale_117", - "community": 174, + "community": 3, "norm_label": "one row in the ``jobs`` table. backend spec \u00a77.1.1." }, { @@ -57960,7 +59724,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L135", "id": "sync_queue_rationale_135", - "community": 174, + "community": 3, "norm_label": "decode the ``files`` json column into a tuple of run-relative paths. a ``nu" }, { @@ -57969,7 +59733,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L152", "id": "sync_queue_rationale_152", - "community": 98, + "community": 424, "norm_label": "encode a run-relative path tuple into the ``files`` json column." }, { @@ -57978,7 +59742,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L157", "id": "sync_queue_rationale_157", - "community": 174, + "community": 3, "norm_label": "materialize an ``aiosqlite.row`` (or tuple) into a :class:`syncjobrow`." }, { @@ -57987,7 +59751,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L176", "id": "sync_queue_rationale_176", - "community": 313, + "community": 265, "norm_label": "return the iso timestamp of the next retry attempt. ``attempts_after`` is t" }, { @@ -57996,7 +59760,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L191", "id": "sync_queue_rationale_191", - "community": 98, + "community": 264, "norm_label": "async sqlite-backed durable sync queue. backend spec \u00a77.1.1. use :meth:`ini" }, { @@ -58005,7 +59769,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L203", "id": "sync_queue_rationale_203", - "community": 630, + "community": 655, "norm_label": "the on-disk path of the queue database file." }, { @@ -58014,7 +59778,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L207", "id": "sync_queue_rationale_207", - "community": 98, + "community": 264, "norm_label": "open the connection, ensure the schema, and replay in-flight rows. repl" }, { @@ -58023,7 +59787,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L230", "id": "sync_queue_rationale_230", - "community": 98, + "community": 272, "norm_label": "close the underlying connection (idempotent)." }, { @@ -58032,7 +59796,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L242", "id": "sync_queue_rationale_242", - "community": 98, + "community": 312, "norm_label": "return the row for ``job_id`` or raise ``valueerror``. centralizes the" }, { @@ -58041,7 +59805,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L265", "id": "sync_queue_rationale_265", - "community": 98, + "community": 424, "norm_label": "insert a new ``queued`` row for ``run_path``. ``files`` is the per-file" }, { @@ -58050,7 +59814,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L311", "id": "sync_queue_rationale_311", - "community": 98, + "community": 312, "norm_label": "return the row with the given ``job_id`` or ``none``." }, { @@ -58059,7 +59823,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L324", "id": "sync_queue_rationale_324", - "community": 98, + "community": 272, "norm_label": "return the row whose ``run_path`` matches, or ``none``." }, { @@ -58068,7 +59832,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L337", "id": "sync_queue_rationale_337", - "community": 98, + "community": 272, "norm_label": "return every row currently in ``state`` ordered by ``enqueued_at``." }, { @@ -58077,7 +59841,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L348", "id": "sync_queue_rationale_348", - "community": 98, + "community": 272, "norm_label": "return every row in the queue ordered by ``enqueued_at``." }, { @@ -58086,7 +59850,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L370", "id": "sync_queue_rationale_370", - "community": 98, + "community": 265, "norm_label": "transition a job to ``new_state`` and patch the auxiliary columns. the" }, { @@ -58095,7 +59859,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L433", "id": "sync_queue_rationale_433", - "community": 98, + "community": 265, "norm_label": "record a transport failure on ``job_id``. if ``terminal`` is true (auth" }, { @@ -58104,7 +59868,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L476", "id": "sync_queue_rationale_476", - "community": 98, + "community": 312, "norm_label": "reset a ``failed`` job back to ``queued`` for a manual retry. per \u00a77.1." }, { @@ -58113,7 +59877,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L505", "id": "sync_queue_rationale_505", - "community": 98, + "community": 312, "norm_label": "reset a terminal job back to ``queued`` carrying a new ``files`` list." }, { @@ -58122,7 +59886,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L535", "id": "sync_queue_rationale_535", - "community": 98, + "community": 272, "norm_label": "remove a job row entirely. used by the cleanup reaper after cleaned." }, { @@ -58131,7 +59895,7 @@ "source_file": "src/exlab_wizard/sync/queue.py", "source_location": "L542", "id": "sync_queue_rationale_542", - "community": 631, + "community": 656, "norm_label": "return true if the state is a terminal state (no further work)." }, { @@ -58140,7 +59904,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L1", "id": "src_exlab_wizard_sync_manifest_py", - "community": 110, + "community": 115, "norm_label": "manifest.py" }, { @@ -58149,7 +59913,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L27", "id": "sync_manifest_remoteentry", - "community": 110, + "community": 115, "norm_label": "remoteentry" }, { @@ -58158,7 +59922,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L36", "id": "sync_manifest_remotemanifest", - "community": 110, + "community": 115, "norm_label": "remotemanifest" }, { @@ -58167,7 +59931,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L41", "id": "sync_manifest_remotemanifest_size_matches", - "community": 110, + "community": 115, "norm_label": ".size_matches()" }, { @@ -58176,7 +59940,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L46", "id": "sync_manifest_remotemanifest_has", - "community": 110, + "community": 115, "norm_label": ".has()" }, { @@ -58185,7 +59949,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L50", "id": "sync_manifest_remotemanifest_matches", - "community": 110, + "community": 115, "norm_label": ".matches()" }, { @@ -58194,7 +59958,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L69", "id": "sync_manifest_to_epoch", - "community": 110, + "community": 115, "norm_label": "_to_epoch()" }, { @@ -58203,7 +59967,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L83", "id": "sync_manifest_parse_lsjson", - "community": 110, + "community": 115, "norm_label": "parse_lsjson()" }, { @@ -58212,7 +59976,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L1", "id": "sync_manifest_rationale_1", - "community": 110, + "community": 115, "norm_label": "parser for ``rclone lsjson`` output into a run-relative remote manifest. sole o" }, { @@ -58221,7 +59985,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L28", "id": "sync_manifest_rationale_28", - "community": 110, + "community": 115, "norm_label": "one file on the remote. ``mod_time`` is the rfc3339 string as emitted." }, { @@ -58230,7 +59994,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L37", "id": "sync_manifest_rationale_37", - "community": 110, + "community": 115, "norm_label": "run-relative view of a remote subtree. keyed by posix rel-path." }, { @@ -58239,7 +60003,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L42", "id": "sync_manifest_rationale_42", - "community": 110, + "community": 115, "norm_label": "true iff ``rel_path`` is present and its remote size equals local." }, { @@ -58248,7 +60012,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L47", "id": "sync_manifest_rationale_47", - "community": 110, + "community": 115, "norm_label": "true iff ``rel_path`` is present on the remote (existence probe)." }, { @@ -58257,7 +60021,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L53", "id": "sync_manifest_rationale_53", - "community": 110, + "community": 115, "norm_label": "the single reconcile predicate: present and size-equal and modtime close." }, { @@ -58266,7 +60030,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L70", "id": "sync_manifest_rationale_70", - "community": 632, + "community": 657, "norm_label": "parse an rfc3339 ``modtime`` to epoch seconds, or ``none`` if unparseable." }, { @@ -58275,7 +60039,7 @@ "source_file": "src/exlab_wizard/sync/manifest.py", "source_location": "L84", "id": "sync_manifest_rationale_84", - "community": 110, + "community": 115, "norm_label": "parse ``rclone lsjson`` array text into a :class:`remotemanifest`. director" }, { @@ -58284,7 +60048,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1", "id": "src_exlab_wizard_sync_nas_client_py", - "community": 53, + "community": 3, "norm_label": "nas_client.py" }, { @@ -58293,7 +60057,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L93", "id": "sync_nas_client_syncjobhandle", - "community": 174, + "community": 3, "norm_label": "syncjobhandle" }, { @@ -58302,7 +60066,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L112", "id": "sync_nas_client_remote_subpath", - "community": 53, + "community": 3, "norm_label": "_remote_subpath()" }, { @@ -58311,7 +60075,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L125", "id": "sync_nas_client_build_driver", - "community": 53, + "community": 3, "norm_label": "_build_driver()" }, { @@ -58320,7 +60084,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L147", "id": "sync_nas_client_remoteresolution", - "community": 174, + "community": 3, "norm_label": "_remoteresolution" }, { @@ -58329,7 +60093,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L168", "id": "sync_nas_client_nassyncclient", - "community": 18, + "community": 8, "norm_label": "nassyncclient" }, { @@ -58338,7 +60102,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L188", "id": "sync_nas_client_nassyncclient_init", - "community": 286, + "community": 8, "norm_label": ".__init__()" }, { @@ -58347,7 +60111,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L227", "id": "sync_nas_client_nassyncclient_apply_config", - "community": 446, + "community": 8, "norm_label": ".apply_config()" }, { @@ -58356,7 +60120,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L248", "id": "sync_nas_client_nassyncclient_close", - "community": 188, + "community": 3, "norm_label": ".close()" }, { @@ -58365,7 +60129,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L261", "id": "sync_nas_client_nassyncclient_enqueue", - "community": 272, + "community": 3, "norm_label": ".enqueue()" }, { @@ -58374,7 +60138,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L355", "id": "sync_nas_client_nassyncclient_status", - "community": 452, + "community": 8, "norm_label": ".status()" }, { @@ -58383,7 +60147,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L366", "id": "sync_nas_client_nassyncclient_retry", - "community": 450, + "community": 8, "norm_label": ".retry()" }, { @@ -58392,7 +60156,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L371", "id": "sync_nas_client_nassyncclient_force_verify", - "community": 188, + "community": 3, "norm_label": ".force_verify()" }, { @@ -58401,7 +60165,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L416", "id": "sync_nas_client_nassyncclient_worker_loop", - "community": 286, + "community": 8, "norm_label": "._worker_loop()" }, { @@ -58410,7 +60174,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L436", "id": "sync_nas_client_nassyncclient_next_due_job", - "community": 286, + "community": 8, "norm_label": "._next_due_job()" }, { @@ -58419,7 +60183,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L447", "id": "sync_nas_client_nassyncclient_drive_job", - "community": 53, + "community": 3, "norm_label": "._drive_job()" }, { @@ -58428,7 +60192,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L619", "id": "sync_nas_client_nassyncclient_handle_verify_transport_error", - "community": 53, + "community": 3, "norm_label": "._handle_verify_transport_error()" }, { @@ -58437,7 +60201,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L652", "id": "sync_nas_client_nassyncclient_resolve_remote", - "community": 53, + "community": 3, "norm_label": "._resolve_remote()" }, { @@ -58446,7 +60210,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L673", "id": "sync_nas_client_nassyncclient_target_for_equipment", - "community": 53, + "community": 3, "norm_label": "._target_for_equipment()" }, { @@ -58455,7 +60219,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L684", "id": "sync_nas_client_nassyncclient_driver_for_equipment", - "community": 53, + "community": 3, "norm_label": "._driver_for_equipment()" }, { @@ -58464,7 +60228,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L696", "id": "sync_nas_client_nassyncclient_build_push", - "community": 53, + "community": 3, "norm_label": "._build_push()" }, { @@ -58473,7 +60237,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L722", "id": "sync_nas_client_nassyncclient_build_check", - "community": 188, + "community": 3, "norm_label": "._build_check()" }, { @@ -58482,7 +60246,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L741", "id": "sync_nas_client_nassyncclient_build_lsjson", - "community": 53, + "community": 3, "norm_label": "._build_lsjson()" }, { @@ -58491,7 +60255,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L766", "id": "sync_nas_client_nassyncclient_compute_local_shas", - "community": 53, + "community": 3, "norm_label": "._compute_local_shas()" }, { @@ -58500,7 +60264,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L809", "id": "sync_nas_client_nassyncclient_handle_push_failure", - "community": 53, + "community": 3, "norm_label": "._handle_push_failure()" }, { @@ -58509,7 +60273,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L834", "id": "sync_nas_client_discover_run_files", - "community": 53, + "community": 3, "norm_label": "_discover_run_files()" }, { @@ -58518,7 +60282,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L859", "id": "sync_nas_client_file_signature", - "community": 53, + "community": 3, "norm_label": "_file_signature()" }, { @@ -58527,7 +60291,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L868", "id": "sync_nas_client_write_files_from", - "community": 188, + "community": 3, "norm_label": "_write_files_from()" }, { @@ -58536,7 +60300,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L887", "id": "sync_nas_client_nassyncclient_maybe_cleanup", - "community": 188, + "community": 3, "norm_label": "._maybe_cleanup()" }, { @@ -58545,7 +60309,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L988", "id": "sync_nas_client_nassyncclient_delete_local", - "community": 246, + "community": 3, "norm_label": "._delete_local()" }, { @@ -58554,7 +60318,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1009", "id": "sync_nas_client_nassyncclient_infer_equipment_id", - "community": 272, + "community": 3, "norm_label": "._infer_equipment_id()" }, { @@ -58563,7 +60327,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1032", "id": "sync_nas_client_compute_nas_path", - "community": 272, + "community": 3, "norm_label": "_compute_nas_path()" }, { @@ -58572,7 +60336,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1036", "id": "sync_nas_client_nassyncclient_mark_blocked", - "community": 272, + "community": 3, "norm_label": "._mark_blocked()" }, { @@ -58581,7 +60345,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1045", "id": "sync_nas_client_nassyncclient_mark_synced", - "community": 53, + "community": 3, "norm_label": "._mark_synced()" }, { @@ -58590,7 +60354,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1058", "id": "sync_nas_client_nassyncclient_mark_cleaned", - "community": 188, + "community": 3, "norm_label": "._mark_cleaned()" }, { @@ -58599,7 +60363,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1", "id": "sync_nas_client_rationale_1", - "community": 53, + "community": 3, "norm_label": "nas sync client. backend spec \u00a77.1, \u00a77.3. the :class:`nassyncclient` is the pub" }, { @@ -58608,7 +60372,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L94", "id": "sync_nas_client_rationale_94", - "community": 174, + "community": 3, "norm_label": "lightweight handle returned by :meth:`nassyncclient.enqueue`. ``job_id`` is" }, { @@ -58617,7 +60381,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L113", "id": "sync_nas_client_rationale_113", - "community": 53, + "community": 3, "norm_label": "compose the run-relative ``//`` path. le" }, { @@ -58626,7 +60390,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L126", "id": "sync_nas_client_rationale_126", - "community": 53, + "community": 3, "norm_label": "construct a :class:`rclonedriver` for a named remote. the named remote live" }, { @@ -58635,7 +60399,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L148", "id": "sync_nas_client_rationale_148", - "community": 174, + "community": 3, "norm_label": "the ``(remote, base_root, perf)`` an equipment's ops resolve to. computed o" }, { @@ -58644,7 +60408,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L169", "id": "sync_nas_client_rationale_169", - "community": 18, + "community": 8, "norm_label": "durable, per-equipment nas sync queue with pre-sync gate. backend spec \u00a77.1" }, { @@ -58653,7 +60417,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L228", "id": "sync_nas_client_rationale_228", - "community": 446, + "community": 8, "norm_label": "swap the cached config + equipment map in place (no relaunch). the ``eq" }, { @@ -58662,7 +60426,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L243", "id": "sync_nas_client_rationale_243", - "community": 286, + "community": 8, "norm_label": "open the queue and start the worker task. backend spec \u00a77.1.2." }, { @@ -58671,7 +60435,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L249", "id": "sync_nas_client_rationale_249", - "community": 188, + "community": 3, "norm_label": "stop the worker and close the queue db. idempotent." }, { @@ -58680,7 +60444,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L266", "id": "sync_nas_client_rationale_266", - "community": 272, + "community": 3, "norm_label": "pre-sync gate -> if hard-tier finding without override, mark ``sync_stat" }, { @@ -58689,7 +60453,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L356", "id": "sync_nas_client_rationale_356", - "community": 452, + "community": 8, "norm_label": "return the queue state of the job for ``run_path``. ``\"none\"`` when no" }, { @@ -58698,7 +60462,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L367", "id": "sync_nas_client_rationale_367", - "community": 450, + "community": 8, "norm_label": "re-arm a ``failed`` job. backend spec \u00a77.1.5 (problems-tab retry)." }, { @@ -58707,7 +60471,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L372", "id": "sync_nas_client_rationale_372", - "community": 188, + "community": 3, "norm_label": "re-run ``rclone check --download`` against the configured remote. used" }, { @@ -58716,7 +60480,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L417", "id": "sync_nas_client_rationale_417", - "community": 286, + "community": 8, "norm_label": "pick the next due job and drive it through the state machine." }, { @@ -58725,7 +60489,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L437", "id": "sync_nas_client_rationale_437", - "community": 286, + "community": 8, "norm_label": "return the next queued row whose backoff has passed (or none)." }, { @@ -58734,7 +60498,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L448", "id": "sync_nas_client_rationale_448", - "community": 53, + "community": 3, "norm_label": "drive ``job`` from queued through one transport+verify pass. worker sem" }, { @@ -58743,7 +60507,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L620", "id": "sync_nas_client_rationale_620", - "community": 53, + "community": 3, "norm_label": "route a verify-phase ``transporterror`` per spec \u00a77.1.5. mirrors the pu" }, { @@ -58752,7 +60516,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L653", "id": "sync_nas_client_rationale_653", - "community": 53, + "community": 3, "norm_label": "resolve the ``(remote, base_root, perf)`` triple for ``equipment``. the" }, { @@ -58761,7 +60525,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L674", "id": "sync_nas_client_rationale_674", - "community": 53, + "community": 3, "norm_label": "compose the rclone target ``:///``. th" }, { @@ -58770,7 +60534,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L685", "id": "sync_nas_client_rationale_685", - "community": 53, + "community": 3, "norm_label": "build the :class:`rclonedriver` for ``equipment``. the perf dials come" }, { @@ -58779,7 +60543,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L697", "id": "sync_nas_client_rationale_697", - "community": 53, + "community": 3, "norm_label": "resolve the push callable for ``equipment``. tests can inject a custom" }, { @@ -58788,7 +60552,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L723", "id": "sync_nas_client_rationale_723", - "community": 188, + "community": 3, "norm_label": "resolve the ``rclone check --download`` callable for ``equipment``. tes" }, { @@ -58797,7 +60561,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L742", "id": "sync_nas_client_rationale_742", - "community": 53, + "community": 3, "norm_label": "resolve the cheap ``rclone lsjson`` reconcile probe for ``equipment``." }, { @@ -58806,7 +60570,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L771", "id": "sync_nas_client_rationale_771", - "community": 53, + "community": 3, "norm_label": "compute the sha-256 hex digest of each file in ``files``. slot a of the" }, { @@ -58815,7 +60579,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L810", "id": "sync_nas_client_rationale_810", - "community": 53, + "community": 3, "norm_label": "translate a transport failure into a queue update." }, { @@ -58824,7 +60588,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L835", "id": "sync_nas_client_rationale_835", - "community": 633, + "community": 658, "norm_label": "return every non-cache regular file under ``run_path`` as posix rel paths." }, { @@ -58833,7 +60597,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L860", "id": "sync_nas_client_rationale_860", - "community": 634, + "community": 659, "norm_label": "return the ``(st_size, st_mtime_ns)`` signature for ``path``." }, { @@ -58842,7 +60606,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L869", "id": "sync_nas_client_rationale_869", - "community": 635, + "community": 660, "norm_label": "write a transport ``--files-from`` list and return its path. one run-re" }, { @@ -58851,7 +60615,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L888", "id": "sync_nas_client_rationale_888", - "community": 188, + "community": 3, "norm_label": "apply the \u00a77.1.6 interlocks; if all pass, run the cleanup. operator-fre" }, { @@ -58860,7 +60624,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L993", "id": "sync_nas_client_rationale_993", - "community": 246, + "community": 3, "norm_label": "delete ``run_path`` data files honoring ``retain_cache`` and ``keep_local``." }, { @@ -58869,7 +60633,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1010", "id": "sync_nas_client_rationale_1010", - "community": 272, + "community": 3, "norm_label": "return the equipment id for a run path. prefers an explicit equipment i" }, { @@ -58878,7 +60642,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1033", "id": "sync_nas_client_rationale_1033", - "community": 636, + "community": 661, "norm_label": "return the recorded nas-side path from a creation payload." }, { @@ -58887,7 +60651,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1037", "id": "sync_nas_client_rationale_1037", - "community": 272, + "community": 3, "norm_label": "mutate ``creation.json`` ``sync_status`` to ``blocked_by_validation``." }, { @@ -58896,7 +60660,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1046", "id": "sync_nas_client_rationale_1046", - "community": 53, + "community": 3, "norm_label": "mutate ``creation.json`` ``sync_status`` to ``synced``. backend spec \u00a77.1.4." }, { @@ -58905,7 +60669,7 @@ "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1059", "id": "sync_nas_client_rationale_1059", - "community": 188, + "community": 3, "norm_label": "mutate ``creation.json`` ``sync_status`` to ``cleaned``. backend spec \u00a77.1.10." }, { @@ -58914,7 +60678,7 @@ "source_file": "src/exlab_wizard/sync/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_sync_init_py", - "community": 445, + "community": 482, "norm_label": "__init__.py" }, { @@ -58923,7 +60687,7 @@ "source_file": "src/exlab_wizard/sync/cleanup.py", "source_location": "L1", "id": "src_exlab_wizard_sync_cleanup_py", - "community": 115, + "community": 120, "norm_label": "cleanup.py" }, { @@ -58932,7 +60696,7 @@ "source_file": "src/exlab_wizard/sync/cleanup.py", "source_location": "L39", "id": "sync_cleanup_has_recent_revocation", - "community": 115, + "community": 120, "norm_label": "has_recent_revocation()" }, { @@ -58941,7 +60705,7 @@ "source_file": "src/exlab_wizard/sync/cleanup.py", "source_location": "L65", "id": "sync_cleanup_cleanup_interlocks_satisfied", - "community": 115, + "community": 120, "norm_label": "cleanup_interlocks_satisfied()" }, { @@ -58950,7 +60714,7 @@ "source_file": "src/exlab_wizard/sync/cleanup.py", "source_location": "L1", "id": "sync_cleanup_rationale_1", - "community": 115, + "community": 120, "norm_label": "cleanup safety interlocks. backend spec \u00a77.1.6. the cleanup reaper deletes loca" }, { @@ -58959,7 +60723,7 @@ "source_file": "src/exlab_wizard/sync/cleanup.py", "source_location": "L45", "id": "sync_cleanup_rationale_45", - "community": 115, + "community": 120, "norm_label": "return true if any tombstone was recorded within ``min_age_hours``. a tombs" }, { @@ -58968,7 +60732,7 @@ "source_file": "src/exlab_wizard/sync/cleanup.py", "source_location": "L74", "id": "sync_cleanup_rationale_74", - "community": 115, + "community": 120, "norm_label": "evaluate every \u00a77.1.6 interlock; return true iff all pass. logs a debug ent" }, { @@ -58977,7 +60741,7 @@ "source_file": "src/exlab_wizard/sync/bandwidth.py", "source_location": "L1", "id": "src_exlab_wizard_sync_bandwidth_py", - "community": 80, + "community": 89, "norm_label": "bandwidth.py" }, { @@ -58986,7 +60750,7 @@ "source_file": "src/exlab_wizard/sync/bandwidth.py", "source_location": "L41", "id": "sync_bandwidth_mbps_to_kibps", - "community": 80, + "community": 89, "norm_label": "mbps_to_kibps()" }, { @@ -58995,7 +60759,7 @@ "source_file": "src/exlab_wizard/sync/bandwidth.py", "source_location": "L55", "id": "sync_bandwidth_parse_hhmm", - "community": 80, + "community": 89, "norm_label": "_parse_hhmm()" }, { @@ -59004,7 +60768,7 @@ "source_file": "src/exlab_wizard/sync/bandwidth.py", "source_location": "L63", "id": "sync_bandwidth_is_window_active", - "community": 80, + "community": 89, "norm_label": "is_window_active()" }, { @@ -59013,7 +60777,7 @@ "source_file": "src/exlab_wizard/sync/bandwidth.py", "source_location": "L84", "id": "sync_bandwidth_effective_bandwidth_limit_kibps", - "community": 80, + "community": 89, "norm_label": "effective_bandwidth_limit_kibps()" }, { @@ -59022,7 +60786,7 @@ "source_file": "src/exlab_wizard/sync/bandwidth.py", "source_location": "L1", "id": "sync_bandwidth_rationale_1", - "community": 80, + "community": 89, "norm_label": "bandwidth schedule evaluator. backend spec \u00a77.1.7. the \u00a77.1.7 bandwidth limiter" }, { @@ -59031,7 +60795,7 @@ "source_file": "src/exlab_wizard/sync/bandwidth.py", "source_location": "L42", "id": "sync_bandwidth_rationale_42", - "community": 80, + "community": 89, "norm_label": "convert ``upload_mbps`` (megabits/s) into ``--bwlimit`` kib/s. per \u00a77.1.7:" }, { @@ -59040,7 +60804,7 @@ "source_file": "src/exlab_wizard/sync/bandwidth.py", "source_location": "L56", "id": "sync_bandwidth_rationale_56", - "community": 80, + "community": 89, "norm_label": "parse an ``hh:mm`` string. pydantic validated it on input; :func:`is_window_" }, { @@ -59049,7 +60813,7 @@ "source_file": "src/exlab_wizard/sync/bandwidth.py", "source_location": "L64", "id": "sync_bandwidth_rationale_64", - "community": 80, + "community": 89, "norm_label": "return true iff ``now_local`` is inside ``window``. the window is defined b" }, { @@ -59058,7 +60822,7 @@ "source_file": "src/exlab_wizard/sync/bandwidth.py", "source_location": "L89", "id": "sync_bandwidth_rationale_89", - "community": 80, + "community": 89, "norm_label": "return the effective ``--bwlimit`` in kib/s for ``now_local``. decision tre" }, { @@ -59067,7 +60831,7 @@ "source_file": "src/exlab_wizard/sync/pre_sync_gate.py", "source_location": "L1", "id": "src_exlab_wizard_sync_pre_sync_gate_py", - "community": 179, + "community": 189, "norm_label": "pre_sync_gate.py" }, { @@ -59076,7 +60840,7 @@ "source_file": "src/exlab_wizard/sync/pre_sync_gate.py", "source_location": "L32", "id": "sync_pre_sync_gate_file_names_in_run", - "community": 179, + "community": 189, "norm_label": "_file_names_in_run()" }, { @@ -59085,7 +60849,7 @@ "source_file": "src/exlab_wizard/sync/pre_sync_gate.py", "source_location": "L46", "id": "sync_pre_sync_gate_is_eligible", - "community": 179, + "community": 189, "norm_label": "is_eligible()" }, { @@ -59094,7 +60858,7 @@ "source_file": "src/exlab_wizard/sync/pre_sync_gate.py", "source_location": "L1", "id": "sync_pre_sync_gate_rationale_1", - "community": 179, + "community": 189, "norm_label": "pre-sync gate. backend spec \u00a77.3. the pre-sync gate is the contract by which va" }, { @@ -59103,7 +60867,7 @@ "source_file": "src/exlab_wizard/sync/pre_sync_gate.py", "source_location": "L33", "id": "sync_pre_sync_gate_rationale_33", - "community": 179, + "community": 189, "norm_label": "return the bare file names directly under ``run_path``. the pre-sync gate i" }, { @@ -59112,7 +60876,7 @@ "source_file": "src/exlab_wizard/sync/pre_sync_gate.py", "source_location": "L52", "id": "sync_pre_sync_gate_rationale_52", - "community": 179, + "community": 189, "norm_label": "evaluate the \u00a77.3 eligibility rule for a run. returns ``(true, [])`` iff th" }, { @@ -59121,7 +60885,7 @@ "source_file": "src/exlab_wizard/sync/verifier.py", "source_location": "L1", "id": "src_exlab_wizard_sync_verifier_py", - "community": 265, + "community": 293, "norm_label": "verifier.py" }, { @@ -59130,7 +60894,7 @@ "source_file": "src/exlab_wizard/sync/verifier.py", "source_location": "L42", "id": "sync_verifier_verifyresult", - "community": 265, + "community": 3, "norm_label": "verifyresult" }, { @@ -59139,7 +60903,7 @@ "source_file": "src/exlab_wizard/sync/verifier.py", "source_location": "L72", "id": "sync_verifier_from_check_result", - "community": 265, + "community": 293, "norm_label": "from_check_result()" }, { @@ -59148,7 +60912,7 @@ "source_file": "src/exlab_wizard/sync/verifier.py", "source_location": "L93", "id": "sync_verifier_verifier", - "community": 265, + "community": 293, "norm_label": "verifier" }, { @@ -59157,7 +60921,7 @@ "source_file": "src/exlab_wizard/sync/verifier.py", "source_location": "L102", "id": "sync_verifier_verifier_init", - "community": 265, + "community": 293, "norm_label": ".__init__()" }, { @@ -59166,7 +60930,7 @@ "source_file": "src/exlab_wizard/sync/verifier.py", "source_location": "L109", "id": "sync_verifier_verifier_verify", - "community": 265, + "community": 293, "norm_label": ".verify()" }, { @@ -59175,7 +60939,7 @@ "source_file": "src/exlab_wizard/sync/verifier.py", "source_location": "L1", "id": "sync_verifier_rationale_1", - "community": 265, + "community": 293, "norm_label": "sha-256 verifier wrapper around ``rclone check --download``. rclone-only nas sy" }, { @@ -59184,7 +60948,7 @@ "source_file": "src/exlab_wizard/sync/verifier.py", "source_location": "L43", "id": "sync_verifier_rationale_43", - "community": 265, + "community": 3, "norm_label": "outcome of one ``rclone check --download`` pass against a remote. ``ok`` is" }, { @@ -59193,7 +60957,7 @@ "source_file": "src/exlab_wizard/sync/verifier.py", "source_location": "L73", "id": "sync_verifier_rationale_73", - "community": 637, + "community": 662, "norm_label": "translate a successful ``rclone check`` into a :class:`verifyresult`. `" }, { @@ -59202,7 +60966,7 @@ "source_file": "src/exlab_wizard/sync/verifier.py", "source_location": "L94", "id": "sync_verifier_rationale_94", - "community": 265, + "community": 293, "norm_label": "verifier: ``rclone check`` wrapper, no python sha pipeline. constructed wit" }, { @@ -59211,7 +60975,7 @@ "source_file": "src/exlab_wizard/sync/verifier.py", "source_location": "L116", "id": "sync_verifier_rationale_116", - "community": 265, + "community": 293, "norm_label": "run ``rclone check --download`` over ``files_from`` and translate. rais" }, { @@ -59220,7 +60984,7 @@ "source_file": "src/exlab_wizard/sync/run_delete.py", "source_location": "L1", "id": "src_exlab_wizard_sync_run_delete_py", - "community": 246, + "community": 11, "norm_label": "run_delete.py" }, { @@ -59229,7 +60993,7 @@ "source_file": "src/exlab_wizard/sync/run_delete.py", "source_location": "L38", "id": "sync_run_delete_delete_run_files", - "community": 246, + "community": 11, "norm_label": "delete_run_files()" }, { @@ -59238,7 +61002,7 @@ "source_file": "src/exlab_wizard/sync/run_delete.py", "source_location": "L94", "id": "sync_run_delete_prune_empty_dirs", - "community": 246, + "community": 11, "norm_label": "_prune_empty_dirs()" }, { @@ -59247,7 +61011,7 @@ "source_file": "src/exlab_wizard/sync/run_delete.py", "source_location": "L1", "id": "sync_run_delete_rationale_1", - "community": 246, + "community": 11, "norm_label": "keep-local-aware, symlink-safe deletion of a run's staging copy. operator-free" }, { @@ -59256,7 +61020,7 @@ "source_file": "src/exlab_wizard/sync/run_delete.py", "source_location": "L44", "id": "sync_run_delete_rationale_44", - "community": 246, + "community": 11, "norm_label": "delete ``run_path`` data files honoring ``retain_cache`` and ``keep_local``." }, { @@ -59265,7 +61029,7 @@ "source_file": "src/exlab_wizard/sync/run_delete.py", "source_location": "L95", "id": "sync_run_delete_rationale_95", - "community": 246, + "community": 11, "norm_label": "remove now-empty real directories under ``run_path`` (deepest first). the r" }, { @@ -59274,7 +61038,7 @@ "source_file": "src/exlab_wizard/sync/transports/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_sync_transports_init_py", - "community": 90, + "community": 104, "norm_label": "__init__.py" }, { @@ -59283,7 +61047,7 @@ "source_file": "src/exlab_wizard/sync/transports/__init__.py", "source_location": "L21", "id": "transports_init_transporterrorkind", - "community": 90, + "community": 104, "norm_label": "transporterrorkind" }, { @@ -59292,7 +61056,7 @@ "source_file": "src/exlab_wizard/sync/transports/__init__.py", "source_location": "L45", "id": "transports_init_transportresult", - "community": 90, + "community": 104, "norm_label": "transportresult" }, { @@ -59301,7 +61065,7 @@ "source_file": "src/exlab_wizard/sync/transports/__init__.py", "source_location": "L60", "id": "transports_init_transporterror", - "community": 90, + "community": 104, "norm_label": "transporterror" }, { @@ -59310,7 +61074,7 @@ "source_file": "src/exlab_wizard/sync/transports/__init__.py", "source_location": "L80", "id": "transports_init_transporterror_init", - "community": 90, + "community": 104, "norm_label": ".__init__()" }, { @@ -59319,7 +61083,7 @@ "source_file": "src/exlab_wizard/sync/transports/__init__.py", "source_location": "L1", "id": "transports_init_rationale_1", - "community": 90, + "community": 104, "norm_label": "sync transports package. backend spec \u00a77.1.3. each transport is a thin async wr" }, { @@ -59328,7 +61092,7 @@ "source_file": "src/exlab_wizard/sync/transports/__init__.py", "source_location": "L22", "id": "transports_init_rationale_22", - "community": 90, + "community": 104, "norm_label": "kind of failure that the queue worker uses to drive the retry policy. backe" }, { @@ -59337,7 +61101,7 @@ "source_file": "src/exlab_wizard/sync/transports/__init__.py", "source_location": "L46", "id": "transports_init_rationale_46", - "community": 90, + "community": 104, "norm_label": "outcome of a transport push. ``ok`` is true iff the transport reported succ" }, { @@ -59346,7 +61110,7 @@ "source_file": "src/exlab_wizard/sync/transports/__init__.py", "source_location": "L61", "id": "transports_init_rationale_61", - "community": 90, + "community": 104, "norm_label": "raised when a transport probe cannot complete. distinct from :class:`transp" }, { @@ -59355,7 +61119,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L1", "id": "src_exlab_wizard_sync_transports_rclone_py", - "community": 189, + "community": 232, "norm_label": "rclone.py" }, { @@ -59364,7 +61128,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L58", "id": "transports_rclone_classify_failure", - "community": 90, + "community": 104, "norm_label": "_classify_failure()" }, { @@ -59373,7 +61137,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L82", "id": "transports_rclone_checkresult", - "community": 189, + "community": 232, "norm_label": "checkresult" }, { @@ -59382,7 +61146,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L105", "id": "transports_rclone_aboutresult", - "community": 90, + "community": 232, "norm_label": "aboutresult" }, { @@ -59391,7 +61155,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L124", "id": "transports_rclone_rclonedriver", - "community": 38, + "community": 68, "norm_label": "rclonedriver" }, { @@ -59400,7 +61164,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L127", "id": "transports_rclone_rclonedriver_init", - "community": 38, + "community": 68, "norm_label": ".__init__()" }, { @@ -59409,7 +61173,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L140", "id": "transports_rclone_rclonedriver_global_flags", - "community": 90, + "community": 104, "norm_label": "._global_flags()" }, { @@ -59418,7 +61182,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L147", "id": "transports_rclone_rclonedriver_checkers_flags", - "community": 90, + "community": 104, "norm_label": "._checkers_flags()" }, { @@ -59427,7 +61191,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L158", "id": "transports_rclone_rclonedriver_push", - "community": 90, + "community": 104, "norm_label": ".push()" }, { @@ -59436,7 +61200,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L210", "id": "transports_rclone_rclonedriver_check", - "community": 188, + "community": 104, "norm_label": ".check()" }, { @@ -59445,7 +61209,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L291", "id": "transports_rclone_rclonedriver_about", - "community": 90, + "community": 104, "norm_label": ".about()" }, { @@ -59454,7 +61218,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L325", "id": "transports_rclone_rclonedriver_lsjson", - "community": 90, + "community": 104, "norm_label": ".lsjson()" }, { @@ -59463,7 +61227,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L351", "id": "transports_rclone_rclonedriver_listremotes", - "community": 90, + "community": 104, "norm_label": ".listremotes()" }, { @@ -59472,7 +61236,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L373", "id": "transports_rclone_parse_combined", - "community": 189, + "community": 232, "norm_label": "_parse_combined()" }, { @@ -59481,7 +61245,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L1", "id": "transports_rclone_rationale_1", - "community": 189, + "community": 232, "norm_label": "rclone transport driver. backend spec \u00a77.1.3. single transport binary for the n" }, { @@ -59490,7 +61254,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L59", "id": "transports_rclone_rationale_59", - "community": 90, + "community": 104, "norm_label": "map a (returncode, stderr) into a :class:`transporterrorkind`. auth failure" }, { @@ -59499,7 +61263,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L83", "id": "transports_rclone_rationale_83", - "community": 189, + "community": 232, "norm_label": "parsed result of a ``rclone check --combined`` run. the combined-output for" }, { @@ -59508,7 +61272,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L106", "id": "transports_rclone_rationale_106", - "community": 90, + "community": 232, "norm_label": "outcome of ``rclone about --json``. surfaces as the equipment-prob" }, { @@ -59517,7 +61281,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L125", "id": "transports_rclone_rationale_125", - "community": 38, + "community": 68, "norm_label": "rclone transport driver. backend spec \u00a77.1.3." }, { @@ -59526,7 +61290,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L141", "id": "transports_rclone_rationale_141", - "community": 90, + "community": 111, "norm_label": "flags valid on every rclone subcommand we invoke." }, { @@ -59535,7 +61299,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L148", "id": "transports_rclone_rationale_148", - "community": 90, + "community": 104, "norm_label": "``--checkers `` when the parallelism dial is set, else empty. shared" }, { @@ -59544,7 +61308,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L166", "id": "transports_rclone_rationale_166", - "community": 90, + "community": 104, "norm_label": "run ``rclone copy --checksum`` from ``local`` to ``remote``. ``remote``" }, { @@ -59553,7 +61317,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L217", "id": "transports_rclone_rationale_217", - "community": 188, + "community": 104, "norm_label": "run ``rclone check --download --files-from --combined`` over ``files_from``." }, { @@ -59562,7 +61326,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L295", "id": "transports_rclone_rationale_295", - "community": 90, + "community": 104, "norm_label": "run ``rclone about --json`` -- the equipment probe. used by th" }, { @@ -59571,7 +61335,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L326", "id": "transports_rclone_rationale_326", - "community": 90, + "community": 104, "norm_label": "run ``rclone lsjson`` (read-only) and return the raw json array text. l" }, { @@ -59580,7 +61344,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L352", "id": "transports_rclone_rationale_352", - "community": 90, + "community": 104, "norm_label": "return the remote names defined in rclone.conf (each incl. trailing ``:``)" }, { @@ -59589,7 +61353,7 @@ "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L374", "id": "transports_rclone_rationale_374", - "community": 189, + "community": 232, "norm_label": "parse ``rclone check --combined`` output into a :class:`checkresult`. each" }, { @@ -59598,7 +61362,7 @@ "source_file": "src/exlab_wizard/sync/transports/_run.py", "source_location": "L1", "id": "src_exlab_wizard_sync_transports_run_py", - "community": 147, + "community": 167, "norm_label": "_run.py" }, { @@ -59607,7 +61371,7 @@ "source_file": "src/exlab_wizard/sync/transports/_run.py", "source_location": "L27", "id": "transports_run_run_subprocess", - "community": 147, + "community": 167, "norm_label": "run_subprocess()" }, { @@ -59616,7 +61380,7 @@ "source_file": "src/exlab_wizard/sync/transports/_run.py", "source_location": "L1", "id": "transports_run_rationale_1", - "community": 147, + "community": 167, "norm_label": "shared asyncio subprocess helper for transport drivers. backend spec \u00a77.1.3. th" }, { @@ -59625,7 +61389,7 @@ "source_file": "src/exlab_wizard/sync/transports/_run.py", "source_location": "L28", "id": "transports_run_rationale_28", - "community": 147, + "community": 167, "norm_label": "launch ``cmd`` and return ``(returncode, stdout, stderr)`` as text. the chi" }, { @@ -59634,7 +61398,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L1", "id": "src_exlab_wizard_logging_handlers_py", - "community": 141, + "community": 154, "norm_label": "handlers.py" }, { @@ -59643,7 +61407,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L37", "id": "logging_handlers_equipmentscopedfilehandler", - "community": 141, + "community": 154, "norm_label": "equipmentscopedfilehandler" }, { @@ -59652,7 +61416,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L57", "id": "logging_handlers_equipmentscopedfilehandler_init", - "community": 141, + "community": 154, "norm_label": ".__init__()" }, { @@ -59661,7 +61425,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L74", "id": "logging_handlers_equipmentscopedfilehandler_emit", - "community": 141, + "community": 154, "norm_label": ".emit()" }, { @@ -59670,7 +61434,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L90", "id": "logging_handlers_equipmentscopedfilehandler_close", - "community": 141, + "community": 154, "norm_label": ".close()" }, { @@ -59679,7 +61443,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L105", "id": "logging_handlers_equipmentscopedfilehandler_open_for", - "community": 141, + "community": 154, "norm_label": "._open_for()" }, { @@ -59688,7 +61452,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L124", "id": "logging_handlers_equipmentscopedfilehandler_compose_path", - "community": 141, + "community": 154, "norm_label": "._compose_path()" }, { @@ -59697,7 +61461,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L139", "id": "logging_handlers_openlogfile", - "community": 141, + "community": 154, "norm_label": "_openlogfile" }, { @@ -59706,7 +61470,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L152", "id": "logging_handlers_openlogfile_init", - "community": 141, + "community": 154, "norm_label": ".__init__()" }, { @@ -59715,7 +61479,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L158", "id": "logging_handlers_open", - "community": 141, + "community": 154, "norm_label": "open()" }, { @@ -59724,7 +61488,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L183", "id": "logging_handlers_openlogfile_write", - "community": 141, + "community": 154, "norm_label": ".write()" }, { @@ -59733,7 +61497,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L189", "id": "logging_handlers_openlogfile_fsync", - "community": 141, + "community": 154, "norm_label": ".fsync()" }, { @@ -59742,7 +61506,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L197", "id": "logging_handlers_openlogfile_close", - "community": 141, + "community": 154, "norm_label": ".close()" }, { @@ -59751,7 +61515,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L1", "id": "logging_handlers_rationale_1", - "community": 141, + "community": 154, "norm_label": "equipment-scoped file handler. backend spec \u00a716.2.4. the :class:`equipmentscope" }, { @@ -59760,7 +61524,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L38", "id": "logging_handlers_rationale_38", - "community": 141, + "community": 154, "norm_label": "per-equipment ``wizard..log`` writer. resolves ``///.exlab-wizard/wizard..log``." }, { @@ -59805,7 +61569,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L140", "id": "logging_handlers_rationale_140", - "community": 141, + "community": 154, "norm_label": "append-mode log file with platform-appropriate share / append flags. the wr" }, { @@ -59814,7 +61578,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L159", "id": "logging_handlers_rationale_159", - "community": 638, + "community": 663, "norm_label": "open ``path`` in append mode with the platform-appropriate flags." }, { @@ -59823,7 +61587,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L184", "id": "logging_handlers_rationale_184", - "community": 141, + "community": 154, "norm_label": "append ``line`` (already newline-terminated) to the file." }, { @@ -59832,7 +61596,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L190", "id": "logging_handlers_rationale_190", - "community": 141, + "community": 154, "norm_label": "``os.fsync`` the underlying file descriptor. called only on ``error``-l" }, { @@ -59841,7 +61605,7 @@ "source_file": "src/exlab_wizard/logging/handlers.py", "source_location": "L198", "id": "logging_handlers_rationale_198", - "community": 141, + "community": 154, "norm_label": "flush and close the file. idempotent." }, { @@ -59850,7 +61614,7 @@ "source_file": "src/exlab_wizard/logging/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_logging_init_py", - "community": 526, + "community": 550, "norm_label": "__init__.py" }, { @@ -59859,7 +61623,7 @@ "source_file": "src/exlab_wizard/logging/__init__.py", "source_location": "L1", "id": "logging_init_rationale_1", - "community": 526, + "community": 550, "norm_label": "canonical logger package. backend spec \u00a716. this package owns the runtime logge" }, { @@ -59868,7 +61632,7 @@ "source_file": "src/exlab_wizard/logging/format.py", "source_location": "L1", "id": "src_exlab_wizard_logging_format_py", - "community": 329, + "community": 335, "norm_label": "format.py" }, { @@ -59877,7 +61641,7 @@ "source_file": "src/exlab_wizard/logging/format.py", "source_location": "L71", "id": "logging_format_structuredtagformatter", - "community": 113, + "community": 123, "norm_label": "structuredtagformatter" }, { @@ -59886,7 +61650,7 @@ "source_file": "src/exlab_wizard/logging/format.py", "source_location": "L90", "id": "logging_format_structuredtagformatter_format", - "community": 329, + "community": 335, "norm_label": ".format()" }, { @@ -59895,7 +61659,7 @@ "source_file": "src/exlab_wizard/logging/format.py", "source_location": "L104", "id": "logging_format_format_utc_timestamp", - "community": 329, + "community": 335, "norm_label": "_format_utc_timestamp()" }, { @@ -59904,7 +61668,7 @@ "source_file": "src/exlab_wizard/logging/format.py", "source_location": "L115", "id": "logging_format_render_tags", - "community": 329, + "community": 335, "norm_label": "_render_tags()" }, { @@ -59913,7 +61677,7 @@ "source_file": "src/exlab_wizard/logging/format.py", "source_location": "L135", "id": "logging_format_redact_secret", - "community": 113, + "community": 123, "norm_label": "redact_secret()" }, { @@ -59922,7 +61686,7 @@ "source_file": "src/exlab_wizard/logging/format.py", "source_location": "L1", "id": "logging_format_rationale_1", - "community": 329, + "community": 335, "norm_label": "structured log formatter and secret-redaction helpers. backend spec \u00a716.4, \u00a716.1" }, { @@ -59931,7 +61695,7 @@ "source_file": "src/exlab_wizard/logging/format.py", "source_location": "L72", "id": "logging_format_rationale_72", - "community": 113, + "community": 123, "norm_label": "formatter that renders the \u00a716.4 structured-tag log line. reads the active" }, { @@ -59940,7 +61704,7 @@ "source_file": "src/exlab_wizard/logging/format.py", "source_location": "L105", "id": "logging_format_rationale_105", - "community": 329, + "community": 335, "norm_label": "render ``epoch_seconds`` as a utc iso 8601 timestamp with ``z`` suffix. exa" }, { @@ -59949,7 +61713,7 @@ "source_file": "src/exlab_wizard/logging/format.py", "source_location": "L116", "id": "logging_format_rationale_116", - "community": 329, + "community": 335, "norm_label": "render the active context as ``[host:..] [equip:..] ...``. returns the empt" }, { @@ -59958,7 +61722,7 @@ "source_file": "src/exlab_wizard/logging/format.py", "source_location": "L136", "id": "logging_format_rationale_136", - "community": 113, + "community": 123, "norm_label": "mask credential-bearing substrings inside ``value``. replaces three classes" }, { @@ -59967,7 +61731,7 @@ "source_file": "src/exlab_wizard/logging/context.py", "source_location": "L1", "id": "src_exlab_wizard_logging_context_py", - "community": 136, + "community": 144, "norm_label": "context.py" }, { @@ -59976,7 +61740,7 @@ "source_file": "src/exlab_wizard/logging/context.py", "source_location": "L68", "id": "logging_context_set_run_context", - "community": 190, + "community": 196, "norm_label": "set_run_context()" }, { @@ -59985,7 +61749,7 @@ "source_file": "src/exlab_wizard/logging/context.py", "source_location": "L114", "id": "logging_context_get_run_context", - "community": 136, + "community": 144, "norm_label": "get_run_context()" }, { @@ -59994,7 +61758,7 @@ "source_file": "src/exlab_wizard/logging/context.py", "source_location": "L124", "id": "logging_context_clear_run_context", - "community": 136, + "community": 144, "norm_label": "clear_run_context()" }, { @@ -60003,7 +61767,7 @@ "source_file": "src/exlab_wizard/logging/context.py", "source_location": "L1", "id": "logging_context_rationale_1", - "community": 136, + "community": 144, "norm_label": "per-task structured-tag context vars for the logging system. backend spec \u00a716.2." }, { @@ -60012,7 +61776,7 @@ "source_file": "src/exlab_wizard/logging/context.py", "source_location": "L76", "id": "logging_context_rationale_76", - "community": 190, + "community": 196, "norm_label": "push the supplied context vars on entry and reset them on exit. vars whose" }, { @@ -60021,7 +61785,7 @@ "source_file": "src/exlab_wizard/logging/context.py", "source_location": "L115", "id": "logging_context_rationale_115", - "community": 136, + "community": 144, "norm_label": "return a snapshot of the active context as a plain ``dict``. used by the fo" }, { @@ -60030,7 +61794,7 @@ "source_file": "src/exlab_wizard/logging/context.py", "source_location": "L125", "id": "logging_context_rationale_125", - "community": 136, + "community": 144, "norm_label": "reset every context var to ``none``. provided for test fixtures that want t" }, { @@ -60039,7 +61803,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L1", "id": "src_exlab_wizard_logging_manager_py", - "community": 29, + "community": 19, "norm_label": "manager.py" }, { @@ -60048,7 +61812,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L70", "id": "logging_manager_get_logger", - "community": 29, + "community": 19, "norm_label": "get_logger()" }, { @@ -60057,7 +61821,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L88", "id": "logging_manager_configure_logging", - "community": 29, + "community": 19, "norm_label": "configure_logging()" }, { @@ -60066,7 +61830,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L155", "id": "logging_manager_shutdown_logging", - "community": 29, + "community": 19, "norm_label": "_shutdown_logging()" }, { @@ -60075,7 +61839,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L170", "id": "logging_manager_teardown_locked", - "community": 29, + "community": 19, "norm_label": "_teardown_locked()" }, { @@ -60084,7 +61848,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L189", "id": "logging_manager_resolve_threshold", - "community": 29, + "community": 19, "norm_label": "_resolve_threshold()" }, { @@ -60093,7 +61857,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L204", "id": "logging_manager_resolve_rotation", - "community": 29, + "community": 19, "norm_label": "_resolve_rotation()" }, { @@ -60102,7 +61866,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L214", "id": "logging_manager_resolve_local_root", - "community": 29, + "community": 19, "norm_label": "_resolve_local_root()" }, { @@ -60111,7 +61875,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L225", "id": "logging_manager_build_real_handlers", - "community": 29, + "community": 19, "norm_label": "_build_real_handlers()" }, { @@ -60120,7 +61884,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L1", "id": "logging_manager_rationale_1", - "community": 29, + "community": 19, "norm_label": "canonical logger factory + configuration. backend spec \u00a716.2.1, \u00a716.2.2, \u00a716.2.5" }, { @@ -60129,7 +61893,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L71", "id": "logging_manager_rationale_71", - "community": 29, + "community": 19, "norm_label": "return a logger for ``name``. the only place in the codebase that may call" }, { @@ -60138,7 +61902,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L89", "id": "logging_manager_rationale_89", - "community": 29, + "community": 19, "norm_label": "install the \u00a716.2.5 queue-based handler chain. idempotent: calling this a s" }, { @@ -60147,7 +61911,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L156", "id": "logging_manager_rationale_156", - "community": 29, + "community": 19, "norm_label": "drain the queue, stop the listener thread, and detach the queue handler. ca" }, { @@ -60156,7 +61920,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L171", "id": "logging_manager_rationale_171", - "community": 29, + "community": 19, "norm_label": "tear down the active listener. must be called with ``_state_lock`` held." }, { @@ -60165,7 +61929,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L190", "id": "logging_manager_rationale_190", - "community": 29, + "community": 19, "norm_label": "return the numeric level threshold for the root logger. ``loggingconfig`` a" }, { @@ -60174,7 +61938,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L205", "id": "logging_manager_rationale_205", - "community": 29, + "community": 19, "norm_label": "return ``(central_log_max_mb, central_log_keep)`` from ``config`` or defaults." }, { @@ -60183,7 +61947,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L215", "id": "logging_manager_rationale_215", - "community": 29, + "community": 19, "norm_label": "return the configured ``local_root`` for the equipment-scoped handler. phas" }, { @@ -60192,7 +61956,7 @@ "source_file": "src/exlab_wizard/logging/manager.py", "source_location": "L232", "id": "logging_manager_rationale_232", - "community": 29, + "community": 19, "norm_label": "build the listener's downstream handler chain. order is fixed: equipment-sc" }, { @@ -60201,7 +61965,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L1", "id": "src_exlab_wizard_orchestrator_quiescence_poller_py", - "community": 8, + "community": 13, "norm_label": "quiescence_poller.py" }, { @@ -60210,7 +61974,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L73", "id": "orchestrator_quiescence_poller_nassynclike", - "community": 8, + "community": 13, "norm_label": "nassynclike" }, { @@ -60219,7 +61983,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L83", "id": "orchestrator_quiescence_poller_nassynclike_enqueue", - "community": 8, + "community": 13, "norm_label": ".enqueue()" }, { @@ -60228,7 +61992,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L84", "id": "orchestrator_quiescence_poller_nassynclike_status", - "community": 8, + "community": 13, "norm_label": ".status()" }, { @@ -60237,7 +62001,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L85", "id": "orchestrator_quiescence_poller_nassynclike_get_by_run_path", - "community": 8, + "community": 13, "norm_label": ".get_by_run_path()" }, { @@ -60246,7 +62010,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L86", "id": "orchestrator_quiescence_poller_nassynclike_list_all", - "community": 8, + "community": 13, "norm_label": ".list_all()" }, { @@ -60255,7 +62019,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L90", "id": "orchestrator_quiescence_poller_filesnapshot", - "community": 8, + "community": 13, "norm_label": "filesnapshot" }, { @@ -60264,7 +62028,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L103", "id": "orchestrator_quiescence_poller_quiescencesyncpoller", - "community": 8, + "community": 13, "norm_label": "quiescencesyncpoller" }, { @@ -60273,7 +62037,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L115", "id": "orchestrator_quiescence_poller_quiescencesyncpoller_init", - "community": 8, + "community": 13, "norm_label": ".__init__()" }, { @@ -60282,7 +62046,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L131", "id": "orchestrator_quiescence_poller_quiescencesyncpoller_apply_config", - "community": 8, + "community": 13, "norm_label": ".apply_config()" }, { @@ -60291,7 +62055,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L144", "id": "orchestrator_quiescence_poller_quiescencesyncpoller_start", - "community": 8, + "community": 13, "norm_label": ".start()" }, { @@ -60300,7 +62064,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L160", "id": "orchestrator_quiescence_poller_quiescencesyncpoller_stop", - "community": 8, + "community": 13, "norm_label": ".stop()" }, { @@ -60309,7 +62073,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L173", "id": "orchestrator_quiescence_poller_quiescencesyncpoller_loop", - "community": 8, + "community": 13, "norm_label": "._loop()" }, { @@ -60318,7 +62082,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L194", "id": "orchestrator_quiescence_poller_quiescencesyncpoller_poll_once", - "community": 8, + "community": 13, "norm_label": ".poll_once()" }, { @@ -60327,7 +62091,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L243", "id": "orchestrator_quiescence_poller_quiescencesyncpoller_discover_runs", - "community": 130, + "community": 11, "norm_label": "._discover_runs()" }, { @@ -60336,7 +62100,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L283", "id": "orchestrator_quiescence_poller_quiescencesyncpoller_iter_run_files", - "community": 8, + "community": 13, "norm_label": "._iter_run_files()" }, { @@ -60345,7 +62109,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L315", "id": "orchestrator_quiescence_poller_signature", - "community": 8, + "community": 13, "norm_label": "_signature()" }, { @@ -60354,7 +62118,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L323", "id": "orchestrator_quiescence_poller_quiescencesyncpoller_eligible_files", - "community": 8, + "community": 13, "norm_label": "._eligible_files()" }, { @@ -60363,7 +62127,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L362", "id": "orchestrator_quiescence_poller_matches_any_glob", - "community": 8, + "community": 13, "norm_label": "_matches_any_glob()" }, { @@ -60372,7 +62136,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L367", "id": "orchestrator_quiescence_poller_safe_resolve", - "community": 8, + "community": 13, "norm_label": "_safe_resolve()" }, { @@ -60381,7 +62145,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L1", "id": "orchestrator_quiescence_poller_rationale_1", - "community": 8, + "community": 13, "norm_label": "operator-free, per-file quiescence-driven nas sync poller. operator-free per-fi" }, { @@ -60390,7 +62154,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L74", "id": "orchestrator_quiescence_poller_rationale_74", - "community": 8, + "community": 13, "norm_label": "the nas-sync surface the poller and the phase 3 staging code use. ``enqueue" }, { @@ -60399,7 +62163,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L91", "id": "orchestrator_quiescence_poller_rationale_91", - "community": 8, + "community": 13, "norm_label": "one file's observation record carried forward across sweeps. * ``signature`" }, { @@ -60408,7 +62172,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L104", "id": "orchestrator_quiescence_poller_rationale_104", - "community": 8, + "community": 13, "norm_label": "polls every run pending nas sync and enqueues runs with eligible files. con" }, { @@ -60417,7 +62181,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L132", "id": "orchestrator_quiescence_poller_rationale_132", - "community": 8, + "community": 13, "norm_label": "swap the cached config in place so a live settings save applies. ``poll" }, { @@ -60426,7 +62190,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L145", "id": "orchestrator_quiescence_poller_rationale_145", - "community": 8, + "community": 13, "norm_label": "start the background polling task. idempotent. returns immediately; the" }, { @@ -60435,7 +62199,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L161", "id": "orchestrator_quiescence_poller_rationale_161", - "community": 8, + "community": 13, "norm_label": "cancel the background task and wait for it to exit. idempotent." }, { @@ -60444,7 +62208,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L195", "id": "orchestrator_quiescence_poller_rationale_195", - "community": 8, + "community": 13, "norm_label": "run one discovery + quiescence + enqueue sweep. ``now_monotonic`` is in" }, { @@ -60453,7 +62217,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L244", "id": "orchestrator_quiescence_poller_rationale_244", - "community": 130, + "community": 11, "norm_label": "return every run-leaf directory pending nas sync. stage-mode runs sit u" }, { @@ -60462,7 +62226,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L284", "id": "orchestrator_quiescence_poller_rationale_284", - "community": 8, + "community": 13, "norm_label": "return every non-ignored file under ``run_path``. skips the ``.exlab-wi" }, { @@ -60471,7 +62235,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L316", "id": "orchestrator_quiescence_poller_rationale_316", - "community": 639, + "community": 664, "norm_label": "return ``(st_size, st_mtime_ns)`` for ``file_path`` or none." }, { @@ -60480,7 +62244,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L328", "id": "orchestrator_quiescence_poller_rationale_328", - "community": 8, + "community": 13, "norm_label": "return the run-relative paths of quiet files needing a (re-)sync. a qui" }, { @@ -60489,7 +62253,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L363", "id": "orchestrator_quiescence_poller_rationale_363", - "community": 8, + "community": 13, "norm_label": "return true if ``name`` matches any glob in ``globs``." }, { @@ -60498,7 +62262,7 @@ "source_file": "src/exlab_wizard/orchestrator/quiescence_poller.py", "source_location": "L368", "id": "orchestrator_quiescence_poller_rationale_368", - "community": 8, + "community": 13, "norm_label": "resolve ``path`` for de-dup, falling back to the path itself." }, { @@ -60507,7 +62271,7 @@ "source_file": "src/exlab_wizard/orchestrator/_scan.py", "source_location": "L1", "id": "src_exlab_wizard_orchestrator_scan_py", - "community": 130, + "community": 11, "norm_label": "_scan.py" }, { @@ -60516,7 +62280,7 @@ "source_file": "src/exlab_wizard/orchestrator/_scan.py", "source_location": "L30", "id": "orchestrator_scan_iter_subdirs", - "community": 130, + "community": 11, "norm_label": "iter_subdirs()" }, { @@ -60525,7 +62289,7 @@ "source_file": "src/exlab_wizard/orchestrator/_scan.py", "source_location": "L55", "id": "orchestrator_scan_walk_equipment_run_leaves", - "community": 130, + "community": 11, "norm_label": "walk_equipment_run_leaves()" }, { @@ -60534,7 +62298,7 @@ "source_file": "src/exlab_wizard/orchestrator/_scan.py", "source_location": "L89", "id": "orchestrator_scan_walk_run_leaves", - "community": 130, + "community": 11, "norm_label": "walk_run_leaves()" }, { @@ -60543,7 +62307,7 @@ "source_file": "src/exlab_wizard/orchestrator/_scan.py", "source_location": "L105", "id": "orchestrator_scan_count_files_and_bytes", - "community": 130, + "community": 11, "norm_label": "count_files_and_bytes()" }, { @@ -60552,7 +62316,7 @@ "source_file": "src/exlab_wizard/orchestrator/_scan.py", "source_location": "L1", "id": "orchestrator_scan_rationale_1", - "community": 130, + "community": 11, "norm_label": "shared filesystem helpers for the orchestrator. backend spec \u00a713.2. both :mod:`" }, { @@ -60561,7 +62325,7 @@ "source_file": "src/exlab_wizard/orchestrator/_scan.py", "source_location": "L31", "id": "orchestrator_scan_rationale_31", - "community": 130, + "community": 11, "norm_label": "return immediate sub-directories of ``parent``. skips ``.exlab-wizard/``, h" }, { @@ -60570,7 +62334,7 @@ "source_file": "src/exlab_wizard/orchestrator/_scan.py", "source_location": "L56", "id": "orchestrator_scan_rationale_56", - "community": 130, + "community": 11, "norm_label": "return every ``run_*`` / ``testrun_*`` directory under one equipment dir. `" }, { @@ -60579,7 +62343,7 @@ "source_file": "src/exlab_wizard/orchestrator/_scan.py", "source_location": "L90", "id": "orchestrator_scan_rationale_90", - "community": 130, + "community": 11, "norm_label": "return every ``run_*`` / ``testrun_*`` directory under ``staging_root``. pe" }, { @@ -60588,7 +62352,7 @@ "source_file": "src/exlab_wizard/orchestrator/_scan.py", "source_location": "L106", "id": "orchestrator_scan_rationale_106", - "community": 130, + "community": 11, "norm_label": "sum file count + total bytes under ``run_path``. with ``exclude_cache=true`" }, { @@ -60597,7 +62361,7 @@ "source_file": "src/exlab_wizard/orchestrator/__init__.py", "source_location": "L1", "id": "src_exlab_wizard_orchestrator_init_py", - "community": 527, + "community": 551, "norm_label": "__init__.py" }, { @@ -60606,7 +62370,7 @@ "source_file": "src/exlab_wizard/orchestrator/__init__.py", "source_location": "L1", "id": "orchestrator_init_rationale_1", - "community": 527, + "community": 551, "norm_label": "orchestrator-mode runtime. backend spec \u00a712, \u00a713. this package implements the o" }, { @@ -60615,7 +62379,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_clear.py", "source_location": "L1", "id": "src_exlab_wizard_orchestrator_staging_clear_py", - "community": 246, + "community": 11, "norm_label": "staging_clear.py" }, { @@ -60624,7 +62388,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_clear.py", "source_location": "L33", "id": "orchestrator_staging_clear_clear_run_dir", - "community": 246, + "community": 11, "norm_label": "clear_run_dir()" }, { @@ -60633,7 +62397,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_clear.py", "source_location": "L1", "id": "orchestrator_staging_clear_rationale_1", - "community": 246, + "community": 11, "norm_label": "operator-facing staging-clear helper. backend spec \u00a713.7. the operator-free per" }, { @@ -60642,7 +62406,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_clear.py", "source_location": "L34", "id": "orchestrator_staging_clear_rationale_34", - "community": 246, + "community": 11, "norm_label": "delete a staged run's data files; return ``(file_count, bytes_freed)``. ide" }, { @@ -60651,7 +62415,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L1", "id": "src_exlab_wizard_orchestrator_staging_query_py", - "community": 213, + "community": 11, "norm_label": "staging_query.py" }, { @@ -60660,7 +62424,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L44", "id": "orchestrator_staging_query_stagedrunsummary", - "community": 7, + "community": 6, "norm_label": "stagedrunsummary" }, { @@ -60669,7 +62433,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L73", "id": "orchestrator_staging_query_list_staged_runs", - "community": 131, + "community": 11, "norm_label": "list_staged_runs()" }, { @@ -60678,7 +62442,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L119", "id": "orchestrator_staging_query_summarize_run", - "community": 213, + "community": 11, "norm_label": "_summarize_run()" }, { @@ -60687,7 +62451,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L149", "id": "orchestrator_staging_query_rollup_value", - "community": 213, + "community": 11, "norm_label": "_rollup_value()" }, { @@ -60696,7 +62460,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L165", "id": "orchestrator_staging_query_path_identity", - "community": 213, + "community": 11, "norm_label": "_path_identity()" }, { @@ -60705,7 +62469,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L189", "id": "orchestrator_staging_query_dir_mtime_iso", - "community": 213, + "community": 11, "norm_label": "_dir_mtime_iso()" }, { @@ -60714,7 +62478,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L198", "id": "orchestrator_staging_query_parse_iso", - "community": 213, + "community": 11, "norm_label": "_parse_iso()" }, { @@ -60723,7 +62487,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L204", "id": "orchestrator_staging_query_iso_to_epoch", - "community": 213, + "community": 11, "norm_label": "_iso_to_epoch()" }, { @@ -60732,7 +62496,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L1", "id": "orchestrator_staging_query_rationale_1", - "community": 213, + "community": 11, "norm_label": "read-only enumeration of runs pending nas sync. backend spec \u00a713.8. the orchest" }, { @@ -60741,7 +62505,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L45", "id": "orchestrator_staging_query_rationale_45", - "community": 7, + "community": 6, "norm_label": "one row in the orchestrator's staging panel. backend spec \u00a713.8: * ``p" }, { @@ -60750,7 +62514,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L80", "id": "orchestrator_staging_query_rationale_80", - "community": 131, + "community": 11, "norm_label": "enumerate every staged run with its derived lifecycle state. ``staging_root" }, { @@ -60759,7 +62523,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L125", "id": "orchestrator_staging_query_rationale_125", - "community": 213, + "community": 11, "norm_label": "build a :class:`stagedrunsummary` for ``run_path``. equipment id / project" }, { @@ -60768,7 +62532,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L150", "id": "orchestrator_staging_query_rationale_150", - "community": 213, + "community": 11, "norm_label": "return the derived ``sync_state.json`` rollup for ``run_path``. reads the r" }, { @@ -60777,7 +62541,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L166", "id": "orchestrator_staging_query_rationale_166", - "community": 213, + "community": 11, "norm_label": "return ``(equipment_id, project_name, run_kind)`` from the run path. falls" }, { @@ -60786,7 +62550,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L190", "id": "orchestrator_staging_query_rationale_190", - "community": 213, + "community": 11, "norm_label": "return the run directory mtime as a utc iso-8601 string." }, { @@ -60795,7 +62559,7 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L199", "id": "orchestrator_staging_query_rationale_199", - "community": 213, + "community": 11, "norm_label": "parse an iso-8601 ``z``-suffixed timestamp; fall back on error." }, { @@ -60804,164 +62568,47 @@ "source_file": "src/exlab_wizard/orchestrator/staging_query.py", "source_location": "L205", "id": "orchestrator_staging_query_rationale_205", - "community": 213, + "community": 11, "norm_label": "sort key helper -- returns 0.0 if ``value`` cannot be parsed." }, { - "label": "RESUME.md", + "label": "README.md", "file_type": "document", - "source_file": "RESUME.md", + "source_file": "README.md", "source_location": "L1", - "id": "resume_md", - "community": 230, - "norm_label": "resume.md" + "id": "readme_md", + "community": 214, + "norm_label": "readme.md" }, { - "label": "RESUME \u2014 Main-window UI refresh (Phase 4 done; post-demo UI batch committed)", + "label": "ExLabWizard", "file_type": "document", - "source_file": "RESUME.md", + "source_file": "README.md", "source_location": "L1", - "id": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", - "community": 230, - "norm_label": "resume \u2014 main-window ui refresh (phase 4 done; post-demo ui batch committed)" + "id": "exlabwizard_readme_exlabwizard", + "community": 214, + "norm_label": "exlabwizard" }, { - "label": "\u23e9 CURRENT STATE (2026-05-29, session 2)", + "label": "Context", "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L7", - "id": "exlabwizard_resume_current_state_2026_05_29_session_2", - "community": 230, - "norm_label": "\u23e9 current state (2026-05-29, session 2)" + "source_file": "README.md", + "source_location": "L10", + "id": "exlabwizard_readme_context", + "community": 214, + "norm_label": "context" }, { - "label": "How to work (lessons from this session \u2014 important)", + "label": "Installation", "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L47", - "id": "exlabwizard_resume_how_to_work_lessons_from_this_session_important", - "community": 230, - "norm_label": "how to work (lessons from this session \u2014 important)" + "source_file": "README.md", + "source_location": "L20", + "id": "exlabwizard_readme_installation", + "community": 214, + "norm_label": "installation" }, { - "label": "Where things stand", - "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L70", - "id": "exlabwizard_resume_where_things_stand", - "community": 230, - "norm_label": "where things stand" - }, - { - "label": "Committed (clean) \u2014 Phases 1\u20133", - "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L78", - "id": "exlabwizard_resume_committed_clean_phases_1_3", - "community": 230, - "norm_label": "committed (clean) \u2014 phases 1\u20133" - }, - { - "label": "UNCOMMITTED partial Phase 4 (working tree, additive + backward-compatible)", - "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L86", - "id": "exlabwizard_resume_uncommitted_partial_phase_4_working_tree_additive_backward_compatible", - "community": 230, - "norm_label": "uncommitted partial phase 4 (working tree, additive + backward-compatible)" - }, - { - "label": "Phase 4 remaining work (Option B \u2014 selection \u2192 metadata)", - "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L100", - "id": "exlabwizard_resume_phase_4_remaining_work_option_b_selection_metadata", - "community": 230, - "norm_label": "phase 4 remaining work (option b \u2014 selection \u2192 metadata)" - }, - { - "label": "Tests to add (Phase 4)", - "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L148", - "id": "exlabwizard_resume_tests_to_add_phase_4", - "community": 230, - "norm_label": "tests to add (phase 4)" - }, - { - "label": "Demo checkpoint (task #6, after Phase 4 verifies green)", - "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L158", - "id": "exlabwizard_resume_demo_checkpoint_task_6_after_phase_4_verifies_green", - "community": 230, - "norm_label": "demo checkpoint (task #6, after phase 4 verifies green)" - }, - { - "label": "Code-review findings to honor (from earlier passes)", - "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L164", - "id": "exlabwizard_resume_code_review_findings_to_honor_from_earlier_passes", - "community": 230, - "norm_label": "code-review findings to honor (from earlier passes)" - }, - { - "label": "Quick resume verification (run sequentially, one at a time)", - "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L171", - "id": "exlabwizard_resume_quick_resume_verification_run_sequentially_one_at_a_time", - "community": 230, - "norm_label": "quick resume verification (run sequentially, one at a time)" - }, - { - "label": "code:block1 (git branch --show-current # feature/gui-imrprovemen)", - "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L172", - "id": "exlabwizard_resume_codeblock_1", - "community": 230, - "norm_label": "code:block1 (git branch --show-current # feature/gui-imrprovemen)" - }, - { - "label": "README.md", - "file_type": "document", - "source_file": "README.md", - "source_location": "L1", - "id": "readme_md", - "community": 214, - "norm_label": "readme.md" - }, - { - "label": "ExLabWizard", - "file_type": "document", - "source_file": "README.md", - "source_location": "L1", - "id": "exlabwizard_readme_exlabwizard", - "community": 214, - "norm_label": "exlabwizard" - }, - { - "label": "Context", - "file_type": "document", - "source_file": "README.md", - "source_location": "L10", - "id": "exlabwizard_readme_context", - "community": 214, - "norm_label": "context" - }, - { - "label": "Installation", - "file_type": "document", - "source_file": "README.md", - "source_location": "L20", - "id": "exlabwizard_readme_installation", - "community": 214, - "norm_label": "installation" - }, - { - "label": "Prerequisites", + "label": "Prerequisites", "file_type": "document", "source_file": "README.md", "source_location": "L22", @@ -61083,7 +62730,7 @@ "source_file": "DESIGN.md", "source_location": "L1", "id": "design_md", - "community": 314, + "community": 313, "norm_label": "design.md" }, { @@ -61092,7 +62739,7 @@ "source_file": "DESIGN.md", "source_location": "L1", "id": "exlabwizard_design_frontend_design_style_guide", - "community": 314, + "community": 313, "norm_label": "frontend design style guide" }, { @@ -61101,7 +62748,7 @@ "source_file": "DESIGN.md", "source_location": "L12", "id": "exlabwizard_design_absolute_constraints", - "community": 314, + "community": 313, "norm_label": "absolute constraints" }, { @@ -61110,7 +62757,7 @@ "source_file": "DESIGN.md", "source_location": "L37", "id": "exlabwizard_design_00_logo_and_branding", - "community": 314, + "community": 313, "norm_label": "00 -- logo and branding" }, { @@ -61119,7 +62766,7 @@ "source_file": "DESIGN.md", "source_location": "L44", "id": "exlabwizard_design_01_color_palette", - "community": 335, + "community": 337, "norm_label": "01 -- color palette" }, { @@ -61128,7 +62775,7 @@ "source_file": "DESIGN.md", "source_location": "L46", "id": "exlabwizard_design_primary_colors_ui_only", - "community": 335, + "community": 337, "norm_label": "primary colors -- ui only" }, { @@ -61137,7 +62784,7 @@ "source_file": "DESIGN.md", "source_location": "L59", "id": "exlabwizard_design_data_colors_okabe_ito_visualization_only", - "community": 335, + "community": 337, "norm_label": "data colors -- okabe-ito -- visualization only" }, { @@ -61146,7 +62793,7 @@ "source_file": "DESIGN.md", "source_location": "L90", "id": "exlabwizard_design_surface_neutral_tokens", - "community": 335, + "community": 337, "norm_label": "surface & neutral tokens" }, { @@ -61155,7 +62802,7 @@ "source_file": "DESIGN.md", "source_location": "L100", "id": "exlabwizard_design_main_window_surface_interaction_tokens_2026_05_29_ui_refresh", - "community": 335, + "community": 337, "norm_label": "main-window surface & interaction tokens (2026-05-29 ui refresh)" }, { @@ -61164,7 +62811,7 @@ "source_file": "DESIGN.md", "source_location": "L117", "id": "exlabwizard_design_semantic_color_assignments", - "community": 335, + "community": 337, "norm_label": "semantic color assignments" }, { @@ -61173,7 +62820,7 @@ "source_file": "DESIGN.md", "source_location": "L126", "id": "exlabwizard_design_color_selection_decision_logic", - "community": 335, + "community": 337, "norm_label": "color selection decision logic" }, { @@ -61182,7 +62829,7 @@ "source_file": "DESIGN.md", "source_location": "L148", "id": "exlabwizard_design_02_typography", - "community": 362, + "community": 363, "norm_label": "02 -- typography" }, { @@ -61191,7 +62838,7 @@ "source_file": "DESIGN.md", "source_location": "L153", "id": "exlabwizard_design_codeblock_1", - "community": 362, + "community": 363, "norm_label": "code:css (--font-display: 'dm serif display', georgia, serif;)" }, { @@ -61200,7 +62847,7 @@ "source_file": "DESIGN.md", "source_location": "L161", "id": "exlabwizard_design_codeblock_2", - "community": 362, + "community": 363, "norm_label": "code:html (/)" }, { @@ -63324,7 +64998,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L141", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_4_main_window_redesign", - "community": 102, + "community": 105, "norm_label": "4. main window redesign" }, { @@ -63333,7 +65007,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L143", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_4_1_layout", - "community": 102, + "community": 105, "norm_label": "4.1 layout" }, { @@ -63342,7 +65016,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L147", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_codeblock_2", - "community": 102, + "community": 105, "norm_label": "code:block2 (\u250c\u2500 header toolbar: new project \u00b7 new run \u00b7 new test run \u00b7 ad)" }, { @@ -63351,7 +65025,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L162", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_4_2_left_tree", - "community": 102, + "community": 105, "norm_label": "4.2 left \u2014 tree" }, { @@ -63360,7 +65034,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L174", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_4_3_centre_live_file_list", - "community": 102, + "community": 105, "norm_label": "4.3 centre \u2014 live file list" }, { @@ -63369,7 +65043,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L189", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_4_4_right_metadata_problems_pane_collapsible", - "community": 102, + "community": 105, "norm_label": "4.4 right \u2014 metadata / problems pane (collapsible)" }, { @@ -63378,7 +65052,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L211", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_4_5_travelling_problem_badge", - "community": 102, + "community": 105, "norm_label": "4.5 travelling problem badge" }, { @@ -63387,7 +65061,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L222", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_4_6_footer_status_bar_relocated_staging_actions", - "community": 102, + "community": 105, "norm_label": "4.6 footer status bar & relocated staging actions" }, { @@ -63396,7 +65070,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L239", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_4_7_header_toolbar_breadcrumb", - "community": 102, + "community": 105, "norm_label": "4.7 header toolbar & breadcrumb" }, { @@ -63405,7 +65079,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L248", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_5_live_file_feed_approach_1_poll_only", - "community": 102, + "community": 105, "norm_label": "5. live file feed (approach 1 \u2014 poll-only)" }, { @@ -63414,7 +65088,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L276", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_6_add_equipment_wizard", - "community": 102, + "community": 105, "norm_label": "6. add-equipment wizard" }, { @@ -63423,7 +65097,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L299", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_7_interaction_decisions", - "community": 102, + "community": 105, "norm_label": "7. interaction decisions" }, { @@ -63432,7 +65106,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L313", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_8_configuration_schema_changes", - "community": 102, + "community": 105, "norm_label": "8. configuration schema changes" }, { @@ -63441,7 +65115,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L327", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_9_code_impact_map", - "community": 102, + "community": 105, "norm_label": "9. code impact map" }, { @@ -63450,7 +65124,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L349", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_9_1_gui_wiring", - "community": 102, + "community": 105, "norm_label": "9.1 gui wiring" }, { @@ -63459,7 +65133,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L401", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_10_error_handling", - "community": 102, + "community": 105, "norm_label": "10. error handling" }, { @@ -63468,7 +65142,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L430", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_11_testing_strategy", - "community": 102, + "community": 105, "norm_label": "11. testing strategy" }, { @@ -63477,7 +65151,7 @@ "source_file": "docs/source/superpowers/specs/2026-05-14-gui-orchestrator-redesign-design.md", "source_location": "L477", "id": "specs_2026_05_14_gui_orchestrator_redesign_design_12_future_v1_x", - "community": 102, + "community": 105, "norm_label": "12. future (v1.x)" }, { @@ -63486,7 +65160,7 @@ "source_file": "docs/source/plugin_guide/manifest_schema.md", "source_location": "L1", "id": "docs_source_plugin_guide_manifest_schema_md", - "community": 267, + "community": 273, "norm_label": "manifest_schema.md" }, { @@ -63495,7 +65169,7 @@ "source_file": "docs/source/plugin_guide/manifest_schema.md", "source_location": "L1", "id": "plugin_guide_manifest_schema_manifest_schema", - "community": 267, + "community": 273, "norm_label": "manifest schema" }, { @@ -63504,7 +65178,7 @@ "source_file": "docs/source/plugin_guide/manifest_schema.md", "source_location": "L9", "id": "plugin_guide_manifest_schema_required_identity_fields", - "community": 267, + "community": 273, "norm_label": "required identity fields" }, { @@ -63513,7 +65187,7 @@ "source_file": "docs/source/plugin_guide/manifest_schema.md", "source_location": "L11", "id": "plugin_guide_manifest_schema_codeblock_1", - "community": 267, + "community": 273, "norm_label": "code:yaml (name: \"xlsx_field_filler\")" }, { @@ -63522,7 +65196,7 @@ "source_file": "docs/source/plugin_guide/manifest_schema.md", "source_location": "L18", "id": "plugin_guide_manifest_schema_required_dispatch_fields", - "community": 267, + "community": 273, "norm_label": "required dispatch fields" }, { @@ -63531,7 +65205,7 @@ "source_file": "docs/source/plugin_guide/manifest_schema.md", "source_location": "L20", "id": "plugin_guide_manifest_schema_codeblock_2", - "community": 267, + "community": 273, "norm_label": "code:yaml (supported_extensions: [\".xlsx\"] # file-extension or \"readm)" }, { @@ -63540,7 +65214,7 @@ "source_file": "docs/source/plugin_guide/manifest_schema.md", "source_location": "L30", "id": "plugin_guide_manifest_schema_optional_declaration_block", - "community": 267, + "community": 273, "norm_label": "optional declaration block" }, { @@ -63549,7 +65223,7 @@ "source_file": "docs/source/plugin_guide/manifest_schema.md", "source_location": "L32", "id": "plugin_guide_manifest_schema_codeblock_3", - "community": 267, + "community": 273, "norm_label": "code:yaml (required_variables:)" }, { @@ -63558,7 +65232,7 @@ "source_file": "docs/source/plugin_guide/manifest_schema.md", "source_location": "L48", "id": "plugin_guide_manifest_schema_optional_execution_policy", - "community": 267, + "community": 273, "norm_label": "optional execution policy" }, { @@ -63567,7 +65241,7 @@ "source_file": "docs/source/plugin_guide/manifest_schema.md", "source_location": "L50", "id": "plugin_guide_manifest_schema_codeblock_4", - "community": 267, + "community": 273, "norm_label": "code:yaml (isolation:)" }, { @@ -63576,7 +65250,7 @@ "source_file": "docs/source/plugin_guide/manifest_schema.md", "source_location": "L61", "id": "plugin_guide_manifest_schema_discovery_rules", - "community": 267, + "community": 273, "norm_label": "discovery rules" }, { @@ -63585,7 +65259,7 @@ "source_file": "docs/source/plugin_guide/ipc_envelope.md", "source_location": "L1", "id": "docs_source_plugin_guide_ipc_envelope_md", - "community": 318, + "community": 317, "norm_label": "ipc_envelope.md" }, { @@ -63594,7 +65268,7 @@ "source_file": "docs/source/plugin_guide/ipc_envelope.md", "source_location": "L1", "id": "plugin_guide_ipc_envelope_ipc_envelope", - "community": 318, + "community": 317, "norm_label": "ipc envelope" }, { @@ -63603,7 +65277,7 @@ "source_file": "docs/source/plugin_guide/ipc_envelope.md", "source_location": "L12", "id": "plugin_guide_ipc_envelope_stdin_host_to_worker", - "community": 318, + "community": 317, "norm_label": "stdin (host to worker)" }, { @@ -63612,7 +65286,7 @@ "source_file": "docs/source/plugin_guide/ipc_envelope.md", "source_location": "L16", "id": "plugin_guide_ipc_envelope_codeblock_1", - "community": 318, + "community": 317, "norm_label": "code:json ({)" }, { @@ -63621,7 +65295,7 @@ "source_file": "docs/source/plugin_guide/ipc_envelope.md", "source_location": "L31", "id": "plugin_guide_ipc_envelope_stdout_worker_to_host", - "community": 318, + "community": 317, "norm_label": "stdout (worker to host)" }, { @@ -63630,7 +65304,7 @@ "source_file": "docs/source/plugin_guide/ipc_envelope.md", "source_location": "L35", "id": "plugin_guide_ipc_envelope_codeblock_2", - "community": 318, + "community": 317, "norm_label": "code:json ({)" }, { @@ -63639,7 +65313,7 @@ "source_file": "docs/source/plugin_guide/ipc_envelope.md", "source_location": "L54", "id": "plugin_guide_ipc_envelope_stderr_structured_log_channel", - "community": 318, + "community": 317, "norm_label": "stderr (structured log channel)" }, { @@ -63648,7 +65322,7 @@ "source_file": "docs/source/plugin_guide/ipc_envelope.md", "source_location": "L61", "id": "plugin_guide_ipc_envelope_exit_codes", - "community": 318, + "community": 317, "norm_label": "exit codes" }, { @@ -63657,7 +65331,7 @@ "source_file": "docs/source/plugin_guide/index.md", "source_location": "L1", "id": "docs_source_plugin_guide_index_md", - "community": 342, + "community": 344, "norm_label": "index.md" }, { @@ -63666,7 +65340,7 @@ "source_file": "docs/source/plugin_guide/index.md", "source_location": "L1", "id": "plugin_guide_index_plugin_author_guide", - "community": 342, + "community": 344, "norm_label": "plugin author guide" }, { @@ -63675,7 +65349,7 @@ "source_file": "docs/source/plugin_guide/index.md", "source_location": "L9", "id": "plugin_guide_index_what_plugins_do", - "community": 342, + "community": 344, "norm_label": "what plugins do" }, { @@ -63684,7 +65358,7 @@ "source_file": "docs/source/plugin_guide/index.md", "source_location": "L21", "id": "plugin_guide_index_where_plugins_fit_in_the_pipeline", - "community": 342, + "community": 344, "norm_label": "where plugins fit in the pipeline" }, { @@ -63693,7 +65367,7 @@ "source_file": "docs/source/plugin_guide/index.md", "source_location": "L27", "id": "plugin_guide_index_codeblock_1", - "community": 342, + "community": 344, "norm_label": "code:block1 (creation controller)" }, { @@ -63702,7 +65376,7 @@ "source_file": "docs/source/plugin_guide/index.md", "source_location": "L43", "id": "plugin_guide_index_codeblock_2", - "community": 342, + "community": 344, "norm_label": "code:{toctree} (:maxdepth: 1)" }, { @@ -63711,7 +65385,7 @@ "source_file": "docs/source/plugin_guide/index.md", "source_location": "L52", "id": "plugin_guide_index_where_to_look_in_the_codebase", - "community": 342, + "community": 344, "norm_label": "where to look in the codebase" }, { @@ -63720,7 +65394,7 @@ "source_file": "docs/source/plugin_guide/worked_examples.md", "source_location": "L1", "id": "docs_source_plugin_guide_worked_examples_md", - "community": 343, + "community": 345, "norm_label": "worked_examples.md" }, { @@ -63729,7 +65403,7 @@ "source_file": "docs/source/plugin_guide/worked_examples.md", "source_location": "L1", "id": "plugin_guide_worked_examples_worked_examples", - "community": 343, + "community": 345, "norm_label": "worked examples" }, { @@ -63738,7 +65412,7 @@ "source_file": "docs/source/plugin_guide/worked_examples.md", "source_location": "L8", "id": "plugin_guide_worked_examples_hello_plugin", - "community": 343, + "community": 345, "norm_label": "hello plugin" }, { @@ -63747,7 +65421,7 @@ "source_file": "docs/source/plugin_guide/worked_examples.md", "source_location": "L19", "id": "plugin_guide_worked_examples_xlsx_field_filler", - "community": 343, + "community": 345, "norm_label": "xlsx_field_filler" }, { @@ -63756,7 +65430,7 @@ "source_file": "docs/source/plugin_guide/worked_examples.md", "source_location": "L39", "id": "plugin_guide_worked_examples_docx_variable_replacer", - "community": 343, + "community": 345, "norm_label": "docx_variable_replacer" }, { @@ -63765,7 +65439,7 @@ "source_file": "docs/source/plugin_guide/worked_examples.md", "source_location": "L49", "id": "plugin_guide_worked_examples_where_to_look_in_the_codebase", - "community": 343, + "community": 345, "norm_label": "where to look in the codebase" }, { @@ -63774,7 +65448,7 @@ "source_file": "docs/source/plugin_guide/worked_examples.md", "source_location": "L62", "id": "plugin_guide_worked_examples_codeblock_1", - "community": 343, + "community": 345, "norm_label": "code:block1 (pip install -e .[plugin-examples])" }, { @@ -63783,7 +65457,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L1", "id": "docs_setup_rclone_remote_setup_md", - "community": 75, + "community": 84, "norm_label": "rclone-remote-setup.md" }, { @@ -63792,7 +65466,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L1", "id": "setup_rclone_remote_setup_setting_up_your_rclone_remote_s", - "community": 75, + "community": 84, "norm_label": "setting up your rclone remote(s)" }, { @@ -63801,7 +65475,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L10", "id": "setup_rclone_remote_setup_why_this_approach", - "community": 75, + "community": 84, "norm_label": "why this approach" }, { @@ -63810,7 +65484,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L24", "id": "setup_rclone_remote_setup_prerequisites", - "community": 75, + "community": 84, "norm_label": "prerequisites" }, { @@ -63819,7 +65493,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L29", "id": "setup_rclone_remote_setup_codeblock_1", - "community": 75, + "community": 84, "norm_label": "code:bash (# macos)" }, { @@ -63828,7 +65502,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L41", "id": "setup_rclone_remote_setup_codeblock_2", - "community": 75, + "community": 84, "norm_label": "code:bash (rclone version)" }, { @@ -63837,7 +65511,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L47", "id": "setup_rclone_remote_setup_creating_a_remote_with_rclone_config", - "community": 75, + "community": 84, "norm_label": "creating a remote with `rclone config`" }, { @@ -63846,7 +65520,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L52", "id": "setup_rclone_remote_setup_sftp_remote", - "community": 75, + "community": 84, "norm_label": "sftp remote" }, { @@ -63855,7 +65529,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L54", "id": "setup_rclone_remote_setup_codeblock_3", - "community": 75, + "community": 84, "norm_label": "code:block3 ($ rclone config)" }, { @@ -63864,7 +65538,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L89", "id": "setup_rclone_remote_setup_codeblock_4", - "community": 75, + "community": 84, "norm_label": "code:ini ([lab-nas])" }, { @@ -63873,7 +65547,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L99", "id": "setup_rclone_remote_setup_codeblock_5", - "community": 75, + "community": 84, "norm_label": "code:bash (rclone lsd lab-nas:)" }, { @@ -63882,7 +65556,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L103", "id": "setup_rclone_remote_setup_smb_samba_remote", - "community": 75, + "community": 84, "norm_label": "smb / samba remote" }, { @@ -63891,7 +65565,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L105", "id": "setup_rclone_remote_setup_codeblock_6", - "community": 75, + "community": 84, "norm_label": "code:block6 ($ rclone config)" }, { @@ -63900,7 +65574,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L127", "id": "setup_rclone_remote_setup_codeblock_7", - "community": 75, + "community": 84, "norm_label": "code:ini ([lab-smb])" }, { @@ -63909,7 +65583,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L137", "id": "setup_rclone_remote_setup_codeblock_8", - "community": 75, + "community": 84, "norm_label": "code:bash (rclone lsd lab-smb:labshare)" }, { @@ -63918,7 +65592,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L143", "id": "setup_rclone_remote_setup_wiring_the_remote_to_exlab_wizard", - "community": 75, + "community": 84, "norm_label": "wiring the remote to exlab-wizard" }, { @@ -63927,7 +65601,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L147", "id": "setup_rclone_remote_setup_codeblock_9", - "community": 75, + "community": 84, "norm_label": "code:yaml (nas:)" }, { @@ -63936,7 +65610,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L161", "id": "setup_rclone_remote_setup_codeblock_10", - "community": 75, + "community": 84, "norm_label": "code:block10 (:///)" }, { @@ -63945,7 +65619,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L170", "id": "setup_rclone_remote_setup_verifying_the_connection", - "community": 75, + "community": 84, "norm_label": "verifying the connection" }, { @@ -63954,7 +65628,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L178", "id": "setup_rclone_remote_setup_codeblock_11", - "community": 75, + "community": 84, "norm_label": "code:bash (# confirm the remote answers)" }, { @@ -63963,7 +65637,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L189", "id": "setup_rclone_remote_setup_codeblock_12", - "community": 75, + "community": 84, "norm_label": "code:bash (rclone --config /path/to/rclone.conf about lab-nas:)" }, { @@ -63972,7 +65646,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L195", "id": "setup_rclone_remote_setup_performance_and_memory_tuning", - "community": 75, + "community": 84, "norm_label": "performance and memory tuning" }, { @@ -63981,7 +65655,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L201", "id": "setup_rclone_remote_setup_codeblock_13", - "community": 75, + "community": 84, "norm_label": "code:yaml (nas:)" }, { @@ -63990,7 +65664,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L216", "id": "setup_rclone_remote_setup_codeblock_14", - "community": 75, + "community": 84, "norm_label": "code:yaml (nas:)" }, { @@ -63999,7 +65673,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L231", "id": "setup_rclone_remote_setup_modtime_tolerance", - "community": 75, + "community": 84, "norm_label": "modtime tolerance" }, { @@ -64008,7 +65682,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L237", "id": "setup_rclone_remote_setup_codeblock_15", - "community": 75, + "community": 84, "norm_label": "code:yaml (nas:)" }, { @@ -64017,7 +65691,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L244", "id": "setup_rclone_remote_setup_pinning_the_rclone_conf_path", - "community": 75, + "community": 84, "norm_label": "pinning the rclone.conf path" }, { @@ -64026,7 +65700,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L252", "id": "setup_rclone_remote_setup_codeblock_16", - "community": 75, + "community": 84, "norm_label": "code:yaml (nas:)" }, { @@ -64035,7 +65709,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L265", "id": "setup_rclone_remote_setup_encrypted_rclone_conf", - "community": 75, + "community": 84, "norm_label": "encrypted rclone.conf" }, { @@ -64044,7 +65718,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L274", "id": "setup_rclone_remote_setup_stage_mode_devices_orchestrator_hop", - "community": 75, + "community": 84, "norm_label": "stage-mode devices (orchestrator hop)" }, { @@ -64053,7 +65727,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L281", "id": "setup_rclone_remote_setup_codeblock_17", - "community": 75, + "community": 84, "norm_label": "code:yaml (orchestrator:)" }, { @@ -64062,7 +65736,7 @@ "source_file": "docs/setup/rclone-remote-setup.md", "source_location": "L296", "id": "setup_rclone_remote_setup_codeblock_18", - "community": 75, + "community": 84, "norm_label": "code:block18 (:/// tuple[str, ...]:)" }, { @@ -64314,7 +65988,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L442", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_16", - "community": 239, + "community": 243, "norm_label": "code:bash (git add src/exlab_wizard/sync/transports/rclone.py tests/uni)" }, { @@ -64323,7 +65997,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L449", "id": "plans_2026_05_28_rclone_conf_nas_sync_phase_3_manifest_module_parser", - "community": 386, + "community": 383, "norm_label": "phase 3 \u2014 manifest module + parser" }, { @@ -64332,7 +66006,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L451", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_3_1_sync_manifest_py_with_parse_lsjson", - "community": 386, + "community": 383, "norm_label": "task 3.1: `sync/manifest.py` with `parse_lsjson`" }, { @@ -64341,7 +66015,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L459", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_17", - "community": 386, + "community": 383, "norm_label": "code:python (# tests/unit/sync/test_manifest.py)" }, { @@ -64350,7 +66024,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L520", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_18", - "community": 386, + "community": 383, "norm_label": "code:python (# src/exlab_wizard/sync/manifest.py)" }, { @@ -64359,7 +66033,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L653", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_19", - "community": 386, + "community": 383, "norm_label": "code:bash (git add src/exlab_wizard/sync/manifest.py tests/unit/sync/te)" }, { @@ -64368,7 +66042,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L660", "id": "plans_2026_05_28_rclone_conf_nas_sync_phase_4_sync_client_named_remote_lsjson_reconcile_cleanup_hash_gate", - "community": 240, + "community": 244, "norm_label": "phase 4 \u2014 sync client: named remote, lsjson reconcile, cleanup hash-gate" }, { @@ -64377,7 +66051,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L664", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_4_1_named_remote_target_builder_driver_construction_from_nas_config", - "community": 384, + "community": 381, "norm_label": "task 4.1: named-remote target builder + driver construction from `nas:` config" }, { @@ -64386,7 +66060,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L672", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_20", - "community": 384, + "community": 381, "norm_label": "code:python (# tests/unit/sync/test_nas_client.py \u2014 add (uses existing he)" }, { @@ -64395,7 +66069,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L697", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_21", - "community": 384, + "community": 381, "norm_label": "code:python (def _build_target_for_run(*, remote: str, base_root: str, eq)" }, { @@ -64404,7 +66078,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L722", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_22", - "community": 384, + "community": 381, "norm_label": "code:python (def _build_push(self, equipment: equipmentconfig) -> callabl)" }, { @@ -64413,7 +66087,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L751", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_23", - "community": 384, + "community": 381, "norm_label": "code:bash (git add src/exlab_wizard/sync/nas_client.py tests/unit/sync/)" }, { @@ -64422,7 +66096,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L758", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_4_2_verifier_py_drop_env_mask_for_log", - "community": 240, + "community": 244, "norm_label": "task 4.2: `verifier.py` \u2014 drop `env`/`mask_for_log`" }, { @@ -64431,7 +66105,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L766", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_24", - "community": 240, + "community": 244, "norm_label": "code:python (# tests/unit/sync/test_transports.py \u2014 add (verifier is smal)" }, { @@ -64440,7 +66114,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L800", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_25", - "community": 240, + "community": 244, "norm_label": "code:bash (git add src/exlab_wizard/sync/verifier.py tests/unit/sync/te)" }, { @@ -64449,7 +66123,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L807", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_4_3_routine_post_push_reconcile_via_lsjson_replaces_per_push_download", - "community": 240, + "community": 244, "norm_label": "task 4.3: routine post-push reconcile via lsjson (replaces per-push `--download`)" }, { @@ -64458,7 +66132,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L817", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_26", - "community": 240, + "community": 244, "norm_label": "code:python (# tests/unit/sync/test_nas_client.py \u2014 add)" }, { @@ -64467,7 +66141,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L842", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_27", - "community": 240, + "community": 244, "norm_label": "code:python (lsjson = self._build_lsjson(equipment))" }, { @@ -64476,7 +66150,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L892", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_28", - "community": 240, + "community": 244, "norm_label": "code:bash (git add src/exlab_wizard/sync/nas_client.py tests/unit/sync/)" }, { @@ -64485,7 +66159,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L899", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_4_4_cleanup_hash_gate_real_remote_existence_probe", - "community": 240, + "community": 244, "norm_label": "task 4.4: cleanup hash-gate + real remote-existence probe" }, { @@ -64494,7 +66168,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L909", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_29", - "community": 240, + "community": 244, "norm_label": "code:python (# tests/unit/sync/test_nas_client.py \u2014 add)" }, { @@ -64503,7 +66177,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L931", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_30", - "community": 240, + "community": 244, "norm_label": "code:python (# integrity gate: never delete local bytes that have not bee)" }, { @@ -64512,7 +66186,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L965", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_31", - "community": 240, + "community": 244, "norm_label": "code:bash (git add src/exlab_wizard/sync/nas_client.py tests/unit/sync/)" }, { @@ -64521,7 +66195,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L972", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_4_5_force_verify_drop_env_threading", - "community": 240, + "community": 244, "norm_label": "task 4.5: `force_verify` \u2014 drop env threading" }, { @@ -64530,7 +66204,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L985", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_32", - "community": 240, + "community": 244, "norm_label": "code:bash (git add tests/unit/sync/test_nas_client.py)" }, { @@ -64539,7 +66213,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L992", "id": "plans_2026_05_28_rclone_conf_nas_sync_phase_5_setup_gate_credential_removal", - "community": 247, + "community": 249, "norm_label": "phase 5 \u2014 setup gate + credential removal" }, { @@ -64548,7 +66222,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L994", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_5_1_repurpose_setup_state_enums", - "community": 247, + "community": 249, "norm_label": "task 5.1: repurpose setup-state enums" }, { @@ -64557,7 +66231,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1002", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_33", - "community": 247, + "community": 249, "norm_label": "code:python (# tests/unit/constants/test_enums.py \u2014 add)" }, { @@ -64566,7 +66240,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1028", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_34", - "community": 247, + "community": 249, "norm_label": "code:bash (git add src/exlab_wizard/constants/enums.py tests/unit/const)" }, { @@ -64575,7 +66249,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1035", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_5_2_rewrite_the_nas_setup_gate_in_paths_py", - "community": 247, + "community": 249, "norm_label": "task 5.2: rewrite the nas setup-gate in `paths.py`" }, { @@ -64584,7 +66258,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1045", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_35", - "community": 247, + "community": 249, "norm_label": "code:python (# tests/unit/test_paths.py \u2014 add)" }, { @@ -64593,7 +66267,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1088", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_36", - "community": 247, + "community": 249, "norm_label": "code:python (def _nas_in_use(config: config) -> bool:)" }, { @@ -64602,7 +66276,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1109", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_37", - "community": 247, + "community": 249, "norm_label": "code:python (remote_lookup = nas_remote_available if nas_remote_available)" }, { @@ -64611,7 +66285,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1117", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_38", - "community": 247, + "community": 249, "norm_label": "code:python (def _missing_nas_fields(config: config | none) -> list[dict[)" }, { @@ -64620,7 +66294,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1133", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_39", - "community": 247, + "community": 249, "norm_label": "code:bash (git add src/exlab_wizard/paths.py tests/unit/test_paths.py)" }, { @@ -64629,7 +66303,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1140", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_5_3_tray_probe_nas_sync_wiring_password_presence_removal", - "community": 385, + "community": 382, "norm_label": "task 5.3: tray probe + nas-sync wiring + password-presence removal" }, { @@ -64638,7 +66312,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1148", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_40", - "community": 385, + "community": 382, "norm_label": "code:python (# tests/unit/tray/test_dependencies.py \u2014 add/replace probe t)" }, { @@ -64647,7 +66321,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1170", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_41", - "community": 385, + "community": 382, "norm_label": "code:python (async def _probe(equipment: any) -> dict[str, any]:)" }, { @@ -64656,7 +66330,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1190", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_42", - "community": 385, + "community": 382, "norm_label": "code:python (def _hydrate_nas_remotes(config: any) -> tuple[str, ...]:)" }, { @@ -64665,7 +66339,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1217", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_43", - "community": 385, + "community": 382, "norm_label": "code:bash (git add src/exlab_wizard/tray/dependencies.py tests/unit/tra)" }, { @@ -64674,7 +66348,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1224", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_5_4_api_surfaces_drop_nas_password_present_thread_nas_remote_available", - "community": 247, + "community": 249, "norm_label": "task 5.4: api surfaces \u2014 drop `nas_password_present`, thread `nas_remote_available`" }, { @@ -64683,7 +66357,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1236", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_44", - "community": 247, + "community": 249, "norm_label": "code:python (nas_remote_available: callable[[str], bool] = field(default=)" }, { @@ -64692,7 +66366,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1245", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_45", - "community": 247, + "community": 249, "norm_label": "code:bash (git add src/exlab_wizard/api/ tests/unit/api/)" }, { @@ -64701,7 +66375,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1252", "id": "plans_2026_05_28_rclone_conf_nas_sync_phase_6_ui", - "community": 383, + "community": 380, "norm_label": "phase 6 \u2014 ui" }, { @@ -64710,7 +66384,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1254", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_6_1_settings_nas_remote_section_replaces_nas_credentials", - "community": 383, + "community": 380, "norm_label": "task 6.1: settings \"nas remote\" section (replaces nas credentials)" }, { @@ -64719,7 +66393,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1269", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_46", - "community": 383, + "community": 380, "norm_label": "code:bash (git add src/exlab_wizard/ui/pages/settings.py src/exlab_wiza)" }, { @@ -64728,7 +66402,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1275", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_6_2_equipment_wizard_form_drop_transport_fields_main_page_banner_copy", - "community": 383, + "community": 380, "norm_label": "task 6.2: equipment wizard/form \u2014 drop transport fields; main-page banner copy" }, { @@ -64737,7 +66411,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1286", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_47", - "community": 383, + "community": 380, "norm_label": "code:bash (git add src/exlab_wizard/ui/ tests/unit/ui/)" }, { @@ -64746,7 +66420,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1293", "id": "plans_2026_05_28_rclone_conf_nas_sync_phase_7_remove_dead_code_clean_break", - "community": 366, + "community": 367, "norm_label": "phase 7 \u2014 remove dead code (clean break)" }, { @@ -64755,7 +66429,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1295", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_7_1_remove_the_transport_union_equipmentconfig_transport", - "community": 366, + "community": 367, "norm_label": "task 7.1: remove the transport union + equipmentconfig.transport" }, { @@ -64764,7 +66438,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1303", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_48", - "community": 366, + "community": 367, "norm_label": "code:python (def test_nas_mode_equipment_needs_no_transport_block():)" }, { @@ -64773,7 +66447,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1318", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_49", - "community": 366, + "community": 367, "norm_label": "code:bash (git add src/exlab_wizard/config/models.py tests/unit/config/)" }, { @@ -64782,7 +66456,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1323", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_7_2_remove_build_rclone_env_obscure_pass_env_keys_for_keyring_helper_env_plumbing", - "community": 366, + "community": 367, "norm_label": "task 7.2: remove `build_rclone_env`/`obscure`/`pass_env_keys_for` + keyring helper + env plumbing" }, { @@ -64791,7 +66465,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1334", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_50", - "community": 366, + "community": 367, "norm_label": "code:bash (git add -a)" }, { @@ -64800,7 +66474,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1341", "id": "plans_2026_05_28_rclone_conf_nas_sync_phase_8_orchestrator_staging_via_rclone_confirmed_in_scope", - "community": 344, + "community": 346, "norm_label": "phase 8 \u2014 orchestrator staging via rclone (confirmed in scope)" }, { @@ -64809,7 +66483,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1345", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_8_1_staging_config_orchestrator_staging_remote_staging_base_root", - "community": 344, + "community": 346, "norm_label": "task 8.1: staging config \u2014 `orchestrator.staging_remote` / `staging_base_root`" }, { @@ -64818,7 +66492,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1353", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_8_2_stage_mode_push_routes_through_rclone", - "community": 344, + "community": 346, "norm_label": "task 8.2: stage-mode push routes through rclone" }, { @@ -64827,7 +66501,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1363", "id": "plans_2026_05_28_rclone_conf_nas_sync_phase_9_fixtures_integration_docker_docs", - "community": 365, + "community": 368, "norm_label": "phase 9 \u2014 fixtures, integration, docker, docs" }, { @@ -64836,7 +66510,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1365", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_9_1_teach_stub_rclone_lsjson_listremotes_drop_env_require", - "community": 365, + "community": 368, "norm_label": "task 9.1: teach `stub_rclone` lsjson + listremotes; drop env-require" }, { @@ -64845,7 +66519,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1376", "id": "plans_2026_05_28_rclone_conf_nas_sync_codeblock_51", - "community": 365, + "community": 368, "norm_label": "code:python (if verb == \"lsjson\":)" }, { @@ -64854,7 +66528,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1404", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_9_2_integration_e2e_docker_rclone_conf", - "community": 365, + "community": 368, "norm_label": "task 9.2: integration + e2e + docker `rclone.conf`" }, { @@ -64863,7 +66537,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1412", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_9_3_docs", - "community": 365, + "community": 368, "norm_label": "task 9.3: docs" }, { @@ -64872,7 +66546,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1420", "id": "plans_2026_05_28_rclone_conf_nas_sync_task_9_4_full_suite_lint_type_gate", - "community": 365, + "community": 368, "norm_label": "task 9.4: full-suite + lint/type gate" }, { @@ -64881,7 +66555,7 @@ "source_file": "docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md", "source_location": "L1430", "id": "plans_2026_05_28_rclone_conf_nas_sync_self_review_completed_during_authoring", - "community": 344, + "community": 346, "norm_label": "self-review (completed during authoring)" }, { @@ -64890,7 +66564,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L1", "id": "docs_superpowers_specs_2026_05_21_operator_free_per_file_nas_sync_design_md", - "community": 183, + "community": 190, "norm_label": "2026-05-21-operator-free-per-file-nas-sync-design.md" }, { @@ -64899,7 +66573,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L1", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_operator_free_per_file_quiescence_driven_nas_sync_design", - "community": 183, + "community": 190, "norm_label": "operator-free, per-file quiescence-driven nas sync \u2014 design" }, { @@ -64908,7 +66582,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L7", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_context", - "community": 183, + "community": 190, "norm_label": "context" }, { @@ -64917,7 +66591,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L23", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_goals", - "community": 183, + "community": 190, "norm_label": "goals" }, { @@ -64926,7 +66600,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L31", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_non_goals", - "community": 183, + "community": 190, "norm_label": "non-goals" }, { @@ -64935,7 +66609,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L38", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_the_model", - "community": 183, + "community": 190, "norm_label": "the model" }, { @@ -64944,7 +66618,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L63", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_config_changes_config_models_py", - "community": 183, + "community": 190, "norm_label": "config changes (`config/models.py`)" }, { @@ -64953,7 +66627,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L86", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_run_lifecycle_rollup_approach_1", - "community": 183, + "community": 190, "norm_label": "run lifecycle \u2014 rollup (approach 1)" }, { @@ -64962,7 +66636,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L101", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_per_file_sync_state_sync_state_json", - "community": 183, + "community": 190, "norm_label": "per-file sync state \u2014 `sync_state.json`" }, { @@ -64971,7 +66645,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L107", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_codeblock_1", - "community": 183, + "community": 190, "norm_label": "code:block1 ({)" }, { @@ -64980,7 +66654,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L124", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_ingest_json_contract_risk_2_resolution", - "community": 183, + "community": 190, "norm_label": "`ingest.json` contract (risk 2 resolution)" }, { @@ -64989,7 +66663,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L137", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_keep_local_per_file", - "community": 183, + "community": 190, "norm_label": "`keep-local` (per-file)" }, { @@ -64998,7 +66672,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L146", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_gui_per_file_display_state", - "community": 183, + "community": 190, "norm_label": "gui per-file display state" }, { @@ -65007,7 +66681,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L167", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_failure_handling", - "community": 183, + "community": 190, "norm_label": "failure handling" }, { @@ -65016,7 +66690,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L176", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_cleanup_rollup", - "community": 183, + "community": 190, "norm_label": "cleanup \u2014 rollup" }, { @@ -65025,7 +66699,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L183", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_transport_batching_risk_1_resolution", - "community": 183, + "community": 190, "norm_label": "transport batching (risk 1 resolution)" }, { @@ -65034,7 +66708,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L203", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_components_touched", - "community": 183, + "community": 190, "norm_label": "components touched" }, { @@ -65043,7 +66717,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L228", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_testing", - "community": 183, + "community": 190, "norm_label": "testing" }, { @@ -65052,7 +66726,7 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L244", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_migration", - "community": 183, + "community": 190, "norm_label": "migration" }, { @@ -65061,43 +66735,250 @@ "source_file": "docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md", "source_location": "L252", "id": "specs_2026_05_21_operator_free_per_file_nas_sync_design_open_questions_out_of_scope", - "community": 183, + "community": 190, "norm_label": "open questions / out of scope" }, { - "label": "2026-05-28-rclone-conf-nas-sync-design.md", + "label": "2026-05-29-hide-orchestrator-staging-design.md", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", "source_location": "L1", - "id": "docs_superpowers_specs_2026_05_28_rclone_conf_nas_sync_design_md", - "community": 111, - "norm_label": "2026-05-28-rclone-conf-nas-sync-design.md" + "id": "docs_superpowers_specs_2026_05_29_hide_orchestrator_staging_design_md", + "community": 155, + "norm_label": "2026-05-29-hide-orchestrator-staging-design.md" }, { - "label": "rclone.conf-based NAS sync", + "label": "Hide orchestrator / staging from the UI \u2014 Design Spec", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", "source_location": "L1", - "id": "specs_2026_05_28_rclone_conf_nas_sync_design_rclone_conf_based_nas_sync", - "community": 111, - "norm_label": "rclone.conf-based nas sync" + "id": "specs_2026_05_29_hide_orchestrator_staging_design_hide_orchestrator_staging_from_the_ui_design_spec", + "community": 155, + "norm_label": "hide orchestrator / staging from the ui \u2014 design spec" }, { - "label": "Summary", + "label": "1. Summary", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", - "source_location": "L10", - "id": "specs_2026_05_28_rclone_conf_nas_sync_design_summary", - "community": 111, - "norm_label": "summary" + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L14", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_1_summary", + "community": 155, + "norm_label": "1. summary" }, { - "label": "Motivation / goals", + "label": "Why hide rather than a feature flag", "file_type": "document", - "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", - "source_location": "L35", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L45", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_why_hide_rather_than_a_feature_flag", + "community": 155, + "norm_label": "why hide rather than a feature flag" + }, + { + "label": "Critical implementation note \u2014 do not delete the `orchestrator/` package", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L51", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_critical_implementation_note_do_not_delete_the_orchestrator_package", + "community": 155, + "norm_label": "critical implementation note \u2014 do not delete the `orchestrator/` package" + }, + { + "label": "2. Goals & non-goals", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L61", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_2_goals_non_goals", + "community": 155, + "norm_label": "2. goals & non-goals" + }, + { + "label": "Goals", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L63", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_goals", + "community": 155, + "norm_label": "goals" + }, + { + "label": "Non-goals", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L75", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_non_goals", + "community": 155, + "norm_label": "non-goals" + }, + { + "label": "3. Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L92", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_3_design", + "community": 155, + "norm_label": "3. design" + }, + { + "label": "3.1 Add-Equipment wizard \u2014 `ui/pages/wizard_equipment.py`", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L96", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_3_1_add_equipment_wizard_ui_pages_wizard_equipment_py", + "community": 155, + "norm_label": "3.1 add-equipment wizard \u2014 `ui/pages/wizard_equipment.py`" + }, + { + "label": "3.2 Settings section \u2014 `ui/pages/settings.py`", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L114", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_3_2_settings_section_ui_pages_settings_py", + "community": 155, + "norm_label": "3.2 settings section \u2014 `ui/pages/settings.py`" + }, + { + "label": "3.3 Staging route \u2014 `ui/mount.py`", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L132", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_3_3_staging_route_ui_mount_py", + "community": 155, + "norm_label": "3.3 staging route \u2014 `ui/mount.py`" + }, + { + "label": "3.4 Main-window footer \u2014 `ui/pages/main.py`", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L146", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_3_4_main_window_footer_ui_pages_main_py", + "community": 155, + "norm_label": "3.4 main-window footer \u2014 `ui/pages/main.py`" + }, + { + "label": "3.5 What stays dormant (explicitly untouched)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L158", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_3_5_what_stays_dormant_explicitly_untouched", + "community": 155, + "norm_label": "3.5 what stays dormant (explicitly untouched)" + }, + { + "label": "3.6 Reversibility contract", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L173", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_3_6_reversibility_contract", + "community": 155, + "norm_label": "3.6 reversibility contract" + }, + { + "label": "4. `CLAUDE.md` update", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L181", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_4_claude_md_update", + "community": 155, + "norm_label": "4. `claude.md` update" + }, + { + "label": "code:markdown (## Orchestrator / staging is intentionally hidden (not remov)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L188", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_codeblock_1", + "community": 155, + "norm_label": "code:markdown (## orchestrator / staging is intentionally hidden (not remov)" + }, + { + "label": "5. Testing", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L218", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_5_testing", + "community": 155, + "norm_label": "5. testing" + }, + { + "label": "Tests that must change", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L220", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_tests_that_must_change", + "community": 155, + "norm_label": "tests that must change" + }, + { + "label": "Tests that stay GREEN unchanged (by design)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L235", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_tests_that_stay_green_unchanged_by_design", + "community": 155, + "norm_label": "tests that stay green unchanged (by design)" + }, + { + "label": "Tests to add", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L241", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_tests_to_add", + "community": 155, + "norm_label": "tests to add" + }, + { + "label": "Verification", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L249", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_verification", + "community": 155, + "norm_label": "verification" + }, + { + "label": "6. Risks / notes", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L255", + "id": "specs_2026_05_29_hide_orchestrator_staging_design_6_risks_notes", + "community": 155, + "norm_label": "6. risks / notes" + }, + { + "label": "2026-05-28-rclone-conf-nas-sync-design.md", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", + "source_location": "L1", + "id": "docs_superpowers_specs_2026_05_28_rclone_conf_nas_sync_design_md", + "community": 118, + "norm_label": "2026-05-28-rclone-conf-nas-sync-design.md" + }, + { + "label": "rclone.conf-based NAS sync", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", + "source_location": "L1", + "id": "specs_2026_05_28_rclone_conf_nas_sync_design_rclone_conf_based_nas_sync", + "community": 118, + "norm_label": "rclone.conf-based nas sync" + }, + { + "label": "Summary", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", + "source_location": "L10", + "id": "specs_2026_05_28_rclone_conf_nas_sync_design_summary", + "community": 118, + "norm_label": "summary" + }, + { + "label": "Motivation / goals", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", + "source_location": "L35", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_motivation_goals", - "community": 111, + "community": 118, "norm_label": "motivation / goals" }, { @@ -65106,7 +66987,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L51", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_non_goals", - "community": 111, + "community": 118, "norm_label": "non-goals" }, { @@ -65115,7 +66996,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L62", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_decisions_from_brainstorming", - "community": 111, + "community": 118, "norm_label": "decisions (from brainstorming)" }, { @@ -65124,7 +67005,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L73", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_config_schema", - "community": 111, + "community": 118, "norm_label": "config schema" }, { @@ -65133,7 +67014,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L75", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_before_per_equipment_credential_injected", - "community": 111, + "community": 118, "norm_label": "before (per-equipment, credential-injected)" }, { @@ -65142,7 +67023,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L77", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_codeblock_1", - "community": 111, + "community": 118, "norm_label": "code:yaml (equipment:)" }, { @@ -65151,7 +67032,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L93", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_after_named_remote_global_base_root", - "community": 111, + "community": 118, "norm_label": "after (named remote + global base root)" }, { @@ -65160,7 +67041,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L95", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_codeblock_2", - "community": 111, + "community": 118, "norm_label": "code:yaml (nas:)" }, { @@ -65169,7 +67050,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L137", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_architecture_by_surface", - "community": 111, + "community": 118, "norm_label": "architecture by surface" }, { @@ -65178,7 +67059,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L139", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_1_transport_driver_sync_transports_rclone_py_single_reusable_rclone_ops_surface", - "community": 111, + "community": 118, "norm_label": "1. transport driver \u2014 `sync/transports/rclone.py` (single reusable rclone-ops surface)" }, { @@ -65187,7 +67068,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L171", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_2_manifest_parser_new_sync_manifest_py", - "community": 111, + "community": 118, "norm_label": "2. manifest + parser \u2014 new `sync/manifest.py`" }, { @@ -65196,7 +67077,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L173", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_codeblock_3", - "community": 111, + "community": 118, "norm_label": "code:python (@dataclass(frozen=true, slots=true))" }, { @@ -65205,7 +67086,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L199", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_3_sync_client_verify_cleanup_flow_sync_nas_client_py_sync_verifier_py_sync_cleanup_py", - "community": 111, + "community": 118, "norm_label": "3. sync client + verify/cleanup flow \u2014 `sync/nas_client.py`, `sync/verifier.py`, `sync/cleanup.py`" }, { @@ -65214,7 +67095,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L225", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_4_verify_cleanup_flow", - "community": 111, + "community": 118, "norm_label": "4. verify / cleanup flow" }, { @@ -65223,7 +67104,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L227", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_codeblock_4", - "community": 111, + "community": 118, "norm_label": "code:block4 (push (rclone copy --checksum --transfers n))" }, { @@ -65232,7 +67113,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L237", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_5_credentials_setup_gate_paths_py_constants_api_tray", - "community": 111, + "community": 118, "norm_label": "5. credentials / setup gate \u2014 `paths.py`, `constants/`, `api/`, `tray/`" }, { @@ -65241,7 +67122,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L255", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_6_ui_ui_pages_settings_py_ui_mount_py_ui_pages_main_py_ui_pages_wizard_equipment_py_ui_equipment_form_py", - "community": 111, + "community": 118, "norm_label": "6. ui \u2014 `ui/pages/settings.py`, `ui/mount.py`, `ui/pages/main.py`, `ui/pages/wizard_equipment.py`, `ui/equipment_form.py`" }, { @@ -65250,7 +67131,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L267", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_7_orchestrator_staging_hop", - "community": 111, + "community": 118, "norm_label": "7. orchestrator / staging hop" }, { @@ -65259,7 +67140,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L290", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_8_docs", - "community": 111, + "community": 118, "norm_label": "8. docs" }, { @@ -65268,7 +67149,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L301", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_9_tests", - "community": 111, + "community": 118, "norm_label": "9. tests" }, { @@ -65277,7 +67158,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L320", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_memory_storage_analysis_constrained_machines", - "community": 111, + "community": 118, "norm_label": "memory / storage analysis (constrained machines)" }, { @@ -65286,7 +67167,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L332", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_migration_breaking_changes", - "community": 111, + "community": 118, "norm_label": "migration / breaking changes" }, { @@ -65295,7 +67176,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L341", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_resolved_decisions", - "community": 111, + "community": 118, "norm_label": "resolved decisions" }, { @@ -65304,7 +67185,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L353", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_full_surface_inventory", - "community": 111, + "community": 118, "norm_label": "full surface inventory" }, { @@ -65313,16 +67194,115 @@ "source_file": "docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md", "source_location": "L374", "id": "specs_2026_05_28_rclone_conf_nas_sync_design_risks", - "community": 111, + "community": 118, "norm_label": "risks" }, + { + "label": "2026-05-29-main-window-ui-refresh-remaining-work.md", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L1", + "id": "docs_superpowers_specs_2026_05_29_main_window_ui_refresh_remaining_work_md", + "community": 274, + "norm_label": "2026-05-29-main-window-ui-refresh-remaining-work.md" + }, + { + "label": "Main-window UI refresh \u2014 Remaining work (v2)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L1", + "id": "specs_2026_05_29_main_window_ui_refresh_remaining_work_main_window_ui_refresh_remaining_work_v2", + "community": 274, + "norm_label": "main-window ui refresh \u2014 remaining work (v2)" + }, + { + "label": "1. What has shipped (committed on the branch)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L21", + "id": "specs_2026_05_29_main_window_ui_refresh_remaining_work_1_what_has_shipped_committed_on_the_branch", + "community": 274, + "norm_label": "1. what has shipped (committed on the branch)" + }, + { + "label": "2. Divergences from the approved design spec (must be reconciled)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L65", + "id": "specs_2026_05_29_main_window_ui_refresh_remaining_work_2_divergences_from_the_approved_design_spec_must_be_reconciled", + "community": 274, + "norm_label": "2. divergences from the approved design spec (must be reconciled)" + }, + { + "label": "A. Spec reconciliation \u2705 DONE", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L102", + "id": "specs_2026_05_29_main_window_ui_refresh_remaining_work_a_spec_reconciliation_done", + "community": 274, + "norm_label": "a. spec reconciliation \u2705 done" + }, + { + "label": "B. Phase 5 \u2014 Polish (reconcile each item with the popover)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L115", + "id": "specs_2026_05_29_main_window_ui_refresh_remaining_work_b_phase_5_polish_reconcile_each_item_with_the_popover", + "community": 274, + "norm_label": "b. phase 5 \u2014 polish (reconcile each item with the popover)" + }, + { + "label": "C. Phase 6 \u2014 e2e + final verification \u2705 DONE (`e72cd73`)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L174", + "id": "specs_2026_05_29_main_window_ui_refresh_remaining_work_c_phase_6_e2e_final_verification_done_e72cd73", + "community": 274, + "norm_label": "c. phase 6 \u2014 e2e + final verification \u2705 done (`e72cd73`)" + }, + { + "label": "D. Cleanup / tech-debt", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L233", + "id": "specs_2026_05_29_main_window_ui_refresh_remaining_work_d_cleanup_tech_debt", + "community": 274, + "norm_label": "d. cleanup / tech-debt" + }, + { + "label": "E. Risks & open questions", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L250", + "id": "specs_2026_05_29_main_window_ui_refresh_remaining_work_e_risks_open_questions", + "community": 274, + "norm_label": "e. risks & open questions" + }, + { + "label": "F. Deferred / out of scope (from design spec \u00a711)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L271", + "id": "specs_2026_05_29_main_window_ui_refresh_remaining_work_f_deferred_out_of_scope_from_design_spec_11", + "community": 274, + "norm_label": "f. deferred / out of scope (from design spec \u00a711)" + }, + { + "label": "Working notes (carry forward)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L280", + "id": "specs_2026_05_29_main_window_ui_refresh_remaining_work_working_notes_carry_forward", + "community": 274, + "norm_label": "working notes (carry forward)" + }, { "label": "2026-05-26-rclone-only-nas-sync-design.md", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L1", "id": "docs_superpowers_specs_2026_05_26_rclone_only_nas_sync_design_md", - "community": 124, + "community": 130, "norm_label": "2026-05-26-rclone-only-nas-sync-design.md" }, { @@ -65331,7 +67311,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L1", "id": "specs_2026_05_26_rclone_only_nas_sync_design_rclone_only_nas_sync_with_password_auth_sftp_smb", - "community": 124, + "community": 130, "norm_label": "rclone-only nas sync with password auth (sftp + smb)" }, { @@ -65340,7 +67320,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L9", "id": "specs_2026_05_26_rclone_only_nas_sync_design_context", - "community": 124, + "community": 130, "norm_label": "context" }, { @@ -65349,7 +67329,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L43", "id": "specs_2026_05_26_rclone_only_nas_sync_design_goals", - "community": 124, + "community": 130, "norm_label": "goals" }, { @@ -65358,7 +67338,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L63", "id": "specs_2026_05_26_rclone_only_nas_sync_design_non_goals", - "community": 124, + "community": 130, "norm_label": "non-goals" }, { @@ -65367,7 +67347,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L77", "id": "specs_2026_05_26_rclone_only_nas_sync_design_architecture", - "community": 124, + "community": 130, "norm_label": "architecture" }, { @@ -65376,7 +67356,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L79", "id": "specs_2026_05_26_rclone_only_nas_sync_design_codeblock_1", - "community": 124, + "community": 130, "norm_label": "code:block1 (+-------------------------------+)" }, { @@ -65385,7 +67365,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L117", "id": "specs_2026_05_26_rclone_only_nas_sync_design_components", - "community": 124, + "community": 130, "norm_label": "components" }, { @@ -65394,7 +67374,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L119", "id": "specs_2026_05_26_rclone_only_nas_sync_design_1_config_models", - "community": 124, + "community": 130, "norm_label": "1. config models" }, { @@ -65403,7 +67383,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L128", "id": "specs_2026_05_26_rclone_only_nas_sync_design_codeblock_2", - "community": 124, + "community": 130, "norm_label": "code:python (class rclonesftptransport(basemodel):)" }, { @@ -65412,7 +67392,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L159", "id": "specs_2026_05_26_rclone_only_nas_sync_design_2_keyring_dependencies_setup_gate", - "community": 124, + "community": 130, "norm_label": "2. keyring + dependencies + setup gate" }, { @@ -65421,7 +67401,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L197", "id": "specs_2026_05_26_rclone_only_nas_sync_design_3_rclone_driver", - "community": 124, + "community": 130, "norm_label": "3. rclone driver" }, { @@ -65430,7 +67410,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L203", "id": "specs_2026_05_26_rclone_only_nas_sync_design_codeblock_3", - "community": 124, + "community": 130, "norm_label": "code:python (class rclonedriver:)" }, { @@ -65439,7 +67419,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L246", "id": "specs_2026_05_26_rclone_only_nas_sync_design_codeblock_4", - "community": 124, + "community": 130, "norm_label": "code:python (def build_rclone_env()" }, { @@ -65448,7 +67428,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L261", "id": "specs_2026_05_26_rclone_only_nas_sync_design_4_nas_sync_client", - "community": 124, + "community": 130, "norm_label": "4. nas sync client" }, { @@ -65457,7 +67437,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L299", "id": "specs_2026_05_26_rclone_only_nas_sync_design_5_verifier_collapse", - "community": 124, + "community": 130, "norm_label": "5. verifier collapse" }, { @@ -65466,7 +67446,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L312", "id": "specs_2026_05_26_rclone_only_nas_sync_design_codeblock_5", - "community": 124, + "community": 130, "norm_label": "code:python (class verifier:)" }, { @@ -65475,7 +67455,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L344", "id": "specs_2026_05_26_rclone_only_nas_sync_design_6_wizard_settings_ui", - "community": 124, + "community": 130, "norm_label": "6. wizard + settings ui" }, { @@ -65484,7 +67464,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L390", "id": "specs_2026_05_26_rclone_only_nas_sync_design_7_sync_state_schema", - "community": 124, + "community": 130, "norm_label": "7. sync state schema" }, { @@ -65493,7 +67473,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L395", "id": "specs_2026_05_26_rclone_only_nas_sync_design_codeblock_6", - "community": 124, + "community": 130, "norm_label": "code:python (class filesyncrecord(struct):)" }, { @@ -65502,7 +67482,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L407", "id": "specs_2026_05_26_rclone_only_nas_sync_design_8_error_classification", - "community": 124, + "community": 130, "norm_label": "8. error classification" }, { @@ -65511,7 +67491,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L417", "id": "specs_2026_05_26_rclone_only_nas_sync_design_data_flow_one_sync_cycle", - "community": 124, + "community": 130, "norm_label": "data flow (one sync cycle)" }, { @@ -65520,7 +67500,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L444", "id": "specs_2026_05_26_rclone_only_nas_sync_design_error_handling", - "community": 124, + "community": 130, "norm_label": "error handling" }, { @@ -65529,7 +67509,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L460", "id": "specs_2026_05_26_rclone_only_nas_sync_design_testing", - "community": 124, + "community": 130, "norm_label": "testing" }, { @@ -65538,7 +67518,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L489", "id": "specs_2026_05_26_rclone_only_nas_sync_design_open_follow_up_slot_b_drift_audit", - "community": 124, + "community": 130, "norm_label": "open follow-up: slot b (drift audit)" }, { @@ -65547,7 +67527,7 @@ "source_file": "docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md", "source_location": "L500", "id": "specs_2026_05_26_rclone_only_nas_sync_design_risks_notes", - "community": 124, + "community": 130, "norm_label": "risks / notes" }, { @@ -65556,7 +67536,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L1", "id": "docs_superpowers_specs_2026_05_28_staging_root_opt_in_design_md", - "community": 161, + "community": 169, "norm_label": "2026-05-28-staging-root-opt-in-design.md" }, { @@ -65565,7 +67545,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L1", "id": "specs_2026_05_28_staging_root_opt_in_design_opt_in_staging_root_design_spec", - "community": 161, + "community": 169, "norm_label": "opt-in `staging_root` \u2014 design spec" }, { @@ -65574,7 +67554,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L12", "id": "specs_2026_05_28_staging_root_opt_in_design_1_summary", - "community": 161, + "community": 169, "norm_label": "1. summary" }, { @@ -65583,7 +67563,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L39", "id": "specs_2026_05_28_staging_root_opt_in_design_2_goals_non_goals", - "community": 161, + "community": 169, "norm_label": "2. goals & non-goals" }, { @@ -65592,7 +67572,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L41", "id": "specs_2026_05_28_staging_root_opt_in_design_goals", - "community": 161, + "community": 169, "norm_label": "goals" }, { @@ -65601,7 +67581,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L50", "id": "specs_2026_05_28_staging_root_opt_in_design_non_goals", - "community": 161, + "community": 169, "norm_label": "non-goals" }, { @@ -65610,7 +67590,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L59", "id": "specs_2026_05_28_staging_root_opt_in_design_3_design", - "community": 161, + "community": 169, "norm_label": "3. design" }, { @@ -65619,7 +67599,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L61", "id": "specs_2026_05_28_staging_root_opt_in_design_3_1_setup_state_gate_paths_py", - "community": 161, + "community": 169, "norm_label": "3.1 setup-state gate \u2014 `paths.py`" }, { @@ -65628,7 +67608,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L76", "id": "specs_2026_05_28_staging_root_opt_in_design_3_2_suggestion_helper_paths_py", - "community": 161, + "community": 169, "norm_label": "3.2 suggestion helper \u2014 `paths.py`" }, { @@ -65637,7 +67617,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L95", "id": "specs_2026_05_28_staging_root_opt_in_design_3_3_settings_ui_ui_pages_settings_py", - "community": 161, + "community": 169, "norm_label": "3.3 settings ui \u2014 `ui/pages/settings.py`" }, { @@ -65646,7 +67626,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L104", "id": "specs_2026_05_28_staging_root_opt_in_design_3_4_create_on_save_ui_mount_py_persist_config", - "community": 161, + "community": 169, "norm_label": "3.4 create-on-save \u2014 `ui/mount.py` `_persist_config`" }, { @@ -65655,7 +67635,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L121", "id": "specs_2026_05_28_staging_root_opt_in_design_3_5_verified_not_modified", - "community": 161, + "community": 169, "norm_label": "3.5 verified, not modified" }, { @@ -65664,7 +67644,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L143", "id": "specs_2026_05_28_staging_root_opt_in_design_3_6_test_mode_unchanged", - "community": 161, + "community": 169, "norm_label": "3.6 test mode \u2014 unchanged" }, { @@ -65673,7 +67653,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L152", "id": "specs_2026_05_28_staging_root_opt_in_design_4_data_flow", - "community": 161, + "community": 169, "norm_label": "4. data flow" }, { @@ -65682,7 +67662,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L156", "id": "specs_2026_05_28_staging_root_opt_in_design_codeblock_1", - "community": 161, + "community": 169, "norm_label": "code:block1 (staging_root blank)" }, { @@ -65691,7 +67671,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L171", "id": "specs_2026_05_28_staging_root_opt_in_design_5_error_handling_edge_cases", - "community": 161, + "community": 169, "norm_label": "5. error handling & edge cases" }, { @@ -65700,7 +67680,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L183", "id": "specs_2026_05_28_staging_root_opt_in_design_6_testing", - "community": 161, + "community": 169, "norm_label": "6. testing" }, { @@ -65709,7 +67689,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L185", "id": "specs_2026_05_28_staging_root_opt_in_design_tests_unit_test_paths_py", - "community": 161, + "community": 169, "norm_label": "`tests/unit/test_paths.py`" }, { @@ -65718,7 +67698,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L197", "id": "specs_2026_05_28_staging_root_opt_in_design_tests_unit_ui_test_settings_page_py", - "community": 161, + "community": 169, "norm_label": "`tests/unit/ui/test_settings_page.py`" }, { @@ -65727,7 +67707,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L200", "id": "specs_2026_05_28_staging_root_opt_in_design_tests_unit_ui_test_mount_py_new_cases", - "community": 161, + "community": 169, "norm_label": "`tests/unit/ui/test_mount.py` (new cases)" }, { @@ -65736,7 +67716,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L206", "id": "specs_2026_05_28_staging_root_opt_in_design_regression_sweep", - "community": 161, + "community": 169, "norm_label": "regression sweep" }, { @@ -65745,7 +67725,7 @@ "source_file": "docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md", "source_location": "L213", "id": "specs_2026_05_28_staging_root_opt_in_design_7_affected_files", - "community": 161, + "community": 169, "norm_label": "7. affected files" }, { @@ -65754,7 +67734,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", "source_location": "L1", "id": "docs_superpowers_specs_2026_05_29_main_window_ui_refresh_design_md", - "community": 54, + "community": 65, "norm_label": "2026-05-29-main-window-ui-refresh-design.md" }, { @@ -65763,340 +67743,340 @@ "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", "source_location": "L1", "id": "specs_2026_05_29_main_window_ui_refresh_design_main_window_ui_refresh_design_spec", - "community": 54, + "community": 65, "norm_label": "main-window ui refresh \u2014 design spec" }, { "label": "1. Summary", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L19", + "source_location": "L35", "id": "specs_2026_05_29_main_window_ui_refresh_design_1_summary", - "community": 54, + "community": 65, "norm_label": "1. summary" }, { "label": "2. Goals & non-goals", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L52", + "source_location": "L68", "id": "specs_2026_05_29_main_window_ui_refresh_design_2_goals_non_goals", - "community": 54, + "community": 65, "norm_label": "2. goals & non-goals" }, { "label": "Goals", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L54", + "source_location": "L70", "id": "specs_2026_05_29_main_window_ui_refresh_design_goals", - "community": 54, + "community": 65, "norm_label": "goals" }, { "label": "Non-goals", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L66", + "source_location": "L82", "id": "specs_2026_05_29_main_window_ui_refresh_design_non_goals", - "community": 54, + "community": 65, "norm_label": "non-goals" }, { "label": "3. Design tokens (foundation)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L78", + "source_location": "L94", "id": "specs_2026_05_29_main_window_ui_refresh_design_3_design_tokens_foundation", - "community": 54, + "community": 65, "norm_label": "3. design tokens (foundation)" }, { "label": "3.1 New tokens", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L86", + "source_location": "L102", "id": "specs_2026_05_29_main_window_ui_refresh_design_3_1_new_tokens", - "community": 54, + "community": 65, "norm_label": "3.1 new tokens" }, { "label": "3.2 Fix latent debt \u2014 referenced-but-undefined variables", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L102", + "source_location": "L118", "id": "specs_2026_05_29_main_window_ui_refresh_design_3_2_fix_latent_debt_referenced_but_undefined_variables", - "community": 54, + "community": 65, "norm_label": "3.2 fix latent debt \u2014 referenced-but-undefined variables" }, { "label": "4. Design", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L130", + "source_location": "L154", "id": "specs_2026_05_29_main_window_ui_refresh_design_4_design", - "community": 54, + "community": 65, "norm_label": "4. design" }, { "label": "4.1 Panel framing \u2014 `components/framed_pane.py` (new) + `pages/main.py`", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L132", + "source_location": "L156", "id": "specs_2026_05_29_main_window_ui_refresh_design_4_1_panel_framing_components_framed_pane_py_new_pages_main_py", - "community": 54, + "community": 65, "norm_label": "4.1 panel framing \u2014 `components/framed_pane.py` (new) + `pages/main.py`" }, { "label": "code:block1 (framed_pane(title: str, *, count: str | None = None, testid:)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L136", + "source_location": "L160", "id": "specs_2026_05_29_main_window_ui_refresh_design_codeblock_1", - "community": 54, + "community": 65, "norm_label": "code:block1 (framed_pane(title: str, *, count: str | none = none, testid:)" }, { "label": "4.2 File list: zebra + row-state precedence \u2014 `components/file_list.py`", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L170", + "source_location": "L204", "id": "specs_2026_05_29_main_window_ui_refresh_design_4_2_file_list_zebra_row_state_precedence_components_file_list_py", - "community": 54, + "community": 65, "norm_label": "4.2 file list: zebra + row-state precedence \u2014 `components/file_list.py`" }, { "label": "code:block2 (def row_background(entry, *, is_selected: bool, is_new: bool)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L174", + "source_location": "L208", "id": "specs_2026_05_29_main_window_ui_refresh_design_codeblock_2", - "community": 54, + "community": 65, "norm_label": "code:block2 (def row_background(entry, *, is_selected: bool, is_new: bool)" }, { "label": "4.3 Centre-pane wiring \u2014 `pages/main.py` + `ui/mount.py`", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L207", + "source_location": "L241", "id": "specs_2026_05_29_main_window_ui_refresh_design_4_3_centre_pane_wiring_pages_main_py_ui_mount_py", - "community": 54, + "community": 65, "norm_label": "4.3 centre-pane wiring \u2014 `pages/main.py` + `ui/mount.py`" }, { "label": "4.4 Metadata pane: Option B (anchored + nested file/folder) \u2014 `components/metadata_pane.py`", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L252", + "source_location": "L286", "id": "specs_2026_05_29_main_window_ui_refresh_design_4_4_metadata_pane_option_b_anchored_nested_file_folder_components_metadata_pane_py", - "community": 54, + "community": 65, "norm_label": "4.4 metadata pane: option b (anchored + nested file/folder) \u2014 `components/metadata_pane.py`" }, { "label": "4.5 Unified selection styling + sync tooltips/legend", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L275", + "source_location": "L315", "id": "specs_2026_05_29_main_window_ui_refresh_design_4_5_unified_selection_styling_sync_tooltips_legend", - "community": 54, + "community": 65, "norm_label": "4.5 unified selection styling + sync tooltips/legend" }, { "label": "4.6 Folder aggregates (item count + sync rollup) \u2014 OQ-3, OQ-4 resolved", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L325", + "source_location": "L365", "id": "specs_2026_05_29_main_window_ui_refresh_design_4_6_folder_aggregates_item_count_sync_rollup_oq_3_oq_4_resolved", - "community": 54, + "community": 65, "norm_label": "4.6 folder aggregates (item count + sync rollup) \u2014 oq-3, oq-4 resolved" }, { "label": "code:block3 (failed > blocked_by_validation > pending > synced > cleaned)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L357", + "source_location": "L397", "id": "specs_2026_05_29_main_window_ui_refresh_design_codeblock_3", - "community": 54, + "community": 65, "norm_label": "code:block3 (failed > blocked_by_validation > pending > synced > cleaned)" }, { "label": "4.7 Empty states", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L366", + "source_location": "L406", "id": "specs_2026_05_29_main_window_ui_refresh_design_4_7_empty_states", - "community": 54, + "community": 65, "norm_label": "4.7 empty states" }, { "label": "4.8 Toolbar grouping + density \u2014 `pages/main.py`", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L375", + "source_location": "L415", "id": "specs_2026_05_29_main_window_ui_refresh_design_4_8_toolbar_grouping_density_pages_main_py", - "community": 54, + "community": 65, "norm_label": "4.8 toolbar grouping + density \u2014 `pages/main.py`" }, { "label": "4.9 Search affordances \u2014 `pages/main.py` (left Explorer card)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L393", + "source_location": "L433", "id": "specs_2026_05_29_main_window_ui_refresh_design_4_9_search_affordances_pages_main_py_left_explorer_card", - "community": 54, + "community": 65, "norm_label": "4.9 search affordances \u2014 `pages/main.py` (left explorer card)" }, { "label": "5. Architecture notes & rationale", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L415", + "source_location": "L455", "id": "specs_2026_05_29_main_window_ui_refresh_design_5_architecture_notes_rationale", - "community": 54, + "community": 65, "norm_label": "5. architecture notes & rationale" }, { "label": "6. Data flow", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L444", + "source_location": "L492", "id": "specs_2026_05_29_main_window_ui_refresh_design_6_data_flow", - "community": 54, + "community": 65, "norm_label": "6. data flow" }, { "label": "code:block4 (Tree selection (URL ?selected=) \u2500\u25ba _classify_node \u2500\u25ba node_ki)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L446", + "source_location": "L494", "id": "specs_2026_05_29_main_window_ui_refresh_design_codeblock_4", - "community": 54, + "community": 65, "norm_label": "code:block4 (tree selection (url ?selected=) \u2500\u25ba _classify_node \u2500\u25ba node_ki)" }, { "label": "7. Error handling & edge cases", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L472", + "source_location": "L520", "id": "specs_2026_05_29_main_window_ui_refresh_design_7_error_handling_edge_cases", - "community": 54, + "community": 65, "norm_label": "7. error handling & edge cases" }, { "label": "8. Resolved questions", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L499", + "source_location": "L547", "id": "specs_2026_05_29_main_window_ui_refresh_design_8_resolved_questions", - "community": 54, + "community": 65, "norm_label": "8. resolved questions" }, { "label": "9. Testing", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L520", + "source_location": "L568", "id": "specs_2026_05_29_main_window_ui_refresh_design_9_testing", - "community": 54, + "community": 65, "norm_label": "9. testing" }, { "label": "`tests/unit/ui/test_design.py`", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L525", + "source_location": "L573", "id": "specs_2026_05_29_main_window_ui_refresh_design_tests_unit_ui_test_design_py", - "community": 54, + "community": 65, "norm_label": "`tests/unit/ui/test_design.py`" }, { "label": "`tests/unit/ui/test_file_list.py`", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L531", + "source_location": "L579", "id": "specs_2026_05_29_main_window_ui_refresh_design_tests_unit_ui_test_file_list_py", - "community": 54, + "community": 65, "norm_label": "`tests/unit/ui/test_file_list.py`" }, { "label": "`tests/unit/ui/test_metadata_pane.py`", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L538", + "source_location": "L586", "id": "specs_2026_05_29_main_window_ui_refresh_design_tests_unit_ui_test_metadata_pane_py", - "community": 54, + "community": 65, "norm_label": "`tests/unit/ui/test_metadata_pane.py`" }, { "label": "`tests/unit/ui/test_sync_rollup.py` (new \u2014 pure)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L545", + "source_location": "L593", "id": "specs_2026_05_29_main_window_ui_refresh_design_tests_unit_ui_test_sync_rollup_py_new_pure", - "community": 54, + "community": 65, "norm_label": "`tests/unit/ui/test_sync_rollup.py` (new \u2014 pure)" }, { "label": "`tests/unit/ui/test_sync_status_icon.py` (extend)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L549", + "source_location": "L597", "id": "specs_2026_05_29_main_window_ui_refresh_design_tests_unit_ui_test_sync_status_icon_py_extend", - "community": 54, + "community": 65, "norm_label": "`tests/unit/ui/test_sync_status_icon.py` (extend)" }, { "label": "`tests/unit/ui/test_status_bar_segment.py` (extend)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L554", + "source_location": "L602", "id": "specs_2026_05_29_main_window_ui_refresh_design_tests_unit_ui_test_status_bar_segment_py_extend", - "community": 54, + "community": 65, "norm_label": "`tests/unit/ui/test_status_bar_segment.py` (extend)" }, { "label": "`tests/unit/ui/test_main_page.py` (extend) / `test_mount.py`", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L560", + "source_location": "L608", "id": "specs_2026_05_29_main_window_ui_refresh_design_tests_unit_ui_test_main_page_py_extend_test_mount_py", - "community": 54, + "community": 65, "norm_label": "`tests/unit/ui/test_main_page.py` (extend) / `test_mount.py`" }, { "label": "`tests/e2e/` (smoke)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L577", + "source_location": "L625", "id": "specs_2026_05_29_main_window_ui_refresh_design_tests_e2e_smoke", - "community": 54, + "community": 65, "norm_label": "`tests/e2e/` (smoke)" }, { "label": "Regression sweep", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L583", + "source_location": "L631", "id": "specs_2026_05_29_main_window_ui_refresh_design_regression_sweep", - "community": 54, + "community": 65, "norm_label": "regression sweep" }, { "label": "10. Affected files", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L590", + "source_location": "L638", "id": "specs_2026_05_29_main_window_ui_refresh_design_10_affected_files", - "community": 54, + "community": 65, "norm_label": "10. affected files" }, { "label": "11. Deferred follow-ups (explicitly out of v1)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md", - "source_location": "L617", + "source_location": "L665", "id": "specs_2026_05_29_main_window_ui_refresh_design_11_deferred_follow_ups_explicitly_out_of_v1", - "community": 54, + "community": 65, "norm_label": "11. deferred follow-ups (explicitly out of v1)" }, { @@ -66105,7 +68085,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L1", "id": "docs_superpowers_specs_2026_05_29_sample_data_generation_design_md", - "community": 199, + "community": 197, "norm_label": "2026-05-29-sample-data-generation-design.md" }, { @@ -66114,7 +68094,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L1", "id": "specs_2026_05_29_sample_data_generation_design_list_driven_sample_data_generation_design_spec", - "community": 199, + "community": 197, "norm_label": "list-driven sample data generation \u2014 design spec" }, { @@ -66123,7 +68103,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L15", "id": "specs_2026_05_29_sample_data_generation_design_1_summary", - "community": 199, + "community": 197, "norm_label": "1. summary" }, { @@ -66132,7 +68112,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L42", "id": "specs_2026_05_29_sample_data_generation_design_key_decisions_resolved_during_brainstorming", - "community": 199, + "community": 197, "norm_label": "key decisions (resolved during brainstorming)" }, { @@ -66141,7 +68121,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L56", "id": "specs_2026_05_29_sample_data_generation_design_2_goals_non_goals", - "community": 199, + "community": 197, "norm_label": "2. goals & non-goals" }, { @@ -66150,7 +68130,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L58", "id": "specs_2026_05_29_sample_data_generation_design_goals", - "community": 199, + "community": 197, "norm_label": "goals" }, { @@ -66159,7 +68139,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L74", "id": "specs_2026_05_29_sample_data_generation_design_non_goals", - "community": 199, + "community": 197, "norm_label": "non-goals" }, { @@ -66168,7 +68148,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L97", "id": "specs_2026_05_29_sample_data_generation_design_3_approaches_considered", - "community": 199, + "community": 197, "norm_label": "3. approaches considered" }, { @@ -66177,7 +68157,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L120", "id": "specs_2026_05_29_sample_data_generation_design_4_sample_list_data_model_pydantic", - "community": 199, + "community": 197, "norm_label": "4. sample list data model (pydantic)" }, { @@ -66186,7 +68166,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L129", "id": "specs_2026_05_29_sample_data_generation_design_codeblock_1", - "community": 199, + "community": 197, "norm_label": "code:python (class samplefile(basemodel):)" }, { @@ -66195,7 +68175,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L251", "id": "specs_2026_05_29_sample_data_generation_design_5_shared_helper_refactor_of_creation_py", - "community": 199, + "community": 197, "norm_label": "5. shared-helper refactor of `creation.py`" }, { @@ -66204,7 +68184,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L282", "id": "specs_2026_05_29_sample_data_generation_design_6_generation_flow", - "community": 199, + "community": 197, "norm_label": "6. generation flow" }, { @@ -66213,7 +68193,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L333", "id": "specs_2026_05_29_sample_data_generation_design_7_safety_guardrails_destructive_wipe", - "community": 199, + "community": 197, "norm_label": "7. safety guardrails (destructive wipe)" }, { @@ -66222,7 +68202,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L350", "id": "specs_2026_05_29_sample_data_generation_design_8_module_layout_entry_points", - "community": 199, + "community": 197, "norm_label": "8. module layout & entry points" }, { @@ -66231,7 +68211,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L352", "id": "specs_2026_05_29_sample_data_generation_design_codeblock_2", - "community": 199, + "community": 197, "norm_label": "code:block2 (src/exlab_wizard/sample_data/)" }, { @@ -66240,7 +68220,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L384", "id": "specs_2026_05_29_sample_data_generation_design_9_error_handling_testing", - "community": 199, + "community": 197, "norm_label": "9. error handling & testing" }, { @@ -66249,7 +68229,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L386", "id": "specs_2026_05_29_sample_data_generation_design_error_handling", - "community": 199, + "community": 197, "norm_label": "error handling" }, { @@ -66258,7 +68238,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L394", "id": "specs_2026_05_29_sample_data_generation_design_testing", - "community": 199, + "community": 197, "norm_label": "testing" }, { @@ -66267,7 +68247,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-sample-data-generation-design.md", "source_location": "L429", "id": "specs_2026_05_29_sample_data_generation_design_10_file_level_change_summary", - "community": 199, + "community": 197, "norm_label": "10. file-level change summary" }, { @@ -66276,7 +68256,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-mockups/README.md", "source_location": "L1", "id": "docs_superpowers_specs_2026_05_29_main_window_ui_refresh_mockups_readme_md", - "community": 465, + "community": 500, "norm_label": "readme.md" }, { @@ -66285,7 +68265,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-mockups/README.md", "source_location": "L1", "id": "2026_05_29_main_window_ui_refresh_mockups_readme_main_window_ui_refresh_approved_mockups", - "community": 465, + "community": 500, "norm_label": "main-window ui refresh \u2014 approved mockups" }, { @@ -66294,7 +68274,7 @@ "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-mockups/README.md", "source_location": "L18", "id": "2026_05_29_main_window_ui_refresh_mockups_readme_caveats_for_implementers", - "community": 465, + "community": 500, "norm_label": "caveats for implementers" }, { @@ -66303,7 +68283,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1", "id": "design_specs_exlab_wizard_frontend_spec_md", - "community": 231, + "community": 198, "norm_label": "exlab-wizard_frontend_spec.md" }, { @@ -66312,7 +68292,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1", "id": "design_specs_exlab_wizard_frontend_spec_exlab_wizard_frontend_design_specification", - "community": 231, + "community": 198, "norm_label": "exlab-wizard: frontend design specification" }, { @@ -66321,7 +68301,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L9", "id": "design_specs_exlab_wizard_frontend_spec_table_of_contents", - "community": 231, + "community": 198, "norm_label": "table of contents" }, { @@ -66330,7 +68310,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L27", "id": "design_specs_exlab_wizard_frontend_spec_1_purpose_and_scope", - "community": 231, + "community": 198, "norm_label": "1. purpose and scope" }, { @@ -66339,7 +68319,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L39", "id": "design_specs_exlab_wizard_frontend_spec_2_framework_choice", - "community": 220, + "community": 221, "norm_label": "2. framework choice" }, { @@ -66348,7 +68328,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L56", "id": "design_specs_exlab_wizard_frontend_spec_2_1_visual_tokens_and_the_design_system", - "community": 220, + "community": 221, "norm_label": "2.1 visual tokens and the design system" }, { @@ -66357,7 +68337,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L60", "id": "design_specs_exlab_wizard_frontend_spec_2_1_1_the_design_py_module", - "community": 220, + "community": 221, "norm_label": "2.1.1 the `design.py` module" }, { @@ -66366,7 +68346,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L66", "id": "design_specs_exlab_wizard_frontend_spec_codeblock_1", - "community": 220, + "community": 221, "norm_label": "code:python (# exlab_wizard/ui/design.py \u2014 mirrors design.md; update both)" }, { @@ -66375,7 +68355,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L123", "id": "design_specs_exlab_wizard_frontend_spec_2_1_2_what_lives_in_design_md_vs_in_this_spec", - "community": 220, + "community": 221, "norm_label": "2.1.2 what lives in design.md vs in this spec" }, { @@ -66384,7 +68364,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L130", "id": "design_specs_exlab_wizard_frontend_spec_2_1_3_exlab_wizard_typography_overrides", - "community": 220, + "community": 221, "norm_label": "2.1.3 exlab-wizard typography overrides" }, { @@ -66393,7 +68373,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L143", "id": "design_specs_exlab_wizard_frontend_spec_2_1_4_warning_tier_color_resolves_oq_3", - "community": 220, + "community": 221, "norm_label": "2.1.4 warning-tier color (resolves oq #3)" }, { @@ -66402,7 +68382,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L160", "id": "design_specs_exlab_wizard_frontend_spec_2_1_5_css_styling_reference_rule", - "community": 220, + "community": 221, "norm_label": "2.1.5 css styling reference rule" }, { @@ -66411,7 +68391,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L173", "id": "design_specs_exlab_wizard_frontend_spec_2_1_6_design_md_absolute_constraints_binding", - "community": 220, + "community": 221, "norm_label": "2.1.6 design.md absolute constraints (binding)" }, { @@ -66420,7 +68400,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L183", "id": "design_specs_exlab_wizard_frontend_spec_2_2_notification_taxonomy", - "community": 220, + "community": 221, "norm_label": "2.2 notification taxonomy" }, { @@ -66429,7 +68409,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L187", "id": "design_specs_exlab_wizard_frontend_spec_2_2_1_pattern_selection_rule", - "community": 220, + "community": 221, "norm_label": "2.2.1 pattern selection rule" }, { @@ -66438,7 +68418,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L205", "id": "design_specs_exlab_wizard_frontend_spec_2_2_2_toast_specifications", - "community": 220, + "community": 221, "norm_label": "2.2.2 toast specifications" }, { @@ -66447,7 +68427,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L228", "id": "design_specs_exlab_wizard_frontend_spec_2_2_3_banner_specifications", - "community": 220, + "community": 221, "norm_label": "2.2.3 banner specifications" }, { @@ -66456,7 +68436,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L252", "id": "design_specs_exlab_wizard_frontend_spec_2_2_4_inline_message_specifications", - "community": 220, + "community": 221, "norm_label": "2.2.4 inline message specifications" }, { @@ -66465,7 +68445,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L268", "id": "design_specs_exlab_wizard_frontend_spec_2_2_5_the_notify_helper_api", - "community": 220, + "community": 221, "norm_label": "2.2.5 the `notify()` helper api" }, { @@ -66474,7 +68454,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L272", "id": "design_specs_exlab_wizard_frontend_spec_codeblock_2", - "community": 220, + "community": 221, "norm_label": "code:python (# action results -> toasts (\u00a72.2.2))" }, { @@ -66483,7 +68463,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L307", "id": "design_specs_exlab_wizard_frontend_spec_3_main_window", - "community": 263, + "community": 267, "norm_label": "3. main window" }, { @@ -66492,7 +68472,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L311", "id": "design_specs_exlab_wizard_frontend_spec_3_1_application_lifecycle_and_first_launch_state", - "community": 263, + "community": 267, "norm_label": "3.1 application lifecycle and first-launch state" }, { @@ -66501,7 +68481,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L319", "id": "design_specs_exlab_wizard_frontend_spec_3_1_1_setup_complete_definition", - "community": 263, + "community": 267, "norm_label": "3.1.1 setup-complete definition" }, { @@ -66510,7 +68490,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L329", "id": "design_specs_exlab_wizard_frontend_spec_3_1_2_boot_flow", - "community": 263, + "community": 267, "norm_label": "3.1.2 boot flow" }, { @@ -66519,7 +68499,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L356", "id": "design_specs_exlab_wizard_frontend_spec_3_1_3_welcome_card_first_launch_only", - "community": 263, + "community": 267, "norm_label": "3.1.3 welcome card (first launch only)" }, { @@ -66528,7 +68508,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L376", "id": "design_specs_exlab_wizard_frontend_spec_3_1_4_setup_incomplete_state_on_the_main_window", - "community": 263, + "community": 267, "norm_label": "3.1.4 setup-incomplete state on the main window" }, { @@ -66537,7 +68517,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L393", "id": "design_specs_exlab_wizard_frontend_spec_3_1_5_first_launch_defaults", - "community": 263, + "community": 267, "norm_label": "3.1.5 first-launch defaults" }, { @@ -66546,7 +68526,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L404", "id": "design_specs_exlab_wizard_frontend_spec_3_1_6_bundled_content_discovery", - "community": 263, + "community": 267, "norm_label": "3.1.6 bundled content discovery" }, { @@ -66555,7 +68535,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L412", "id": "design_specs_exlab_wizard_frontend_spec_3_1_7_lims_configuration_online_and_offline_workstations", - "community": 263, + "community": 267, "norm_label": "3.1.7 lims configuration: online and offline workstations" }, { @@ -66564,7 +68544,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L418", "id": "design_specs_exlab_wizard_frontend_spec_3_2_layout", - "community": 263, + "community": 267, "norm_label": "3.2 layout" }, { @@ -66573,7 +68553,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L433", "id": "design_specs_exlab_wizard_frontend_spec_3_3_refresh_semantics", - "community": 263, + "community": 267, "norm_label": "3.3 refresh semantics" }, { @@ -66582,7 +68562,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L437", "id": "design_specs_exlab_wizard_frontend_spec_3_4_tray_icon_and_window_lifecycle", - "community": 323, + "community": 321, "norm_label": "3.4 tray icon and window lifecycle" }, { @@ -66591,7 +68571,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L441", "id": "design_specs_exlab_wizard_frontend_spec_3_4_1_tray_menu", - "community": 323, + "community": 321, "norm_label": "3.4.1 tray menu" }, { @@ -66600,7 +68580,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L453", "id": "design_specs_exlab_wizard_frontend_spec_3_4_2_status_submenu", - "community": 323, + "community": 321, "norm_label": "3.4.2 status submenu" }, { @@ -66609,7 +68589,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L469", "id": "design_specs_exlab_wizard_frontend_spec_3_4_3_window_lifecycle", - "community": 323, + "community": 321, "norm_label": "3.4.3 window lifecycle" }, { @@ -66618,7 +68598,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L486", "id": "design_specs_exlab_wizard_frontend_spec_3_4_4_why_this_lifecycle_matters_for_the_lab_workflow", - "community": 323, + "community": 321, "norm_label": "3.4.4 why this lifecycle matters for the lab workflow" }, { @@ -66627,7 +68607,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L494", "id": "design_specs_exlab_wizard_frontend_spec_3_4_5_os_notifications", - "community": 323, + "community": 321, "norm_label": "3.4.5 os notifications" }, { @@ -66636,7 +68616,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L503", "id": "design_specs_exlab_wizard_frontend_spec_3_4_6_quitting_the_app", - "community": 323, + "community": 321, "norm_label": "3.4.6 quitting the app" }, { @@ -66645,7 +68625,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L510", "id": "design_specs_exlab_wizard_frontend_spec_3_4_7_linux_fallback_no_system_tray", - "community": 323, + "community": 321, "norm_label": "3.4.7 linux fallback (no system tray)" }, { @@ -66654,7 +68634,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L521", "id": "design_specs_exlab_wizard_frontend_spec_3_5_tree_details_filters_and_status_bar", - "community": 321, + "community": 322, "norm_label": "3.5 tree details, filters, and status bar" }, { @@ -66663,7 +68643,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L525", "id": "design_specs_exlab_wizard_frontend_spec_3_5_1_lims_name_resolution", - "community": 321, + "community": 322, "norm_label": "3.5.1 lims name resolution" }, { @@ -66672,7 +68652,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L535", "id": "design_specs_exlab_wizard_frontend_spec_3_5_2_tree_node_display_format", - "community": 321, + "community": 322, "norm_label": "3.5.2 tree node display format" }, { @@ -66681,7 +68661,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L546", "id": "design_specs_exlab_wizard_frontend_spec_3_5_3_archived_and_deleted_lims_project_handling", - "community": 321, + "community": 322, "norm_label": "3.5.3 archived and deleted lims-project handling" }, { @@ -66690,7 +68670,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L558", "id": "design_specs_exlab_wizard_frontend_spec_3_5_4_search_and_filter_chips", - "community": 321, + "community": 322, "norm_label": "3.5.4 search and filter chips" }, { @@ -66699,7 +68679,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L562", "id": "design_specs_exlab_wizard_frontend_spec_codeblock_3", - "community": 321, + "community": 322, "norm_label": "code:block3 ([ search by name, short_id, or run label ... ] [active \u2713] )" }, { @@ -66708,7 +68688,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L580", "id": "design_specs_exlab_wizard_frontend_spec_3_5_5_status_bar_bottom_of_the_main_window", - "community": 321, + "community": 322, "norm_label": "3.5.5 status bar (bottom of the main window)" }, { @@ -66717,7 +68697,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L594", "id": "design_specs_exlab_wizard_frontend_spec_3_5_6_empty_states", - "community": 321, + "community": 322, "norm_label": "3.5.6 empty states" }, { @@ -66726,7 +68706,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L604", "id": "design_specs_exlab_wizard_frontend_spec_3_6_detail_pane_right_panel", - "community": 322, + "community": 320, "norm_label": "3.6 detail pane (right panel)" }, { @@ -66735,7 +68715,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L610", "id": "design_specs_exlab_wizard_frontend_spec_3_6_1_title_bar", - "community": 322, + "community": 320, "norm_label": "3.6.1 title bar" }, { @@ -66744,7 +68724,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L622", "id": "design_specs_exlab_wizard_frontend_spec_3_6_2_project_detail_sections", - "community": 322, + "community": 320, "norm_label": "3.6.2 project detail sections" }, { @@ -66753,7 +68733,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L633", "id": "design_specs_exlab_wizard_frontend_spec_3_6_3_run_detail_sections", - "community": 322, + "community": 320, "norm_label": "3.6.3 run detail sections" }, { @@ -66762,7 +68742,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L646", "id": "design_specs_exlab_wizard_frontend_spec_3_6_4_validation_and_override_summary", - "community": 322, + "community": 320, "norm_label": "3.6.4 validation and override summary" }, { @@ -66771,7 +68751,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L654", "id": "design_specs_exlab_wizard_frontend_spec_codeblock_4", - "community": 322, + "community": 320, "norm_label": "code:block4 (\u26a0 unresolved placeholder token \u00b7 run_)" }, { @@ -66780,7 +68760,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L668", "id": "design_specs_exlab_wizard_frontend_spec_3_6_5_action_affordances", - "community": 322, + "community": 320, "norm_label": "3.6.5 action affordances" }, { @@ -66789,7 +68769,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L690", "id": "design_specs_exlab_wizard_frontend_spec_3_6_6_empty_selection", - "community": 322, + "community": 320, "norm_label": "3.6.6 empty selection" }, { @@ -66798,7 +68778,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L698", "id": "design_specs_exlab_wizard_frontend_spec_3_7_keyboard_shortcuts", - "community": 263, + "community": 267, "norm_label": "3.7 keyboard shortcuts" }, { @@ -66807,7 +68787,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L723", "id": "design_specs_exlab_wizard_frontend_spec_4_new_project_wizard", - "community": 231, + "community": 198, "norm_label": "4. new project wizard" }, { @@ -66816,7 +68796,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L739", "id": "design_specs_exlab_wizard_frontend_spec_4_1_lims_picker_behavior", - "community": 231, + "community": 198, "norm_label": "4.1 lims picker behavior" }, { @@ -66825,7 +68805,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L750", "id": "design_specs_exlab_wizard_frontend_spec_5_new_run_wizard_experimental_and_test_modes", - "community": 402, + "community": 198, "norm_label": "5. new run wizard (experimental and test modes)" }, { @@ -66834,7 +68814,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L754", "id": "design_specs_exlab_wizard_frontend_spec_5_1_mode_binding_at_launch", - "community": 402, + "community": 198, "norm_label": "5.1 mode binding at launch" }, { @@ -66843,7 +68823,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L761", "id": "design_specs_exlab_wizard_frontend_spec_5_2_steps", - "community": 402, + "community": 198, "norm_label": "5.2 steps" }, { @@ -66852,7 +68832,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L772", "id": "design_specs_exlab_wizard_frontend_spec_5_3_visual_differentiation", - "community": 402, + "community": 198, "norm_label": "5.3 visual differentiation" }, { @@ -66861,7 +68841,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L780", "id": "design_specs_exlab_wizard_frontend_spec_6_readme_authoring_step", - "community": 387, + "community": 384, "norm_label": "6. readme authoring step" }, { @@ -66870,7 +68850,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L784", "id": "design_specs_exlab_wizard_frontend_spec_6_1_layout", - "community": 387, + "community": 384, "norm_label": "6.1 layout" }, { @@ -66879,7 +68859,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L796", "id": "design_specs_exlab_wizard_frontend_spec_6_2_pre_fill_rules", - "community": 387, + "community": 384, "norm_label": "6.2 pre-fill rules" }, { @@ -66888,7 +68868,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L806", "id": "design_specs_exlab_wizard_frontend_spec_6_3_preview_behavior", - "community": 387, + "community": 384, "norm_label": "6.3 preview behavior" }, { @@ -66897,7 +68877,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L810", "id": "design_specs_exlab_wizard_frontend_spec_6_4_required_field_error_messaging", - "community": 387, + "community": 384, "norm_label": "6.4 required-field error messaging" }, { @@ -66906,7 +68886,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L816", "id": "design_specs_exlab_wizard_frontend_spec_7_settings_dialog", - "community": 184, + "community": 191, "norm_label": "7. settings dialog" }, { @@ -66915,7 +68895,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L822", "id": "design_specs_exlab_wizard_frontend_spec_7_1_modality", - "community": 184, + "community": 191, "norm_label": "7.1 modality" }, { @@ -66924,7 +68904,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L828", "id": "design_specs_exlab_wizard_frontend_spec_7_2_layout_sidebar_navigation", - "community": 184, + "community": 191, "norm_label": "7.2 layout \u2014 sidebar navigation" }, { @@ -66933,7 +68913,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L839", "id": "design_specs_exlab_wizard_frontend_spec_7_3_save_and_discard_model", - "community": 184, + "community": 191, "norm_label": "7.3 save and discard model" }, { @@ -66942,7 +68922,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L851", "id": "design_specs_exlab_wizard_frontend_spec_7_4_reusable_patterns", - "community": 184, + "community": 191, "norm_label": "7.4 reusable patterns" }, { @@ -66951,7 +68931,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L853", "id": "design_specs_exlab_wizard_frontend_spec_7_4_1_credential_field", - "community": 184, + "community": 191, "norm_label": "7.4.1 credential field" }, { @@ -66960,7 +68940,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L865", "id": "design_specs_exlab_wizard_frontend_spec_7_4_2_test_connection_feedback_panel", - "community": 184, + "community": 191, "norm_label": "7.4.2 test-connection feedback panel" }, { @@ -66969,7 +68949,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L877", "id": "design_specs_exlab_wizard_frontend_spec_7_5_paths_section", - "community": 184, + "community": 191, "norm_label": "7.5 paths section" }, { @@ -66978,7 +68958,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L889", "id": "design_specs_exlab_wizard_frontend_spec_7_6_lims_section", - "community": 184, + "community": 191, "norm_label": "7.6 lims section" }, { @@ -66987,7 +68967,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L907", "id": "design_specs_exlab_wizard_frontend_spec_7_7_equipment_list_section", - "community": 184, + "community": 191, "norm_label": "7.7 equipment list section" }, { @@ -66996,7 +68976,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L911", "id": "design_specs_exlab_wizard_frontend_spec_7_7_1_list_table", - "community": 184, + "community": 191, "norm_label": "7.7.1 list table" }, { @@ -67005,7 +68985,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L929", "id": "design_specs_exlab_wizard_frontend_spec_7_7_2_add_edit_sub_dialog", - "community": 184, + "community": 191, "norm_label": "7.7.2 add / edit sub-dialog" }, { @@ -67014,7 +68994,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L951", "id": "design_specs_exlab_wizard_frontend_spec_7_7_3_bandwidth_schedule_editor", - "community": 184, + "community": 191, "norm_label": "7.7.3 bandwidth schedule editor" }, { @@ -67023,7 +69003,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L979", "id": "design_specs_exlab_wizard_frontend_spec_7_8_nas_cleanup_section", - "community": 184, + "community": 191, "norm_label": "7.8 nas cleanup section" }, { @@ -67032,7 +69012,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L992", "id": "design_specs_exlab_wizard_frontend_spec_7_9_operators_section", - "community": 184, + "community": 191, "norm_label": "7.9 operators section" }, { @@ -67041,7 +69021,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L998", "id": "design_specs_exlab_wizard_frontend_spec_7_10_validator_section", - "community": 184, + "community": 191, "norm_label": "7.10 validator section" }, { @@ -67050,7 +69030,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1007", "id": "design_specs_exlab_wizard_frontend_spec_7_11_logging_section", - "community": 184, + "community": 191, "norm_label": "7.11 logging section" }, { @@ -67059,7 +69039,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1017", "id": "design_specs_exlab_wizard_frontend_spec_7_12_orchestrator_mode_section", - "community": 184, + "community": 191, "norm_label": "7.12 orchestrator mode section" }, { @@ -67068,7 +69048,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1031", "id": "design_specs_exlab_wizard_frontend_spec_7_13_application_section", - "community": 184, + "community": 191, "norm_label": "7.13 application section" }, { @@ -67077,7 +69057,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1043", "id": "design_specs_exlab_wizard_frontend_spec_7_14_setup_incomplete_state", - "community": 184, + "community": 191, "norm_label": "7.14 setup-incomplete state" }, { @@ -67086,7 +69066,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1053", "id": "design_specs_exlab_wizard_frontend_spec_8_orchestrator_mode_surfaces", - "community": 231, + "community": 198, "norm_label": "8. orchestrator mode surfaces" }, { @@ -67095,7 +69075,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1057", "id": "design_specs_exlab_wizard_frontend_spec_8_1_equipment_selector", - "community": 231, + "community": 198, "norm_label": "8.1 equipment selector" }, { @@ -67104,7 +69084,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1061", "id": "design_specs_exlab_wizard_frontend_spec_8_2_staging_panel", - "community": 231, + "community": 198, "norm_label": "8.2 staging panel" }, { @@ -67113,7 +69093,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1074", "id": "design_specs_exlab_wizard_frontend_spec_8_3_clear_verified_runs_action", - "community": 231, + "community": 198, "norm_label": "8.3 clear verified runs action" }, { @@ -67122,7 +69102,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1080", "id": "design_specs_exlab_wizard_frontend_spec_9_plugin_input_escalation", - "community": 319, + "community": 318, "norm_label": "9. plugin input escalation" }, { @@ -67131,7 +69111,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1084", "id": "design_specs_exlab_wizard_frontend_spec_9_1_escalation_dialog_layout", - "community": 319, + "community": 318, "norm_label": "9.1 escalation dialog layout" }, { @@ -67140,7 +69120,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1101", "id": "design_specs_exlab_wizard_frontend_spec_9_2_multiple_consecutive_escalations_from_one_session_sequential", - "community": 319, + "community": 318, "norm_label": "9.2 multiple consecutive escalations from one session (sequential)" }, { @@ -67149,7 +69129,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1109", "id": "design_specs_exlab_wizard_frontend_spec_9_3_mid_plugin_pass_progress_per_plugin_sub_progress", - "community": 319, + "community": 318, "norm_label": "9.3 mid-plugin-pass progress (per-plugin sub-progress)" }, { @@ -67158,7 +69138,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1113", "id": "design_specs_exlab_wizard_frontend_spec_codeblock_5", - "community": 319, + "community": 318, "norm_label": "code:block5 (running plugins )" }, { @@ -67167,7 +69147,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1128", "id": "design_specs_exlab_wizard_frontend_spec_9_4_cancel_during_escalation_confirmation_dialog", - "community": 319, + "community": 318, "norm_label": "9.4 cancel during escalation -- confirmation dialog" }, { @@ -67176,7 +69156,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1143", "id": "design_specs_exlab_wizard_frontend_spec_9_5_disconnect_and_resume_the_in_flight_operations_panel", - "community": 319, + "community": 318, "norm_label": "9.5 disconnect and resume -- the in-flight operations panel" }, { @@ -67185,7 +69165,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1170", "id": "design_specs_exlab_wizard_frontend_spec_9_6_concurrent_suspended_sessions", - "community": 319, + "community": 318, "norm_label": "9.6 concurrent suspended sessions" }, { @@ -67194,7 +69174,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1181", "id": "design_specs_exlab_wizard_frontend_spec_10_error_progress_and_summary_presentation", - "community": 279, + "community": 283, "norm_label": "10. error, progress, and summary presentation" }, { @@ -67203,7 +69183,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1183", "id": "design_specs_exlab_wizard_frontend_spec_10_1_progress", - "community": 279, + "community": 283, "norm_label": "10.1 progress" }, { @@ -67212,7 +69192,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1187", "id": "design_specs_exlab_wizard_frontend_spec_10_2_errors", - "community": 279, + "community": 283, "norm_label": "10.2 errors" }, { @@ -67221,7 +69201,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1195", "id": "design_specs_exlab_wizard_frontend_spec_10_3_success_summary", - "community": 279, + "community": 283, "norm_label": "10.3 success summary" }, { @@ -67230,7 +69210,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1205", "id": "design_specs_exlab_wizard_frontend_spec_10_4_sync_blocked_banner", - "community": 279, + "community": 283, "norm_label": "10.4 sync-blocked banner" }, { @@ -67239,7 +69219,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1215", "id": "design_specs_exlab_wizard_frontend_spec_10_5_recovery_flows", - "community": 279, + "community": 283, "norm_label": "10.5 recovery flows" }, { @@ -67248,7 +69228,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1219", "id": "design_specs_exlab_wizard_frontend_spec_10_5_1_nas_sync_failure_recovery", - "community": 279, + "community": 283, "norm_label": "10.5.1 nas sync failure recovery" }, { @@ -67257,7 +69237,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1241", "id": "design_specs_exlab_wizard_frontend_spec_10_5_2_lims_unreachability_mid_wizard", - "community": 279, + "community": 283, "norm_label": "10.5.2 lims unreachability mid-wizard" }, { @@ -67266,7 +69246,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1259", "id": "design_specs_exlab_wizard_frontend_spec_10_5_3_crash_and_orphan_recovery", - "community": 279, + "community": 283, "norm_label": "10.5.3 crash and orphan recovery" }, { @@ -67275,7 +69255,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1276", "id": "design_specs_exlab_wizard_frontend_spec_10_5_4_pre_flight_checks_before_creation", - "community": 279, + "community": 283, "norm_label": "10.5.4 pre-flight checks before creation" }, { @@ -67284,7 +69264,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1290", "id": "design_specs_exlab_wizard_frontend_spec_11_problems_tab", - "community": 320, + "community": 319, "norm_label": "11. problems tab" }, { @@ -67293,7 +69273,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1294", "id": "design_specs_exlab_wizard_frontend_spec_11_1_layout", - "community": 320, + "community": 319, "norm_label": "11.1 layout" }, { @@ -67302,7 +69282,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1319", "id": "design_specs_exlab_wizard_frontend_spec_11_2_severity_tier_visual_treatment", - "community": 320, + "community": 319, "norm_label": "11.2 severity tier visual treatment" }, { @@ -67311,7 +69291,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1325", "id": "design_specs_exlab_wizard_frontend_spec_11_3_per_row_actions", - "community": 320, + "community": 319, "norm_label": "11.3 per-row actions" }, { @@ -67320,7 +69300,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1336", "id": "design_specs_exlab_wizard_frontend_spec_11_4_empty_state", - "community": 320, + "community": 319, "norm_label": "11.4 empty state" }, { @@ -67329,7 +69309,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1344", "id": "design_specs_exlab_wizard_frontend_spec_11_4_1_new_finding_surfacing_during_the_session", - "community": 320, + "community": 319, "norm_label": "11.4.1 new-finding surfacing during the session" }, { @@ -67338,7 +69318,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1354", "id": "design_specs_exlab_wizard_frontend_spec_11_5_override_and_allow_sync_dialog", - "community": 320, + "community": 319, "norm_label": "11.5 override-and-allow-sync dialog" }, { @@ -67347,7 +69327,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1370", "id": "design_specs_exlab_wizard_frontend_spec_11_6_cross_surface_links", - "community": 320, + "community": 319, "norm_label": "11.6 cross-surface links" }, { @@ -67356,7 +69336,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1383", "id": "design_specs_exlab_wizard_frontend_spec_12_widget_mappings", - "community": 231, + "community": 198, "norm_label": "12. widget mappings" }, { @@ -67365,7 +69345,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1387", "id": "design_specs_exlab_wizard_frontend_spec_12_1_template_variable_form_from_copier_yml_questions", - "community": 231, + "community": 198, "norm_label": "12.1 template variable form (from `copier.yml` questions)" }, { @@ -67374,7 +69354,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1397", "id": "design_specs_exlab_wizard_frontend_spec_12_2_readme_form_fields", - "community": 231, + "community": 198, "norm_label": "12.2 readme form fields" }, { @@ -67383,7 +69363,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1407", "id": "design_specs_exlab_wizard_frontend_spec_12_3_required_field_indication", - "community": 231, + "community": 198, "norm_label": "12.3 required-field indication" }, { @@ -67392,7 +69372,7 @@ "source_file": "design_specs/ExLab-Wizard_Frontend_Spec.md", "source_location": "L1415", "id": "design_specs_exlab_wizard_frontend_spec_13_open_questions", - "community": 231, + "community": 198, "norm_label": "13. open questions" }, { @@ -67401,7 +69381,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L1", "id": "design_specs_exlab_wizard_design_spec_md", - "community": 200, + "community": 199, "norm_label": "exlab-wizard_design_spec.md" }, { @@ -67410,7 +69390,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L2", "id": "design_specs_exlab_wizard_design_spec_exlab_wizard_design_specification", - "community": 200, + "community": 199, "norm_label": "exlab-wizard: design specification" }, { @@ -67419,7 +69399,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L10", "id": "design_specs_exlab_wizard_design_spec_table_of_contents", - "community": 200, + "community": 199, "norm_label": "table of contents" }, { @@ -67428,7 +69408,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L31", "id": "design_specs_exlab_wizard_design_spec_1_purpose_and_goals", - "community": 200, + "community": 199, "norm_label": "1. purpose and goals" }, { @@ -67437,7 +69417,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L39", "id": "design_specs_exlab_wizard_design_spec_2_user_capabilities_reference", - "community": 200, + "community": 199, "norm_label": "2. user capabilities (reference)" }, { @@ -67446,7 +69426,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L63", "id": "design_specs_exlab_wizard_design_spec_3_directory_structure_convention", - "community": 200, + "community": 199, "norm_label": "3. directory structure convention" }, { @@ -67455,7 +69435,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L71", "id": "design_specs_exlab_wizard_design_spec_4_backend_architecture", - "community": 200, + "community": 199, "norm_label": "4. backend architecture" }, { @@ -67464,7 +69444,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L79", "id": "design_specs_exlab_wizard_design_spec_5_template_format", - "community": 200, + "community": 199, "norm_label": "5. template format" }, { @@ -67473,7 +69453,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L87", "id": "design_specs_exlab_wizard_design_spec_6_plugin_system", - "community": 200, + "community": 199, "norm_label": "6. plugin system" }, { @@ -67482,7 +69462,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L95", "id": "design_specs_exlab_wizard_design_spec_7_sync_and_database_integration", - "community": 200, + "community": 199, "norm_label": "7. sync and database integration" }, { @@ -67491,7 +69471,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L103", "id": "design_specs_exlab_wizard_design_spec_8_error_handling_principles", - "community": 200, + "community": 199, "norm_label": "8. error handling principles" }, { @@ -67500,7 +69480,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L111", "id": "design_specs_exlab_wizard_design_spec_9_configuration_file", - "community": 200, + "community": 199, "norm_label": "9. configuration file" }, { @@ -67509,7 +69489,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L119", "id": "design_specs_exlab_wizard_design_spec_10_readme_generation", - "community": 200, + "community": 199, "norm_label": "10. readme generation" }, { @@ -67518,7 +69498,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L127", "id": "design_specs_exlab_wizard_design_spec_11_exlab_wizard_cache_folders", - "community": 200, + "community": 199, "norm_label": "11. `.exlab-wizard` cache folders" }, { @@ -67527,7 +69507,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L135", "id": "design_specs_exlab_wizard_design_spec_12_orchestrator_mode_multi_equipment_workstations", - "community": 200, + "community": 199, "norm_label": "12. orchestrator mode (multi-equipment workstations)" }, { @@ -67536,7 +69516,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L143", "id": "design_specs_exlab_wizard_design_spec_13_equipment_to_orchestrator_data_flow", - "community": 200, + "community": 199, "norm_label": "13. equipment-to-orchestrator data flow" }, { @@ -67545,7 +69525,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L151", "id": "design_specs_exlab_wizard_design_spec_15_distribution_and_installation", - "community": 200, + "community": 199, "norm_label": "15. distribution and installation" }, { @@ -67554,7 +69534,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L159", "id": "design_specs_exlab_wizard_design_spec_16_logging_architecture", - "community": 200, + "community": 199, "norm_label": "16. logging architecture" }, { @@ -67563,7 +69543,7 @@ "source_file": "design_specs/ExLab-Wizard_Design_Spec.md", "source_location": "L167", "id": "design_specs_exlab_wizard_design_spec_14_open_questions", - "community": 200, + "community": 199, "norm_label": "14. open questions" }, { @@ -67572,7 +69552,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L1", "id": "design_specs_implementation_plan_md", - "community": 106, + "community": 114, "norm_label": "implementation_plan.md" }, { @@ -67581,7 +69561,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L1", "id": "design_specs_implementation_plan_exlab_wizard_implementation_plan", - "community": 106, + "community": 114, "norm_label": "exlab-wizard implementation plan" }, { @@ -67590,7 +69570,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L3", "id": "design_specs_implementation_plan_context", - "community": 106, + "community": 114, "norm_label": "context" }, { @@ -67599,7 +69579,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L39", "id": "design_specs_implementation_plan_goals", - "community": 106, + "community": 114, "norm_label": "goals" }, { @@ -67608,7 +69588,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L57", "id": "design_specs_implementation_plan_first_action_before_phase_1", - "community": 106, + "community": 114, "norm_label": "first action (before phase 1)" }, { @@ -67617,7 +69597,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L66", "id": "design_specs_implementation_plan_subagent_strategy_used_at_every_phase", - "community": 106, + "community": 114, "norm_label": "subagent strategy (used at every phase)" }, { @@ -67626,7 +69606,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L88", "id": "design_specs_implementation_plan_per_phase_definition_of_done", - "community": 106, + "community": 114, "norm_label": "per-phase definition of done" }, { @@ -67635,7 +69615,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L90", "id": "design_specs_implementation_plan_codeblock_1", - "community": 106, + "community": 114, "norm_label": "code:block1 (\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500)" }, { @@ -67644,7 +69624,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L133", "id": "design_specs_implementation_plan_test_plan_merged_with_spec_4_10_11_8_frontend_1", - "community": 106, + "community": 114, "norm_label": "test plan (merged with spec \u00a74.10 + \u00a711.8 + frontend \u00a71)" }, { @@ -67653,7 +69633,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L199", "id": "design_specs_implementation_plan_phase_sequence", - "community": 106, + "community": 114, "norm_label": "phase sequence" }, { @@ -67662,7 +69642,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L215", "id": "design_specs_implementation_plan_phase_1_project_scaffolding_constants_foundations", - "community": 106, + "community": 114, "norm_label": "phase 1: project scaffolding & constants foundations" }, { @@ -67671,7 +69651,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L254", "id": "design_specs_implementation_plan_phase_2_configuration_system_paths", - "community": 106, + "community": 114, "norm_label": "phase 2: configuration system & paths" }, { @@ -67680,7 +69660,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L295", "id": "design_specs_implementation_plan_phase_3_logging_package_cache_writers_schema_models", - "community": 106, + "community": 114, "norm_label": "phase 3: logging package + cache writers + schema models" }, { @@ -67689,7 +69669,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L335", "id": "design_specs_implementation_plan_phase_4_validator_engine_rules", - "community": 106, + "community": 114, "norm_label": "phase 4: validator engine & rules" }, { @@ -67698,7 +69678,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L375", "id": "design_specs_implementation_plan_phase_5_template_engine_copier", - "community": 106, + "community": 114, "norm_label": "phase 5: template engine (copier)" }, { @@ -67707,7 +69687,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L406", "id": "design_specs_implementation_plan_phase_6_plugin_system_host_worker_isolation", - "community": 106, + "community": 114, "norm_label": "phase 6: plugin system (host + worker + isolation)" }, { @@ -67716,7 +69696,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L459", "id": "design_specs_implementation_plan_phase_7_creation_controller_state_machine", - "community": 106, + "community": 114, "norm_label": "phase 7: creation controller & state machine" }, { @@ -67725,7 +69705,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L496", "id": "design_specs_implementation_plan_phase_8_readme_generator", - "community": 106, + "community": 114, "norm_label": "phase 8: readme generator" }, { @@ -67734,7 +69714,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L520", "id": "design_specs_implementation_plan_phase_9_lims_client_cache_keyring", - "community": 106, + "community": 114, "norm_label": "phase 9: lims client & cache + keyring" }, { @@ -67743,7 +69723,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L558", "id": "design_specs_implementation_plan_phase_10_nas_sync_client", - "community": 106, + "community": 114, "norm_label": "phase 10: nas sync client" }, { @@ -67752,7 +69732,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L601", "id": "design_specs_implementation_plan_phase_11_fastapi_app_routers_websocket_setup_gate", - "community": 106, + "community": 114, "norm_label": "phase 11: fastapi app + routers + websocket + setup gate" }, { @@ -67761,7 +69741,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L648", "id": "design_specs_implementation_plan_phase_12_nicegui_frontend_design_tokens_pages_components", - "community": 106, + "community": 114, "norm_label": "phase 12: nicegui frontend (design tokens, pages, components)" }, { @@ -67770,7 +69750,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L726", "id": "design_specs_implementation_plan_phase_13_tray_window_processes", - "community": 106, + "community": 114, "norm_label": "phase 13: tray + window processes" }, { @@ -67779,7 +69759,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L765", "id": "design_specs_implementation_plan_phase_14_orchestrator_mode_ingest", - "community": 106, + "community": 114, "norm_label": "phase 14: orchestrator mode + ingest" }, { @@ -67788,7 +69768,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L790", "id": "design_specs_implementation_plan_phase_15_distribution_pyinstaller_bundling", - "community": 106, + "community": 114, "norm_label": "phase 15: distribution / pyinstaller bundling" }, { @@ -67797,7 +69777,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L818", "id": "design_specs_implementation_plan_phase_16_e2e_hardening_pass", - "community": 106, + "community": 114, "norm_label": "phase 16: e2e hardening pass" }, { @@ -67806,7 +69786,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L839", "id": "design_specs_implementation_plan_critical_files_reference", - "community": 106, + "community": 114, "norm_label": "critical files (reference)" }, { @@ -67815,7 +69795,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L862", "id": "design_specs_implementation_plan_verification_final_state", - "community": 106, + "community": 114, "norm_label": "verification (final state)" }, { @@ -67824,7 +69804,7 @@ "source_file": "design_specs/IMPLEMENTATION_PLAN.md", "source_location": "L885", "id": "design_specs_implementation_plan_risks_mitigations", - "community": 106, + "community": 114, "norm_label": "risks & mitigations" }, { @@ -67833,7 +69813,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L1", "id": "design_specs_design_spec_sections_07_sync_and_database_integration_md", - "community": 37, + "community": 45, "norm_label": "07_sync_and_database_integration.md" }, { @@ -67842,7 +69822,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L1", "id": "design_spec_sections_07_sync_and_database_integration_7_sync_and_database_integration", - "community": 37, + "community": 45, "norm_label": "7. sync and database integration" }, { @@ -67851,7 +69831,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L7", "id": "design_spec_sections_07_sync_and_database_integration_7_1_nas_sync_internal_module", - "community": 37, + "community": 45, "norm_label": "7.1 nas sync (internal module)" }, { @@ -67860,7 +69840,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L13", "id": "design_spec_sections_07_sync_and_database_integration_7_1_1_component_model", - "community": 37, + "community": 45, "norm_label": "7.1.1 component model" }, { @@ -67869,7 +69849,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L17", "id": "design_spec_sections_07_sync_and_database_integration_codeblock_1", - "community": 37, + "community": 45, "norm_label": "code:block1 (\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500)" }, { @@ -67878,7 +69858,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L41", "id": "design_spec_sections_07_sync_and_database_integration_7_1_2_job_lifecycle", - "community": 37, + "community": 45, "norm_label": "7.1.2 job lifecycle" }, { @@ -67887,7 +69867,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L45", "id": "design_spec_sections_07_sync_and_database_integration_codeblock_2", - "community": 37, + "community": 45, "norm_label": "code:block2 (queued \u2192 running \u2192 awaiting_verify \u2192 verified \u2192 cleanup_elig)" }, { @@ -67896,7 +69876,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L63", "id": "design_spec_sections_07_sync_and_database_integration_7_1_3_transport_driver_rclonedriver", - "community": 37, + "community": 45, "norm_label": "7.1.3 transport driver (`rclonedriver`)" }, { @@ -67905,7 +69885,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L85", "id": "design_spec_sections_07_sync_and_database_integration_7_1_4_verify_flow_lsjson_reconcile_cleanup_time_hash_gate", - "community": 37, + "community": 45, "norm_label": "7.1.4 verify flow (lsjson reconcile + cleanup-time hash gate)" }, { @@ -67914,7 +69894,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L132", "id": "design_spec_sections_07_sync_and_database_integration_7_1_5_retry_policy", - "community": 37, + "community": 45, "norm_label": "7.1.5 retry policy" }, { @@ -67923,7 +69903,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L143", "id": "design_spec_sections_07_sync_and_database_integration_7_1_6_cleanup_safety_interlocks", - "community": 37, + "community": 45, "norm_label": "7.1.6 cleanup safety interlocks" }, { @@ -67932,7 +69912,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L156", "id": "design_spec_sections_07_sync_and_database_integration_7_1_7_bandwidth_limiting", - "community": 37, + "community": 45, "norm_label": "7.1.7 bandwidth limiting" }, { @@ -67941,7 +69921,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L160", "id": "design_spec_sections_07_sync_and_database_integration_codeblock_3", - "community": 37, + "community": 45, "norm_label": "code:yaml (nas:)" }, { @@ -67950,7 +69930,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L172", "id": "design_spec_sections_07_sync_and_database_integration_7_1_8_credential_storage", - "community": 37, + "community": 45, "norm_label": "7.1.8 credential storage" }, { @@ -67959,7 +69939,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L181", "id": "design_spec_sections_07_sync_and_database_integration_7_1_9_what_nassync_does_not_do", - "community": 37, + "community": 45, "norm_label": "7.1.9 what nassync does not do" }, { @@ -67968,7 +69948,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L188", "id": "design_spec_sections_07_sync_and_database_integration_7_1_10_cache_file_syncing_and_metadata_only_retention_on_cleanup", - "community": 37, + "community": 45, "norm_label": "7.1.10 cache file syncing and metadata-only retention on cleanup" }, { @@ -67977,7 +69957,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L198", "id": "design_spec_sections_07_sync_and_database_integration_7_2_lims_integration", - "community": 37, + "community": 45, "norm_label": "7.2 lims integration" }, { @@ -67986,7 +69966,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L204", "id": "design_spec_sections_07_sync_and_database_integration_7_2_0_empirical_facts_about_the_lims", - "community": 37, + "community": 45, "norm_label": "7.2.0 empirical facts about the lims" }, { @@ -67995,7 +69975,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L215", "id": "design_spec_sections_07_sync_and_database_integration_7_2_1_project_mapping_mapping_b_committed", - "community": 37, + "community": 45, "norm_label": "7.2.1 project mapping (mapping b, committed)" }, { @@ -68004,7 +69984,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L225", "id": "design_spec_sections_07_sync_and_database_integration_7_2_2_run_level_lims_integration_deferred_to_v1_x", - "community": 37, + "community": 45, "norm_label": "7.2.2 run-level lims integration (deferred to v1.x)" }, { @@ -68013,7 +69993,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L233", "id": "design_spec_sections_07_sync_and_database_integration_7_2_3_limsclient_interface_v1", - "community": 37, + "community": 45, "norm_label": "7.2.3 `limsclient` interface (v1)" }, { @@ -68022,7 +70002,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L235", "id": "design_spec_sections_07_sync_and_database_integration_codeblock_4", - "community": 37, + "community": 45, "norm_label": "code:python (class limsclient:)" }, { @@ -68031,7 +70011,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L248", "id": "design_spec_sections_07_sync_and_database_integration_codeblock_5", - "community": 37, + "community": 45, "norm_label": "code:python (@dataclass(frozen=true))" }, { @@ -68040,7 +70020,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L264", "id": "design_spec_sections_07_sync_and_database_integration_codeblock_6", - "community": 37, + "community": 45, "norm_label": "code:python (@dataclass(frozen=true))" }, { @@ -68049,7 +70029,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L278", "id": "design_spec_sections_07_sync_and_database_integration_7_2_4_project_cache_and_offline_behavior", - "community": 37, + "community": 45, "norm_label": "7.2.4 project cache and offline behavior" }, { @@ -68058,7 +70038,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L290", "id": "design_spec_sections_07_sync_and_database_integration_7_2_5_authentication_cookie_session", - "community": 37, + "community": 45, "norm_label": "7.2.5 authentication (cookie session)" }, { @@ -68067,7 +70047,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L301", "id": "design_spec_sections_07_sync_and_database_integration_7_2_6_asks_for_the_lims_team_deferred", - "community": 37, + "community": 45, "norm_label": "7.2.6 asks for the lims team (deferred)" }, { @@ -68076,7 +70056,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L312", "id": "design_spec_sections_07_sync_and_database_integration_7_2_7_v1_x_run_level_record_specification_target", - "community": 37, + "community": 45, "norm_label": "7.2.7 v1.x run-level record (specification target)" }, { @@ -68085,7 +70065,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L342", "id": "design_spec_sections_07_sync_and_database_integration_7_2_8_what_exlab_wizard_does_not_write_to_lims_in_v1", - "community": 37, + "community": 45, "norm_label": "7.2.8 what exlab-wizard does not write to lims in v1" }, { @@ -68094,7 +70074,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L353", "id": "design_spec_sections_07_sync_and_database_integration_7_2_9_offline_catalogue_nas_shared_lims_project_list", - "community": 37, + "community": 45, "norm_label": "7.2.9 offline catalogue (nas-shared lims project list)" }, { @@ -68103,7 +70083,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L359", "id": "design_spec_sections_07_sync_and_database_integration_7_2_9_1_file_location_and_format", - "community": 37, + "community": 45, "norm_label": "7.2.9.1 file location and format" }, { @@ -68112,7 +70092,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L365", "id": "design_spec_sections_07_sync_and_database_integration_codeblock_7", - "community": 37, + "community": 45, "norm_label": "code:json ({)" }, { @@ -68121,7 +70101,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L387", "id": "design_spec_sections_07_sync_and_database_integration_7_2_9_2_producer_behavior", - "community": 37, + "community": 45, "norm_label": "7.2.9.2 producer behavior" }, { @@ -68130,7 +70110,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L399", "id": "design_spec_sections_07_sync_and_database_integration_7_2_9_3_consumer_behavior", - "community": 37, + "community": 45, "norm_label": "7.2.9.3 consumer behavior" }, { @@ -68139,7 +70119,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L418", "id": "design_spec_sections_07_sync_and_database_integration_7_2_9_4_failure_modes", - "community": 37, + "community": 45, "norm_label": "7.2.9.4 failure modes" }, { @@ -68148,7 +70128,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L429", "id": "design_spec_sections_07_sync_and_database_integration_7_2_9_5_security_and_trust", - "community": 37, + "community": 45, "norm_label": "7.2.9.5 security and trust" }, { @@ -68157,7 +70137,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L435", "id": "design_spec_sections_07_sync_and_database_integration_7_2_9_6_out_of_scope_for_v1", - "community": 37, + "community": 45, "norm_label": "7.2.9.6 out of scope for v1" }, { @@ -68166,7 +70146,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L442", "id": "design_spec_sections_07_sync_and_database_integration_7_3_pre_sync_gate", - "community": 37, + "community": 45, "norm_label": "7.3 pre-sync gate" }, { @@ -68175,7 +70155,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L458", "id": "design_spec_sections_07_sync_and_database_integration_7_4_credential_storage_os_keyring", - "community": 37, + "community": 45, "norm_label": "7.4 credential storage (os keyring)" }, { @@ -68184,7 +70164,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L470", "id": "design_spec_sections_07_sync_and_database_integration_7_4_1_keyring_entry_naming_convention", - "community": 37, + "community": 45, "norm_label": "7.4.1 keyring entry naming convention" }, { @@ -68193,7 +70173,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L482", "id": "design_spec_sections_07_sync_and_database_integration_7_4_2_settings_ui_for_credentials", - "community": 37, + "community": 45, "norm_label": "7.4.2 settings ui for credentials" }, { @@ -68202,7 +70182,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L486", "id": "design_spec_sections_07_sync_and_database_integration_7_4_3_credential_lifecycle", - "community": 37, + "community": 45, "norm_label": "7.4.3 credential lifecycle" }, { @@ -68211,7 +70191,7 @@ "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L494", "id": "design_spec_sections_07_sync_and_database_integration_7_4_4_fallback_when_no_keyring_backend_is_available", - "community": 37, + "community": 45, "norm_label": "7.4.4 fallback when no keyring backend is available" }, { @@ -68220,7 +70200,7 @@ "source_file": "design_specs/design_spec_sections/03_Directory_Structure_Convention.md", "source_location": "L1", "id": "design_specs_design_spec_sections_03_directory_structure_convention_md", - "community": 367, + "community": 369, "norm_label": "03_directory_structure_convention.md" }, { @@ -68229,7 +70209,7 @@ "source_file": "design_specs/design_spec_sections/03_Directory_Structure_Convention.md", "source_location": "L1", "id": "design_spec_sections_03_directory_structure_convention_3_directory_structure_convention", - "community": 367, + "community": 369, "norm_label": "3. directory structure convention" }, { @@ -68238,7 +70218,7 @@ "source_file": "design_specs/design_spec_sections/03_Directory_Structure_Convention.md", "source_location": "L7", "id": "design_spec_sections_03_directory_structure_convention_codeblock_1", - "community": 367, + "community": 369, "norm_label": "code:block1 (/)" }, { @@ -68247,7 +70227,7 @@ "source_file": "design_specs/design_spec_sections/03_Directory_Structure_Convention.md", "source_location": "L20", "id": "design_spec_sections_03_directory_structure_convention_codeblock_2", - "community": 367, + "community": 369, "norm_label": "code:block2 (/data/lab/confocal_01/ucr-000-i-d_wheeldon/runs/run_2026-04-)" }, { @@ -68256,7 +70236,7 @@ "source_file": "design_specs/design_spec_sections/03_Directory_Structure_Convention.md", "source_location": "L28", "id": "design_spec_sections_03_directory_structure_convention_3_1_equipment_id_format", - "community": 367, + "community": 369, "norm_label": "3.1 equipment-id format" }, { @@ -68265,7 +70245,7 @@ "source_file": "design_specs/design_spec_sections/03_Directory_Structure_Convention.md", "source_location": "L41", "id": "design_spec_sections_03_directory_structure_convention_3_2_project_folder_name", - "community": 367, + "community": 369, "norm_label": "3.2 project-folder name" }, { @@ -68274,7 +70254,7 @@ "source_file": "design_specs/design_spec_sections/12_Orchestrator_Mode.md", "source_location": "L1", "id": "design_specs_design_spec_sections_12_orchestrator_mode_md", - "community": 368, + "community": 370, "norm_label": "12_orchestrator_mode.md" }, { @@ -68283,7 +70263,7 @@ "source_file": "design_specs/design_spec_sections/12_Orchestrator_Mode.md", "source_location": "L1", "id": "design_spec_sections_12_orchestrator_mode_12_orchestrator_mode_multi_equipment_workstations", - "community": 368, + "community": 370, "norm_label": "12. orchestrator mode (multi-equipment workstations)" }, { @@ -68292,7 +70272,7 @@ "source_file": "design_specs/design_spec_sections/12_Orchestrator_Mode.md", "source_location": "L7", "id": "design_spec_sections_12_orchestrator_mode_12_1_what_changes_in_orchestrator_mode", - "community": 368, + "community": 370, "norm_label": "12.1 what changes in orchestrator mode" }, { @@ -68301,7 +70281,7 @@ "source_file": "design_specs/design_spec_sections/12_Orchestrator_Mode.md", "source_location": "L20", "id": "design_spec_sections_12_orchestrator_mode_12_2_configuration", - "community": 368, + "community": 370, "norm_label": "12.2 configuration" }, { @@ -68310,7 +70290,7 @@ "source_file": "design_specs/design_spec_sections/12_Orchestrator_Mode.md", "source_location": "L24", "id": "design_spec_sections_12_orchestrator_mode_12_3_concurrent_run_handling", - "community": 368, + "community": 370, "norm_label": "12.3 concurrent run handling" }, { @@ -68319,7 +70299,7 @@ "source_file": "design_specs/design_spec_sections/12_Orchestrator_Mode.md", "source_location": "L28", "id": "design_spec_sections_12_orchestrator_mode_12_4_logging_and_db_changes", - "community": 368, + "community": 370, "norm_label": "12.4 logging and db changes" }, { @@ -68328,7 +70308,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L1", "id": "design_specs_design_spec_sections_06_plugin_system_md", - "community": 248, + "community": 286, "norm_label": "06_plugin_system.md" }, { @@ -68337,7 +70317,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L1", "id": "design_spec_sections_06_plugin_system_6_plugin_system", - "community": 248, + "community": 286, "norm_label": "6. plugin system" }, { @@ -68346,7 +70326,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L9", "id": "design_spec_sections_06_plugin_system_6_0_where_plugins_sit_in_the_pipeline", - "community": 248, + "community": 286, "norm_label": "6.0 where plugins sit in the pipeline" }, { @@ -68355,7 +70335,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L11", "id": "design_spec_sections_06_plugin_system_codeblock_1", - "community": 248, + "community": 286, "norm_label": "code:block1 (\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500)" }, { @@ -68364,7 +70344,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L52", "id": "design_spec_sections_06_plugin_system_6_1_plugin_contract", - "community": 280, + "community": 284, "norm_label": "6.1 plugin contract" }, { @@ -68373,7 +70353,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L56", "id": "design_spec_sections_06_plugin_system_6_1_1_package_layout", - "community": 280, + "community": 284, "norm_label": "6.1.1 package layout" }, { @@ -68382,7 +70362,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L58", "id": "design_spec_sections_06_plugin_system_codeblock_2", - "community": 280, + "community": 284, "norm_label": "code:block2 (/)" }, { @@ -68391,7 +70371,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L70", "id": "design_spec_sections_06_plugin_system_6_1_2_manifest_yml_schema", - "community": 280, + "community": 284, "norm_label": "6.1.2 `manifest.yml` schema" }, { @@ -68400,7 +70380,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L74", "id": "design_spec_sections_06_plugin_system_codeblock_3", - "community": 280, + "community": 284, "norm_label": "code:yaml (# required identity fields)" }, { @@ -68409,7 +70389,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L104", "id": "design_spec_sections_06_plugin_system_6_1_3_the_plugin_base_class", - "community": 280, + "community": 284, "norm_label": "6.1.3 the `plugin` base class" }, { @@ -68418,7 +70398,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L106", "id": "design_spec_sections_06_plugin_system_codeblock_4", - "community": 280, + "community": 284, "norm_label": "code:python (# exlab_wizard/plugins/__init__.py -- shipped with the app)" }, { @@ -68427,7 +70407,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L254", "id": "design_spec_sections_06_plugin_system_6_1_5_what_plugins_must_not_touch", - "community": 280, + "community": 284, "norm_label": "6.1.5 what plugins must not touch" }, { @@ -68436,7 +70416,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L266", "id": "design_spec_sections_06_plugin_system_6_1_4_the_plugincontext_object", - "community": 280, + "community": 284, "norm_label": "6.1.4 the `plugincontext` object" }, { @@ -68445,7 +70425,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L270", "id": "design_spec_sections_06_plugin_system_codeblock_5", - "community": 280, + "community": 284, "norm_label": "code:python (@dataclass(frozen=true))" }, { @@ -68454,7 +70434,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L287", "id": "design_spec_sections_06_plugin_system_6_2_plugin_registry", - "community": 345, + "community": 347, "norm_label": "6.2 plugin registry" }, { @@ -68463,7 +70443,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L289", "id": "design_spec_sections_06_plugin_system_6_2_1_discovery", - "community": 345, + "community": 347, "norm_label": "6.2.1 discovery" }, { @@ -68472,7 +70452,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L308", "id": "design_spec_sections_06_plugin_system_6_2_2_resolution_per_creation_session", - "community": 345, + "community": 347, "norm_label": "6.2.2 resolution per creation session" }, { @@ -68481,7 +70461,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L319", "id": "design_spec_sections_06_plugin_system_6_2_3_order_control_via_exlab_plugins", - "community": 345, + "community": 347, "norm_label": "6.2.3 order control via `_exlab_plugins`" }, { @@ -68490,7 +70470,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L323", "id": "design_spec_sections_06_plugin_system_codeblock_6", - "community": 345, + "community": 347, "norm_label": "code:yaml (_exlab_plugins:)" }, { @@ -68499,7 +70479,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L334", "id": "design_spec_sections_06_plugin_system_6_2_4_what_gets_recorded_in_creation_json", - "community": 345, + "community": 347, "norm_label": "6.2.4 what gets recorded in `creation.json`" }, { @@ -68508,7 +70488,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L338", "id": "design_spec_sections_06_plugin_system_codeblock_7", - "community": 345, + "community": 347, "norm_label": "code:json ({)" }, { @@ -68517,7 +70497,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L354", "id": "design_spec_sections_06_plugin_system_6_3_subprocess_isolation", - "community": 293, + "community": 297, "norm_label": "6.3 subprocess isolation" }, { @@ -68526,7 +70506,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L358", "id": "design_spec_sections_06_plugin_system_6_3_1_process_model", - "community": 293, + "community": 297, "norm_label": "6.3.1 process model" }, { @@ -68535,7 +70515,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L370", "id": "design_spec_sections_06_plugin_system_6_3_2_ipc_envelope", - "community": 293, + "community": 297, "norm_label": "6.3.2 ipc envelope" }, { @@ -68544,7 +70524,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L376", "id": "design_spec_sections_06_plugin_system_codeblock_8", - "community": 293, + "community": 297, "norm_label": "code:json ({)" }, { @@ -68553,7 +70533,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L387", "id": "design_spec_sections_06_plugin_system_codeblock_9", - "community": 293, + "community": 297, "norm_label": "code:json ({)" }, { @@ -68562,7 +70542,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L401", "id": "design_spec_sections_06_plugin_system_6_3_3_resource_limits", - "community": 293, + "community": 297, "norm_label": "6.3.3 resource limits" }, { @@ -68571,7 +70551,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L422", "id": "design_spec_sections_06_plugin_system_6_3_4_failure_handling", - "community": 293, + "community": 297, "norm_label": "6.3.4 failure handling" }, { @@ -68580,7 +70560,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L439", "id": "design_spec_sections_06_plugin_system_6_3_6_validation_worker_subprocess_mode_validate", - "community": 293, + "community": 297, "norm_label": "6.3.6 validation-worker subprocess (mode = `validate`)" }, { @@ -68589,7 +70569,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L460", "id": "design_spec_sections_06_plugin_system_6_3_5_security_model_what_isolation_does_and_does_not_solve", - "community": 293, + "community": 297, "norm_label": "6.3.5 security model: what isolation does and does not solve" }, { @@ -68598,7 +70578,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L487", "id": "design_spec_sections_06_plugin_system_6_4_plugin_input_escalation_plugininputrequired", - "community": 248, + "community": 501, "norm_label": "6.4 plugin input escalation (`plugininputrequired`)" }, { @@ -68607,7 +70587,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L494", "id": "design_spec_sections_06_plugin_system_6_4_1_suspend_resume_flow", - "community": 248, + "community": 501, "norm_label": "6.4.1 suspend / resume flow" }, { @@ -68616,7 +70596,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L504", "id": "design_spec_sections_06_plugin_system_6_4_2_resume_contract_what_the_plugin_author_must_guarantee", - "community": 248, + "community": 501, "norm_label": "6.4.2 resume contract (what the plugin author must guarantee)" }, { @@ -68625,7 +70605,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L517", "id": "design_spec_sections_06_plugin_system_6_5_base_plugin_scaffold_hello_plugin", - "community": 281, + "community": 285, "norm_label": "6.5 base plugin scaffold (`hello_plugin`)" }, { @@ -68634,7 +70614,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L521", "id": "design_spec_sections_06_plugin_system_6_5_1_directory", - "community": 281, + "community": 285, "norm_label": "6.5.1 directory" }, { @@ -68643,7 +70623,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L523", "id": "design_spec_sections_06_plugin_system_codeblock_10", - "community": 281, + "community": 285, "norm_label": "code:block10 (hello_plugin/)" }, { @@ -68652,7 +70632,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L531", "id": "design_spec_sections_06_plugin_system_6_5_2_init_py", - "community": 281, + "community": 285, "norm_label": "6.5.2 `__init__.py`" }, { @@ -68661,7 +70641,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L533", "id": "design_spec_sections_06_plugin_system_codeblock_11", - "community": 281, + "community": 285, "norm_label": "code:python (\"\"\"hello_plugin -- minimal example plugin for exlab-wizard.)" }, { @@ -68670,7 +70650,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L544", "id": "design_spec_sections_06_plugin_system_6_5_3_manifest_yml", - "community": 281, + "community": 285, "norm_label": "6.5.3 `manifest.yml`" }, { @@ -68679,7 +70659,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L546", "id": "design_spec_sections_06_plugin_system_codeblock_12", - "community": 281, + "community": 285, "norm_label": "code:yaml (name: \"hello_plugin\")" }, { @@ -68688,7 +70668,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L564", "id": "design_spec_sections_06_plugin_system_6_5_4_plugin_py", - "community": 281, + "community": 285, "norm_label": "6.5.4 `plugin.py`" }, { @@ -68697,7 +70677,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L566", "id": "design_spec_sections_06_plugin_system_codeblock_13", - "community": 281, + "community": 285, "norm_label": "code:python (from pathlib import path)" }, { @@ -68706,7 +70686,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L598", "id": "design_spec_sections_06_plugin_system_6_5_5_readme_md", - "community": 281, + "community": 285, "norm_label": "6.5.5 `readme.md`" }, { @@ -68715,7 +70695,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L602", "id": "design_spec_sections_06_plugin_system_6_6_worked_example_xlsx_field_filler", - "community": 346, + "community": 348, "norm_label": "6.6 worked example: `xlsx_field_filler`" }, { @@ -68724,7 +70704,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L606", "id": "design_spec_sections_06_plugin_system_6_6_1_what_it_does", - "community": 346, + "community": 348, "norm_label": "6.6.1 what it does" }, { @@ -68733,7 +70713,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L610", "id": "design_spec_sections_06_plugin_system_6_6_2_manifest_yml", - "community": 346, + "community": 348, "norm_label": "6.6.2 `manifest.yml`" }, { @@ -68742,7 +70722,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L612", "id": "design_spec_sections_06_plugin_system_codeblock_14", - "community": 346, + "community": 348, "norm_label": "code:yaml (name: \"xlsx_field_filler\")" }, { @@ -68751,7 +70731,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L635", "id": "design_spec_sections_06_plugin_system_6_6_3_plugin_py", - "community": 346, + "community": 348, "norm_label": "6.6.3 `plugin.py`" }, { @@ -68760,7 +70740,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L637", "id": "design_spec_sections_06_plugin_system_codeblock_15", - "community": 346, + "community": 348, "norm_label": "code:python (from pathlib import path)" }, { @@ -68769,7 +70749,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L809", "id": "design_spec_sections_06_plugin_system_6_6_4_what_this_exercises", - "community": 346, + "community": 348, "norm_label": "6.6.4 what this exercises" }, { @@ -68778,7 +70758,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L825", "id": "design_spec_sections_06_plugin_system_6_7_example_plugins_illustrative_catalog", - "community": 248, + "community": 286, "norm_label": "6.7 example plugins (illustrative catalog)" }, { @@ -68787,7 +70767,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L835", "id": "design_spec_sections_06_plugin_system_6_8_plugin_authoring_checklist", - "community": 248, + "community": 286, "norm_label": "6.8 plugin authoring checklist" }, { @@ -68796,7 +70776,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L849", "id": "design_spec_sections_06_plugin_system_6_9_lint_cli_exlab_wizard_plugins_lint", - "community": 248, + "community": 286, "norm_label": "6.9 lint cli: `exlab-wizard plugins lint`" }, { @@ -68805,7 +70785,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L855", "id": "design_spec_sections_06_plugin_system_codeblock_16", - "community": 248, + "community": 286, "norm_label": "code:block16 (exlab-wizard plugins lint )" }, { @@ -68814,7 +70794,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L899", "id": "design_spec_sections_06_plugin_system_6_10_test_debug_cli_exlab_wizard_plugins_exec", - "community": 248, + "community": 286, "norm_label": "6.10 test / debug cli: `exlab-wizard plugins exec`" }, { @@ -68823,7 +70803,7 @@ "source_file": "design_specs/design_spec_sections/06_Plugin_System.md", "source_location": "L905", "id": "design_spec_sections_06_plugin_system_codeblock_17", - "community": 248, + "community": 286, "norm_label": "code:block17 (exlab-wizard plugins exec --against /)" }, { @@ -69507,7 +71487,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L50", "id": "design_spec_sections_11_cache_folders_11_2_file_inventory_per_level", - "community": 76, + "community": 85, "norm_label": "11.2 file inventory per level" }, { @@ -69516,7 +71496,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L93", "id": "design_spec_sections_11_cache_folders_11_3_creation_json_schema", - "community": 76, + "community": 85, "norm_label": "11.3 `creation.json` schema" }, { @@ -69525,7 +71505,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L97", "id": "design_spec_sections_11_cache_folders_codeblock_2", - "community": 76, + "community": 85, "norm_label": "code:json ({)" }, { @@ -69534,7 +71514,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L167", "id": "design_spec_sections_11_cache_folders_codeblock_3", - "community": 76, + "community": 85, "norm_label": "code:json ({)" }, { @@ -69543,7 +71523,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L181", "id": "design_spec_sections_11_cache_folders_codeblock_4", - "community": 76, + "community": 85, "norm_label": "code:json ({)" }, { @@ -69552,7 +71532,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L206", "id": "design_spec_sections_11_cache_folders_codeblock_5", - "community": 76, + "community": 85, "norm_label": "code:block5 ({ entry \u2208 validation_overrides)" }, { @@ -69561,7 +71541,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L220", "id": "design_spec_sections_11_cache_folders_codeblock_6", - "community": 76, + "community": 85, "norm_label": "code:block6 (\"paths\": {)" }, { @@ -69570,7 +71550,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L227", "id": "design_spec_sections_11_cache_folders_schema_version_history", - "community": 76, + "community": 85, "norm_label": "schema-version history" }, { @@ -69579,7 +71559,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L243", "id": "design_spec_sections_11_cache_folders_11_4_readme_fields_json_schema", - "community": 76, + "community": 85, "norm_label": "11.4 `readme_fields.json` schema" }, { @@ -69588,7 +71568,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L249", "id": "design_spec_sections_11_cache_folders_codeblock_7", - "community": 76, + "community": 85, "norm_label": "code:json ({)" }, { @@ -69597,7 +71577,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L285", "id": "design_spec_sections_11_cache_folders_11_4_1_equipment_json_schema", - "community": 76, + "community": 85, "norm_label": "11.4.1 `equipment.json` schema" }, { @@ -69606,7 +71586,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L287", "id": "design_spec_sections_11_cache_folders_codeblock_8", - "community": 76, + "community": 85, "norm_label": "code:json ({)" }, { @@ -69615,7 +71595,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L311", "id": "design_spec_sections_11_cache_folders_11_4_2_test_runs_json_schema", - "community": 76, + "community": 85, "norm_label": "11.4.2 `test_runs.json` schema" }, { @@ -69624,7 +71604,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L313", "id": "design_spec_sections_11_cache_folders_codeblock_9", - "community": 76, + "community": 85, "norm_label": "code:json ({)" }, { @@ -69633,7 +71613,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L327", "id": "design_spec_sections_11_cache_folders_11_4_3_runs_json_schema", - "community": 76, + "community": 85, "norm_label": "11.4.3 `runs.json` schema" }, { @@ -69642,7 +71622,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L329", "id": "design_spec_sections_11_cache_folders_codeblock_10", - "community": 76, + "community": 85, "norm_label": "code:json ({)" }, { @@ -69651,7 +71631,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L343", "id": "design_spec_sections_11_cache_folders_11_5_wizard_hostname_log_format", - "community": 76, + "community": 85, "norm_label": "11.5 `wizard..log` format" }, { @@ -69660,7 +71640,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L351", "id": "design_spec_sections_11_cache_folders_codeblock_11", - "community": 76, + "community": 85, "norm_label": "code:block11 (2026-04-17t14:31:55z [info ] [host:labpc-04] [equip:confocal)" }, { @@ -69669,7 +71649,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L366", "id": "design_spec_sections_11_cache_folders_11_5_1_log_levels_rotation_and_the_central_app_log", - "community": 76, + "community": 85, "norm_label": "11.5.1 log levels, rotation, and the central app log" }, { @@ -69678,7 +71658,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L397", "id": "design_spec_sections_11_cache_folders_11_6_nas_sync_behavior_for_cache_files", - "community": 76, + "community": 85, "norm_label": "11.6 nas sync behavior for cache files" }, { @@ -69687,7 +71667,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L401", "id": "design_spec_sections_11_cache_folders_11_7_discovery_and_validation_use_cases", - "community": 76, + "community": 85, "norm_label": "11.7 discovery and validation use cases" }, { @@ -69696,7 +71676,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L413", "id": "design_spec_sections_11_cache_folders_11_8_validator_engine_and_problem_query_contract", - "community": 76, + "community": 85, "norm_label": "11.8 validator engine and problem query contract" }, { @@ -69705,7 +71685,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L430", "id": "design_spec_sections_11_cache_folders_codeblock_12", - "community": 76, + "community": 85, "norm_label": "code:json ({)" }, { @@ -69714,7 +71694,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L452", "id": "design_spec_sections_11_cache_folders_11_9_schema_versioning_and_migration_policy", - "community": 76, + "community": 85, "norm_label": "11.9 schema versioning and migration policy" }, { @@ -69723,7 +71703,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L456", "id": "design_spec_sections_11_cache_folders_11_9_1_versioning_rules", - "community": 76, + "community": 85, "norm_label": "11.9.1 versioning rules" }, { @@ -69732,7 +71712,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L462", "id": "design_spec_sections_11_cache_folders_11_9_2_reader_policy", - "community": 76, + "community": 85, "norm_label": "11.9.2 reader policy" }, { @@ -69741,7 +71721,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L472", "id": "design_spec_sections_11_cache_folders_11_9_3_writer_policy", - "community": 76, + "community": 85, "norm_label": "11.9.3 writer policy" }, { @@ -69750,7 +71730,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L480", "id": "design_spec_sections_11_cache_folders_11_9_4_cross_major_migration_v1_v2", - "community": 76, + "community": 85, "norm_label": "11.9.4 cross-major migration (v1 \u2192 v2)" }, { @@ -69759,7 +71739,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L488", "id": "design_spec_sections_11_cache_folders_11_9_5_directory_layout_migration_v0_5_v0_6", - "community": 76, + "community": 85, "norm_label": "11.9.5 directory-layout migration (v0.5 \u2192 v0.6)" }, { @@ -69768,7 +71748,7 @@ "source_file": "design_specs/design_spec_sections/11_Cache_Folders.md", "source_location": "L492", "id": "design_spec_sections_11_cache_folders_11_9_6_what_about_config_yaml", - "community": 76, + "community": 85, "norm_label": "11.9.6 what about `config.yaml`?" }, { @@ -69777,7 +71757,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L1", "id": "design_specs_design_spec_sections_05_template_format_md", - "community": 232, + "community": 234, "norm_label": "05_template_format.md" }, { @@ -69786,7 +71766,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L1", "id": "design_spec_sections_05_template_format_5_template_format", - "community": 232, + "community": 234, "norm_label": "5. template format" }, { @@ -69795,7 +71775,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L9", "id": "design_spec_sections_05_template_format_5_0_template_locations_global_and_per_equipment", - "community": 232, + "community": 234, "norm_label": "5.0 template locations (global and per-equipment)" }, { @@ -69804,7 +71784,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L32", "id": "design_spec_sections_05_template_format_5_1_template_structure", - "community": 232, + "community": 234, "norm_label": "5.1 template structure" }, { @@ -69813,7 +71793,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L36", "id": "design_spec_sections_05_template_format_codeblock_1", - "community": 232, + "community": 234, "norm_label": "code:block1 (my_template/)" }, { @@ -69822,7 +71802,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L48", "id": "design_spec_sections_05_template_format_5_2_copier_manifest_copier_yml", - "community": 232, + "community": 234, "norm_label": "5.2 copier manifest (`copier.yml`)" }, { @@ -69831,7 +71811,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L52", "id": "design_spec_sections_05_template_format_codeblock_2", - "community": 232, + "community": 234, "norm_label": "code:yaml (# --- copier settings ---)" }, { @@ -69840,7 +71820,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L100", "id": "design_spec_sections_05_template_format_5_3_copier_python_api_integration", - "community": 232, + "community": 234, "norm_label": "5.3 copier python api integration" }, { @@ -69849,7 +71829,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L104", "id": "design_spec_sections_05_template_format_codeblock_3", - "community": 232, + "community": 234, "norm_label": "code:python (# illustrative -- not implementation code)" }, { @@ -69858,7 +71838,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L125", "id": "design_spec_sections_05_template_format_5_4_copier_answers_file_exlab_answers_yml", - "community": 232, + "community": 234, "norm_label": "5.4 copier answers file (`.exlab-answers.yml`)" }, { @@ -69867,7 +71847,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L136", "id": "design_spec_sections_05_template_format_5_5_plugin_pass_post_render_controller_driven", - "community": 232, + "community": 234, "norm_label": "5.5 plugin pass (post-render, controller-driven)" }, { @@ -69876,7 +71856,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L155", "id": "design_spec_sections_05_template_format_5_6_jinja2_templating_in_file_contents", - "community": 232, + "community": 234, "norm_label": "5.6 jinja2 templating in file contents" }, { @@ -69885,7 +71865,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L165", "id": "design_spec_sections_05_template_format_5_7_template_versioning", - "community": 232, + "community": 234, "norm_label": "5.7 template versioning" }, { @@ -69894,7 +71874,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L175", "id": "design_spec_sections_05_template_format_5_8_lint_cli_exlab_wizard_templates_lint", - "community": 232, + "community": 234, "norm_label": "5.8 lint cli: `exlab-wizard templates lint`" }, { @@ -69903,7 +71883,7 @@ "source_file": "design_specs/design_spec_sections/05_Template_Format.md", "source_location": "L181", "id": "design_spec_sections_05_template_format_codeblock_4", - "community": 232, + "community": 234, "norm_label": "code:block4 (exlab-wizard templates lint )" }, { @@ -69912,7 +71892,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L1", "id": "design_specs_design_spec_sections_13_equipment_to_orchestrator_data_flow_md", - "community": 241, + "community": 246, "norm_label": "13_equipment_to_orchestrator_data_flow.md" }, { @@ -69921,7 +71901,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L1", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_13_equipment_to_orchestrator_data_flow", - "community": 241, + "community": 246, "norm_label": "13. equipment-to-orchestrator data flow" }, { @@ -69930,7 +71910,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L7", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_13_1_topology", - "community": 241, + "community": 246, "norm_label": "13.1 topology" }, { @@ -69939,7 +71919,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L9", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_codeblock_1", - "community": 241, + "community": 246, "norm_label": "code:block1 ([equipment machine a] --push--> [orchestrator /staging/equ)" }, { @@ -69948,7 +71928,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L26", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_13_2_staging_area_layout", - "community": 241, + "community": 246, "norm_label": "13.2 staging area layout" }, { @@ -69957,7 +71937,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L28", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_codeblock_2", - "community": 241, + "community": 246, "norm_label": "code:block2 (/staging/)" }, { @@ -69966,7 +71946,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L52", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_13_3_run_lifecycle_states", - "community": 241, + "community": 246, "norm_label": "13.3 run lifecycle states" }, { @@ -69975,7 +71955,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L64", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_13_4_ingest_json_schema", - "community": 241, + "community": 246, "norm_label": "13.4 `ingest.json` schema" }, { @@ -69984,7 +71964,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L66", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_codeblock_3", - "community": 241, + "community": 246, "norm_label": "code:json ({)" }, { @@ -69993,7 +71973,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L108", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_13_5_run_completeness_signal", - "community": 241, + "community": 246, "norm_label": "13.5 run completeness signal" }, { @@ -70002,7 +71982,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L119", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_13_6_transport_handling", - "community": 241, + "community": 246, "norm_label": "13.6 transport handling" }, { @@ -70011,7 +71991,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L123", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_13_7_staging_cleanup", - "community": 241, + "community": 246, "norm_label": "13.7 staging cleanup" }, { @@ -70020,7 +72000,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L127", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_codeblock_4", - "community": 241, + "community": 246, "norm_label": "code:yaml (orchestrator:)" }, { @@ -70029,7 +72009,7 @@ "source_file": "design_specs/design_spec_sections/13_Equipment_to_Orchestrator_Data_Flow.md", "source_location": "L140", "id": "design_spec_sections_13_equipment_to_orchestrator_data_flow_13_8_staging_state_query_backend_contract", - "community": 241, + "community": 246, "norm_label": "13.8 staging state query (backend contract)" }, { @@ -70038,7 +72018,7 @@ "source_file": "design_specs/design_spec_sections/08_Error_Handling_Principles.md", "source_location": "L1", "id": "design_specs_design_spec_sections_08_error_handling_principles_md", - "community": 294, + "community": 298, "norm_label": "08_error_handling_principles.md" }, { @@ -70047,7 +72027,7 @@ "source_file": "design_specs/design_spec_sections/08_Error_Handling_Principles.md", "source_location": "L1", "id": "design_spec_sections_08_error_handling_principles_8_error_handling_principles", - "community": 294, + "community": 298, "norm_label": "8. error handling principles" }, { @@ -70056,7 +72036,7 @@ "source_file": "design_specs/design_spec_sections/08_Error_Handling_Principles.md", "source_location": "L11", "id": "design_spec_sections_08_error_handling_principles_8_1_path_validation_rules", - "community": 294, + "community": 298, "norm_label": "8.1 path validation rules" }, { @@ -70065,7 +72045,7 @@ "source_file": "design_specs/design_spec_sections/08_Error_Handling_Principles.md", "source_location": "L15", "id": "design_spec_sections_08_error_handling_principles_8_1_1_unresolved_placeholder_rule_hard_tier", - "community": 294, + "community": 298, "norm_label": "8.1.1 unresolved-placeholder rule (hard tier)" }, { @@ -70074,7 +72054,7 @@ "source_file": "design_specs/design_spec_sections/08_Error_Handling_Principles.md", "source_location": "L39", "id": "design_spec_sections_08_error_handling_principles_8_1_2_illegal_filesystem_character_rule_hard_tier", - "community": 294, + "community": 298, "norm_label": "8.1.2 illegal-filesystem-character rule (hard tier)" }, { @@ -70083,7 +72063,7 @@ "source_file": "design_specs/design_spec_sections/08_Error_Handling_Principles.md", "source_location": "L51", "id": "design_spec_sections_08_error_handling_principles_8_1_3_mode_prefix_mismatch_rule_hard_tier", - "community": 294, + "community": 298, "norm_label": "8.1.3 mode-prefix mismatch rule (hard tier)" }, { @@ -70092,7 +72072,7 @@ "source_file": "design_specs/design_spec_sections/08_Error_Handling_Principles.md", "source_location": "L60", "id": "design_spec_sections_08_error_handling_principles_8_1_4_orphan_rule_soft_tier", - "community": 294, + "community": 298, "norm_label": "8.1.4 orphan rule (soft tier)" }, { @@ -70101,7 +72081,7 @@ "source_file": "design_specs/design_spec_sections/08_Error_Handling_Principles.md", "source_location": "L66", "id": "design_spec_sections_08_error_handling_principles_8_1_5_missing_required_field_rule_soft_tier", - "community": 294, + "community": 298, "norm_label": "8.1.5 missing-required-field rule (soft tier)" }, { @@ -70110,7 +72090,7 @@ "source_file": "design_specs/design_spec_sections/08_Error_Handling_Principles.md", "source_location": "L70", "id": "design_spec_sections_08_error_handling_principles_8_1_6_tier_mapping", - "community": 294, + "community": 298, "norm_label": "8.1.6 tier mapping" }, { @@ -70119,7 +72099,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L1", "id": "design_specs_design_spec_sections_10_readme_generation_md", - "community": 221, + "community": 222, "norm_label": "10_readme_generation.md" }, { @@ -70128,7 +72108,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L1", "id": "design_spec_sections_10_readme_generation_10_readme_generation", - "community": 221, + "community": 222, "norm_label": "10. readme generation" }, { @@ -70137,7 +72117,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L9", "id": "design_spec_sections_10_readme_generation_10_1_when_it_runs", - "community": 221, + "community": 222, "norm_label": "10.1 when it runs" }, { @@ -70146,7 +72126,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L15", "id": "design_spec_sections_10_readme_generation_codeblock_1", - "community": 221, + "community": 222, "norm_label": "code:yaml (# in a template's copier.yml)" }, { @@ -70155,7 +72135,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L26", "id": "design_spec_sections_10_readme_generation_10_2_field_sources_merged_layers", - "community": 221, + "community": 222, "norm_label": "10.2 field sources (merged layers)" }, { @@ -70164,7 +72144,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L39", "id": "design_spec_sections_10_readme_generation_10_3_field_types", - "community": 221, + "community": 222, "norm_label": "10.3 field types" }, { @@ -70173,7 +72153,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L53", "id": "design_spec_sections_10_readme_generation_codeblock_2", - "community": 221, + "community": 222, "norm_label": "code:yaml (_exlab_readme:)" }, { @@ -70182,7 +72162,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L72", "id": "design_spec_sections_10_readme_generation_10_4_user_added_custom_fields", - "community": 221, + "community": 222, "norm_label": "10.4 user-added custom fields" }, { @@ -70191,7 +72171,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L80", "id": "design_spec_sections_10_readme_generation_10_5_pre_fill_behavior", - "community": 221, + "community": 222, "norm_label": "10.5 pre-fill behavior" }, { @@ -70200,7 +72180,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L86", "id": "design_spec_sections_10_readme_generation_10_6_auto_filled_system_fields", - "community": 221, + "community": 222, "norm_label": "10.6 auto-filled system fields" }, { @@ -70209,7 +72189,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L101", "id": "design_spec_sections_10_readme_generation_10_7_output_format", - "community": 221, + "community": 222, "norm_label": "10.7 output format" }, { @@ -70218,7 +72198,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L115", "id": "design_spec_sections_10_readme_generation_codeblock_3", - "community": 221, + "community": 222, "norm_label": "code:markdown (---)" }, { @@ -70227,7 +72207,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L169", "id": "design_spec_sections_10_readme_generation_10_7_1_machine_query_examples", - "community": 221, + "community": 222, "norm_label": "10.7.1 machine query examples" }, { @@ -70236,7 +72216,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L173", "id": "design_spec_sections_10_readme_generation_codeblock_4", - "community": 221, + "community": 222, "norm_label": "code:python (# illustrative -- not implementation code)" }, { @@ -70245,7 +72225,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L209", "id": "design_spec_sections_10_readme_generation_10_7_2_prose_body", - "community": 221, + "community": 222, "norm_label": "10.7.2 prose body" }, { @@ -70254,7 +72234,7 @@ "source_file": "design_specs/design_spec_sections/10_README_Generation.md", "source_location": "L215", "id": "design_spec_sections_10_readme_generation_10_8_readme_plugin_hook_removed_in_v0_7", - "community": 221, + "community": 222, "norm_label": "10.8 readme plugin hook (removed in v0.7)" }, { @@ -70263,7 +72243,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L1", "id": "design_specs_design_spec_sections_16_logging_md", - "community": 116, + "community": 124, "norm_label": "16_logging.md" }, { @@ -70272,7 +72252,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L1", "id": "design_spec_sections_16_logging_16_logging_architecture", - "community": 116, + "community": 124, "norm_label": "16. logging architecture" }, { @@ -70281,7 +72261,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L14", "id": "design_spec_sections_16_logging_16_1_goals", - "community": 116, + "community": 124, "norm_label": "16.1 goals" }, { @@ -70290,7 +72270,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L23", "id": "design_spec_sections_16_logging_16_2_the_logging_package", - "community": 116, + "community": 124, "norm_label": "16.2 the `logging/` package" }, { @@ -70299,7 +72279,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L25", "id": "design_spec_sections_16_logging_codeblock_1", - "community": 116, + "community": 124, "norm_label": "code:block1 (exlab_wizard/logging/)" }, { @@ -70308,7 +72288,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L34", "id": "design_spec_sections_16_logging_16_2_1_the_get_logger_name_entry_point", - "community": 116, + "community": 124, "norm_label": "16.2.1 the `get_logger(name)` entry point" }, { @@ -70317,7 +72297,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L38", "id": "design_spec_sections_16_logging_codeblock_2", - "community": 116, + "community": 124, "norm_label": "code:python (from exlab_wizard.logging import get_logger)" }, { @@ -70326,7 +72306,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L55", "id": "design_spec_sections_16_logging_16_2_2_configure_logging_config_at_startup", - "community": 116, + "community": 124, "norm_label": "16.2.2 `configure_logging(config)` at startup" }, { @@ -70335,7 +72315,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L59", "id": "design_spec_sections_16_logging_codeblock_3", - "community": 116, + "community": 124, "norm_label": "code:python (from exlab_wizard.logging import configure_logging)" }, { @@ -70344,7 +72324,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L72", "id": "design_spec_sections_16_logging_16_2_3_context_vars", - "community": 116, + "community": 124, "norm_label": "16.2.3 context vars" }, { @@ -70353,7 +72333,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L76", "id": "design_spec_sections_16_logging_codeblock_4", - "community": 116, + "community": 124, "norm_label": "code:python (from exlab_wizard.logging.context import set_run_context, cl)" }, { @@ -70362,7 +72342,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L91", "id": "design_spec_sections_16_logging_16_2_4_equipment_scoped_handlers", - "community": 116, + "community": 124, "norm_label": "16.2.4 equipment-scoped handlers" }, { @@ -70371,7 +72351,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L102", "id": "design_spec_sections_16_logging_16_2_5_non_blocking_emit_via_queuehandler_queuelistener", - "community": 116, + "community": 124, "norm_label": "16.2.5 non-blocking emit via `queuehandler` + `queuelistener`" }, { @@ -70380,7 +72360,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L114", "id": "design_spec_sections_16_logging_16_3_log_file_layout_where_to_look_quick_reference", - "community": 116, + "community": 124, "norm_label": "16.3 log file layout (where-to-look quick reference)" }, { @@ -70389,7 +72369,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L132", "id": "design_spec_sections_16_logging_16_4_format", - "community": 116, + "community": 124, "norm_label": "16.4 format" }, { @@ -70398,7 +72378,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L136", "id": "design_spec_sections_16_logging_codeblock_5", - "community": 116, + "community": 124, "norm_label": "code:block5 ( [] [host:] [equi)" }, { @@ -70407,7 +72387,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L154", "id": "design_spec_sections_16_logging_16_5_levels_and_configuration", - "community": 116, + "community": 124, "norm_label": "16.5 levels and configuration" }, { @@ -70416,7 +72396,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L169", "id": "design_spec_sections_16_logging_16_6_rotation", - "community": 116, + "community": 124, "norm_label": "16.6 rotation" }, { @@ -70425,7 +72405,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L185", "id": "design_spec_sections_16_logging_16_7_debugging_recipes", - "community": 116, + "community": 124, "norm_label": "16.7 debugging recipes" }, { @@ -70434,7 +72414,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L189", "id": "design_spec_sections_16_logging_16_7_1_a_run_failed_what_happened", - "community": 116, + "community": 124, "norm_label": "16.7.1 \"a run failed; what happened?\"" }, { @@ -70443,7 +72423,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L195", "id": "design_spec_sections_16_logging_16_7_2_sync_is_failing_for_many_runs", - "community": 116, + "community": 124, "norm_label": "16.7.2 \"sync is failing for many runs\"" }, { @@ -70452,7 +72432,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L201", "id": "design_spec_sections_16_logging_16_7_3_a_plugin_is_misbehaving_in_production", - "community": 116, + "community": 124, "norm_label": "16.7.3 \"a plugin is misbehaving in production\"" }, { @@ -70461,7 +72441,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L209", "id": "design_spec_sections_16_logging_16_7_4_i_don_t_trust_my_config_what_s_actually_loaded", - "community": 116, + "community": 124, "norm_label": "16.7.4 \"i don't trust my config; what's actually loaded?\"" }, { @@ -70470,7 +72450,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L214", "id": "design_spec_sections_16_logging_16_7_5_increase_verbosity_for_one_debug_session", - "community": 116, + "community": 124, "norm_label": "16.7.5 \"increase verbosity for one debug session\"" }, { @@ -70479,7 +72459,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L223", "id": "design_spec_sections_16_logging_16_8_plugin_worker_logging", - "community": 116, + "community": 124, "norm_label": "16.8 plugin worker logging" }, { @@ -70488,7 +72468,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L237", "id": "design_spec_sections_16_logging_16_9_operator_facing_log_access", - "community": 116, + "community": 124, "norm_label": "16.9 operator-facing log access" }, { @@ -70497,7 +72477,7 @@ "source_file": "design_specs/design_spec_sections/16_Logging.md", "source_location": "L247", "id": "design_spec_sections_16_logging_16_10_anti_patterns", - "community": 116, + "community": 124, "norm_label": "16.10 anti-patterns" }, { @@ -70506,7 +72486,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L1", "id": "design_specs_design_spec_sections_02_user_interaction_md", - "community": 144, + "community": 156, "norm_label": "02_user_interaction.md" }, { @@ -70515,7 +72495,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L1", "id": "design_spec_sections_02_user_interaction_2_user_interaction", - "community": 144, + "community": 156, "norm_label": "2. user interaction" }, { @@ -70524,7 +72504,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L13", "id": "design_spec_sections_02_user_interaction_table_of_contents", - "community": 144, + "community": 156, "norm_label": "table of contents" }, { @@ -70533,7 +72513,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L33", "id": "design_spec_sections_02_user_interaction_1_purpose_and_scope", - "community": 144, + "community": 156, "norm_label": "1. purpose and scope" }, { @@ -70542,7 +72522,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L46", "id": "design_spec_sections_02_user_interaction_2_mandatory_core_fields_creation_gate", - "community": 144, + "community": 156, "norm_label": "2. mandatory core fields (creation gate)" }, { @@ -70551,7 +72531,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L69", "id": "design_spec_sections_02_user_interaction_3_user_capabilities", - "community": 144, + "community": 156, "norm_label": "3. user capabilities" }, { @@ -70560,7 +72540,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L73", "id": "design_spec_sections_02_user_interaction_3_1_create_a_new_project", - "community": 144, + "community": 156, "norm_label": "3.1 create a new project" }, { @@ -70569,7 +72549,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L82", "id": "design_spec_sections_02_user_interaction_3_2_create_a_new_experimental_run", - "community": 144, + "community": 156, "norm_label": "3.2 create a new experimental run" }, { @@ -70578,7 +72558,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L89", "id": "design_spec_sections_02_user_interaction_3_3_create_a_new_test_run", - "community": 144, + "community": 156, "norm_label": "3.3 create a new test run" }, { @@ -70587,7 +72567,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L98", "id": "design_spec_sections_02_user_interaction_3_4_browse_existing_equipment_projects_and_runs", - "community": 144, + "community": 156, "norm_label": "3.4 browse existing equipment, projects, and runs" }, { @@ -70596,7 +72576,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L104", "id": "design_spec_sections_02_user_interaction_3_5_author_a_readme_at_creation_time", - "community": 144, + "community": 156, "norm_label": "3.5 author a readme at creation time" }, { @@ -70605,7 +72585,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L112", "id": "design_spec_sections_02_user_interaction_3_6_configure_equipment_paths_and_integrations", - "community": 144, + "community": 156, "norm_label": "3.6 configure equipment, paths, and integrations" }, { @@ -70614,7 +72594,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L119", "id": "design_spec_sections_02_user_interaction_3_7_monitor_orchestrator_staging_orchestrator_mode_only", - "community": 144, + "community": 156, "norm_label": "3.7 monitor orchestrator staging (orchestrator mode only)" }, { @@ -70623,7 +72603,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L125", "id": "design_spec_sections_02_user_interaction_3_8_review_and_resolve_naming_and_validation_problems", - "community": 144, + "community": 156, "norm_label": "3.8 review and resolve naming and validation problems" }, { @@ -70632,7 +72612,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L144", "id": "design_spec_sections_02_user_interaction_4_mode_invariants_and_safety_boundaries", - "community": 144, + "community": 156, "norm_label": "4. mode invariants and safety boundaries" }, { @@ -70641,7 +72621,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L157", "id": "design_spec_sections_02_user_interaction_5_validation_order_and_error_surfacing", - "community": 144, + "community": 156, "norm_label": "5. validation order and error surfacing" }, { @@ -70650,7 +72630,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L172", "id": "design_spec_sections_02_user_interaction_6_user_visible_state_across_surfaces", - "community": 144, + "community": 156, "norm_label": "6. user-visible state across surfaces" }, { @@ -70659,7 +72639,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L186", "id": "design_spec_sections_02_user_interaction_7_pre_sync_gate", - "community": 144, + "community": 156, "norm_label": "7. pre-sync gate" }, { @@ -70668,7 +72648,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L190", "id": "design_spec_sections_02_user_interaction_7_1_what_the_gate_blocks", - "community": 144, + "community": 156, "norm_label": "7.1 what the gate blocks" }, { @@ -70677,7 +72657,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L196", "id": "design_spec_sections_02_user_interaction_7_2_what_the_user_sees", - "community": 144, + "community": 156, "norm_label": "7.2 what the user sees" }, { @@ -70686,7 +72666,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L202", "id": "design_spec_sections_02_user_interaction_7_3_how_the_gate_is_cleared", - "community": 144, + "community": 156, "norm_label": "7.3 how the gate is cleared" }, { @@ -70695,7 +72675,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L211", "id": "design_spec_sections_02_user_interaction_7_4_override_audit_contract", - "community": 144, + "community": 156, "norm_label": "7.4 override audit contract" }, { @@ -70704,7 +72684,7 @@ "source_file": "design_specs/design_spec_sections/02_User_Interaction.md", "source_location": "L219", "id": "design_spec_sections_02_user_interaction_7_5_gate_semantics_on_retroactive_problems", - "community": 144, + "community": 156, "norm_label": "7.5 gate semantics on retroactive problems" }, { @@ -70713,7 +72693,7 @@ "source_file": "design_specs/design_spec_sections/09_Configuration_File.md", "source_location": "L1", "id": "design_specs_design_spec_sections_09_configuration_file_md", - "community": 466, + "community": 503, "norm_label": "09_configuration_file.md" }, { @@ -70722,7 +72702,7 @@ "source_file": "design_specs/design_spec_sections/09_Configuration_File.md", "source_location": "L1", "id": "design_spec_sections_09_configuration_file_9_configuration_file", - "community": 466, + "community": 503, "norm_label": "9. configuration file" }, { @@ -70731,7 +72711,7 @@ "source_file": "design_specs/design_spec_sections/09_Configuration_File.md", "source_location": "L19", "id": "design_spec_sections_09_configuration_file_codeblock_1", - "community": 466, + "community": 503, "norm_label": "code:yaml (paths:)" }, { @@ -70740,7 +72720,7 @@ "source_file": "graphify-out/memory/query_20260529_232003_how_are_the_example_equipment__projects__run_folde.md", "source_location": "L1", "id": "graphify_out_memory_query_20260529_232003_how_are_the_example_equipment_projects_run_folde_md", - "community": 404, + "community": 428, "norm_label": "query_20260529_232003_how_are_the_example_equipment__projects__run_folde.md" }, { @@ -70749,7 +72729,7 @@ "source_file": "graphify-out/memory/query_20260529_232003_how_are_the_example_equipment__projects__run_folde.md", "source_location": "L9", "id": "memory_query_20260529_232003_how_are_the_example_equipment_projects_run_folde_q_how_are_the_example_equipment_projects_run_folders_and_samples_generated_in_test_mode_of_the_wizard_tray", - "community": 404, + "community": 428, "norm_label": "q: how are the example equipment, projects, run folders, and samples generated in --test mode of the wizard tray?" }, { @@ -70758,7 +72738,7 @@ "source_file": "graphify-out/memory/query_20260529_232003_how_are_the_example_equipment__projects__run_folde.md", "source_location": "L11", "id": "memory_query_20260529_232003_how_are_the_example_equipment_projects_run_folde_answer", - "community": 404, + "community": 428, "norm_label": "answer" }, { @@ -70767,1626 +72747,5046 @@ "source_file": "graphify-out/memory/query_20260529_232003_how_are_the_example_equipment__projects__run_folde.md", "source_location": "L15", "id": "memory_query_20260529_232003_how_are_the_example_equipment_projects_run_folde_source_nodes", - "community": 404, + "community": 428, "norm_label": "source nodes" }, { - "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "label": "The phase enum order matches Frontend \u00a710.1.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L491", - "community": 196, - "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", - "id": "pages_main_rationale_491" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L184", + "community": 432, + "norm_label": "the phase enum order matches frontend \u00a710.1.", + "id": "ui_test_components_rationale_184" }, { - "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "label": "The active phase has fraction 0.5 and ``is_active``.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L530", - "community": 205, - "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", - "id": "pages_main_rationale_530" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L232", + "community": 435, + "norm_label": "the active phase has fraction 0.5 and ``is_active``.", + "id": "ui_test_components_rationale_232" }, { - "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "label": "When ``running_plugins`` carries N/M, a sub-row dict is emitted. We assert", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L479", - "community": 196, - "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", - "id": "pages_main_rationale_479" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L245", + "community": 434, + "norm_label": "when ``running_plugins`` carries n/m, a sub-row dict is emitted. we assert", + "id": "ui_test_components_rationale_245" }, { - "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "label": "Clicking *Set* opens the editor; *Cancel* must return to Not set.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L518", - "community": 205, - "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", - "id": "pages_main_rationale_518" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L292", + "community": 436, + "norm_label": "clicking *set* opens the editor; *cancel* must return to not set.", + "id": "ui_test_components_rationale_292" }, { - "label": "RESUME \u2014 Main-window UI refresh (Phase 4 DONE + committed; at demo checkpoint)", - "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L1", - "community": 230, - "norm_label": "resume \u2014 main-window ui refresh (phase 4 done + committed; at demo checkpoint)", - "id": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint" + "label": "Clicking *Replace* opens the editor; *Cancel* must return to Set.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L302", + "community": 437, + "norm_label": "clicking *replace* opens the editor; *cancel* must return to set.", + "id": "ui_test_components_rationale_302" }, { - "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "label": "An empty input has nothing to persist -- stay in the editor.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L475", - "community": 196, - "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", - "id": "pages_main_rationale_475" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L334", + "community": 433, + "norm_label": "an empty input has nothing to persist -- stay in the editor.", + "id": "ui_test_components_rationale_334" }, { - "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "label": "Banners exceed the 2-cap; overflow is reported.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L514", - "community": 205, - "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", - "id": "pages_main_rationale_514" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L454", + "community": 438, + "norm_label": "banners exceed the 2-cap; overflow is reported.", + "id": "ui_test_components_rationale_454" }, { - "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "label": "Suspended rows sort first, oldest started_at first (\u00a79.5).", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L483", - "community": 196, - "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", - "id": "pages_main_rationale_483" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L503", + "community": 431, + "norm_label": "suspended rows sort first, oldest started_at first (\u00a79.5).", + "id": "ui_test_components_rationale_503" }, { - "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "label": "Archived projects are hidden by default.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L522", - "community": 205, - "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", - "id": "pages_main_rationale_522" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L720", + "community": 394, + "norm_label": "archived projects are hidden by default.", + "id": "ui_test_components_rationale_720" }, { - "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "label": "Deleted-from-LIMS rows always render (Frontend \u00a73.5.3).", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L489", - "community": 196, - "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", - "id": "pages_main_rationale_489" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L740", + "community": 393, + "norm_label": "deleted-from-lims rows always render (frontend \u00a73.5.3).", + "id": "ui_test_components_rationale_740" }, { - "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "label": "``RunNode.sync_status`` flows through to the resulting ``TreeNode``.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L528", - "community": 205, - "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", - "id": "pages_main_rationale_528" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L787", + "community": 326, + "norm_label": "``runnode.sync_status`` flows through to the resulting ``treenode``.", + "id": "ui_test_components_rationale_787" }, { - "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "label": "Any non-``cleaned`` sync status (or unset) maps to the local-icon URL.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L490", - "community": 196, - "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", - "id": "pages_main_rationale_490" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L829", + "community": 391, + "norm_label": "any non-``cleaned`` sync status (or unset) maps to the local-icon url.", + "id": "ui_test_components_rationale_829" }, { - "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "label": "Equipment and project rows render without the per-row sync icon.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L529", - "community": 205, - "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", - "id": "pages_main_rationale_529" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L855", + "community": 327, + "norm_label": "equipment and project rows render without the per-row sync icon.", + "id": "ui_test_components_rationale_855" }, { - "label": "Return the framed-pane card-shell style fragment (pure; testable). Always e", + "label": "An ``EquipmentNode(relay=True)`` builds a ``received_equipment`` row.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/components/framed_pane.py", - "source_location": "L66", - "community": 70, - "norm_label": "return the framed-pane card-shell style fragment (pure; testable). always e", - "id": "components_framed_pane_rationale_66" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L877", + "community": 327, + "norm_label": "an ``equipmentnode(relay=true)`` builds a ``received_equipment`` row.", + "id": "ui_test_components_rationale_877" }, { - "label": "Return the title-strip style fragment (pure; testable).", + "label": "Each row carries a ``testid_kind`` matching the Playwright contract.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/components/framed_pane.py", - "source_location": "L75", - "community": 70, - "norm_label": "return the title-strip style fragment (pure; testable).", - "id": "components_framed_pane_rationale_75" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L891", + "community": 395, + "norm_label": "each row carries a ``testid_kind`` matching the playwright contract.", + "id": "ui_test_components_rationale_891" }, { - "label": "Return the scrollable-body style fragment (pure; testable).", + "label": "The ``default-header`` template carries the per-row anchors the Playwright f", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/components/framed_pane.py", - "source_location": "L80", - "community": 70, - "norm_label": "return the scrollable-body style fragment (pure; testable).", - "id": "components_framed_pane_rationale_80" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L915", + "community": 390, + "norm_label": "the ``default-header`` template carries the per-row anchors the playwright f", + "id": "ui_test_components_rationale_915" }, { - "label": "Context manager rendering a framed, titled pane; yields the body element. U", + "label": "Each factory emits a dict (or NiceGUI element) without crashing. The factor", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/components/framed_pane.py", - "source_location": "L92", - "community": 70, - "norm_label": "context manager rendering a framed, titled pane; yields the body element. u", - "id": "components_framed_pane_rationale_92" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L955", + "community": 392, + "norm_label": "each factory emits a dict (or nicegui element) without crashing. the factor", + "id": "ui_test_components_rationale_955" }, { - "label": "Key/value row whose value is a sync-status icon (tolerant). Mirrors :func:`", + "label": "The pre-commit ``no-direct-ui-notify`` rule is mirrored in tests. Any call", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", - "source_location": "L124", - "community": 170, - "norm_label": "key/value row whose value is a sync-status icon (tolerant). mirrors :func:`", - "id": "components_metadata_pane_rationale_124" + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L988", + "community": 389, + "norm_label": "the pre-commit ``no-direct-ui-notify`` rule is mirrored in tests. any call", + "id": "ui_test_components_rationale_988" }, { - "label": "Render the SELECTED FILE / SELECTED FOLDER sub-card (Phase 4, \u00a74.4). Append", + "label": "Welcome card defaults autostart to on (Frontend \u00a73.1.3).", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", - "source_location": "L142", - "community": 170, - "norm_label": "render the selected file / selected folder sub-card (phase 4, \u00a74.4). append", - "id": "components_metadata_pane_rationale_142" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L26", + "community": 452, + "norm_label": "welcome card defaults autostart to on (frontend \u00a73.1.3).", + "id": "ui_test_pages_rationale_26" }, { - "label": "uvicorn ``--factory`` entrypoint.", + "label": "Three bullets describing what the app does. Redesign decision 2: bullets re", "file_type": "rationale", - "source_file": "tests/e2e/_test_app.py", - "source_location": "L928", - "community": 146, - "norm_label": "uvicorn ``--factory`` entrypoint.", - "id": "e2e_test_app_rationale_928" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L37", + "community": 442, + "norm_label": "three bullets describing what the app does. redesign decision 2: bullets re", + "id": "ui_test_pages_rationale_37" }, { - "label": "Define every ``@ui.page(...)`` handler. Called from :func:`mount_ui`.", + "label": "Active default-on, Archived default-off, Test runs default-on.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L90", - "community": 177, - "norm_label": "define every ``@ui.page(...)`` handler. called from :func:`mount_ui`.", - "id": "ui_mount_rationale_90" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L57", + "community": 455, + "norm_label": "active default-on, archived default-off, test runs default-on.", + "id": "ui_test_pages_rationale_57" }, { - "label": "Build the LIMS-password Save / Clear handlers for the settings dialog. Cred", + "label": "Translation preserves the chip state.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L464", - "community": 45, - "norm_label": "build the lims-password save / clear handlers for the settings dialog. cred", - "id": "ui_mount_rationale_464" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L67", + "community": 441, + "norm_label": "translation preserves the chip state.", + "id": "ui_test_pages_rationale_67" }, { - "label": "Run the rclone NAS-remote probe and adapt it for the inline panel. rclone.c", + "label": "Setup-incomplete banner uses ``--color-warning`` per Frontend \u00a73.1.4.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L518", - "community": 237, - "norm_label": "run the rclone nas-remote probe and adapt it for the inline panel. rclone.c", - "id": "ui_mount_rationale_518" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L87", + "community": 446, + "norm_label": "setup-incomplete banner uses ``--color-warning`` per frontend \u00a73.1.4.", + "id": "ui_test_pages_rationale_87" }, { - "label": "Write ``updated`` via ``deps.save_config`` and hot-reload components. Retur", + "label": "The rclone-remote next-action points the operator at the setup docs.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L574", - "community": 193, - "norm_label": "write ``updated`` via ``deps.save_config`` and hot-reload components. retur", - "id": "ui_mount_rationale_574" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L95", + "community": 397, + "norm_label": "the rclone-remote next-action points the operator at the setup docs.", + "id": "ui_test_pages_rationale_95" }, { - "label": "Create the staging directory when the operator saved a non-empty path. ``st", + "label": "Frontend \u00a74 mandates seven steps in a fixed order.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L606", - "community": 193, - "norm_label": "create the staging directory when the operator saved a non-empty path. ``st", - "id": "ui_mount_rationale_606" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L110", + "community": 445, + "norm_label": "frontend \u00a74 mandates seven steps in a fixed order.", + "id": "ui_test_pages_rationale_110" }, { - "label": "Push ``updated`` into the running components (no tray relaunch). Wraps :fun", + "label": "Step 1 requires a LIMS short_id.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L632", - "community": 193, - "norm_label": "push ``updated`` into the running components (no tray relaunch). wraps :fun", - "id": "ui_mount_rationale_632" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L118", + "community": 448, + "norm_label": "step 1 requires a lims short_id.", + "id": "ui_test_pages_rationale_118" }, { - "label": "True when nas-mode equipment exist but the ``nas:`` remote is unusable. rcl", + "label": "Pre-flight: less than 100 MB free aborts (Frontend \u00a710.5.4).", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L649", - "community": 204, - "norm_label": "true when nas-mode equipment exist but the ``nas:`` remote is unusable. rcl", - "id": "ui_mount_rationale_649" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L149", + "community": 444, + "norm_label": "pre-flight: less than 100 mb free aborts (frontend \u00a710.5.4).", + "id": "ui_test_pages_rationale_149" }, { - "label": "Return True when the \u00a74.9 setup state is ``READY``. Delegates to :func:`api", + "label": "Test-mode primary button uses ``warning`` color (Frontend \u00a75.3).", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L673", - "community": 45, - "norm_label": "return true when the \u00a74.9 setup state is ``ready``. delegates to :func:`api", - "id": "ui_mount_rationale_673" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L197", + "community": 450, + "norm_label": "test-mode primary button uses ``warning`` color (frontend \u00a75.3).", + "id": "ui_test_pages_rationale_197" }, { - "label": "Register / unregister platform autostart; return the real post-op state. Re", + "label": "Test runs add a TestRuns/ folder and TestRun_ leaf prefix.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L705", - "community": 149, - "norm_label": "register / unregister platform autostart; return the real post-op state. re", - "id": "ui_mount_rationale_705" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L211", + "community": 440, + "norm_label": "test runs add a testruns/ folder and testrun_ leaf prefix.", + "id": "ui_test_pages_rationale_211" }, { - "label": "Return the (session_id, session) pairs the Operations panel shows. The \u00a79.5", + "label": "Settings has nine sections (Frontend \u00a77.2 + \u00a77.9 operators). The ``operator", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L764", - "community": 45, - "norm_label": "return the (session_id, session) pairs the operations panel shows. the \u00a79.5", - "id": "ui_mount_rationale_764" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L256", + "community": 439, + "norm_label": "settings has nine sections (frontend \u00a77.2 + \u00a77.9 operators). the ``operator", + "id": "ui_test_pages_rationale_256" }, { - "label": "Return ``(panel_count, input_required, active)`` operation counts. ``panel_", + "label": "First incomplete section is the first per canonical order.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L781", - "community": 45, - "norm_label": "return ``(panel_count, input_required, active)`` operation counts. ``panel_", - "id": "ui_mount_rationale_781" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L269", + "community": 443, + "norm_label": "first incomplete section is the first per canonical order.", + "id": "ui_test_pages_rationale_269" }, { - "label": "Return the \u00a74.9.3 next-action string for the banner subline. Unlike :func:`", + "label": "The dynamic NAS-remote section is auto-selected when it's the gate.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L798", - "community": 45, - "norm_label": "return the \u00a74.9.3 next-action string for the banner subline. unlike :func:`", - "id": "ui_mount_rationale_798" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L276", + "community": 396, + "norm_label": "the dynamic nas-remote section is auto-selected when it's the gate.", + "id": "ui_test_pages_rationale_276" }, { - "label": "Compose the ``?selected=...&right_pane=...`` query string for /main. Omits", + "label": "Hard chip default-on; Soft default-off.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L828", - "community": 302, - "norm_label": "compose the ``?selected=...&right_pane=...`` query string for /main. omits", - "id": "ui_mount_rationale_828" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L337", + "community": 328, + "norm_label": "hard chip default-on; soft default-off.", + "id": "ui_test_pages_rationale_337" }, { - "label": "Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi", + "label": "Frontend \u00a711.5: minimum 10 chars after trim.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L861", - "community": 303, - "norm_label": "map a selected node id to ``(kind, is_received)``. mirrors the shape classi", - "id": "ui_mount_rationale_861" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L365", + "community": 447, + "norm_label": "frontend \u00a711.5: minimum 10 chars after trim.", + "id": "ui_test_pages_rationale_365" }, { - "label": "Build the metadata-pane payload for the selected node, by kind. Returns ``{", + "label": "Frontend \u00a711.5: maximum 500 chars after trim.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L905", - "community": 176, - "norm_label": "build the metadata-pane payload for the selected node, by kind. returns ``{", - "id": "ui_mount_rationale_905" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L373", + "community": 451, + "norm_label": "frontend \u00a711.5: maximum 500 chars after trim.", + "id": "ui_test_pages_rationale_373" }, { - "label": "Project equipment-config fields into the owned-equipment payload.", + "label": "Whitespace is trimmed before length check.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L932", - "community": 176, - "norm_label": "project equipment-config fields into the owned-equipment payload.", - "id": "ui_mount_rationale_932" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L388", + "community": 449, + "norm_label": "whitespace is trimmed before length check.", + "id": "ui_test_pages_rationale_388" }, { - "label": "Return the relay-equipment payload (label, source_host).", + "label": "Within 10 of the maximum -> near-limit warning.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L947", - "community": 176, - "norm_label": "return the relay-equipment payload (label, source_host).", - "id": "ui_mount_rationale_947" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L395", + "community": 453, + "norm_label": "within 10 of the maximum -> near-limit warning.", + "id": "ui_test_pages_rationale_395" }, { - "label": "Derive a project payload from the on-disk project directory. ``node_id`` is", + "label": "Five problem-class chips per Backend \u00a78.1.1-\u00a78.1.5.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L961", - "community": 226, - "norm_label": "derive a project payload from the on-disk project directory. ``node_id`` is", - "id": "ui_mount_rationale_961" + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L419", + "community": 454, + "norm_label": "five problem-class chips per backend \u00a78.1.1-\u00a78.1.5.", + "id": "ui_test_pages_rationale_419" }, { - "label": "Count immediate child directories of ``parent`` whose names start with ``pre", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L995", - "community": 226, - "norm_label": "count immediate child directories of ``parent`` whose names start with ``pre", - "id": "ui_mount_rationale_995" + "label": "_FakeUI", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L99", + "community": 0, + "norm_label": "_fakeui", + "id": "ui_test_mount_fakeui" }, { - "label": "Decode the run's creation.json into the metadata-pane payload. Returns ``{}", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1010", - "community": 192, - "norm_label": "decode the run's creation.json into the metadata-pane payload. returns ``{}", - "id": "ui_mount_rationale_1010" + "label": ".__init__()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L102", + "community": 0, + "norm_label": ".__init__()", + "id": "ui_test_mount_fakeui_init" }, { - "label": "Resolve a centre-list selection (file or folder) to a render payload. Phase", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1053", - "community": 192, - "norm_label": "resolve a centre-list selection (file or folder) to a render payload. phase", - "id": "ui_mount_rationale_1053" + "label": ".card()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L108", + "community": 0, + "norm_label": ".card()", + "id": "ui_test_mount_fakeui_card" }, { - "label": "Aggregate a one-level folder scan into a folder-card payload (OQ-4/B). Phas", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1102", - "community": 192, - "norm_label": "aggregate a one-level folder scan into a folder-card payload (oq-4/b). phas", - "id": "ui_mount_rationale_1102" + "label": ".label()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L112", + "community": 0, + "norm_label": ".label()", + "id": "ui_test_mount_fakeui_label" }, { - "label": "Mount / rebind the per-tab FolderFeed and return current entries. Uses ``ap", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1143", - "community": 203, - "norm_label": "mount / rebind the per-tab folderfeed and return current entries. uses ``ap", - "id": "ui_mount_rationale_1143" + "label": "_BoomUI", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L117", + "community": 0, + "norm_label": "_boomui", + "id": "ui_test_mount_boomui" }, { - "label": "FolderFeed fetch hook. Skips when the tree just walked. Runs the synchronou", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1204", - "community": 203, - "norm_label": "folderfeed fetch hook. skips when the tree just walked. runs the synchronou", - "id": "ui_mount_rationale_1204" + "label": ".card()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L120", + "community": 0, + "norm_label": ".card()", + "id": "ui_test_mount_boomui_card" }, { - "label": "Force a fresh single-folder scan and prime the feed payload (OQ-1/A). The F", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1228", - "community": 68, - "norm_label": "force a fresh single-folder scan and prime the feed payload (oq-1/a). the f", - "id": "ui_mount_rationale_1228" + "label": ".label()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L124", + "community": 0, + "norm_label": ".label()", + "id": "ui_test_mount_boomui_label" }, { - "label": "Dispatch a per-run context action to its backend surface. Mirrors :func:`ap", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1268", - "community": 68, - "norm_label": "dispatch a per-run context action to its backend surface. mirrors :func:`ap", - "id": "ui_mount_rationale_1268" + "label": "test_staging_state_when_staging_root_missing()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L460", + "community": 324, + "norm_label": "test_staging_state_when_staging_root_missing()", + "id": "ui_test_mount_test_staging_state_when_staging_root_missing" }, { - "label": "Bulk-clear every staged run whose sync job is verified. Wired from the file", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1326", - "community": 168, - "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file", - "id": "ui_mount_rationale_1326" + "label": "test_staging_state_none_when_no_config()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L475", + "community": 2, + "norm_label": "test_staging_state_none_when_no_config()", + "id": "ui_test_mount_test_staging_state_none_when_no_config" }, { - "label": "Handle ``Open in OS`` / ``Copy path`` / ``Keep local`` file actions.", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1371", - "community": 168, - "norm_label": "handle ``open in os`` / ``copy path`` / ``keep local`` file actions.", - "id": "ui_mount_rationale_1371" + "label": "test_staging_state_returns_empty_rows_on_query_failure()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L479", + "community": 2, + "norm_label": "test_staging_state_returns_empty_rows_on_query_failure()", + "id": "ui_test_mount_test_staging_state_returns_empty_rows_on_query_failure" }, { - "label": "Flip a file's ``keep_local`` flag via the orchestrator's writer. Operator-f", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1410", - "community": 68, - "norm_label": "flip a file's ``keep_local`` flag via the orchestrator's writer. operator-f", - "id": "ui_mount_rationale_1410" + "label": "test_render_unavailable_renders_headline_and_subline()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L671", + "community": 2, + "norm_label": "test_render_unavailable_renders_headline_and_subline()", + "id": "ui_test_mount_test_render_unavailable_renders_headline_and_subline" }, { - "label": "Launch the host OS's default opener for ``path``. Returns False on platform", + "label": "test_render_unavailable_swallows_failure()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L678", + "community": 2, + "norm_label": "test_render_unavailable_swallows_failure()", + "id": "ui_test_mount_test_render_unavailable_swallows_failure" + }, + { + "label": "_drain_background()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1701", + "community": 50, + "norm_label": "_drain_background()", + "id": "ui_test_mount_drain_background" + }, + { + "label": "test_bulk_clear_verified_clears_verified_rows()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1787", + "community": 14, + "norm_label": "test_bulk_clear_verified_clears_verified_rows()", + "id": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" + }, + { + "label": "test_bulk_clear_verified_no_config_toasts_and_returns()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1816", + "community": 86, + "norm_label": "test_bulk_clear_verified_no_config_toasts_and_returns()", + "id": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" + }, + { + "label": "test_bulk_clear_verified_logs_helper_exception()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1823", + "community": 125, + "norm_label": "test_bulk_clear_verified_logs_helper_exception()", + "id": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" + }, + { + "label": "test_bulk_clear_verified_no_verified_rows_toasts()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2934", + "community": 351, + "norm_label": "test_bulk_clear_verified_no_verified_rows_toasts()", + "id": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" + }, + { + "label": "test_build_staging_state_query_failure_returns_empty_rows()", + "file_type": "code", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L3014", + "community": 181, + "norm_label": "test_build_staging_state_query_failure_returns_empty_rows()", + "id": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + }, + { + "label": "A ``ui`` whose element factories raise -- exercises render except paths.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1453", - "community": 175, - "norm_label": "launch the host os's default opener for ``path``. returns false on platform", - "id": "ui_mount_rationale_1453" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L118", + "community": 0, + "norm_label": "a ``ui`` whose element factories raise -- exercises render except paths.", + "id": "ui_test_mount_rationale_118" }, { - "label": "Build the Operations-panel rows from the live session store (T3). Uses the", + "label": "Duck-typed CreationController for the create-flow helpers.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1481", - "community": 57, - "norm_label": "build the operations-panel rows from the live session store (t3). uses the", - "id": "ui_mount_rationale_1481" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L130", + "community": 60, + "norm_label": "duck-typed creationcontroller for the create-flow helpers.", + "id": "ui_test_mount_rationale_130" }, { - "label": "Open the in-flight Operations panel (Frontend \u00a79.5). Builds a fresh snapsho", + "label": "Live-LIMS branch with the keyring password absent -> not ready.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1493", - "community": 57, - "norm_label": "open the in-flight operations panel (frontend \u00a79.5). builds a fresh snapsho", - "id": "ui_mount_rationale_1493" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L185", + "community": 2, + "norm_label": "live-lims branch with the keyring password absent -> not ready.", + "id": "ui_test_mount_rationale_185" }, { - "label": "Show a lightweight details/\"log\" dialog for one in-flight operation. The \u00a79", + "label": "A nas-mode device whose ``nas.remote`` is unset blocks ready.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1517", - "community": 175, - "norm_label": "show a lightweight details/\"log\" dialog for one in-flight operation. the \u00a79", - "id": "ui_mount_rationale_1517" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L213", + "community": 2, + "norm_label": "a nas-mode device whose ``nas.remote`` is unset blocks ready.", + "id": "ui_test_mount_rationale_213" }, { - "label": "Resume a suspended session by re-opening its \u00a79.1 input dialog (T5). Reads", + "label": "A configured nas remote absent from rclone.conf blocks ready.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1551", - "community": 154, - "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads", - "id": "ui_mount_rationale_1551" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L223", + "community": 2, + "norm_label": "a configured nas remote absent from rclone.conf blocks ready.", + "id": "ui_test_mount_rationale_223" }, { - "label": "Open the \u00a79.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm", + "label": "Regression: LIMS satisfied via the offline catalogue (no keyring password) m", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1583", - "community": 154, - "norm_label": "open the \u00a79.1 escalation dialog; submit resumes, cancel confirms (t5). subm", - "id": "ui_mount_rationale_1583" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L234", + "community": 2, + "norm_label": "regression: lims satisfied via the offline catalogue (no keyring password) m", + "id": "ui_test_mount_rationale_234" }, { - "label": "Resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", + "label": "Redesign \u00a73.1: the orchestrator pipeline is unconditional.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1621", - "community": 57, - "norm_label": "resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", - "id": "ui_mount_rationale_1621" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L271", + "community": 2, + "norm_label": "redesign \u00a73.1: the orchestrator pipeline is unconditional.", + "id": "ui_test_mount_rationale_271" }, { - "label": "Cancel an in-flight session via the \u00a79.4 Discard / Keep dialog (T4). The op", + "label": "Real Config with one nas-mode equipment. ``offline_catalogue`` swaps the li", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1630", - "community": 57, - "norm_label": "cancel an in-flight session via the \u00a79.4 discard / keep dialog (t4). the op", - "id": "ui_mount_rationale_1630" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L349", + "community": 2, + "norm_label": "real config with one nas-mode equipment. ``offline_catalogue`` swaps the li", + "id": "ui_test_mount_rationale_349" }, { - "label": "Open a NiceGUI dialog showing the run's sync-queue job state. The operator-", + "label": "Redesign \u00a73.1: orchestrator pipeline is always on, but a missing staging_roo", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1671", - "community": 119, - "norm_label": "open a nicegui dialog showing the run's sync-queue job state. the operator-", - "id": "ui_mount_rationale_1671" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L461", + "community": 324, + "norm_label": "redesign \u00a73.1: orchestrator pipeline is always on, but a missing staging_roo", + "id": "ui_test_mount_rationale_461" }, { - "label": "Return the settings sections the operator still needs to fill in. Mirrors a", + "label": "Minimal stand-in for the NiceGUI ``ui`` object's navigate surface.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1719", - "community": 204, - "norm_label": "return the settings sections the operator still needs to fill in. mirrors a", - "id": "ui_mount_rationale_1719" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L508", + "community": 60, + "norm_label": "minimal stand-in for the nicegui ``ui`` object's navigate surface.", + "id": "ui_test_mount_rationale_508" }, { - "label": "Return the configured templates directory, or ``None``.", + "label": "A successful save persists, then hot-reloads the live components. The old b", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1752", - "community": 194, - "norm_label": "return the configured templates directory, or ``none``.", - "id": "ui_mount_rationale_1752" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L516", + "community": 324, + "norm_label": "a successful save persists, then hot-reloads the live components. the old b", + "id": "ui_test_mount_rationale_516" }, { - "label": "List template directory names of ``template_type`` under templates_dir.", + "label": "Opt-in: a saved non-empty staging_root is created on save.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1760", - "community": 194, - "norm_label": "list template directory names of ``template_type`` under templates_dir.", - "id": "ui_mount_rationale_1760" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L593", + "community": 60, + "norm_label": "opt-in: a saved non-empty staging_root is created on save.", + "id": "ui_test_mount_rationale_593" }, { - "label": "Map each ``template_type`` template name to its parsed copier questions. Re", + "label": "Blank staging_root creates nothing -- the device is not a staging PC.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1777", - "community": 69, - "norm_label": "map each ``template_type`` template name to its parsed copier questions. re", - "id": "ui_mount_rationale_1777" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L608", + "community": 60, + "norm_label": "blank staging_root creates nothing -- the device is not a staging pc.", + "id": "ui_test_mount_rationale_608" }, { - "label": "Read the offline-catalogue projects (disconnected-workstation source). Read", + "label": "An ensure_dir failure warns but keeps the persisted config.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1810", - "community": 119, - "norm_label": "read the offline-catalogue projects (disconnected-workstation source). read", - "id": "ui_mount_rationale_1810" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L622", + "community": 60, + "norm_label": "an ensure_dir failure warns but keeps the persisted config.", + "id": "ui_test_mount_rationale_622" }, { - "label": "Return the LIMS projects backing the project wizard's picker. Tries the liv", + "label": "If the coordinator raises wholesale, the live config is still kept.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1844", - "community": 266, - "norm_label": "return the lims projects backing the project wizard's picker. tries the liv", - "id": "ui_mount_rationale_1844" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L649", + "community": 386, + "norm_label": "if the coordinator raises wholesale, the live config is still kept.", + "id": "ui_test_mount_rationale_649" }, { - "label": "Return the configured equipment IDs.", + "label": "Keyring-store stand-in that records the calls the handlers make.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1874", - "community": 119, - "norm_label": "return the configured equipment ids.", - "id": "ui_mount_rationale_1874" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L716", + "community": 0, + "norm_label": "keyring-store stand-in that records the calls the handlers make.", + "id": "ui_test_mount_rationale_716" }, { - "label": "Await a controller session's pipeline task and return the final handle. ``c", + "label": "A best-effort keyring build can fail; the handlers must not crash.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1882", - "community": 100, - "norm_label": "await a controller session's pipeline task and return the final handle. ``c", - "id": "ui_mount_rationale_1882" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L755", + "community": 2, + "norm_label": "a best-effort keyring build can fail; the handlers must not crash.", + "id": "ui_test_mount_rationale_755" }, { - "label": "Fold the controller's WS frames into the wizard's live phase bar (T2) and su", + "label": "A raising keyring backend surfaces a toast, not an unhandled crash.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1901", - "community": 194, - "norm_label": "fold the controller's ws frames into the wizard's live phase bar (t2) and su", - "id": "ui_mount_rationale_1901" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L764", + "community": 385, + "norm_label": "a raising keyring backend surfaces a toast, not an unhandled crash.", + "id": "ui_test_mount_rationale_764" }, { - "label": "Best-effort close of a NiceGUI dialog (no-op when ``None`` / test mode).", + "label": "Async ``list_projects`` stub for the live-LIMS picker path.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1944", - "community": 194, - "norm_label": "best-effort close of a nicegui dialog (no-op when ``none`` / test mode).", - "id": "ui_mount_rationale_1944" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L940", + "community": 0, + "norm_label": "async ``list_projects`` stub for the live-lims picker path.", + "id": "ui_test_mount_rationale_940" }, { - "label": "Build a ProjectCreateRequest from the wizard state and run it.", + "label": "Both empty -> empty string. One present -> single param.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1952", - "community": 119, - "norm_label": "build a projectcreaterequest from the wizard state and run it.", - "id": "ui_mount_rationale_1952" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1186", + "community": 387, + "norm_label": "both empty -> empty string. one present -> single param.", + "id": "ui_test_mount_rationale_1186" }, { - "label": "Build a RunCreateRequest from the wizard state and run it.", + "label": "Project names with spaces / special chars survive the round trip.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1985", - "community": 69, - "norm_label": "build a runcreaterequest from the wizard state and run it.", - "id": "ui_mount_rationale_1985" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1194", + "community": 80, + "norm_label": "project names with spaces / special chars survive the round trip.", + "id": "ui_test_mount_rationale_1194" }, { - "label": "Drive a create_* call to completion and toast the outcome. When ``wizard_st", + "label": "Phase 4 adds optional file / q / density params to the same URL model.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L2026", - "community": 100, - "norm_label": "drive a create_* call to completion and toast the outcome. when ``wizard_st", - "id": "ui_mount_rationale_2026" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1206", + "community": 504, + "norm_label": "phase 4 adds optional file / q / density params to the same url model.", + "id": "ui_test_mount_rationale_1206" }, { - "label": "Run the validator audit, swallowing failures to a WARN log.", + "label": "The Phase 4 params default empty and drop out of the URL entirely.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L2069", - "community": 100, - "norm_label": "run the validator audit, swallowing failures to a warn log.", - "id": "ui_mount_rationale_2069" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1215", + "community": 429, + "norm_label": "the phase 4 params default empty and drop out of the url entirely.", + "id": "ui_test_mount_rationale_1215" }, { - "label": "Return the absolute path to the bundled ``assets/`` directory. Resolves bot", + "label": "``file`` keeps '/' readable but encodes spaces; ``q`` encodes everything.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/theme.py", - "source_location": "L135", - "community": 177, - "norm_label": "return the absolute path to the bundled ``assets/`` directory. resolves bot", - "id": "ui_theme_rationale_135" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1220", + "community": 430, + "norm_label": "``file`` keeps '/' readable but encodes spaces; ``q`` encodes everything.", + "id": "ui_test_mount_rationale_1220" }, { - "label": "Mount the project's ``assets/`` directory at ``/assets``. Idempotent: a mod", + "label": "Equipment / project / run / received_equipment all classify correctly.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/theme.py", - "source_location": "L150", - "community": 177, - "norm_label": "mount the project's ``assets/`` directory at ``/assets``. idempotent: a mod", - "id": "ui_theme_rationale_150" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1234", + "community": 80, + "norm_label": "equipment / project / run / received_equipment all classify correctly.", + "id": "ui_test_mount_rationale_1234" }, { - "label": "Render the centre-pane file list. Pure render function. Double-clicking a f", + "label": "A node id whose root is not in the hierarchy returns ``(None, False)``. Gua", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L173", - "community": 195, - "norm_label": "render the centre-pane file list. pure render function. double-clicking a f", - "id": "components_file_list_rationale_173" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1255", + "community": 350, + "norm_label": "a node id whose root is not in the hierarchy returns ``(none, false)``. gua", + "id": "ui_test_mount_rationale_1255" }, { - "label": "Render the file-list column header row (Name / Size / Modified / Status).", + "label": "An equipment node payload pulls fields from config.equipment[id].", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L215", - "community": 195, - "norm_label": "render the file-list column header row (name / size / modified / status).", - "id": "components_file_list_rationale_215" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1277", + "community": 80, + "norm_label": "an equipment node payload pulls fields from config.equipment[id].", + "id": "ui_test_mount_rationale_1277" }, { - "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "label": "Asking for a node that isn't in config.equipment returns ``{}``.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L485", - "community": 196, - "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", - "id": "pages_main_rationale_485" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1295", + "community": 80, + "norm_label": "asking for a node that isn't in config.equipment returns ``{}``.", + "id": "ui_test_mount_rationale_1295" }, { - "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "label": "The project payload counts Run_* and TestRun_* directories.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L524", - "community": 205, - "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", - "id": "pages_main_rationale_524" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1302", + "community": 80, + "norm_label": "the project payload counts run_* and testrun_* directories.", + "id": "ui_test_mount_rationale_1302" }, { - "label": "uvicorn ``--factory`` entrypoint.", + "label": "The run payload decodes creation.json into the metadata fields.", "file_type": "rationale", - "source_file": "tests/e2e/_test_app.py", - "source_location": "L910", - "community": 146, - "norm_label": "uvicorn ``--factory`` entrypoint.", - "id": "e2e_test_app_rationale_910" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1321", + "community": 80, + "norm_label": "the run payload decodes creation.json into the metadata fields.", + "id": "ui_test_mount_rationale_1321" }, { - "label": "uvicorn ``--factory`` entrypoint.", + "label": "A run dir without a creation.json yields {path, name}, not crash.", "file_type": "rationale", - "source_file": "tests/e2e/_test_app.py", - "source_location": "L899", - "community": 146, - "norm_label": "uvicorn ``--factory`` entrypoint.", - "id": "e2e_test_app_rationale_899" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1366", + "community": 33, + "norm_label": "a run dir without a creation.json yields {path, name}, not crash.", + "id": "ui_test_mount_rationale_1366" }, { - "label": "uvicorn ``--factory`` entrypoint.", + "label": "The selected-node fields end up on MainPageState for the renderer.", "file_type": "rationale", - "source_file": "tests/e2e/_test_app.py", - "source_location": "L896", - "community": 146, - "norm_label": "uvicorn ``--factory`` entrypoint.", - "id": "e2e_test_app_rationale_896" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1375", + "community": 131, + "norm_label": "the selected-node fields end up on mainpagestate for the renderer.", + "id": "ui_test_mount_rationale_1375" }, { - "label": "RESUME \u2014 Main-window UI refresh (Phase 4 in progress)", - "file_type": "document", - "source_file": "RESUME.md", - "source_location": "L1", - "community": 230, - "norm_label": "resume \u2014 main-window ui refresh (phase 4 in progress)", - "id": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress" + "label": "Phase 4 selection / search / density fields reach MainPageState.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1391", + "community": 131, + "norm_label": "phase 4 selection / search / density fields reach mainpagestate.", + "id": "ui_test_mount_rationale_1391" }, { - "label": "A degraded folder scan (item_count=None / rollup=None) still renders.", + "label": "A clicked path is resolved from the in-memory feed into a file payload.", "file_type": "rationale", - "source_file": "tests/unit/ui/test_metadata_pane.py", - "source_location": "L120", - "community": 156, - "norm_label": "a degraded folder scan (item_count=none / rollup=none) still renders.", - "id": "ui_test_metadata_pane_rationale_120" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1412", + "community": 2, + "norm_label": "a clicked path is resolved from the in-memory feed into a file payload.", + "id": "ui_test_mount_rationale_1412" }, { - "label": "With no node selected, the sub-card sits beneath the empty-state hint.", + "label": "Empty path or a path matching no current entry resolves to None.", "file_type": "rationale", - "source_file": "tests/unit/ui/test_metadata_pane.py", - "source_location": "L142", - "community": 156, - "norm_label": "with no node selected, the sub-card sits beneath the empty-state hint.", - "id": "ui_test_metadata_pane_rationale_142" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1438", + "community": 125, + "norm_label": "empty path or a path matching no current entry resolves to none.", + "id": "ui_test_mount_rationale_1438" }, { - "label": "A selected run node's content stays; the sub-card appends below it.", + "label": "A tombstone (\"On NAS\") file has no on-disk copy, so size is None.", "file_type": "rationale", - "source_file": "tests/unit/ui/test_metadata_pane.py", - "source_location": "L150", - "community": 156, - "norm_label": "a selected run node's content stays; the sub-card appends below it.", - "id": "ui_test_metadata_pane_rationale_150" + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1447", + "community": 14, + "norm_label": "a tombstone (\"on nas\") file has no on-disk copy, so size is none.", + "id": "ui_test_mount_rationale_1447" + }, + { + "label": "A directory match delegates to the one-level folder aggregate scan.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1468", + "community": 33, + "norm_label": "a directory match delegates to the one-level folder aggregate scan.", + "id": "ui_test_mount_rationale_1468" + }, + { + "label": "A scan failure yields item_count=None + neutral rollup, no raise.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1495", + "community": 107, + "norm_label": "a scan failure yields item_count=none + neutral rollup, no raise.", + "id": "ui_test_mount_rationale_1495" + }, + { + "label": "A force-refresh writes the fresh scan onto the per-tab feed payload and reco", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1523", + "community": 107, + "norm_label": "a force-refresh writes the fresh scan onto the per-tab feed payload and reco", + "id": "ui_test_mount_rationale_1523" }, { "label": "Nothing selected -> no scan, no write, no raise.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1535", - "community": 298, + "source_location": "L1541", + "community": 14, "norm_label": "nothing selected -> no scan, no write, no raise.", - "id": "ui_test_mount_rationale_1535" + "id": "ui_test_mount_rationale_1541" }, { "label": "A failed scan keeps the existing payload and warns.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1543", - "community": 77, + "source_location": "L1549", + "community": 50, "norm_label": "a failed scan keeps the existing payload and warns.", - "id": "ui_test_mount_rationale_1543" + "id": "ui_test_mount_rationale_1549" }, { "label": "An unknown sys.platform falls through to False so the toast can warn.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1562", - "community": 103, + "source_location": "L1568", + "community": 131, "norm_label": "an unknown sys.platform falls through to false so the toast can warn.", - "id": "ui_test_mount_rationale_1562" + "id": "ui_test_mount_rationale_1568" }, { "label": "macOS dispatches to the ``open`` command.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1582", - "community": 299, + "source_location": "L1588", + "community": 50, "norm_label": "macos dispatches to the ``open`` command.", - "id": "ui_test_mount_rationale_1582" + "id": "ui_test_mount_rationale_1588" }, { "label": "A subprocess failure is caught and surfaces False so the caller can toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1591", - "community": 269, + "source_location": "L1597", + "community": 125, "norm_label": "a subprocess failure is caught and surfaces false so the caller can toast.", - "id": "ui_test_mount_rationale_1591" + "id": "ui_test_mount_rationale_1597" }, { "label": "Minimal NiceGUI surface stand-in: clipboard + navigate.to + notify.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1615", - "community": 17, + "source_location": "L1621", + "community": 14, "norm_label": "minimal nicegui surface stand-in: clipboard + navigate.to + notify.", - "id": "ui_test_mount_rationale_1615" + "id": "ui_test_mount_rationale_1621" }, { "label": "``open_in_os`` action calls the platform opener and reports success.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1640", - "community": 17, + "source_location": "L1646", + "community": 14, "norm_label": "``open_in_os`` action calls the platform opener and reports success.", - "id": "ui_test_mount_rationale_1640" + "id": "ui_test_mount_rationale_1646" }, { "label": "When the opener returns False the action surfaces a negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1652", - "community": 297, + "source_location": "L1658", + "community": 131, "norm_label": "when the opener returns false the action surfaces a negative toast.", - "id": "ui_test_mount_rationale_1652" + "id": "ui_test_mount_rationale_1658" }, { "label": "``copy_path`` writes the entry path to the NiceGUI clipboard.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1661", - "community": 62, + "source_location": "L1667", + "community": 33, "norm_label": "``copy_path`` writes the entry path to the nicegui clipboard.", - "id": "ui_test_mount_rationale_1661" + "id": "ui_test_mount_rationale_1667" }, { "label": "An unknown action verb is logged + toasted without raising.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1669", - "community": 162, + "source_location": "L1675", + "community": 125, "norm_label": "an unknown action verb is logged + toasted without raising.", - "id": "ui_test_mount_rationale_1669" + "id": "ui_test_mount_rationale_1675" }, { "label": "An entry with no path triggers the early-return toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1676", - "community": 270, + "source_location": "L1682", + "community": 107, "norm_label": "an entry with no path triggers the early-return toast.", - "id": "ui_test_mount_rationale_1676" + "id": "ui_test_mount_rationale_1682" }, { "label": "Run any pending mount background tasks to completion.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1696", - "community": 77, + "source_location": "L1702", + "community": 50, "norm_label": "run any pending mount background tasks to completion.", - "id": "ui_test_mount_rationale_1696" + "id": "ui_test_mount_rationale_1702" }, { "label": "Force-sync routes to ``deps.nas_sync.enqueue`` with the run path.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1711", - "community": 78, + "source_location": "L1717", + "community": 86, "norm_label": "force-sync routes to ``deps.nas_sync.enqueue`` with the run path.", - "id": "ui_test_mount_rationale_1711" + "id": "ui_test_mount_rationale_1717" }, { "label": "Force-sync without a wired NAS sync surfaces a negative toast (no raise).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1724", - "community": 145, + "source_location": "L1730", + "community": 33, "norm_label": "force-sync without a wired nas sync surfaces a negative toast (no raise).", - "id": "ui_test_mount_rationale_1724" + "id": "ui_test_mount_rationale_1730" }, { "label": "The early-exit when config is missing keeps the action a no-op.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1731", - "community": 103, + "source_location": "L1737", + "community": 107, "norm_label": "the early-exit when config is missing keeps the action a no-op.", - "id": "ui_test_mount_rationale_1731" + "id": "ui_test_mount_rationale_1737" }, { "label": "``view_log`` dispatches to the dialog opener helper.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1740", - "community": 145, + "source_location": "L1746", + "community": 33, "norm_label": "``view_log`` dispatches to the dialog opener helper.", - "id": "ui_test_mount_rationale_1740" + "id": "ui_test_mount_rationale_1746" }, { "label": "An unknown action verb is reported but doesn't raise.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1750", - "community": 145, + "source_location": "L1756", + "community": 33, "norm_label": "an unknown action verb is reported but doesn't raise.", - "id": "ui_test_mount_rationale_1750" + "id": "ui_test_mount_rationale_1756" }, { "label": "``clear_verified`` deletes the run directory via the local helper.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1759", - "community": 17, + "source_location": "L1765", + "community": 14, "norm_label": "``clear_verified`` deletes the run directory via the local helper.", - "id": "ui_test_mount_rationale_1759" + "id": "ui_test_mount_rationale_1765" }, { "label": "The bulk action clears every ``synced`` row and toasts the count.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1784", - "community": 17, + "source_location": "L1790", + "community": 14, "norm_label": "the bulk action clears every ``synced`` row and toasts the count.", - "id": "ui_test_mount_rationale_1784" + "id": "ui_test_mount_rationale_1790" }, { "label": "The early-exit when config is missing produces a toast, no task.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1811", - "community": 55, + "source_location": "L1817", + "community": 86, "norm_label": "the early-exit when config is missing produces a toast, no task.", - "id": "ui_test_mount_rationale_1811" + "id": "ui_test_mount_rationale_1817" }, { "label": "An exception from the clear sweep is caught + toasted.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1820", - "community": 162, + "source_location": "L1826", + "community": 125, "norm_label": "an exception from the clear sweep is caught + toasted.", - "id": "ui_test_mount_rationale_1820" + "id": "ui_test_mount_rationale_1826" }, { "label": "Lightweight ``app`` stand-in carrying ``storage.tab``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1844", + "source_location": "L1850", "community": 0, "norm_label": "lightweight ``app`` stand-in carrying ``storage.tab``.", - "id": "ui_test_mount_rationale_1844" + "id": "ui_test_mount_rationale_1850" }, { "label": "Without a selected node the feed isn't started and returns ``[]``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1855", - "community": 62, + "source_location": "L1861", + "community": 33, "norm_label": "without a selected node the feed isn't started and returns ``[]``.", - "id": "ui_test_mount_rationale_1855" + "id": "ui_test_mount_rationale_1861" }, { "label": "The first call mounts a FolderFeed + RefreshCoordinator on tab storage.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1865", - "community": 77, + "source_location": "L1871", + "community": 158, "norm_label": "the first call mounts a folderfeed + refreshcoordinator on tab storage.", - "id": "ui_test_mount_rationale_1865" + "id": "ui_test_mount_rationale_1871" }, { "label": "When the feed's last_payload is set, entries are projected into FileListEntr", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1878", - "community": 78, + "source_location": "L1884", + "community": 86, "norm_label": "when the feed's last_payload is set, entries are projected into filelistentr", - "id": "ui_test_mount_rationale_1878" + "id": "ui_test_mount_rationale_1884" }, { "label": "The fetch is a no-op when RefreshCoordinator just walked the tree.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1920", - "community": 78, + "source_location": "L1926", + "community": 157, "norm_label": "the fetch is a no-op when refreshcoordinator just walked the tree.", - "id": "ui_test_mount_rationale_1920" + "id": "ui_test_mount_rationale_1926" }, { "label": "A successful scan records the refresh on the coordinator.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1937", - "community": 163, + "source_location": "L1943", + "community": 106, "norm_label": "a successful scan records the refresh on the coordinator.", - "id": "ui_test_mount_rationale_1937" + "id": "ui_test_mount_rationale_1943" }, { "label": "A scan failure returns ``None`` so the feed keeps polling.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1956", - "community": 165, + "source_location": "L1962", + "community": 173, "norm_label": "a scan failure returns ``none`` so the feed keeps polling.", - "id": "ui_test_mount_rationale_1956" - }, - { - "label": "A run with no sync-queue job still renders a dialog without raising.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1972", - "community": 165, - "norm_label": "a run with no sync-queue job still renders a dialog without raising.", - "id": "ui_test_mount_rationale_1972" + "id": "ui_test_mount_rationale_1962" }, { "label": "A run with a sync-queue job renders its state without raising.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1981", - "community": 62, + "source_location": "L1987", + "community": 158, "norm_label": "a run with a sync-queue job renders its state without raising.", - "id": "ui_test_mount_rationale_1981" - }, - { - "label": "Any exception raised by a per-kind builder is logged + swallowed.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2009", - "community": 55, - "norm_label": "any exception raised by a per-kind builder is logged + swallowed.", - "id": "ui_test_mount_rationale_2009" + "id": "ui_test_mount_rationale_1987" }, { "label": "The relay payload pulls id+label from build_received_equipment_nodes.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2022", - "community": 62, + "source_location": "L2028", + "community": 158, "norm_label": "the relay payload pulls id+label from build_received_equipment_nodes.", - "id": "ui_test_mount_rationale_2022" + "id": "ui_test_mount_rationale_2028" }, { "label": "An unknown relay id still produces a payload (best-effort label).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2038", - "community": 77, + "source_location": "L2044", + "community": 158, "norm_label": "an unknown relay id still produces a payload (best-effort label).", - "id": "ui_test_mount_rationale_2038" + "id": "ui_test_mount_rationale_2044" }, { "label": "A node id without an equipment/project split returns ``{}``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2045", - "community": 78, + "source_location": "L2051", + "community": 86, "norm_label": "a node id without an equipment/project split returns ``{}``.", - "id": "ui_test_mount_rationale_2045" + "id": "ui_test_mount_rationale_2051" }, { - "label": "Only directory children whose names start with the prefix are counted.", + "label": "A missing parent dir returns 0 (no FS pre-check needed).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2056", - "community": 296, - "norm_label": "only directory children whose names start with the prefix are counted.", - "id": "ui_test_mount_rationale_2056" + "source_location": "L2057", + "community": 86, + "norm_label": "a missing parent dir returns 0 (no fs pre-check needed).", + "id": "ui_test_mount_rationale_2057" }, { - "label": "A corrupt creation.json yields {path, name}, never crashes.", + "label": "Only directory children whose names start with the prefix are counted.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2065", - "community": 295, - "norm_label": "a corrupt creation.json yields {path, name}, never crashes.", - "id": "ui_test_mount_rationale_2065" + "source_location": "L2062", + "community": 69, + "norm_label": "only directory children whose names start with the prefix are counted.", + "id": "ui_test_mount_rationale_2062" }, { "label": "When nas_sync.enqueue raises, the background task swallows + toasts.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2078", - "community": 172, + "source_location": "L2084", + "community": 69, "norm_label": "when nas_sync.enqueue raises, the background task swallows + toasts.", - "id": "ui_test_mount_rationale_2078" + "id": "ui_test_mount_rationale_2084" }, { "label": "When the clear helper raises, the background task swallows + toasts.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2094", - "community": 172, + "source_location": "L2100", + "community": 106, "norm_label": "when the clear helper raises, the background task swallows + toasts.", - "id": "ui_test_mount_rationale_2094" + "id": "ui_test_mount_rationale_2100" }, { "label": "The 0-file path reports ``already cleared`` rather than ``cleared N``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2110", - "community": 163, + "source_location": "L2116", + "community": 106, "norm_label": "the 0-file path reports ``already cleared`` rather than ``cleared n``.", - "id": "ui_test_mount_rationale_2110" + "id": "ui_test_mount_rationale_2116" }, { "label": "A clipboard write failure is caught and reported as a negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2123", - "community": 165, + "source_location": "L2129", + "community": 173, "norm_label": "a clipboard write failure is caught and reported as a negative toast.", - "id": "ui_test_mount_rationale_2123" + "id": "ui_test_mount_rationale_2129" }, { "label": "A fake ``ui`` whose factories build recording stand-ins. Unlike ``_UiSpy``", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2160", + "source_location": "L2166", "community": 0, "norm_label": "a fake ``ui`` whose factories build recording stand-ins. unlike ``_uispy``", - "id": "ui_test_mount_rationale_2160" + "id": "ui_test_mount_rationale_2166" }, { "label": "No probe wired -> a failure result rather than a crash.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2204", - "community": 55, + "source_location": "L2210", + "community": 69, "norm_label": "no probe wired -> a failure result rather than a crash.", - "id": "ui_test_mount_rationale_2204" + "id": "ui_test_mount_rationale_2210" }, { "label": "A reachable probe maps ok/latency into a Connected result.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2216", - "community": 62, + "source_location": "L2222", + "community": 157, "norm_label": "a reachable probe maps ok/latency into a connected result.", - "id": "ui_test_mount_rationale_2216" + "id": "ui_test_mount_rationale_2222" }, { "label": "An async probe is awaited before its dict is mapped.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2243", - "community": 243, + "source_location": "L2249", + "community": 180, "norm_label": "an async probe is awaited before its dict is mapped.", - "id": "ui_test_mount_rationale_2243" + "id": "ui_test_mount_rationale_2249" }, { "label": "A half-wired install names its first-failing gate as the next action.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2273", - "community": 172, + "source_location": "L2279", + "community": 69, "norm_label": "a half-wired install names its first-failing gate as the next action.", - "id": "ui_test_mount_rationale_2273" + "id": "ui_test_mount_rationale_2279" }, { "label": "A fully-satisfied install has no outstanding next action.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2280", + "source_location": "L2286", "community": 325, "norm_label": "a fully-satisfied install has no outstanding next action.", - "id": "ui_test_mount_rationale_2280" + "id": "ui_test_mount_rationale_2286" }, { "label": "No sync-state writer wired -> negative toast, no task spawned.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2304", - "community": 163, + "source_location": "L2310", + "community": 106, "norm_label": "no sync-state writer wired -> negative toast, no task spawned.", - "id": "ui_test_mount_rationale_2304" + "id": "ui_test_mount_rationale_2310" }, { "label": "A path with no enclosing run root surfaces a negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2313", - "community": 326, + "source_location": "L2319", + "community": 14, "norm_label": "a path with no enclosing run root surfaces a negative toast.", - "id": "ui_test_mount_rationale_2313" + "id": "ui_test_mount_rationale_2319" }, { "label": "A resolvable file flips keep_local via the writer and fires on_done.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2324", - "community": 26, + "source_location": "L2330", + "community": 23, "norm_label": "a resolvable file flips keep_local via the writer and fires on_done.", - "id": "ui_test_mount_rationale_2324" + "id": "ui_test_mount_rationale_2330" }, { "label": "The ``keep_local`` action routes to ``_toggle_keep_local``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2379", - "community": 17, + "source_location": "L2385", + "community": 14, "norm_label": "the ``keep_local`` action routes to ``_toggle_keep_local``.", - "id": "ui_test_mount_rationale_2379" + "id": "ui_test_mount_rationale_2385" }, { "label": "On win32 the helper calls ``os.startfile`` and reports success.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2396", - "community": 55, + "source_location": "L2402", + "community": 170, "norm_label": "on win32 the helper calls ``os.startfile`` and reports success.", - "id": "ui_test_mount_rationale_2396" + "id": "ui_test_mount_rationale_2402" }, { "label": "No controller -> a negative toast and no dialog open.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2430", - "community": 243, + "source_location": "L2436", + "community": 180, "norm_label": "no controller -> a negative toast and no dialog open.", - "id": "ui_test_mount_rationale_2430" + "id": "ui_test_mount_rationale_2436" + }, + { + "label": "A wired controller builds the modal and opens it (no raise).", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2442", + "community": 180, + "norm_label": "a wired controller builds the modal and opens it (no raise).", + "id": "ui_test_mount_rationale_2442" }, { "label": "The details dialog renders the session state plus pending/error lines.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2457", - "community": 327, + "source_location": "L2463", + "community": 300, "norm_label": "the details dialog renders the session state plus pending/error lines.", - "id": "ui_test_mount_rationale_2457" + "id": "ui_test_mount_rationale_2463" }, { "label": "A session not awaiting input cannot be resumed -> negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2481", - "community": 17, + "source_location": "L2487", + "community": 14, "norm_label": "a session not awaiting input cannot be resumed -> negative toast.", - "id": "ui_test_mount_rationale_2481" + "id": "ui_test_mount_rationale_2487" }, { "label": "A suspended session re-opens its escalation dialog with parked fields.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2490", - "community": 94, + "source_location": "L2496", + "community": 171, "norm_label": "a suspended session re-opens its escalation dialog with parked fields.", - "id": "ui_test_mount_rationale_2490" + "id": "ui_test_mount_rationale_2496" }, { "label": "The dialog's Submit handler calls ``controller.resume`` in the background.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2519", - "community": 26, + "source_location": "L2525", + "community": 23, "norm_label": "the dialog's submit handler calls ``controller.resume`` in the background.", - "id": "ui_test_mount_rationale_2519" + "id": "ui_test_mount_rationale_2525" }, { "label": "The dialog's Cancel handler routes through ``_cancel_session``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2551", - "community": 125, + "source_location": "L2557", + "community": 23, "norm_label": "the dialog's cancel handler routes through ``_cancel_session``.", - "id": "ui_test_mount_rationale_2551" + "id": "ui_test_mount_rationale_2557" }, { "label": "The \u00a79.4 dialog's Discard button cancels with discard_files=True.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2591", - "community": 55, + "source_location": "L2597", + "community": 170, "norm_label": "the \u00a79.4 dialog's discard button cancels with discard_files=true.", - "id": "ui_test_mount_rationale_2591" + "id": "ui_test_mount_rationale_2597" }, { "label": "The Keep-files button cancels with discard_files=False.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2610", - "community": 26, + "source_location": "L2616", + "community": 171, "norm_label": "the keep-files button cancels with discard_files=false.", - "id": "ui_test_mount_rationale_2610" + "id": "ui_test_mount_rationale_2616" }, { "label": "A cancel failure is caught and toasted, not raised.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2627", - "community": 185, + "source_location": "L2633", + "community": 172, "norm_label": "a cancel failure is caught and toasted, not raised.", - "id": "ui_test_mount_rationale_2627" + "id": "ui_test_mount_rationale_2633" }, { "label": "The Back button closes the dialog without cancelling.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2643", - "community": 186, + "source_location": "L2649", + "community": 181, "norm_label": "the back button closes the dialog without cancelling.", - "id": "ui_test_mount_rationale_2643" + "id": "ui_test_mount_rationale_2649" }, { "label": "With a job row, the dialog renders each populated field line.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2657", - "community": 94, + "source_location": "L2663", + "community": 171, "norm_label": "with a job row, the dialog renders each populated field line.", - "id": "ui_test_mount_rationale_2657" + "id": "ui_test_mount_rationale_2663" }, { "label": "Without a job row the dialog shows the 'no sync job' line.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2685", - "community": 94, + "source_location": "L2691", + "community": 54, "norm_label": "without a job row the dialog shows the 'no sync job' line.", - "id": "ui_test_mount_rationale_2685" + "id": "ui_test_mount_rationale_2691" }, { "label": "No progress view on the wizard state -> the consumer returns at once.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2701", - "community": 26, + "source_location": "L2707", + "community": 23, "norm_label": "no progress view on the wizard state -> the consumer returns at once.", - "id": "ui_test_mount_rationale_2701" + "id": "ui_test_mount_rationale_2707" }, { "label": "An input_required frame opens the dialog; a done frame closes it.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2712", - "community": 26, + "source_location": "L2718", + "community": 50, "norm_label": "an input_required frame opens the dialog; a done frame closes it.", - "id": "ui_test_mount_rationale_2712" + "id": "ui_test_mount_rationale_2718" }, { "label": "A subscribe error is logged, not raised.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2749", - "community": 125, + "source_location": "L2755", + "community": 54, "norm_label": "a subscribe error is logged, not raised.", - "id": "ui_test_mount_rationale_2749" + "id": "ui_test_mount_rationale_2755" }, { "label": "Submitting a run with no template selected surfaces a negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2789", - "community": 55, + "source_location": "L2795", + "community": 170, "norm_label": "submitting a run with no template selected surfaces a negative toast.", - "id": "ui_test_mount_rationale_2789" + "id": "ui_test_mount_rationale_2795" }, { "label": "``_render_run_wizard`` wires templates/equipment into the run-wizard page.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2800", - "community": 185, + "source_location": "L2806", + "community": 172, "norm_label": "``_render_run_wizard`` wires templates/equipment into the run-wizard page.", - "id": "ui_test_mount_rationale_2800" + "id": "ui_test_mount_rationale_2806" }, { "label": "Non-EquipmentNode keys in the hierarchy are ignored; unknown root -> treated", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2829", - "community": 94, + "source_location": "L2835", + "community": 54, "norm_label": "non-equipmentnode keys in the hierarchy are ignored; unknown root -> treated", - "id": "ui_test_mount_rationale_2829" + "id": "ui_test_mount_rationale_2835" }, { "label": "The received_equipment kind routes to the relay-equipment builder.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2838", - "community": 186, + "source_location": "L2844", + "community": 181, "norm_label": "the received_equipment kind routes to the relay-equipment builder.", - "id": "ui_test_mount_rationale_2838" + "id": "ui_test_mount_rationale_2844" }, { "label": "A matching equipment id projects its config fields into the payload.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2854", - "community": 94, + "source_location": "L2860", + "community": 54, "norm_label": "a matching equipment id projects its config fields into the payload.", - "id": "ui_test_mount_rationale_2854" + "id": "ui_test_mount_rationale_2860" }, { "label": "A schema_version mismatch (read_catalogue -> None) yields ``[]``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2876", - "community": 242, + "source_location": "L2882", + "community": 54, "norm_label": "a schema_version mismatch (read_catalogue -> none) yields ``[]``.", - "id": "ui_test_mount_rationale_2876" + "id": "ui_test_mount_rationale_2882" }, { "label": "A raising ``app.storage.tab`` degrades to an in-memory feed (no tab).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2888", - "community": 77, + "source_location": "L2894", + "community": 50, "norm_label": "a raising ``app.storage.tab`` degrades to an in-memory feed (no tab).", - "id": "ui_test_mount_rationale_2888" + "id": "ui_test_mount_rationale_2894" }, { "label": "A raising evaluator degrades to 'not ready' (banner stays up).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2910", - "community": 26, + "source_location": "L2916", + "community": 50, "norm_label": "a raising evaluator degrades to 'not ready' (banner stays up).", - "id": "ui_test_mount_rationale_2910" + "id": "ui_test_mount_rationale_2916" }, { "label": "An equipment id absent from config yields ``{}``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2923", - "community": 125, + "source_location": "L2929", + "community": 54, "norm_label": "an equipment id absent from config yields ``{}``.", - "id": "ui_test_mount_rationale_2923" + "id": "ui_test_mount_rationale_2929" }, { "label": "With no SYNCED rows the sweep clears nothing and toasts 'none'.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2931", - "community": 17, + "source_location": "L2937", + "community": 351, "norm_label": "with no synced rows the sweep clears nothing and toasts 'none'.", - "id": "ui_test_mount_rationale_2931" + "id": "ui_test_mount_rationale_2937" }, { "label": "A run root that can't yield a relative path surfaces a negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2948", - "community": 125, + "source_location": "L2954", + "community": 54, "norm_label": "a run root that can't yield a relative path surfaces a negative toast.", - "id": "ui_test_mount_rationale_2948" + "id": "ui_test_mount_rationale_2954" }, { "label": "A failing ``controller.resume`` is caught + toasted, not raised.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2966", - "community": 26, + "source_location": "L2972", + "community": 23, "norm_label": "a failing ``controller.resume`` is caught + toasted, not raised.", - "id": "ui_test_mount_rationale_2966" + "id": "ui_test_mount_rationale_2972" }, { "label": "An import/engine failure in the outer try yields ``{}``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2995", - "community": 185, + "source_location": "L3001", + "community": 172, "norm_label": "an import/engine failure in the outer try yields ``{}``.", - "id": "ui_test_mount_rationale_2995" + "id": "ui_test_mount_rationale_3001" }, { "label": "A staging-query failure degrades to an empty dock, not a crash.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L3011", - "community": 186, + "source_location": "L3017", + "community": 181, "norm_label": "a staging-query failure degrades to an empty dock, not a crash.", - "id": "ui_test_mount_rationale_3011" + "id": "ui_test_mount_rationale_3017" }, { - "label": "Dispatch a per-run context action to its backend surface. Mirrors :func:`ap", + "label": "staging_root is opt-in: a blank value finalizes cleanly (the field is option", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1261", - "community": 68, - "norm_label": "dispatch a per-run context action to its backend surface. mirrors :func:`ap", - "id": "ui_mount_rationale_1261" + "source_file": "tests/unit/ui/test_settings_page.py", + "source_location": "L91", + "community": 178, + "norm_label": "staging_root is opt-in: a blank value finalizes cleanly (the field is option", + "id": "ui_test_settings_page_rationale_91" }, { - "label": "Bulk-clear every staged run whose sync job is verified. Wired from the file", + "label": "A password already in the OS keyring opens the row in *Set*.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1319", - "community": 168, - "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file", - "id": "ui_mount_rationale_1319" + "source_file": "tests/unit/ui/test_settings_page.py", + "source_location": "L119", + "community": 310, + "norm_label": "a password already in the os keyring opens the row in *set*.", + "id": "ui_test_settings_page_rationale_119" }, { - "label": "Handle ``Open in OS`` / ``Copy path`` / ``Keep local`` file actions.", + "label": "test_wizard_has_four_steps_without_signal_step()", + "file_type": "code", + "source_file": "tests/unit/ui/test_wizard_equipment.py", + "source_location": "L17", + "community": 242, + "norm_label": "test_wizard_has_four_steps_without_signal_step()", + "id": "ui_test_wizard_equipment_test_wizard_has_four_steps_without_signal_step" + }, + { + "label": "Only a fully-``synced`` run rollup is clearable.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1364", - "community": 168, - "norm_label": "handle ``open in os`` / ``copy path`` / ``keep local`` file actions.", - "id": "ui_mount_rationale_1364" + "source_file": "tests/unit/ui/test_staging_page.py", + "source_location": "L150", + "community": 41, + "norm_label": "only a fully-``synced`` run rollup is clearable.", + "id": "ui_test_staging_page_rationale_150" }, { - "label": "Flip a file's ``keep_local`` flag via the orchestrator's writer. Operator-f", + "label": "When NiceGUI isn't importable the renderer returns a debug dict. This is th", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1403", - "community": 68, - "norm_label": "flip a file's ``keep_local`` flag via the orchestrator's writer. operator-f", - "id": "ui_mount_rationale_1403" + "source_file": "tests/unit/ui/test_staging_page.py", + "source_location": "L175", + "community": 41, + "norm_label": "when nicegui isn't importable the renderer returns a debug dict. this is th", + "id": "ui_test_staging_page_rationale_175" }, { - "label": "Launch the host OS's default opener for ``path``. Returns False on platform", + "label": "An empty dock state initializes without errors.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1446", - "community": 57, - "norm_label": "launch the host os's default opener for ``path``. returns false on platform", - "id": "ui_mount_rationale_1446" + "source_file": "tests/unit/ui/test_staging_page.py", + "source_location": "L192", + "community": 41, + "norm_label": "an empty dock state initializes without errors.", + "id": "ui_test_staging_page_rationale_192" }, { - "label": "Build the Operations-panel rows from the live session store (T3). Uses the", + "label": "The main-window refresh tokens are emitted into the :root block.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1474", - "community": 57, - "norm_label": "build the operations-panel rows from the live session store (t3). uses the", - "id": "ui_mount_rationale_1474" + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L44", + "community": 70, + "norm_label": "the main-window refresh tokens are emitted into the :root block.", + "id": "ui_test_theme_rationale_44" }, { - "label": "Show a lightweight details/\"log\" dialog for one in-flight operation. The \u00a79", + "label": "Regression guard: every var(--\u2026) referenced by a UI component is emitted. T", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1510", - "community": 175, - "norm_label": "show a lightweight details/\"log\" dialog for one in-flight operation. the \u00a79", - "id": "ui_mount_rationale_1510" + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L57", + "community": 70, + "norm_label": "regression guard: every var(--...) referenced by a ui component is emitted. t", + "id": "ui_test_theme_rationale_57" }, { - "label": "Resume a suspended session by re-opening its \u00a79.1 input dialog (T5). Reads", + "label": "All shadows are navy-tinted (DESIGN.md \u00a704).", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1544", - "community": 154, - "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads", - "id": "ui_mount_rationale_1544" + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L134", + "community": 70, + "norm_label": "all shadows are navy-tinted (design.md \u00a704).", + "id": "ui_test_theme_rationale_134" }, { - "label": "Open the \u00a79.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm", + "label": "The block opens with ``:root {`` per DESIGN.md \u00a707.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1576", - "community": 154, - "norm_label": "open the \u00a79.1 escalation dialog; submit resumes, cancel confirms (t5). subm", - "id": "ui_mount_rationale_1576" + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L147", + "community": 70, + "norm_label": "the block opens with ``:root {`` per design.md \u00a707.", + "id": "ui_test_theme_rationale_147" }, { - "label": "Resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", + "label": "A body / heading / mono reset block follows the ``:root {}``.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1614", - "community": 57, - "norm_label": "resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", - "id": "ui_mount_rationale_1614" + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L154", + "community": 70, + "norm_label": "a body / heading / mono reset block follows the ``:root {}``.", + "id": "ui_test_theme_rationale_154" }, { - "label": "Cancel an in-flight session via the \u00a79.4 Discard / Keep dialog (T4). The op", + "label": "In source layout, the resolver returns ``/assets/``.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1623", - "community": 57, - "norm_label": "cancel an in-flight session via the \u00a79.4 discard / keep dialog (t4). the op", - "id": "ui_mount_rationale_1623" + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L163", + "community": 70, + "norm_label": "in source layout, the resolver returns ``/assets/``.", + "id": "ui_test_theme_rationale_163" }, { - "label": "Open a NiceGUI dialog showing the run's sync-queue job state. The operator-", + "label": "Sanity: running without --test leaves the env var unset and writes no test confi", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1664", - "community": 68, - "norm_label": "open a nicegui dialog showing the run's sync-queue job state. the operator-", - "id": "ui_mount_rationale_1664" + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L556", + "community": 9, + "norm_label": "sanity: running without --test leaves the env var unset and writes no test confi", + "id": "tray_test_main_rationale_556" }, { - "label": "Return the settings sections the operator still needs to fill in. Mirrors a", + "label": "A cancel with ``discard_files=True`` deletes the partial directory.", "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1712", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L496", + "community": 415, + "norm_label": "a cancel with ``discard_files=true`` deletes the partial directory.", + "id": "controller_test_creation_flow_rationale_496" + }, + { + "label": "A cancel with ``discard_files=False`` leaves the partial directory.", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L534", + "community": 410, + "norm_label": "a cancel with ``discard_files=false`` leaves the partial directory.", + "id": "controller_test_creation_flow_rationale_534" + }, + { + "label": "A rendered file containing ```` must trip the post-validate gate.", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L558", + "community": 141, + "norm_label": "a rendered file containing ```` must trip the post-validate gate.", + "id": "controller_test_creation_flow_rationale_558" + }, + { + "label": "T1 (\u00a7C1): the production ``ReadmeGenerator`` -- injected by ``tray.dependenc", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L688", + "community": 403, + "norm_label": "t1 (\u00a7c1): the production ``readmegenerator`` -- injected by ``tray.dependenc", + "id": "controller_test_creation_flow_rationale_688" + }, + { + "label": "A template-required README field missing from ``readme_extra`` must trigger", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L764", + "community": 409, + "norm_label": "a template-required readme field missing from ``readme_extra`` must trigger", + "id": "controller_test_creation_flow_rationale_764" + }, + { + "label": "When ``readme_extra`` supplies a non-empty value for a required field the va", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L800", + "community": 141, + "norm_label": "when ``readme_extra`` supplies a non-empty value for a required field the va", + "id": "controller_test_creation_flow_rationale_800" + }, + { + "label": "When the operator cancels the input-required prompt (host returns ``aborted=", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L844", + "community": 405, + "norm_label": "when the operator cancels the input-required prompt (host returns ``aborted=", + "id": "controller_test_creation_flow_rationale_844" + }, + { + "label": "``_cleanup`` swallows compose-path errors gracefully.", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L902", + "community": 406, + "norm_label": "``_cleanup`` swallows compose-path errors gracefully.", + "id": "controller_test_creation_flow_rationale_902" + }, + { + "label": "``_cleanup`` removes the destination directory when ``discard_files=True``.", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L925", + "community": 408, + "norm_label": "``_cleanup`` removes the destination directory when ``discard_files=true``.", + "id": "controller_test_creation_flow_rationale_925" + }, + { + "label": "A config.yaml-required README field missing from ``readme_extra`` must trigg", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L942", + "community": 413, + "norm_label": "a config.yaml-required readme field missing from ``readme_extra`` must trigg", + "id": "controller_test_creation_flow_rationale_942" + }, + { + "label": "A Copier render failure (e.g. dst exists) transitions the session to ``FAILE", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L968", + "community": 412, + "norm_label": "a copier render failure (e.g. dst exists) transitions the session to ``faile", + "id": "controller_test_creation_flow_rationale_968" + }, + { + "label": "The controller writes ``equipment.json`` under ``//.exlab-wiz", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L996", + "community": 307, + "norm_label": "the controller writes ``equipment.json`` under ``//.exlab-wiz", + "id": "controller_test_creation_flow_rationale_996" + }, + { + "label": "Generic exceptions are wrapped as ``internal_error``.", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1012", + "community": 333, + "norm_label": "generic exceptions are wrapped as ``internal_error``.", + "id": "controller_test_creation_flow_rationale_1012" + }, + { + "label": "The best-effort log appender writes to the equipment cache dir.", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1019", + "community": 333, + "norm_label": "the best-effort log appender writes to the equipment cache dir.", + "id": "controller_test_creation_flow_rationale_1019" + }, + { + "label": "A run inherits its LIMS identity from the parent project's creation.json (Ba", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1035", + "community": 307, + "norm_label": "a run inherits its lims identity from the parent project's creation.json (ba", + "id": "controller_test_creation_flow_rationale_1035" + }, + { + "label": "If ``cancel`` is invoked on a session that has not yet started a pipeline ta", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1059", + "community": 411, + "norm_label": "if ``cancel`` is invoked on a session that has not yet started a pipeline ta", + "id": "controller_test_creation_flow_rationale_1059" + }, + { + "label": "Resume against a session that has no resume queue raises.", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1079", + "community": 414, + "norm_label": "resume against a session that has no resume queue raises.", + "id": "controller_test_creation_flow_rationale_1079" + }, + { + "label": "``subscribe`` initializes ``event_queue`` if the session opened with none (d", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1100", + "community": 404, + "norm_label": "``subscribe`` initializes ``event_queue`` if the session opened with none (d", + "id": "controller_test_creation_flow_rationale_1100" + }, + { + "label": "When :class:`PluginHost` returns ``aborted=True``, the controller transition", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1124", + "community": 402, + "norm_label": "when :class:`pluginhost` returns ``aborted=true``, the controller transition", + "id": "controller_test_creation_flow_rationale_1124" + }, + { + "label": "The ``_required_field_ids`` helper must skip non-dict entries in the templat", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1169", + "community": 407, + "norm_label": "the ``_required_field_ids`` helper must skip non-dict entries in the templat", + "id": "controller_test_creation_flow_rationale_1169" + }, + { + "label": "A run whose parent project folder has no readable creation.json still produc", + "file_type": "rationale", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1185", + "community": 141, + "norm_label": "a run whose parent project folder has no readable creation.json still produc", + "id": "controller_test_creation_flow_rationale_1185" + }, + { + "label": "Identity step renders the ID + label inputs.", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_16_add_equipment.py", + "source_location": "L34", + "community": 186, + "norm_label": "identity step renders the id + label inputs.", + "id": "e2e_test_flow_16_add_equipment_rationale_34" + }, + { + "label": "Paths step renders local + NAS root inputs.", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_16_add_equipment.py", + "source_location": "L45", + "community": 186, + "norm_label": "paths step renders local + nas root inputs.", + "id": "e2e_test_flow_16_add_equipment_rationale_45" + }, + { + "label": "Sync mode step renders the nas/stage radio.", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_16_add_equipment.py", + "source_location": "L53", + "community": 186, + "norm_label": "sync mode step renders the nas/stage radio.", + "id": "e2e_test_flow_16_add_equipment_rationale_53" + }, + { + "label": "Review step renders Confirm; clicking it fires the success label.", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_16_add_equipment.py", + "source_location": "L60", + "community": 186, + "norm_label": "review step renders confirm; clicking it fires the success label.", + "id": "e2e_test_flow_16_add_equipment_rationale_60" + }, + { + "label": "An empty wizard: Next stays disabled until the identity step is valid, then", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_16_add_equipment.py", + "source_location": "L70", + "community": 186, + "norm_label": "an empty wizard: next stays disabled until the identity step is valid, then", + "id": "e2e_test_flow_16_add_equipment_rationale_70" + }, + { + "label": "Navigate to ``url`` with one retry on transient NiceGUI failures.", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L22", + "community": 96, + "norm_label": "navigate to ``url`` with one retry on transient nicegui failures.", + "id": "e2e_test_flow_25_production_main_wiring_rationale_22" + }, + { + "label": "The /main route mounts the redesigned renderer, not the legacy one. Asserts", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L41", + "community": 96, + "norm_label": "the /main route mounts the redesigned renderer, not the legacy one. asserts", + "id": "e2e_test_flow_25_production_main_wiring_rationale_41" + }, + { + "label": "The Add Equipment toolbar button navigates to /wizard/equipment.", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L76", + "community": 96, + "norm_label": "the add equipment toolbar button navigates to /wizard/equipment.", + "id": "e2e_test_flow_25_production_main_wiring_rationale_76" + }, + { + "label": "Clicking an equipment node updates the URL with ?selected=. Exercises o", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L83", + "community": 96, + "norm_label": "clicking an equipment node updates the url with ?selected=. exercises o", + "id": "e2e_test_flow_25_production_main_wiring_rationale_83" + }, + { + "label": "Loading /main?selected=TEST_EQ1 directly renders the centre + right panes.", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L96", + "community": 96, + "norm_label": "loading /main?selected=test_eq1 directly renders the centre + right panes.", + "id": "e2e_test_flow_25_production_main_wiring_rationale_96" + }, + { + "label": "Clicking a breadcrumb segment routes back through /main?selected=. The brea", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L106", + "community": 96, + "norm_label": "clicking a breadcrumb segment routes back through /main?selected=. the brea", + "id": "e2e_test_flow_25_production_main_wiring_rationale_106" + }, + { + "label": "Clicking the right-pane toggle flips ?right_pane=collapsed in the URL.", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L122", + "community": 96, + "norm_label": "clicking the right-pane toggle flips ?right_pane=collapsed in the url.", + "id": "e2e_test_flow_25_production_main_wiring_rationale_122" + }, + { + "label": "Owned-equipment Edit menu navigates to /settings with the equipment id. Rou", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L133", + "community": 96, + "norm_label": "owned-equipment edit menu navigates to /settings with the equipment id. rou", + "id": "e2e_test_flow_25_production_main_wiring_rationale_133" + }, + { + "label": "Selecting a TEST_RELAY_* node disables the New Project/Run/Test-Run buttons.", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L148", + "community": 96, + "norm_label": "selecting a test_relay_* node disables the new project/run/test-run buttons.", + "id": "e2e_test_flow_25_production_main_wiring_rationale_148" + }, + { + "label": "The footer Clear-verified button is wired to a callback. Asserts the button", + "file_type": "rationale", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L173", + "community": 96, + "norm_label": "the footer clear-verified button is wired to a callback. asserts the button", + "id": "e2e_test_flow_25_production_main_wiring_rationale_173" + }, + { + "label": "uvicorn ``--factory`` entrypoint.", + "file_type": "rationale", + "source_file": "tests/e2e/_test_app.py", + "source_location": "L931", + "community": 39, + "norm_label": "uvicorn ``--factory`` entrypoint.", + "id": "e2e_test_app_rationale_931" + }, + { + "label": "Register the design tokens with NiceGUI / Quasar at app start. Imports Nice", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/theme.py", + "source_location": "L113", + "community": 39, + "norm_label": "register the design tokens with nicegui / quasar at app start. imports nice", + "id": "ui_theme_rationale_113" + }, + { + "label": "Return the absolute path to the bundled ``assets/`` directory. Resolves bot", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/theme.py", + "source_location": "L142", + "community": 39, + "norm_label": "return the absolute path to the bundled ``assets/`` directory. resolves bot", + "id": "ui_theme_rationale_142" + }, + { + "label": "Mount the project's ``assets/`` directory at ``/assets``. Idempotent: a mod", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/theme.py", + "source_location": "L157", + "community": 39, + "norm_label": "mount the project's ``assets/`` directory at ``/assets``. idempotent: a mod", + "id": "ui_theme_rationale_157" + }, + { + "label": "_bulk_clear_verified()", + "file_type": "code", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1330", + "community": 161, + "norm_label": "_bulk_clear_verified()", + "id": "ui_mount_bulk_clear_verified" + }, + { + "label": "_build_staging_state()", + "file_type": "code", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L2085", + "community": 77, + "norm_label": "_build_staging_state()", + "id": "ui_mount_build_staging_state" + }, + { + "label": "_render_unavailable()", + "file_type": "code", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L2117", + "community": 77, + "norm_label": "_render_unavailable()", + "id": "ui_mount_render_unavailable" + }, + { + "label": "Schedule ``coro`` and keep a strong reference until it finishes.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L59", + "community": 55, + "norm_label": "schedule ``coro`` and keep a strong reference until it finishes.", + "id": "ui_mount_rationale_59" + }, + { + "label": "Register every wizard page on ``app`` and mount NiceGUI at ``/``. ``storage", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L67", + "community": 39, + "norm_label": "register every wizard page on ``app`` and mount nicegui at ``/``. ``storage", + "id": "ui_mount_rationale_67" + }, + { + "label": "Define every ``@ui.page(...)`` handler. Called from :func:`mount_ui`.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L95", + "community": 39, + "norm_label": "define every ``@ui.page(...)`` handler. called from :func:`mount_ui`.", + "id": "ui_mount_rationale_95" + }, + { + "label": "Build the LIMS-password Save / Clear handlers for the settings dialog. Cred", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L469", + "community": 77, + "norm_label": "build the lims-password save / clear handlers for the settings dialog. cred", + "id": "ui_mount_rationale_469" + }, + { + "label": "Run the rclone NAS-remote probe and adapt it for the inline panel. rclone.c", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L523", + "community": 228, + "norm_label": "run the rclone nas-remote probe and adapt it for the inline panel. rclone.c", + "id": "ui_mount_rationale_523" + }, + { + "label": "Write ``updated`` via ``deps.save_config`` and hot-reload components. Retur", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L579", + "community": 77, + "norm_label": "write ``updated`` via ``deps.save_config`` and hot-reload components. retur", + "id": "ui_mount_rationale_579" + }, + { + "label": "Create the staging directory when the operator saved a non-empty path. ``st", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L611", + "community": 77, + "norm_label": "create the staging directory when the operator saved a non-empty path. ``st", + "id": "ui_mount_rationale_611" + }, + { + "label": "Push ``updated`` into the running components (no tray relaunch). Wraps :fun", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L637", + "community": 77, + "norm_label": "push ``updated`` into the running components (no tray relaunch). wraps :fun", + "id": "ui_mount_rationale_637" + }, + { + "label": "True when nas-mode equipment exist but the ``nas:`` remote is unusable. rcl", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L654", + "community": 82, + "norm_label": "true when nas-mode equipment exist but the ``nas:`` remote is unusable. rcl", + "id": "ui_mount_rationale_654" + }, + { + "label": "Return True when the \u00a74.9 setup state is ``READY``. Delegates to :func:`api", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L678", + "community": 52, + "norm_label": "return true when the \u00a74.9 setup state is ``ready``. delegates to :func:`api", + "id": "ui_mount_rationale_678" + }, + { + "label": "Register / unregister platform autostart; return the real post-op state. Re", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L710", + "community": 153, + "norm_label": "register / unregister platform autostart; return the real post-op state. re", + "id": "ui_mount_rationale_710" + }, + { + "label": "Return the (session_id, session) pairs the Operations panel shows. The \u00a79.5", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L769", + "community": 204, + "norm_label": "return the (session_id, session) pairs the operations panel shows. the \u00a79.5", + "id": "ui_mount_rationale_769" + }, + { + "label": "Return ``(panel_count, input_required, active)`` operation counts. ``panel_", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L786", + "community": 204, + "norm_label": "return ``(panel_count, input_required, active)`` operation counts. ``panel_", + "id": "ui_mount_rationale_786" + }, + { + "label": "Return the \u00a74.9.3 next-action string for the banner subline. Unlike :func:`", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L803", + "community": 52, + "norm_label": "return the \u00a74.9.3 next-action string for the banner subline. unlike :func:`", + "id": "ui_mount_rationale_803" + }, + { + "label": "Compose the ``?selected=...&right_pane=...`` query string for /main. Omits", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L833", + "community": 209, + "norm_label": "compose the ``?selected=...&right_pane=...`` query string for /main. omits", + "id": "ui_mount_rationale_833" + }, + { + "label": "Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L866", + "community": 209, + "norm_label": "map a selected node id to ``(kind, is_received)``. mirrors the shape classi", + "id": "ui_mount_rationale_866" + }, + { + "label": "Build the metadata-pane payload for the selected node, by kind. Returns ``{", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L910", + "community": 151, + "norm_label": "build the metadata-pane payload for the selected node, by kind. returns ``{", + "id": "ui_mount_rationale_910" + }, + { + "label": "Project equipment-config fields into the owned-equipment payload.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L937", + "community": 151, + "norm_label": "project equipment-config fields into the owned-equipment payload.", + "id": "ui_mount_rationale_937" + }, + { + "label": "Return the relay-equipment payload (label, source_host).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L952", + "community": 151, + "norm_label": "return the relay-equipment payload (label, source_host).", + "id": "ui_mount_rationale_952" + }, + { + "label": "Derive a project payload from the on-disk project directory. ``node_id`` is", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L966", + "community": 210, + "norm_label": "derive a project payload from the on-disk project directory. ``node_id`` is", + "id": "ui_mount_rationale_966" + }, + { + "label": "Count immediate child directories of ``parent`` whose names start with ``pre", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1000", + "community": 163, + "norm_label": "count immediate child directories of ``parent`` whose names start with ``pre", + "id": "ui_mount_rationale_1000" + }, + { + "label": "Decode the run's creation.json into the metadata-pane payload. Returns ``{}", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1015", + "community": 163, + "norm_label": "decode the run's creation.json into the metadata-pane payload. returns ``{}", + "id": "ui_mount_rationale_1015" + }, + { + "label": "Resolve a centre-list selection (file or folder) to a render payload. Phase", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1058", + "community": 163, + "norm_label": "resolve a centre-list selection (file or folder) to a render payload. phase", + "id": "ui_mount_rationale_1058" + }, + { + "label": "Aggregate a one-level folder scan into a folder-card payload (OQ-4/B). Phas", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1107", + "community": 163, + "norm_label": "aggregate a one-level folder scan into a folder-card payload (oq-4/b). phas", + "id": "ui_mount_rationale_1107" + }, + { + "label": "Mount / rebind the per-tab FolderFeed and return current entries. Uses ``ap", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1148", + "community": 188, + "norm_label": "mount / rebind the per-tab folderfeed and return current entries. uses ``ap", + "id": "ui_mount_rationale_1148" + }, + { + "label": "FolderFeed fetch hook. Skips when the tree just walked. Runs the synchronou", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1209", + "community": 188, + "norm_label": "folderfeed fetch hook. skips when the tree just walked. runs the synchronou", + "id": "ui_mount_rationale_1209" + }, + { + "label": "Force a fresh single-folder scan and prime the feed payload (OQ-1/A). The F", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1233", + "community": 55, + "norm_label": "force a fresh single-folder scan and prime the feed payload (oq-1/a). the f", + "id": "ui_mount_rationale_1233" + }, + { + "label": "Dispatch a per-run context action to its backend surface. Mirrors :func:`ap", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1273", + "community": 55, + "norm_label": "dispatch a per-run context action to its backend surface. mirrors :func:`ap", + "id": "ui_mount_rationale_1273" + }, + { + "label": "Bulk-clear every staged run whose sync job is verified. Wired from the file", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1331", + "community": 161, + "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file", + "id": "ui_mount_rationale_1331" + }, + { + "label": "Handle ``Open in OS`` / ``Copy path`` / ``Keep local`` file actions.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1376", + "community": 161, + "norm_label": "handle ``open in os`` / ``copy path`` / ``keep local`` file actions.", + "id": "ui_mount_rationale_1376" + }, + { + "label": "Flip a file's ``keep_local`` flag via the orchestrator's writer. Operator-f", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1415", + "community": 55, + "norm_label": "flip a file's ``keep_local`` flag via the orchestrator's writer. operator-f", + "id": "ui_mount_rationale_1415" + }, + { + "label": "Launch the host OS's default opener for ``path``. Returns False on platform", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1458", + "community": 164, + "norm_label": "launch the host os's default opener for ``path``. returns false on platform", + "id": "ui_mount_rationale_1458" + }, + { + "label": "Build the Operations-panel rows from the live session store (T3). Uses the", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1486", + "community": 28, + "norm_label": "build the operations-panel rows from the live session store (t3). uses the", + "id": "ui_mount_rationale_1486" + }, + { + "label": "Open the in-flight Operations panel (Frontend \u00a79.5). Builds a fresh snapsho", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1498", + "community": 40, + "norm_label": "open the in-flight operations panel (frontend \u00a79.5). builds a fresh snapsho", + "id": "ui_mount_rationale_1498" + }, + { + "label": "Show a lightweight details/\"log\" dialog for one in-flight operation. The \u00a79", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1522", + "community": 164, + "norm_label": "show a lightweight details/\"log\" dialog for one in-flight operation. the \u00a79", + "id": "ui_mount_rationale_1522" + }, + { + "label": "Resume a suspended session by re-opening its \u00a79.1 input dialog (T5). Reads", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1556", + "community": 28, + "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads", + "id": "ui_mount_rationale_1556" + }, + { + "label": "Open the \u00a79.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1588", + "community": 40, + "norm_label": "open the \u00a79.1 escalation dialog; submit resumes, cancel confirms (t5). subm", + "id": "ui_mount_rationale_1588" + }, + { + "label": "Resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1626", + "community": 28, + "norm_label": "resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", + "id": "ui_mount_rationale_1626" + }, + { + "label": "Cancel an in-flight session via the \u00a79.4 Discard / Keep dialog (T4). The op", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1635", + "community": 28, + "norm_label": "cancel an in-flight session via the \u00a79.4 discard / keep dialog (t4). the op", + "id": "ui_mount_rationale_1635" + }, + { + "label": "Open a NiceGUI dialog showing the run's sync-queue job state. The operator-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1676", + "community": 55, + "norm_label": "open a nicegui dialog showing the run's sync-queue job state. the operator-", + "id": "ui_mount_rationale_1676" + }, + { + "label": "Return the settings sections the operator still needs to fill in. Mirrors a", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1724", + "community": 82, + "norm_label": "return the settings sections the operator still needs to fill in. mirrors a", + "id": "ui_mount_rationale_1724" + }, + { + "label": "Return the configured templates directory, or ``None``.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1757", + "community": 40, + "norm_label": "return the configured templates directory, or ``none``.", + "id": "ui_mount_rationale_1757" + }, + { + "label": "List template directory names of ``template_type`` under templates_dir.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1765", + "community": 40, + "norm_label": "list template directory names of ``template_type`` under templates_dir.", + "id": "ui_mount_rationale_1765" + }, + { + "label": "Map each ``template_type`` template name to its parsed copier questions. Re", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1782", + "community": 63, + "norm_label": "map each ``template_type`` template name to its parsed copier questions. re", + "id": "ui_mount_rationale_1782" + }, + { + "label": "Read the offline-catalogue projects (disconnected-workstation source). Read", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1815", + "community": 162, + "norm_label": "read the offline-catalogue projects (disconnected-workstation source). read", + "id": "ui_mount_rationale_1815" + }, + { + "label": "Return the LIMS projects backing the project wizard's picker. Tries the liv", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1849", + "community": 162, + "norm_label": "return the lims projects backing the project wizard's picker. tries the liv", + "id": "ui_mount_rationale_1849" + }, + { + "label": "Return the configured equipment IDs.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1879", + "community": 63, + "norm_label": "return the configured equipment ids.", + "id": "ui_mount_rationale_1879" + }, + { + "label": "Await a controller session's pipeline task and return the final handle. ``c", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1887", + "community": 63, + "norm_label": "await a controller session's pipeline task and return the final handle. ``c", + "id": "ui_mount_rationale_1887" + }, + { + "label": "Fold the controller's WS frames into the wizard's live phase bar (T2) and su", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1906", + "community": 40, + "norm_label": "fold the controller's ws frames into the wizard's live phase bar (t2) and su", + "id": "ui_mount_rationale_1906" + }, + { + "label": "Best-effort close of a NiceGUI dialog (no-op when ``None`` / test mode).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1949", + "community": 40, + "norm_label": "best-effort close of a nicegui dialog (no-op when ``none`` / test mode).", + "id": "ui_mount_rationale_1949" + }, + { + "label": "Build a ProjectCreateRequest from the wizard state and run it.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1957", + "community": 63, + "norm_label": "build a projectcreaterequest from the wizard state and run it.", + "id": "ui_mount_rationale_1957" + }, + { + "label": "Build a RunCreateRequest from the wizard state and run it.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1990", + "community": 99, + "norm_label": "build a runcreaterequest from the wizard state and run it.", + "id": "ui_mount_rationale_1990" + }, + { + "label": "Drive a create_* call to completion and toast the outcome. When ``wizard_st", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L2031", + "community": 99, + "norm_label": "drive a create_* call to completion and toast the outcome. when ``wizard_st", + "id": "ui_mount_rationale_2031" + }, + { + "label": "Run the validator audit, swallowing failures to a WARN log.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L2074", + "community": 99, + "norm_label": "run the validator audit, swallowing failures to a warn log.", + "id": "ui_mount_rationale_2074" + }, + { + "label": "One row in the centre-pane file list. ``keep_local`` mirrors the file's ``s", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L39", + "community": 0, + "norm_label": "one row in the centre-pane file list. ``keep_local`` mirrors the file's ``s", + "id": "components_file_list_rationale_39" + }, + { + "label": "Mutable state for the file list, consumed by the renderer.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L59", + "community": 147, + "norm_label": "mutable state for the file list, consumed by the renderer.", + "id": "components_file_list_rationale_59" + }, + { + "label": "Result of comparing two successive folder-list snapshots.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L72", + "community": 201, + "norm_label": "result of comparing two successive folder-list snapshots.", + "id": "components_file_list_rationale_72" + }, + { + "label": "Return additions / removals / modifications between two snapshots. Pure fun", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L83", + "community": 201, + "norm_label": "return additions / removals / modifications between two snapshots. pure fun", + "id": "components_file_list_rationale_83" + }, + { + "label": "Return the CSS background + decoration fragment for one file-list row. Pure", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L122", + "community": 139, + "norm_label": "return the css background + decoration fragment for one file-list row. pure", + "id": "components_file_list_rationale_122" + }, + { + "label": "Render the centre-pane file list. Pure render function. Double-clicking a f", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L179", + "community": 202, + "norm_label": "render the centre-pane file list. pure render function. double-clicking a f", + "id": "components_file_list_rationale_179" + }, + { + "label": "Render the file-list column header row (Name / Size / Modified / Status).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L221", + "community": 202, + "norm_label": "render the file-list column header row (name / size / modified / status).", + "id": "components_file_list_rationale_221" + }, + { + "label": "Return the Vue ``@click`` expression that reaches NiceGUI's listener. Uses", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/tree.py", + "source_location": "L298", + "community": 79, + "norm_label": "return the vue ``@click`` expression that reaches nicegui's listener. uses", + "id": "components_tree_rationale_298" + }, + { + "label": "Build the project / equipment tree. Returns the NiceGUI ``ui.tree`` element", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/tree.py", + "source_location": "L372", + "community": 79, + "norm_label": "build the project / equipment tree. returns the nicegui ``ui.tree`` element", + "id": "components_tree_rationale_372" + }, + { + "label": "Mutable state for the metadata pane.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", + "source_location": "L37", + "community": 146, + "norm_label": "mutable state for the metadata pane.", + "id": "components_metadata_pane_rationale_37" + }, + { + "label": "Return the sub-card heading for a selected file/folder payload (pure). ``\"S", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", + "source_location": "L51", + "community": 132, + "norm_label": "return the sub-card heading for a selected file/folder payload (pure). ``\"s", + "id": "components_metadata_pane_rationale_51" + }, + { + "label": "Render the right-pane Metadata content for ``state.selected_node``. Dispatc", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", + "source_location": "L67", + "community": 132, + "norm_label": "render the right-pane metadata content for ``state.selected_node``. dispatc", + "id": "components_metadata_pane_rationale_67" + }, + { + "label": "Key/value row whose value is a sync-status icon (tolerant). Mirrors :func:`", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", + "source_location": "L130", + "community": 132, + "norm_label": "key/value row whose value is a sync-status icon (tolerant). mirrors :func:`", + "id": "components_metadata_pane_rationale_130" + }, + { + "label": "Render the SELECTED FILE / SELECTED FOLDER sub-card (Phase 4, \u00a74.4). Append", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", + "source_location": "L148", + "community": 132, + "norm_label": "render the selected file / selected folder sub-card (phase 4, \u00a74.4). append", + "id": "components_metadata_pane_rationale_148" + }, + { + "label": "Compute a :class:`SegmentSpec` from a label and state. The state controls t", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/status_bar_segment.py", + "source_location": "L46", + "community": 52, + "norm_label": "compute a :class:`segmentspec` from a label and state. the state controls t", + "id": "components_status_bar_segment_rationale_46" + }, + { + "label": "Build a clickable status-bar segment.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/status_bar_segment.py", + "source_location": "L70", + "community": 52, + "norm_label": "build a clickable status-bar segment.", + "id": "components_status_bar_segment_rationale_70" + }, + { + "label": "Compute icon + tooltip + retry-counter for a sync status. The ``retry_n``/`", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/sync_status_icon.py", + "source_location": "L125", + "community": 205, + "norm_label": "compute icon + tooltip + retry-counter for a sync status. the ``retry_n``/`", + "id": "components_sync_status_icon_rationale_125" + }, + { + "label": "Build a NiceGUI row containing the icon and optional retry counter. ``stric", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/sync_status_icon.py", + "source_location": "L164", + "community": 251, + "norm_label": "build a nicegui row containing the icon and optional retry counter. ``stric", + "id": "components_sync_status_icon_rationale_164" + }, + { + "label": "Context manager rendering a framed, titled pane; yields the body element. U", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/framed_pane.py", + "source_location": "L96", + "community": 61, + "norm_label": "context manager rendering a framed, titled pane; yields the body element. u", + "id": "components_framed_pane_rationale_96" + }, + { + "label": "Mutable state for the in-flight Add-Equipment wizard.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", + "source_location": "L52", + "community": 260, + "norm_label": "mutable state for the in-flight add-equipment wizard.", + "id": "pages_wizard_equipment_rationale_52" + }, + { + "label": "Return True if the active step has the data it needs to advance. Pure funct", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", + "source_location": "L73", + "community": 229, + "norm_label": "return true if the active step has the data it needs to advance. pure funct", + "id": "pages_wizard_equipment_rationale_73" + }, + { + "label": "Build the final EquipmentConfig from the wizard's state. Raises a pydantic", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", + "source_location": "L101", + "community": 229, + "norm_label": "build the final equipmentconfig from the wizard's state. raises a pydantic", + "id": "pages_wizard_equipment_rationale_101" + }, + { + "label": "Render the self-contained Add-Equipment wizard. Next / Back navigation is h", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", + "source_location": "L121", + "community": 260, + "norm_label": "render the self-contained add-equipment wizard. next / back navigation is h", + "id": "pages_wizard_equipment_rationale_121" + }, + { + "label": "Return the nas-mode equipment for ``config``. Drives the NAS-remote section", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L63", + "community": 248, + "norm_label": "return the nas-mode equipment for ``config``. drives the nas-remote section", + "id": "pages_settings_rationale_63" + }, + { + "label": "Return the visible section ids for ``config``. The NAS-remote section is in", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L78", + "community": 248, + "norm_label": "return the visible section ids for ``config``. the nas-remote section is in", + "id": "pages_settings_rationale_78" + }, + { + "label": "Mutable state for the dialog.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L97", + "community": 421, + "norm_label": "mutable state for the dialog.", + "id": "pages_settings_rationale_97" + }, + { + "label": "Return the first section ID in canonical order that's incomplete. The dynam", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L106", + "community": 420, + "norm_label": "return the first section id in canonical order that's incomplete. the dynam", + "id": "pages_settings_rationale_106" + }, + { + "label": "Compute the *Save all* button label, including the badge count.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L126", + "community": 220, + "norm_label": "compute the *save all* button label, including the badge count.", + "id": "pages_settings_rationale_126" + }, + { + "label": "Return ``True`` when the sidebar should decorate ``section``.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L136", + "community": 220, + "norm_label": "return ``true`` when the sidebar should decorate ``section``.", + "id": "pages_settings_rationale_136" + }, + { + "label": "Return ``True`` when ``section`` has uncommitted edits.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L142", + "community": 220, + "norm_label": "return ``true`` when ``section`` has uncommitted edits.", + "id": "pages_settings_rationale_142" + }, + { + "label": "Return the editable deep-copy draft the settings dialog mutates. ``None`` (", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L148", + "community": 178, + "norm_label": "return the editable deep-copy draft the settings dialog mutates. ``none`` (", + "id": "pages_settings_rationale_148" + }, + { + "label": "Re-validate a mutated draft into a clean :class:`Config`. The dialog's two-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L159", + "community": 178, + "norm_label": "re-validate a mutated draft into a clean :class:`config`. the dialog's two-", + "id": "pages_settings_rationale_159" + }, + { + "label": "Return the credential-row state seeding the LIMS password field. A password", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L177", + "community": 310, + "norm_label": "return the credential-row state seeding the lims password field. a password", + "id": "pages_settings_rationale_177" + }, + { + "label": "Render the settings dialog. ``config`` is the live ``config.yaml`` model (o", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L206", + "community": 220, + "norm_label": "render the settings dialog. ``config`` is the live ``config.yaml`` model (o", + "id": "pages_settings_rationale_206" + }, + { + "label": "Reusable chip / list editor bound to a draft string list (T7 / T10). Mutate", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L395", + "community": 230, + "norm_label": "reusable chip / list editor bound to a draft string list (t7 / t10). mutate", + "id": "pages_settings_rationale_395" + }, + { + "label": "Render the content for a single section, bound to ``draft``. Every scalar f", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L484", + "community": 230, + "norm_label": "render the content for a single section, bound to ``draft``. every scalar f", + "id": "pages_settings_rationale_484" + }, + { + "label": "Render the equipment list + a full add-equipment sub-form. Adding an entry", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L705", + "community": 230, + "norm_label": "render the equipment list + a full add-equipment sub-form. adding an entry", + "id": "pages_settings_rationale_705" + }, + { + "label": "Render the read-only NAS-remote status + a Test-connection panel. rclone.co", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L775", + "community": 230, + "norm_label": "render the read-only nas-remote status + a test-connection panel. rclone.co", + "id": "pages_settings_rationale_775" + }, + { + "label": "Render state for the main page. GUI/Orchestrator Redesign \u00a74: the legacy tw", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L34", + "community": 81, + "norm_label": "render state for the main page. gui/orchestrator redesign \u00a74: the legacy tw", + "id": "pages_main_rationale_34" + }, + { + "label": "The three default chips on the left-tree filter strip (\u00a73.5.4).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L89", + "community": 81, + "norm_label": "the three default chips on the left-tree filter strip (\u00a73.5.4).", + "id": "pages_main_rationale_89" + }, + { + "label": "Translate a chip group state into a :class:`TreeFilters`.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L99", + "community": 81, + "norm_label": "translate a chip group state into a :class:`treefilters`.", + "id": "pages_main_rationale_99" + }, + { + "label": "Return the count text shown on the Problems tab. Frontend \u00a73.2: hard count", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L110", + "community": 81, + "norm_label": "return the count text shown on the problems tab. frontend \u00a73.2: hard count", + "id": "pages_main_rationale_110" + }, + { + "label": "Banner content for the setup-incomplete state (\u00a73.1.4). ``next_action`` is", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L122", + "community": 81, + "norm_label": "banner content for the setup-incomplete state (\u00a73.1.4). ``next_action`` is", + "id": "pages_main_rationale_122" + }, + { + "label": "Render the rebuilt three-region file-explorer main window. GUI/Orchestrator", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L172", + "community": 81, + "norm_label": "render the rebuilt three-region file-explorer main window. gui/orchestrator", + "id": "pages_main_rationale_172" + }, + { + "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L493", + "community": 182, + "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", + "id": "pages_main_rationale_493" + }, + { + "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L532", + "community": 192, + "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", + "id": "pages_main_rationale_532" + }, + { + "label": "_bootstrap_test_config()", + "file_type": "code", + "source_file": "src/exlab_wizard/tray/main.py", + "source_location": "L272", + "community": 0, + "norm_label": "_bootstrap_test_config()", + "id": "tray_main_bootstrap_test_config" + }, + { + "label": "Write a starter test ``config.yaml`` if one does not already exist. Called", + "file_type": "rationale", + "source_file": "src/exlab_wizard/tray/main.py", + "source_location": "L273", + "community": 0, + "norm_label": "write a starter test ``config.yaml`` if one does not already exist. called", + "id": "tray_main_rationale_273" + }, + { + "label": "Server-only loop. Boots the FastAPI server, prints the published port, waits", + "file_type": "rationale", + "source_file": "src/exlab_wizard/tray/main.py", + "source_location": "L351", + "community": 110, + "norm_label": "server-only loop. boots the fastapi server, prints the published port, waits", + "id": "tray_main_rationale_351" + }, + { + "label": "``exlab-wizard-tray`` entry point. The main thread runs pystray; the FastAP", + "file_type": "rationale", + "source_file": "src/exlab_wizard/tray/main.py", + "source_location": "L384", + "community": 110, + "norm_label": "``exlab-wizard-tray`` entry point. the main thread runs pystray; the fastap", + "id": "tray_main_rationale_384" + }, + { + "label": "_readme_decls_from_template()", + "file_type": "code", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1269", + "community": 5, + "norm_label": "_readme_decls_from_template()", + "id": "controller_creation_readme_decls_from_template" + }, + { + "label": "_readme_decls_from_config()", + "file_type": "code", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1301", + "community": 5, + "norm_label": "_readme_decls_from_config()", + "id": "controller_creation_readme_decls_from_config" + }, + { + "label": "_os_username()", + "file_type": "code", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1326", + "community": 5, + "norm_label": "_os_username()", + "id": "controller_creation_os_username" + }, + { + "label": "Inputs for :meth:`CreationController.create_project`. Backend Spec \u00a74.6.1 /", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L142", + "community": 10, + "norm_label": "inputs for :meth:`creationcontroller.create_project`. backend spec \u00a74.6.1 /", + "id": "controller_creation_rationale_142" + }, + { + "label": "Inputs for :meth:`CreationController.create_run`. Backend Spec \u00a74.6.1 / UI-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L161", + "community": 10, + "norm_label": "inputs for :meth:`creationcontroller.create_run`. backend spec \u00a74.6.1 / ui-", + "id": "controller_creation_rationale_161" + }, + { + "label": "Snapshot of session state. Backend Spec \u00a74.4.1.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L186", + "community": 10, + "norm_label": "snapshot of session state. backend spec \u00a74.4.1.", + "id": "controller_creation_rationale_186" + }, + { + "label": "The README generator surface the controller depends on. Backend \u00a710. Mirror", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L200", + "community": 10, + "norm_label": "the readme generator surface the controller depends on. backend \u00a710. mirror", + "id": "controller_creation_rationale_200" + }, + { + "label": "Lightweight README generator for tests / headless fixtures. Writes a tiny `", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L211", + "community": 10, + "norm_label": "lightweight readme generator for tests / headless fixtures. writes a tiny `", + "id": "controller_creation_rationale_211" + }, + { + "label": "No-op stand-in for :class:`NASSyncClient` until Phase 10 lands.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L233", + "community": 10, + "norm_label": "no-op stand-in for :class:`nassyncclient` until phase 10 lands.", + "id": "controller_creation_rationale_233" + }, + { + "label": "Drives the \u00a74.7 state machine end-to-end. Composes the validator (Phase 4),", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L245", + "community": 5, + "norm_label": "drives the \u00a74.7 state machine end-to-end. composes the validator (phase 4),", + "id": "controller_creation_rationale_245" + }, + { + "label": "Expose the in-memory session store for the API surface.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L291", + "community": 666, + "norm_label": "expose the in-memory session store for the api surface.", + "id": "controller_creation_rationale_291" + }, + { + "label": "Swap the controller's config (and optionally plugin host) in place. Eve", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L295", + "community": 5, + "norm_label": "swap the controller's config (and optionally plugin host) in place. eve", + "id": "controller_creation_rationale_295" + }, + { + "label": "Open a project-creation session and start the pipeline. The session is", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L312", + "community": 5, + "norm_label": "open a project-creation session and start the pipeline. the session is", + "id": "controller_creation_rationale_312" + }, + { + "label": "Open a run-creation session and start the pipeline.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L325", + "community": 5, + "norm_label": "open a run-creation session and start the pipeline.", + "id": "controller_creation_rationale_325" + }, + { + "label": "Supply ``extra_inputs`` after a ``PluginInputRequired`` prompt. Pushes", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L330", + "community": 5, + "norm_label": "supply ``extra_inputs`` after a ``plugininputrequired`` prompt. pushes", + "id": "controller_creation_rationale_330" + }, + { + "label": "Abort an in-flight session. Pushes a ``None`` onto the resume queue (so", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L354", + "community": 5, + "norm_label": "abort an in-flight session. pushes a ``none`` onto the resume queue (so", + "id": "controller_creation_rationale_354" + }, + { + "label": "Return a snapshot :class:`SessionHandle` for ``session_id``.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L397", + "community": 5, + "norm_label": "return a snapshot :class:`sessionhandle` for ``session_id``.", + "id": "controller_creation_rationale_397" + }, + { + "label": "Yield WebSocket-event dicts for the named session. Wraps the session's", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L404", + "community": 5, + "norm_label": "yield websocket-event dicts for the named session. wraps the session's", + "id": "controller_creation_rationale_404" + }, + { + "label": "Validate the request, then spawn the pipeline as a background task. The", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L428", + "community": 5, + "norm_label": "validate the request, then spawn the pipeline as a background task. the", + "id": "controller_creation_rationale_428" + }, + { + "label": "Run the \u00a72 mandatory-core-field gate. Raises :class:`ValidationError` o", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L466", + "community": 5, + "norm_label": "run the \u00a72 mandatory-core-field gate. raises :class:`validationerror` o", + "id": "controller_creation_rationale_466" + }, + { + "label": "Drive the session from RENDERING to DONE / FAILED / ABORTED.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L608", + "community": 5, + "norm_label": "drive the session from rendering to done / failed / aborted.", + "id": "controller_creation_rationale_608" + }, + { + "label": "Run the RENDERING \u2192 DONE pipeline once.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L628", + "community": 5, + "norm_label": "run the rendering \u2192 done pipeline once.", + "id": "controller_creation_rationale_628" + }, + { + "label": "Return the LIMS project ``short_id`` for the request. For a project req", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L734", + "community": 667, + "norm_label": "return the lims project ``short_id`` for the request. for a project req", + "id": "controller_creation_rationale_734" + }, + { + "label": "Return the human-readable LIMS project name for the request. This is th", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L750", + "community": 668, + "norm_label": "return the human-readable lims project name for the request. this is th", + "id": "controller_creation_rationale_750" + }, + { + "label": "Read the parent project's ``lims_project`` block for a run. A run inher", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L763", + "community": 5, + "norm_label": "read the parent project's ``lims_project`` block for a run. a run inher", + "id": "controller_creation_rationale_763" + }, + { + "label": "Return the ``run_kind`` value to record on ``creation.json``. Project-l", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L783", + "community": 669, + "norm_label": "return the ``run_kind`` value to record on ``creation.json``. project-l", + "id": "controller_creation_rationale_783" + }, + { + "label": "Render the resolved template into ``dst``. Copier receives the request'", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L816", + "community": 5, + "norm_label": "render the resolved template into ``dst``. copier receives the request'", + "id": "controller_creation_rationale_816" + }, + { + "label": "Compose the \u00a710 four-layer :class:`ReadmeContext` for ``req``. Maps the", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L905", + "community": 5, + "norm_label": "compose the \u00a710 four-layer :class:`readmecontext` for ``req``. maps the", + "id": "controller_creation_rationale_905" + }, + { + "label": "Write README + creation.json into the destination tree.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L973", + "community": 25, + "norm_label": "write readme + creation.json into the destination tree.", + "id": "controller_creation_rationale_973" + }, + { + "label": "Write the per-equipment ``equipment.json`` registry record. Backend Spe", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1083", + "community": 25, + "norm_label": "write the per-equipment ``equipment.json`` registry record. backend spe", + "id": "controller_creation_rationale_1083" + }, + { + "label": "Run :meth:`Validator.validate_creation` against the rendered tree. Catc", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1120", + "community": 5, + "norm_label": "run :meth:`validator.validate_creation` against the rendered tree. catc", + "id": "controller_creation_rationale_1120" + }, + { + "label": "Remove or leave the partial directory per the spec.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1199", + "community": 5, + "norm_label": "remove or leave the partial directory per the spec.", + "id": "controller_creation_rationale_1199" + }, + { + "label": "Best-effort append to the equipment-level log. Backend Spec \u00a711.5. Comp", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1232", + "community": 5, + "norm_label": "best-effort append to the equipment-level log. backend spec \u00a711.5. comp", + "id": "controller_creation_rationale_1232" + }, + { + "label": "Return the ``id`` of every entry in ``extra_fields`` with ``required: true``.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1257", + "community": 5, + "norm_label": "return the ``id`` of every entry in ``extra_fields`` with ``required: true``.", + "id": "controller_creation_rationale_1257" + }, + { + "label": "Map a template's ``_exlab_readme.fields`` dicts to typed declarations. Entr", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1270", + "community": 5, + "norm_label": "map a template's ``_exlab_readme.fields`` dicts to typed declarations. entr", + "id": "controller_creation_rationale_1270" + }, + { + "label": "Map ``config.readme.defaults`` entries to typed declarations. Core field id", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1302", + "community": 5, + "norm_label": "map ``config.readme.defaults`` entries to typed declarations. core field id", + "id": "controller_creation_rationale_1302" + }, + { + "label": "Return the creating OS user for the README ``system.created_by``. Distinct", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1327", + "community": 5, + "norm_label": "return the creating os user for the readme ``system.created_by``. distinct", + "id": "controller_creation_rationale_1327" + }, + { + "label": "Stash the resolved template on the request so the pipeline can re-use it. T", + "file_type": "rationale", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1346", + "community": 5, + "norm_label": "stash the resolved template on the request so the pipeline can re-use it. t", + "id": "controller_creation_rationale_1346" + }, + { + "label": "RESUME.md", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L1", + "community": 235, + "norm_label": "resume.md", + "id": "resume_md" + }, + { + "label": "RESUME \u2014 Main-window UI refresh (Phase 4 done; post-demo UI batch committed)", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L1", + "community": 235, + "norm_label": "resume \u2014 main-window ui refresh (phase 4 done; post-demo ui batch committed)", + "id": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed" + }, + { + "label": "\u23e9 CURRENT STATE (2026-05-29, session 2)", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L7", + "community": 235, + "norm_label": "\u23e9 current state (2026-05-29, session 2)", + "id": "exlabwizard_resume_current_state_2026_05_29_session_2" + }, + { + "label": "How to work (lessons from this session \u2014 important)", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L47", + "community": 235, + "norm_label": "how to work (lessons from this session \u2014 important)", + "id": "exlabwizard_resume_how_to_work_lessons_from_this_session_important" + }, + { + "label": "Where things stand", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L70", + "community": 235, + "norm_label": "where things stand", + "id": "exlabwizard_resume_where_things_stand" + }, + { + "label": "Committed (clean) \u2014 Phases 1\u20133", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L78", + "community": 235, + "norm_label": "committed (clean) \u2014 phases 1\u20133", + "id": "exlabwizard_resume_committed_clean_phases_1_3" + }, + { + "label": "UNCOMMITTED partial Phase 4 (working tree, additive + backward-compatible)", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L86", + "community": 235, + "norm_label": "uncommitted partial phase 4 (working tree, additive + backward-compatible)", + "id": "exlabwizard_resume_uncommitted_partial_phase_4_working_tree_additive_backward_compatible" + }, + { + "label": "Phase 4 remaining work (Option B \u2014 selection \u2192 metadata)", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L100", + "community": 235, + "norm_label": "phase 4 remaining work (option b \u2014 selection \u2192 metadata)", + "id": "exlabwizard_resume_phase_4_remaining_work_option_b_selection_metadata" + }, + { + "label": "Tests to add (Phase 4)", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L148", + "community": 235, + "norm_label": "tests to add (phase 4)", + "id": "exlabwizard_resume_tests_to_add_phase_4" + }, + { + "label": "Demo checkpoint (task #6, after Phase 4 verifies green)", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L158", + "community": 235, + "norm_label": "demo checkpoint (task #6, after phase 4 verifies green)", + "id": "exlabwizard_resume_demo_checkpoint_task_6_after_phase_4_verifies_green" + }, + { + "label": "Code-review findings to honor (from earlier passes)", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L164", + "community": 235, + "norm_label": "code-review findings to honor (from earlier passes)", + "id": "exlabwizard_resume_code_review_findings_to_honor_from_earlier_passes" + }, + { + "label": "Quick resume verification (run sequentially, one at a time)", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L171", + "community": 235, + "norm_label": "quick resume verification (run sequentially, one at a time)", + "id": "exlabwizard_resume_quick_resume_verification_run_sequentially_one_at_a_time" + }, + { + "label": "code:block1 (git branch --show-current # feature/gui-imrprovemen)", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L172", + "community": 235, + "norm_label": "code:block1 (git branch --show-current # feature/gui-imrprovemen)", + "id": "exlabwizard_resume_codeblock_1" + }, + { + "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L491", + "community": 182, + "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", + "id": "pages_main_rationale_491" + }, + { + "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L530", + "community": 192, + "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", + "id": "pages_main_rationale_530" + }, + { + "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L479", + "community": 182, + "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", + "id": "pages_main_rationale_479" + }, + { + "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L518", + "community": 192, + "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", + "id": "pages_main_rationale_518" + }, + { + "label": "RESUME \u2014 Main-window UI refresh (Phase 4 DONE + committed; at demo checkpoint)", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L1", + "community": 235, + "norm_label": "resume \u2014 main-window ui refresh (phase 4 done + committed; at demo checkpoint)", + "id": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint" + }, + { + "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L475", + "community": 182, + "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", + "id": "pages_main_rationale_475" + }, + { + "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L514", + "community": 192, + "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", + "id": "pages_main_rationale_514" + }, + { + "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L483", + "community": 182, + "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", + "id": "pages_main_rationale_483" + }, + { + "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L522", + "community": 192, + "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", + "id": "pages_main_rationale_522" + }, + { + "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L489", + "community": 182, + "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", + "id": "pages_main_rationale_489" + }, + { + "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L528", + "community": 192, + "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", + "id": "pages_main_rationale_528" + }, + { + "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L490", + "community": 182, + "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", + "id": "pages_main_rationale_490" + }, + { + "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L529", + "community": 192, + "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", + "id": "pages_main_rationale_529" + }, + { + "label": "Return the framed-pane card-shell style fragment (pure; testable). Always e", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/framed_pane.py", + "source_location": "L66", + "community": 61, + "norm_label": "return the framed-pane card-shell style fragment (pure; testable). always e", + "id": "components_framed_pane_rationale_66" + }, + { + "label": "Return the title-strip style fragment (pure; testable).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/framed_pane.py", + "source_location": "L75", + "community": 61, + "norm_label": "return the title-strip style fragment (pure; testable).", + "id": "components_framed_pane_rationale_75" + }, + { + "label": "Return the scrollable-body style fragment (pure; testable).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/framed_pane.py", + "source_location": "L80", + "community": 61, + "norm_label": "return the scrollable-body style fragment (pure; testable).", + "id": "components_framed_pane_rationale_80" + }, + { + "label": "Context manager rendering a framed, titled pane; yields the body element. U", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/framed_pane.py", + "source_location": "L92", + "community": 61, + "norm_label": "context manager rendering a framed, titled pane; yields the body element. u", + "id": "components_framed_pane_rationale_92" + }, + { + "label": "Key/value row whose value is a sync-status icon (tolerant). Mirrors :func:`", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", + "source_location": "L124", + "community": 132, + "norm_label": "key/value row whose value is a sync-status icon (tolerant). mirrors :func:`", + "id": "components_metadata_pane_rationale_124" + }, + { + "label": "Render the SELECTED FILE / SELECTED FOLDER sub-card (Phase 4, \u00a74.4). Append", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", + "source_location": "L142", + "community": 132, + "norm_label": "render the selected file / selected folder sub-card (phase 4, \u00a74.4). append", + "id": "components_metadata_pane_rationale_142" + }, + { + "label": "uvicorn ``--factory`` entrypoint.", + "file_type": "rationale", + "source_file": "tests/e2e/_test_app.py", + "source_location": "L928", + "community": 39, + "norm_label": "uvicorn ``--factory`` entrypoint.", + "id": "e2e_test_app_rationale_928" + }, + { + "label": "Define every ``@ui.page(...)`` handler. Called from :func:`mount_ui`.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L90", + "community": 39, + "norm_label": "define every ``@ui.page(...)`` handler. called from :func:`mount_ui`.", + "id": "ui_mount_rationale_90" + }, + { + "label": "Build the LIMS-password Save / Clear handlers for the settings dialog. Cred", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L464", + "community": 77, + "norm_label": "build the lims-password save / clear handlers for the settings dialog. cred", + "id": "ui_mount_rationale_464" + }, + { + "label": "Run the rclone NAS-remote probe and adapt it for the inline panel. rclone.c", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L518", + "community": 228, + "norm_label": "run the rclone nas-remote probe and adapt it for the inline panel. rclone.c", + "id": "ui_mount_rationale_518" + }, + { + "label": "Write ``updated`` via ``deps.save_config`` and hot-reload components. Retur", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L574", + "community": 77, + "norm_label": "write ``updated`` via ``deps.save_config`` and hot-reload components. retur", + "id": "ui_mount_rationale_574" + }, + { + "label": "Create the staging directory when the operator saved a non-empty path. ``st", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L606", + "community": 77, + "norm_label": "create the staging directory when the operator saved a non-empty path. ``st", + "id": "ui_mount_rationale_606" + }, + { + "label": "Push ``updated`` into the running components (no tray relaunch). Wraps :fun", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L632", + "community": 77, + "norm_label": "push ``updated`` into the running components (no tray relaunch). wraps :fun", + "id": "ui_mount_rationale_632" + }, + { + "label": "True when nas-mode equipment exist but the ``nas:`` remote is unusable. rcl", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L649", + "community": 82, + "norm_label": "true when nas-mode equipment exist but the ``nas:`` remote is unusable. rcl", + "id": "ui_mount_rationale_649" + }, + { + "label": "Return True when the \u00a74.9 setup state is ``READY``. Delegates to :func:`api", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L673", + "community": 52, + "norm_label": "return true when the \u00a74.9 setup state is ``ready``. delegates to :func:`api", + "id": "ui_mount_rationale_673" + }, + { + "label": "Register / unregister platform autostart; return the real post-op state. Re", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L705", + "community": 153, + "norm_label": "register / unregister platform autostart; return the real post-op state. re", + "id": "ui_mount_rationale_705" + }, + { + "label": "Return the (session_id, session) pairs the Operations panel shows. The \u00a79.5", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L764", + "community": 204, + "norm_label": "return the (session_id, session) pairs the operations panel shows. the \u00a79.5", + "id": "ui_mount_rationale_764" + }, + { + "label": "Return ``(panel_count, input_required, active)`` operation counts. ``panel_", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L781", "community": 204, + "norm_label": "return ``(panel_count, input_required, active)`` operation counts. ``panel_", + "id": "ui_mount_rationale_781" + }, + { + "label": "Return the \u00a74.9.3 next-action string for the banner subline. Unlike :func:`", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L798", + "community": 52, + "norm_label": "return the \u00a74.9.3 next-action string for the banner subline. unlike :func:`", + "id": "ui_mount_rationale_798" + }, + { + "label": "Compose the ``?selected=...&right_pane=...`` query string for /main. Omits", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L828", + "community": 209, + "norm_label": "compose the ``?selected=...&right_pane=...`` query string for /main. omits", + "id": "ui_mount_rationale_828" + }, + { + "label": "Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L861", + "community": 209, + "norm_label": "map a selected node id to ``(kind, is_received)``. mirrors the shape classi", + "id": "ui_mount_rationale_861" + }, + { + "label": "Build the metadata-pane payload for the selected node, by kind. Returns ``{", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L905", + "community": 151, + "norm_label": "build the metadata-pane payload for the selected node, by kind. returns ``{", + "id": "ui_mount_rationale_905" + }, + { + "label": "Project equipment-config fields into the owned-equipment payload.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L932", + "community": 151, + "norm_label": "project equipment-config fields into the owned-equipment payload.", + "id": "ui_mount_rationale_932" + }, + { + "label": "Return the relay-equipment payload (label, source_host).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L947", + "community": 151, + "norm_label": "return the relay-equipment payload (label, source_host).", + "id": "ui_mount_rationale_947" + }, + { + "label": "Derive a project payload from the on-disk project directory. ``node_id`` is", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L961", + "community": 210, + "norm_label": "derive a project payload from the on-disk project directory. ``node_id`` is", + "id": "ui_mount_rationale_961" + }, + { + "label": "Count immediate child directories of ``parent`` whose names start with ``pre", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L995", + "community": 210, + "norm_label": "count immediate child directories of ``parent`` whose names start with ``pre", + "id": "ui_mount_rationale_995" + }, + { + "label": "Decode the run's creation.json into the metadata-pane payload. Returns ``{}", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1010", + "community": 163, + "norm_label": "decode the run's creation.json into the metadata-pane payload. returns ``{}", + "id": "ui_mount_rationale_1010" + }, + { + "label": "Resolve a centre-list selection (file or folder) to a render payload. Phase", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1053", + "community": 163, + "norm_label": "resolve a centre-list selection (file or folder) to a render payload. phase", + "id": "ui_mount_rationale_1053" + }, + { + "label": "Aggregate a one-level folder scan into a folder-card payload (OQ-4/B). Phas", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1102", + "community": 163, + "norm_label": "aggregate a one-level folder scan into a folder-card payload (oq-4/b). phas", + "id": "ui_mount_rationale_1102" + }, + { + "label": "Mount / rebind the per-tab FolderFeed and return current entries. Uses ``ap", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1143", + "community": 188, + "norm_label": "mount / rebind the per-tab folderfeed and return current entries. uses ``ap", + "id": "ui_mount_rationale_1143" + }, + { + "label": "FolderFeed fetch hook. Skips when the tree just walked. Runs the synchronou", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1204", + "community": 188, + "norm_label": "folderfeed fetch hook. skips when the tree just walked. runs the synchronou", + "id": "ui_mount_rationale_1204" + }, + { + "label": "Force a fresh single-folder scan and prime the feed payload (OQ-1/A). The F", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1228", + "community": 55, + "norm_label": "force a fresh single-folder scan and prime the feed payload (oq-1/a). the f", + "id": "ui_mount_rationale_1228" + }, + { + "label": "Dispatch a per-run context action to its backend surface. Mirrors :func:`ap", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1268", + "community": 55, + "norm_label": "dispatch a per-run context action to its backend surface. mirrors :func:`ap", + "id": "ui_mount_rationale_1268" + }, + { + "label": "Bulk-clear every staged run whose sync job is verified. Wired from the file", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1326", + "community": 161, + "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file", + "id": "ui_mount_rationale_1326" + }, + { + "label": "Handle ``Open in OS`` / ``Copy path`` / ``Keep local`` file actions.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1371", + "community": 161, + "norm_label": "handle ``open in os`` / ``copy path`` / ``keep local`` file actions.", + "id": "ui_mount_rationale_1371" + }, + { + "label": "Flip a file's ``keep_local`` flag via the orchestrator's writer. Operator-f", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1410", + "community": 55, + "norm_label": "flip a file's ``keep_local`` flag via the orchestrator's writer. operator-f", + "id": "ui_mount_rationale_1410" + }, + { + "label": "Launch the host OS's default opener for ``path``. Returns False on platform", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1453", + "community": 164, + "norm_label": "launch the host os's default opener for ``path``. returns false on platform", + "id": "ui_mount_rationale_1453" + }, + { + "label": "Build the Operations-panel rows from the live session store (T3). Uses the", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1481", + "community": 28, + "norm_label": "build the operations-panel rows from the live session store (t3). uses the", + "id": "ui_mount_rationale_1481" + }, + { + "label": "Open the in-flight Operations panel (Frontend \u00a79.5). Builds a fresh snapsho", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1493", + "community": 28, + "norm_label": "open the in-flight operations panel (frontend \u00a79.5). builds a fresh snapsho", + "id": "ui_mount_rationale_1493" + }, + { + "label": "Show a lightweight details/\"log\" dialog for one in-flight operation. The \u00a79", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1517", + "community": 164, + "norm_label": "show a lightweight details/\"log\" dialog for one in-flight operation. the \u00a79", + "id": "ui_mount_rationale_1517" + }, + { + "label": "Resume a suspended session by re-opening its \u00a79.1 input dialog (T5). Reads", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1551", + "community": 28, + "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads", + "id": "ui_mount_rationale_1551" + }, + { + "label": "Open the \u00a79.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1583", + "community": 40, + "norm_label": "open the \u00a79.1 escalation dialog; submit resumes, cancel confirms (t5). subm", + "id": "ui_mount_rationale_1583" + }, + { + "label": "Resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1621", + "community": 28, + "norm_label": "resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", + "id": "ui_mount_rationale_1621" + }, + { + "label": "Cancel an in-flight session via the \u00a79.4 Discard / Keep dialog (T4). The op", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1630", + "community": 28, + "norm_label": "cancel an in-flight session via the \u00a79.4 discard / keep dialog (t4). the op", + "id": "ui_mount_rationale_1630" + }, + { + "label": "Open a NiceGUI dialog showing the run's sync-queue job state. The operator-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1671", + "community": 55, + "norm_label": "open a nicegui dialog showing the run's sync-queue job state. the operator-", + "id": "ui_mount_rationale_1671" + }, + { + "label": "Return the settings sections the operator still needs to fill in. Mirrors a", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1719", + "community": 82, "norm_label": "return the settings sections the operator still needs to fill in. mirrors a", - "id": "ui_mount_rationale_1712" + "id": "ui_mount_rationale_1719" + }, + { + "label": "Return the configured templates directory, or ``None``.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1752", + "community": 40, + "norm_label": "return the configured templates directory, or ``none``.", + "id": "ui_mount_rationale_1752" + }, + { + "label": "List template directory names of ``template_type`` under templates_dir.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1760", + "community": 40, + "norm_label": "list template directory names of ``template_type`` under templates_dir.", + "id": "ui_mount_rationale_1760" + }, + { + "label": "Map each ``template_type`` template name to its parsed copier questions. Re", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1777", + "community": 63, + "norm_label": "map each ``template_type`` template name to its parsed copier questions. re", + "id": "ui_mount_rationale_1777" + }, + { + "label": "Read the offline-catalogue projects (disconnected-workstation source). Read", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1810", + "community": 162, + "norm_label": "read the offline-catalogue projects (disconnected-workstation source). read", + "id": "ui_mount_rationale_1810" + }, + { + "label": "Return the LIMS projects backing the project wizard's picker. Tries the liv", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1844", + "community": 162, + "norm_label": "return the lims projects backing the project wizard's picker. tries the liv", + "id": "ui_mount_rationale_1844" + }, + { + "label": "Return the configured equipment IDs.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1874", + "community": 63, + "norm_label": "return the configured equipment ids.", + "id": "ui_mount_rationale_1874" + }, + { + "label": "Await a controller session's pipeline task and return the final handle. ``c", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1882", + "community": 63, + "norm_label": "await a controller session's pipeline task and return the final handle. ``c", + "id": "ui_mount_rationale_1882" + }, + { + "label": "Fold the controller's WS frames into the wizard's live phase bar (T2) and su", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1901", + "community": 40, + "norm_label": "fold the controller's ws frames into the wizard's live phase bar (t2) and su", + "id": "ui_mount_rationale_1901" + }, + { + "label": "Best-effort close of a NiceGUI dialog (no-op when ``None`` / test mode).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1944", + "community": 40, + "norm_label": "best-effort close of a nicegui dialog (no-op when ``none`` / test mode).", + "id": "ui_mount_rationale_1944" + }, + { + "label": "Build a ProjectCreateRequest from the wizard state and run it.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1952", + "community": 63, + "norm_label": "build a projectcreaterequest from the wizard state and run it.", + "id": "ui_mount_rationale_1952" + }, + { + "label": "Build a RunCreateRequest from the wizard state and run it.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1985", + "community": 99, + "norm_label": "build a runcreaterequest from the wizard state and run it.", + "id": "ui_mount_rationale_1985" + }, + { + "label": "Drive a create_* call to completion and toast the outcome. When ``wizard_st", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L2026", + "community": 99, + "norm_label": "drive a create_* call to completion and toast the outcome. when ``wizard_st", + "id": "ui_mount_rationale_2026" + }, + { + "label": "Run the validator audit, swallowing failures to a WARN log.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L2069", + "community": 99, + "norm_label": "run the validator audit, swallowing failures to a warn log.", + "id": "ui_mount_rationale_2069" + }, + { + "label": "Return the absolute path to the bundled ``assets/`` directory. Resolves bot", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/theme.py", + "source_location": "L135", + "community": 39, + "norm_label": "return the absolute path to the bundled ``assets/`` directory. resolves bot", + "id": "ui_theme_rationale_135" + }, + { + "label": "Mount the project's ``assets/`` directory at ``/assets``. Idempotent: a mod", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/theme.py", + "source_location": "L150", + "community": 39, + "norm_label": "mount the project's ``assets/`` directory at ``/assets``. idempotent: a mod", + "id": "ui_theme_rationale_150" + }, + { + "label": "Render the centre-pane file list. Pure render function. Double-clicking a f", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L173", + "community": 202, + "norm_label": "render the centre-pane file list. pure render function. double-clicking a f", + "id": "components_file_list_rationale_173" + }, + { + "label": "Render the file-list column header row (Name / Size / Modified / Status).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L215", + "community": 202, + "norm_label": "render the file-list column header row (name / size / modified / status).", + "id": "components_file_list_rationale_215" + }, + { + "label": "Render the centre-pane file list (Redesign \u00a74.3). Each row carries a right-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L485", + "community": 182, + "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", + "id": "pages_main_rationale_485" + }, + { + "label": "Render the right Metadata / Problems pane (Redesign \u00a74.4).", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L524", + "community": 192, + "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", + "id": "pages_main_rationale_524" + }, + { + "label": "uvicorn ``--factory`` entrypoint.", + "file_type": "rationale", + "source_file": "tests/e2e/_test_app.py", + "source_location": "L910", + "community": 39, + "norm_label": "uvicorn ``--factory`` entrypoint.", + "id": "e2e_test_app_rationale_910" + }, + { + "label": "uvicorn ``--factory`` entrypoint.", + "file_type": "rationale", + "source_file": "tests/e2e/_test_app.py", + "source_location": "L899", + "community": 39, + "norm_label": "uvicorn ``--factory`` entrypoint.", + "id": "e2e_test_app_rationale_899" + }, + { + "label": "uvicorn ``--factory`` entrypoint.", + "file_type": "rationale", + "source_file": "tests/e2e/_test_app.py", + "source_location": "L896", + "community": 39, + "norm_label": "uvicorn ``--factory`` entrypoint.", + "id": "e2e_test_app_rationale_896" + }, + { + "label": "RESUME \u2014 Main-window UI refresh (Phase 4 in progress)", + "file_type": "document", + "source_file": "RESUME.md", + "source_location": "L1", + "community": 235, + "norm_label": "resume \u2014 main-window ui refresh (phase 4 in progress)", + "id": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress" + }, + { + "label": "A degraded folder scan (item_count=None / rollup=None) still renders.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_metadata_pane.py", + "source_location": "L120", + "community": 146, + "norm_label": "a degraded folder scan (item_count=none / rollup=none) still renders.", + "id": "ui_test_metadata_pane_rationale_120" + }, + { + "label": "With no node selected, the sub-card sits beneath the empty-state hint.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_metadata_pane.py", + "source_location": "L142", + "community": 146, + "norm_label": "with no node selected, the sub-card sits beneath the empty-state hint.", + "id": "ui_test_metadata_pane_rationale_142" + }, + { + "label": "A selected run node's content stays; the sub-card appends below it.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_metadata_pane.py", + "source_location": "L150", + "community": 146, + "norm_label": "a selected run node's content stays; the sub-card appends below it.", + "id": "ui_test_metadata_pane_rationale_150" + }, + { + "label": "Nothing selected -> no scan, no write, no raise.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1535", + "community": 14, + "norm_label": "nothing selected -> no scan, no write, no raise.", + "id": "ui_test_mount_rationale_1535" + }, + { + "label": "A failed scan keeps the existing payload and warns.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1543", + "community": 50, + "norm_label": "a failed scan keeps the existing payload and warns.", + "id": "ui_test_mount_rationale_1543" + }, + { + "label": "macOS dispatches to the ``open`` command.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1582", + "community": 50, + "norm_label": "macos dispatches to the ``open`` command.", + "id": "ui_test_mount_rationale_1582" + }, + { + "label": "Minimal NiceGUI surface stand-in: clipboard + navigate.to + notify.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1615", + "community": 14, + "norm_label": "minimal nicegui surface stand-in: clipboard + navigate.to + notify.", + "id": "ui_test_mount_rationale_1615" + }, + { + "label": "``open_in_os`` action calls the platform opener and reports success.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1640", + "community": 14, + "norm_label": "``open_in_os`` action calls the platform opener and reports success.", + "id": "ui_test_mount_rationale_1640" + }, + { + "label": "When the opener returns False the action surfaces a negative toast.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1652", + "community": 131, + "norm_label": "when the opener returns false the action surfaces a negative toast.", + "id": "ui_test_mount_rationale_1652" + }, + { + "label": "``copy_path`` writes the entry path to the NiceGUI clipboard.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1661", + "community": 33, + "norm_label": "``copy_path`` writes the entry path to the nicegui clipboard.", + "id": "ui_test_mount_rationale_1661" + }, + { + "label": "An unknown action verb is logged + toasted without raising.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1669", + "community": 125, + "norm_label": "an unknown action verb is logged + toasted without raising.", + "id": "ui_test_mount_rationale_1669" + }, + { + "label": "An entry with no path triggers the early-return toast.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1676", + "community": 107, + "norm_label": "an entry with no path triggers the early-return toast.", + "id": "ui_test_mount_rationale_1676" + }, + { + "label": "Run any pending mount background tasks to completion.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1696", + "community": 50, + "norm_label": "run any pending mount background tasks to completion.", + "id": "ui_test_mount_rationale_1696" + }, + { + "label": "Force-sync routes to ``deps.nas_sync.enqueue`` with the run path.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1711", + "community": 86, + "norm_label": "force-sync routes to ``deps.nas_sync.enqueue`` with the run path.", + "id": "ui_test_mount_rationale_1711" + }, + { + "label": "Force-sync without a wired NAS sync surfaces a negative toast (no raise).", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1724", + "community": 33, + "norm_label": "force-sync without a wired nas sync surfaces a negative toast (no raise).", + "id": "ui_test_mount_rationale_1724" + }, + { + "label": "The early-exit when config is missing keeps the action a no-op.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1731", + "community": 107, + "norm_label": "the early-exit when config is missing keeps the action a no-op.", + "id": "ui_test_mount_rationale_1731" + }, + { + "label": "``view_log`` dispatches to the dialog opener helper.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1740", + "community": 33, + "norm_label": "``view_log`` dispatches to the dialog opener helper.", + "id": "ui_test_mount_rationale_1740" + }, + { + "label": "An unknown action verb is reported but doesn't raise.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1750", + "community": 33, + "norm_label": "an unknown action verb is reported but doesn't raise.", + "id": "ui_test_mount_rationale_1750" + }, + { + "label": "``clear_verified`` deletes the run directory via the local helper.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1759", + "community": 14, + "norm_label": "``clear_verified`` deletes the run directory via the local helper.", + "id": "ui_test_mount_rationale_1759" + }, + { + "label": "The bulk action clears every ``synced`` row and toasts the count.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1784", + "community": 14, + "norm_label": "the bulk action clears every ``synced`` row and toasts the count.", + "id": "ui_test_mount_rationale_1784" + }, + { + "label": "An exception from the clear sweep is caught + toasted.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1820", + "community": 125, + "norm_label": "an exception from the clear sweep is caught + toasted.", + "id": "ui_test_mount_rationale_1820" + }, + { + "label": "Lightweight ``app`` stand-in carrying ``storage.tab``.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1844", + "community": 0, + "norm_label": "lightweight ``app`` stand-in carrying ``storage.tab``.", + "id": "ui_test_mount_rationale_1844" + }, + { + "label": "Without a selected node the feed isn't started and returns ``[]``.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1855", + "community": 33, + "norm_label": "without a selected node the feed isn't started and returns ``[]``.", + "id": "ui_test_mount_rationale_1855" + }, + { + "label": "The first call mounts a FolderFeed + RefreshCoordinator on tab storage.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1865", + "community": 50, + "norm_label": "the first call mounts a folderfeed + refreshcoordinator on tab storage.", + "id": "ui_test_mount_rationale_1865" + }, + { + "label": "When the feed's last_payload is set, entries are projected into FileListEntr", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1878", + "community": 86, + "norm_label": "when the feed's last_payload is set, entries are projected into filelistentr", + "id": "ui_test_mount_rationale_1878" + }, + { + "label": "A successful scan records the refresh on the coordinator.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1937", + "community": 106, + "norm_label": "a successful scan records the refresh on the coordinator.", + "id": "ui_test_mount_rationale_1937" + }, + { + "label": "A scan failure returns ``None`` so the feed keeps polling.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1956", + "community": 173, + "norm_label": "a scan failure returns ``none`` so the feed keeps polling.", + "id": "ui_test_mount_rationale_1956" + }, + { + "label": "A run with no sync-queue job still renders a dialog without raising.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1972", + "community": 173, + "norm_label": "a run with no sync-queue job still renders a dialog without raising.", + "id": "ui_test_mount_rationale_1972" + }, + { + "label": "A run with a sync-queue job renders its state without raising.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1981", + "community": 158, + "norm_label": "a run with a sync-queue job renders its state without raising.", + "id": "ui_test_mount_rationale_1981" + }, + { + "label": "Any exception raised by a per-kind builder is logged + swallowed.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2009", + "community": 69, + "norm_label": "any exception raised by a per-kind builder is logged + swallowed.", + "id": "ui_test_mount_rationale_2009" + }, + { + "label": "The relay payload pulls id+label from build_received_equipment_nodes.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2022", + "community": 158, + "norm_label": "the relay payload pulls id+label from build_received_equipment_nodes.", + "id": "ui_test_mount_rationale_2022" + }, + { + "label": "An unknown relay id still produces a payload (best-effort label).", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2038", + "community": 158, + "norm_label": "an unknown relay id still produces a payload (best-effort label).", + "id": "ui_test_mount_rationale_2038" + }, + { + "label": "A node id without an equipment/project split returns ``{}``.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2045", + "community": 86, + "norm_label": "a node id without an equipment/project split returns ``{}``.", + "id": "ui_test_mount_rationale_2045" + }, + { + "label": "Only directory children whose names start with the prefix are counted.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2056", + "community": 69, + "norm_label": "only directory children whose names start with the prefix are counted.", + "id": "ui_test_mount_rationale_2056" + }, + { + "label": "A corrupt creation.json yields {path, name}, never crashes.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2065", + "community": 157, + "norm_label": "a corrupt creation.json yields {path, name}, never crashes.", + "id": "ui_test_mount_rationale_2065" + }, + { + "label": "When nas_sync.enqueue raises, the background task swallows + toasts.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2078", + "community": 69, + "norm_label": "when nas_sync.enqueue raises, the background task swallows + toasts.", + "id": "ui_test_mount_rationale_2078" + }, + { + "label": "When the clear helper raises, the background task swallows + toasts.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2094", + "community": 106, + "norm_label": "when the clear helper raises, the background task swallows + toasts.", + "id": "ui_test_mount_rationale_2094" + }, + { + "label": "The 0-file path reports ``already cleared`` rather than ``cleared N``.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2110", + "community": 106, + "norm_label": "the 0-file path reports ``already cleared`` rather than ``cleared n``.", + "id": "ui_test_mount_rationale_2110" + }, + { + "label": "A clipboard write failure is caught and reported as a negative toast.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2123", + "community": 173, + "norm_label": "a clipboard write failure is caught and reported as a negative toast.", + "id": "ui_test_mount_rationale_2123" + }, + { + "label": "A fake ``ui`` whose factories build recording stand-ins. Unlike ``_UiSpy``", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2160", + "community": 0, + "norm_label": "a fake ``ui`` whose factories build recording stand-ins. unlike ``_uispy``", + "id": "ui_test_mount_rationale_2160" + }, + { + "label": "No probe wired -> a failure result rather than a crash.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2204", + "community": 170, + "norm_label": "no probe wired -> a failure result rather than a crash.", + "id": "ui_test_mount_rationale_2204" + }, + { + "label": "A reachable probe maps ok/latency into a Connected result.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2216", + "community": 157, + "norm_label": "a reachable probe maps ok/latency into a connected result.", + "id": "ui_test_mount_rationale_2216" + }, + { + "label": "An async probe is awaited before its dict is mapped.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2243", + "community": 180, + "norm_label": "an async probe is awaited before its dict is mapped.", + "id": "ui_test_mount_rationale_2243" + }, + { + "label": "A half-wired install names its first-failing gate as the next action.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2273", + "community": 69, + "norm_label": "a half-wired install names its first-failing gate as the next action.", + "id": "ui_test_mount_rationale_2273" + }, + { + "label": "A fully-satisfied install has no outstanding next action.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2280", + "community": 325, + "norm_label": "a fully-satisfied install has no outstanding next action.", + "id": "ui_test_mount_rationale_2280" + }, + { + "label": "No sync-state writer wired -> negative toast, no task spawned.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2304", + "community": 106, + "norm_label": "no sync-state writer wired -> negative toast, no task spawned.", + "id": "ui_test_mount_rationale_2304" + }, + { + "label": "A path with no enclosing run root surfaces a negative toast.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2313", + "community": 14, + "norm_label": "a path with no enclosing run root surfaces a negative toast.", + "id": "ui_test_mount_rationale_2313" + }, + { + "label": "A resolvable file flips keep_local via the writer and fires on_done.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2324", + "community": 23, + "norm_label": "a resolvable file flips keep_local via the writer and fires on_done.", + "id": "ui_test_mount_rationale_2324" }, { - "label": "Return the configured templates directory, or ``None``.", + "label": "The ``keep_local`` action routes to ``_toggle_keep_local``.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2379", + "community": 14, + "norm_label": "the ``keep_local`` action routes to ``_toggle_keep_local``.", + "id": "ui_test_mount_rationale_2379" + }, + { + "label": "On win32 the helper calls ``os.startfile`` and reports success.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2396", + "community": 170, + "norm_label": "on win32 the helper calls ``os.startfile`` and reports success.", + "id": "ui_test_mount_rationale_2396" + }, + { + "label": "No controller -> a negative toast and no dialog open.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2430", + "community": 180, + "norm_label": "no controller -> a negative toast and no dialog open.", + "id": "ui_test_mount_rationale_2430" + }, + { + "label": "The details dialog renders the session state plus pending/error lines.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2457", + "community": 300, + "norm_label": "the details dialog renders the session state plus pending/error lines.", + "id": "ui_test_mount_rationale_2457" + }, + { + "label": "A session not awaiting input cannot be resumed -> negative toast.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2481", + "community": 14, + "norm_label": "a session not awaiting input cannot be resumed -> negative toast.", + "id": "ui_test_mount_rationale_2481" + }, + { + "label": "A suspended session re-opens its escalation dialog with parked fields.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2490", + "community": 171, + "norm_label": "a suspended session re-opens its escalation dialog with parked fields.", + "id": "ui_test_mount_rationale_2490" + }, + { + "label": "The dialog's Submit handler calls ``controller.resume`` in the background.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2519", + "community": 23, + "norm_label": "the dialog's submit handler calls ``controller.resume`` in the background.", + "id": "ui_test_mount_rationale_2519" + }, + { + "label": "The dialog's Cancel handler routes through ``_cancel_session``.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2551", + "community": 23, + "norm_label": "the dialog's cancel handler routes through ``_cancel_session``.", + "id": "ui_test_mount_rationale_2551" + }, + { + "label": "The \u00a79.4 dialog's Discard button cancels with discard_files=True.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2591", + "community": 170, + "norm_label": "the \u00a79.4 dialog's discard button cancels with discard_files=true.", + "id": "ui_test_mount_rationale_2591" + }, + { + "label": "The Keep-files button cancels with discard_files=False.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2610", + "community": 171, + "norm_label": "the keep-files button cancels with discard_files=false.", + "id": "ui_test_mount_rationale_2610" + }, + { + "label": "A cancel failure is caught and toasted, not raised.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2627", + "community": 172, + "norm_label": "a cancel failure is caught and toasted, not raised.", + "id": "ui_test_mount_rationale_2627" + }, + { + "label": "The Back button closes the dialog without cancelling.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2643", + "community": 181, + "norm_label": "the back button closes the dialog without cancelling.", + "id": "ui_test_mount_rationale_2643" + }, + { + "label": "With a job row, the dialog renders each populated field line.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2657", + "community": 171, + "norm_label": "with a job row, the dialog renders each populated field line.", + "id": "ui_test_mount_rationale_2657" + }, + { + "label": "Without a job row the dialog shows the 'no sync job' line.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2685", + "community": 54, + "norm_label": "without a job row the dialog shows the 'no sync job' line.", + "id": "ui_test_mount_rationale_2685" + }, + { + "label": "No progress view on the wizard state -> the consumer returns at once.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2701", + "community": 23, + "norm_label": "no progress view on the wizard state -> the consumer returns at once.", + "id": "ui_test_mount_rationale_2701" + }, + { + "label": "An input_required frame opens the dialog; a done frame closes it.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2712", + "community": 23, + "norm_label": "an input_required frame opens the dialog; a done frame closes it.", + "id": "ui_test_mount_rationale_2712" + }, + { + "label": "A subscribe error is logged, not raised.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2749", + "community": 23, + "norm_label": "a subscribe error is logged, not raised.", + "id": "ui_test_mount_rationale_2749" + }, + { + "label": "Submitting a run with no template selected surfaces a negative toast.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2789", + "community": 170, + "norm_label": "submitting a run with no template selected surfaces a negative toast.", + "id": "ui_test_mount_rationale_2789" + }, + { + "label": "``_render_run_wizard`` wires templates/equipment into the run-wizard page.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2800", + "community": 172, + "norm_label": "``_render_run_wizard`` wires templates/equipment into the run-wizard page.", + "id": "ui_test_mount_rationale_2800" + }, + { + "label": "Non-EquipmentNode keys in the hierarchy are ignored; unknown root -> treated", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2829", + "community": 54, + "norm_label": "non-equipmentnode keys in the hierarchy are ignored; unknown root -> treated", + "id": "ui_test_mount_rationale_2829" + }, + { + "label": "The received_equipment kind routes to the relay-equipment builder.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2838", + "community": 181, + "norm_label": "the received_equipment kind routes to the relay-equipment builder.", + "id": "ui_test_mount_rationale_2838" + }, + { + "label": "A matching equipment id projects its config fields into the payload.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2854", + "community": 54, + "norm_label": "a matching equipment id projects its config fields into the payload.", + "id": "ui_test_mount_rationale_2854" + }, + { + "label": "A schema_version mismatch (read_catalogue -> None) yields ``[]``.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2876", + "community": 54, + "norm_label": "a schema_version mismatch (read_catalogue -> none) yields ``[]``.", + "id": "ui_test_mount_rationale_2876" + }, + { + "label": "A raising ``app.storage.tab`` degrades to an in-memory feed (no tab).", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2888", + "community": 50, + "norm_label": "a raising ``app.storage.tab`` degrades to an in-memory feed (no tab).", + "id": "ui_test_mount_rationale_2888" + }, + { + "label": "A raising evaluator degrades to 'not ready' (banner stays up).", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2910", + "community": 50, + "norm_label": "a raising evaluator degrades to 'not ready' (banner stays up).", + "id": "ui_test_mount_rationale_2910" + }, + { + "label": "An equipment id absent from config yields ``{}``.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2923", + "community": 54, + "norm_label": "an equipment id absent from config yields ``{}``.", + "id": "ui_test_mount_rationale_2923" + }, + { + "label": "With no SYNCED rows the sweep clears nothing and toasts 'none'.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2931", + "community": 351, + "norm_label": "with no synced rows the sweep clears nothing and toasts 'none'.", + "id": "ui_test_mount_rationale_2931" + }, + { + "label": "A run root that can't yield a relative path surfaces a negative toast.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2948", + "community": 54, + "norm_label": "a run root that can't yield a relative path surfaces a negative toast.", + "id": "ui_test_mount_rationale_2948" + }, + { + "label": "A failing ``controller.resume`` is caught + toasted, not raised.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2966", + "community": 23, + "norm_label": "a failing ``controller.resume`` is caught + toasted, not raised.", + "id": "ui_test_mount_rationale_2966" + }, + { + "label": "An import/engine failure in the outer try yields ``{}``.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2995", + "community": 172, + "norm_label": "an import/engine failure in the outer try yields ``{}``.", + "id": "ui_test_mount_rationale_2995" + }, + { + "label": "A staging-query failure degrades to an empty dock, not a crash.", + "file_type": "rationale", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L3011", + "community": 181, + "norm_label": "a staging-query failure degrades to an empty dock, not a crash.", + "id": "ui_test_mount_rationale_3011" + }, + { + "label": "Dispatch a per-run context action to its backend surface. Mirrors :func:`ap", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1745", - "community": 69, - "norm_label": "return the configured templates directory, or ``none``.", - "id": "ui_mount_rationale_1745" + "source_location": "L1261", + "community": 55, + "norm_label": "dispatch a per-run context action to its backend surface. mirrors :func:`ap", + "id": "ui_mount_rationale_1261" + }, + { + "label": "Bulk-clear every staged run whose sync job is verified. Wired from the file", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1319", + "community": 161, + "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file", + "id": "ui_mount_rationale_1319" + }, + { + "label": "Handle ``Open in OS`` / ``Copy path`` / ``Keep local`` file actions.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1364", + "community": 161, + "norm_label": "handle ``open in os`` / ``copy path`` / ``keep local`` file actions.", + "id": "ui_mount_rationale_1364" + }, + { + "label": "Flip a file's ``keep_local`` flag via the orchestrator's writer. Operator-f", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1403", + "community": 55, + "norm_label": "flip a file's ``keep_local`` flag via the orchestrator's writer. operator-f", + "id": "ui_mount_rationale_1403" + }, + { + "label": "Launch the host OS's default opener for ``path``. Returns False on platform", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1446", + "community": 164, + "norm_label": "launch the host os's default opener for ``path``. returns false on platform", + "id": "ui_mount_rationale_1446" + }, + { + "label": "Build the Operations-panel rows from the live session store (T3). Uses the", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1474", + "community": 28, + "norm_label": "build the operations-panel rows from the live session store (t3). uses the", + "id": "ui_mount_rationale_1474" + }, + { + "label": "Show a lightweight details/\"log\" dialog for one in-flight operation. The \u00a79", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1510", + "community": 164, + "norm_label": "show a lightweight details/\"log\" dialog for one in-flight operation. the \u00a79", + "id": "ui_mount_rationale_1510" + }, + { + "label": "Resume a suspended session by re-opening its \u00a79.1 input dialog (T5). Reads", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1544", + "community": 28, + "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads", + "id": "ui_mount_rationale_1544" + }, + { + "label": "Open the \u00a79.1 escalation dialog; Submit resumes, Cancel confirms (T5). Subm", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1576", + "community": 40, + "norm_label": "open the \u00a79.1 escalation dialog; submit resumes, cancel confirms (t5). subm", + "id": "ui_mount_rationale_1576" + }, + { + "label": "Resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1614", + "community": 28, + "norm_label": "resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", + "id": "ui_mount_rationale_1614" + }, + { + "label": "Cancel an in-flight session via the \u00a79.4 Discard / Keep dialog (T4). The op", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1623", + "community": 28, + "norm_label": "cancel an in-flight session via the \u00a79.4 discard / keep dialog (t4). the op", + "id": "ui_mount_rationale_1623" + }, + { + "label": "Open a NiceGUI dialog showing the run's sync-queue job state. The operator-", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1664", + "community": 55, + "norm_label": "open a nicegui dialog showing the run's sync-queue job state. the operator-", + "id": "ui_mount_rationale_1664" + }, + { + "label": "Return the settings sections the operator still needs to fill in. Mirrors a", + "file_type": "rationale", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1712", + "community": 82, + "norm_label": "return the settings sections the operator still needs to fill in. mirrors a", + "id": "ui_mount_rationale_1712" }, { "label": "List template directory names of ``template_type`` under templates_dir.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1753", - "community": 69, + "community": 40, "norm_label": "list template directory names of ``template_type`` under templates_dir.", "id": "ui_mount_rationale_1753" }, @@ -72395,7 +77795,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1770", - "community": 69, + "community": 63, "norm_label": "map each ``template_type`` template name to its parsed copier questions. re", "id": "ui_mount_rationale_1770" }, @@ -72404,7 +77804,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1803", - "community": 119, + "community": 162, "norm_label": "read the offline-catalogue projects (disconnected-workstation source). read", "id": "ui_mount_rationale_1803" }, @@ -72413,25 +77813,16 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1837", - "community": 266, + "community": 162, "norm_label": "return the lims projects backing the project wizard's picker. tries the liv", "id": "ui_mount_rationale_1837" }, - { - "label": "Return the configured equipment IDs.", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1867", - "community": 119, - "norm_label": "return the configured equipment ids.", - "id": "ui_mount_rationale_1867" - }, { "label": "Await a controller session's pipeline task and return the final handle. ``c", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1875", - "community": 100, + "community": 63, "norm_label": "await a controller session's pipeline task and return the final handle. ``c", "id": "ui_mount_rationale_1875" }, @@ -72440,25 +77831,16 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1894", - "community": 194, + "community": 40, "norm_label": "fold the controller's ws frames into the wizard's live phase bar (t2) and su", "id": "ui_mount_rationale_1894" }, - { - "label": "Best-effort close of a NiceGUI dialog (no-op when ``None`` / test mode).", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1937", - "community": 194, - "norm_label": "best-effort close of a nicegui dialog (no-op when ``none`` / test mode).", - "id": "ui_mount_rationale_1937" - }, { "label": "Build a ProjectCreateRequest from the wizard state and run it.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1945", - "community": 119, + "community": 63, "norm_label": "build a projectcreaterequest from the wizard state and run it.", "id": "ui_mount_rationale_1945" }, @@ -72467,7 +77849,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1978", - "community": 69, + "community": 99, "norm_label": "build a runcreaterequest from the wizard state and run it.", "id": "ui_mount_rationale_1978" }, @@ -72476,7 +77858,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L2019", - "community": 100, + "community": 99, "norm_label": "drive a create_* call to completion and toast the outcome. when ``wizard_st", "id": "ui_mount_rationale_2019" }, @@ -72485,7 +77867,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L2062", - "community": 100, + "community": 99, "norm_label": "run the validator audit, swallowing failures to a warn log.", "id": "ui_mount_rationale_2062" }, @@ -72494,7 +77876,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1217", - "community": 418, + "community": 429, "norm_label": "the phase 4 params default empty and drop out of the url entirely.", "id": "ui_test_mount_rationale_1217" }, @@ -72503,7 +77885,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1222", - "community": 2, + "community": 430, "norm_label": "``file`` keeps '/' readable but encodes spaces; ``q`` encodes everything.", "id": "ui_test_mount_rationale_1222" }, @@ -72512,7 +77894,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1236", - "community": 350, + "community": 80, "norm_label": "equipment / project / run / received_equipment all classify correctly.", "id": "ui_test_mount_rationale_1236" }, @@ -72521,7 +77903,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1257", - "community": 349, + "community": 350, "norm_label": "a node id whose root is not in the hierarchy returns ``(none, false)``. gua", "id": "ui_test_mount_rationale_1257" }, @@ -72530,7 +77912,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1279", - "community": 164, + "community": 80, "norm_label": "an equipment node payload pulls fields from config.equipment[id].", "id": "ui_test_mount_rationale_1279" }, @@ -72539,7 +77921,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1297", - "community": 164, + "community": 80, "norm_label": "asking for a node that isn't in config.equipment returns ``{}``.", "id": "ui_test_mount_rationale_1297" }, @@ -72548,7 +77930,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1304", - "community": 164, + "community": 80, "norm_label": "the project payload counts run_* and testrun_* directories.", "id": "ui_test_mount_rationale_1304" }, @@ -72557,7 +77939,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1323", - "community": 164, + "community": 80, "norm_label": "the run payload decodes creation.json into the metadata fields.", "id": "ui_test_mount_rationale_1323" }, @@ -72566,7 +77948,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1368", - "community": 242, + "community": 33, "norm_label": "a run dir without a creation.json yields {path, name}, not crash.", "id": "ui_test_mount_rationale_1368" }, @@ -72575,7 +77957,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1377", - "community": 103, + "community": 131, "norm_label": "the selected-node fields end up on mainpagestate for the renderer.", "id": "ui_test_mount_rationale_1377" }, @@ -72584,7 +77966,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1393", - "community": 103, + "community": 131, "norm_label": "phase 4 selection / search / density fields reach mainpagestate.", "id": "ui_test_mount_rationale_1393" }, @@ -72602,7 +77984,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1440", - "community": 269, + "community": 125, "norm_label": "empty path or a path matching no current entry resolves to none.", "id": "ui_test_mount_rationale_1440" }, @@ -72611,7 +77993,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1449", - "community": 17, + "community": 14, "norm_label": "a tombstone (\"on nas\") file has no on-disk copy, so size is none.", "id": "ui_test_mount_rationale_1449" }, @@ -72620,7 +78002,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1470", - "community": 62, + "community": 33, "norm_label": "a directory match delegates to the one-level folder aggregate scan.", "id": "ui_test_mount_rationale_1470" }, @@ -72629,7 +78011,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1497", - "community": 2, + "community": 107, "norm_label": "a scan failure yields item_count=none + neutral rollup, no raise.", "id": "ui_test_mount_rationale_1497" }, @@ -72638,25 +78020,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1525", - "community": 270, + "community": 107, "norm_label": "a force-refresh writes the fresh scan onto the per-tab feed payload.", "id": "ui_test_mount_rationale_1525" }, - { - "label": "Nothing selected -> no scan, no write, no raise.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1537", - "community": 298, - "norm_label": "nothing selected -> no scan, no write, no raise.", - "id": "ui_test_mount_rationale_1537" - }, { "label": "A failed scan keeps the existing payload and warns.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1545", - "community": 77, + "community": 50, "norm_label": "a failed scan keeps the existing payload and warns.", "id": "ui_test_mount_rationale_1545" }, @@ -72665,7 +78038,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1564", - "community": 103, + "community": 107, "norm_label": "an unknown sys.platform falls through to false so the toast can warn.", "id": "ui_test_mount_rationale_1564" }, @@ -72674,7 +78047,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1570", - "community": 103, + "community": 131, "norm_label": "linux dispatches to xdg-open via subprocess.popen.", "id": "ui_test_mount_rationale_1570" }, @@ -72683,7 +78056,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1584", - "community": 299, + "community": 50, "norm_label": "macos dispatches to the ``open`` command.", "id": "ui_test_mount_rationale_1584" }, @@ -72692,7 +78065,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1593", - "community": 269, + "community": 125, "norm_label": "a subprocess failure is caught and surfaces false so the caller can toast.", "id": "ui_test_mount_rationale_1593" }, @@ -72701,7 +78074,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1617", - "community": 17, + "community": 14, "norm_label": "minimal nicegui surface stand-in: clipboard + navigate.to + notify.", "id": "ui_test_mount_rationale_1617" }, @@ -72710,7 +78083,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1642", - "community": 17, + "community": 14, "norm_label": "``open_in_os`` action calls the platform opener and reports success.", "id": "ui_test_mount_rationale_1642" }, @@ -72719,7 +78092,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1654", - "community": 297, + "community": 131, "norm_label": "when the opener returns false the action surfaces a negative toast.", "id": "ui_test_mount_rationale_1654" }, @@ -72728,7 +78101,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1663", - "community": 62, + "community": 33, "norm_label": "``copy_path`` writes the entry path to the nicegui clipboard.", "id": "ui_test_mount_rationale_1663" }, @@ -72737,7 +78110,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1671", - "community": 162, + "community": 125, "norm_label": "an unknown action verb is logged + toasted without raising.", "id": "ui_test_mount_rationale_1671" }, @@ -72746,7 +78119,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1678", - "community": 270, + "community": 107, "norm_label": "an entry with no path triggers the early-return toast.", "id": "ui_test_mount_rationale_1678" }, @@ -72755,7 +78128,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1698", - "community": 77, + "community": 50, "norm_label": "run any pending mount background tasks to completion.", "id": "ui_test_mount_rationale_1698" }, @@ -72764,7 +78137,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1713", - "community": 162, + "community": 86, "norm_label": "force-sync routes to ``deps.nas_sync.enqueue`` with the run path.", "id": "ui_test_mount_rationale_1713" }, @@ -72773,25 +78146,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1726", - "community": 145, + "community": 33, "norm_label": "force-sync without a wired nas sync surfaces a negative toast (no raise).", "id": "ui_test_mount_rationale_1726" }, - { - "label": "The early-exit when config is missing keeps the action a no-op.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1733", - "community": 103, - "norm_label": "the early-exit when config is missing keeps the action a no-op.", - "id": "ui_test_mount_rationale_1733" - }, { "label": "``view_log`` dispatches to the dialog opener helper.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1742", - "community": 145, + "community": 33, "norm_label": "``view_log`` dispatches to the dialog opener helper.", "id": "ui_test_mount_rationale_1742" }, @@ -72800,7 +78164,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1752", - "community": 145, + "community": 33, "norm_label": "an unknown action verb is reported but doesn't raise.", "id": "ui_test_mount_rationale_1752" }, @@ -72809,7 +78173,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1761", - "community": 17, + "community": 14, "norm_label": "``clear_verified`` deletes the run directory via the local helper.", "id": "ui_test_mount_rationale_1761" }, @@ -72818,7 +78182,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1786", - "community": 163, + "community": 14, "norm_label": "the bulk action clears every ``synced`` row and toasts the count.", "id": "ui_test_mount_rationale_1786" }, @@ -72827,7 +78191,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1813", - "community": 55, + "community": 86, "norm_label": "the early-exit when config is missing produces a toast, no task.", "id": "ui_test_mount_rationale_1813" }, @@ -72836,7 +78200,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1822", - "community": 162, + "community": 125, "norm_label": "an exception from the clear sweep is caught + toasted.", "id": "ui_test_mount_rationale_1822" }, @@ -72845,7 +78209,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1846", - "community": 77, + "community": 158, "norm_label": "lightweight ``app`` stand-in carrying ``storage.tab``.", "id": "ui_test_mount_rationale_1846" }, @@ -72854,7 +78218,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1857", - "community": 62, + "community": 33, "norm_label": "without a selected node the feed isn't started and returns ``[]``.", "id": "ui_test_mount_rationale_1857" }, @@ -72863,7 +78227,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1867", - "community": 77, + "community": 50, "norm_label": "the first call mounts a folderfeed + refreshcoordinator on tab storage.", "id": "ui_test_mount_rationale_1867" }, @@ -72872,7 +78236,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1880", - "community": 78, + "community": 86, "norm_label": "when the feed's last_payload is set, entries are projected into filelistentr", "id": "ui_test_mount_rationale_1880" }, @@ -72881,7 +78245,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1922", - "community": 78, + "community": 157, "norm_label": "the fetch is a no-op when refreshcoordinator just walked the tree.", "id": "ui_test_mount_rationale_1922" }, @@ -72890,7 +78254,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1939", - "community": 163, + "community": 106, "norm_label": "a successful scan records the refresh on the coordinator.", "id": "ui_test_mount_rationale_1939" }, @@ -72899,7 +78263,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1958", - "community": 165, + "community": 173, "norm_label": "a scan failure returns ``none`` so the feed keeps polling.", "id": "ui_test_mount_rationale_1958" }, @@ -72908,7 +78272,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1974", - "community": 165, + "community": 173, "norm_label": "a run with no sync-queue job still renders a dialog without raising.", "id": "ui_test_mount_rationale_1974" }, @@ -72917,7 +78281,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1983", - "community": 62, + "community": 158, "norm_label": "a run with a sync-queue job renders its state without raising.", "id": "ui_test_mount_rationale_1983" }, @@ -72926,7 +78290,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2011", - "community": 55, + "community": 69, "norm_label": "any exception raised by a per-kind builder is logged + swallowed.", "id": "ui_test_mount_rationale_2011" }, @@ -72935,7 +78299,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2024", - "community": 62, + "community": 157, "norm_label": "the relay payload pulls id+label from build_received_equipment_nodes.", "id": "ui_test_mount_rationale_2024" }, @@ -72944,7 +78308,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2040", - "community": 77, + "community": 158, "norm_label": "an unknown relay id still produces a payload (best-effort label).", "id": "ui_test_mount_rationale_2040" }, @@ -72953,7 +78317,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2047", - "community": 78, + "community": 86, "norm_label": "a node id without an equipment/project split returns ``{}``.", "id": "ui_test_mount_rationale_2047" }, @@ -72962,7 +78326,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2053", - "community": 78, + "community": 86, "norm_label": "a missing parent dir returns 0 (no fs pre-check needed).", "id": "ui_test_mount_rationale_2053" }, @@ -72971,7 +78335,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2058", - "community": 296, + "community": 69, "norm_label": "only directory children whose names start with the prefix are counted.", "id": "ui_test_mount_rationale_2058" }, @@ -72980,7 +78344,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2067", - "community": 295, + "community": 157, "norm_label": "a corrupt creation.json yields {path, name}, never crashes.", "id": "ui_test_mount_rationale_2067" }, @@ -72989,7 +78353,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2080", - "community": 172, + "community": 69, "norm_label": "when nas_sync.enqueue raises, the background task swallows + toasts.", "id": "ui_test_mount_rationale_2080" }, @@ -72998,7 +78362,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2096", - "community": 172, + "community": 106, "norm_label": "when the clear helper raises, the background task swallows + toasts.", "id": "ui_test_mount_rationale_2096" }, @@ -73007,7 +78371,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2112", - "community": 163, + "community": 106, "norm_label": "the 0-file path reports ``already cleared`` rather than ``cleared n``.", "id": "ui_test_mount_rationale_2112" }, @@ -73016,7 +78380,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2125", - "community": 165, + "community": 173, "norm_label": "a clipboard write failure is caught and reported as a negative toast.", "id": "ui_test_mount_rationale_2125" }, @@ -73034,7 +78398,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2206", - "community": 55, + "community": 69, "norm_label": "no probe wired -> a failure result rather than a crash.", "id": "ui_test_mount_rationale_2206" }, @@ -73043,7 +78407,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2218", - "community": 62, + "community": 157, "norm_label": "a reachable probe maps ok/latency into a connected result.", "id": "ui_test_mount_rationale_2218" }, @@ -73052,7 +78416,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2245", - "community": 78, + "community": 180, "norm_label": "an async probe is awaited before its dict is mapped.", "id": "ui_test_mount_rationale_2245" }, @@ -73061,7 +78425,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2275", - "community": 172, + "community": 69, "norm_label": "a half-wired install names its first-failing gate as the next action.", "id": "ui_test_mount_rationale_2275" }, @@ -73079,7 +78443,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2306", - "community": 163, + "community": 106, "norm_label": "no sync-state writer wired -> negative toast, no task spawned.", "id": "ui_test_mount_rationale_2306" }, @@ -73088,7 +78452,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2315", - "community": 326, + "community": 14, "norm_label": "a path with no enclosing run root surfaces a negative toast.", "id": "ui_test_mount_rationale_2315" }, @@ -73097,7 +78461,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2326", - "community": 26, + "community": 23, "norm_label": "a resolvable file flips keep_local via the writer and fires on_done.", "id": "ui_test_mount_rationale_2326" }, @@ -73106,7 +78470,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2381", - "community": 17, + "community": 14, "norm_label": "the ``keep_local`` action routes to ``_toggle_keep_local``.", "id": "ui_test_mount_rationale_2381" }, @@ -73115,7 +78479,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2398", - "community": 55, + "community": 170, "norm_label": "on win32 the helper calls ``os.startfile`` and reports success.", "id": "ui_test_mount_rationale_2398" }, @@ -73124,7 +78488,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2432", - "community": 243, + "community": 180, "norm_label": "no controller -> a negative toast and no dialog open.", "id": "ui_test_mount_rationale_2432" }, @@ -73133,7 +78497,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2438", - "community": 243, + "community": 180, "norm_label": "a wired controller builds the modal and opens it (no raise).", "id": "ui_test_mount_rationale_2438" }, @@ -73142,7 +78506,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2459", - "community": 327, + "community": 300, "norm_label": "the details dialog renders the session state plus pending/error lines.", "id": "ui_test_mount_rationale_2459" }, @@ -73151,7 +78515,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2483", - "community": 17, + "community": 14, "norm_label": "a session not awaiting input cannot be resumed -> negative toast.", "id": "ui_test_mount_rationale_2483" }, @@ -73160,7 +78524,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2492", - "community": 94, + "community": 171, "norm_label": "a suspended session re-opens its escalation dialog with parked fields.", "id": "ui_test_mount_rationale_2492" }, @@ -73169,7 +78533,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2521", - "community": 26, + "community": 23, "norm_label": "the dialog's submit handler calls ``controller.resume`` in the background.", "id": "ui_test_mount_rationale_2521" }, @@ -73178,7 +78542,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2553", - "community": 125, + "community": 23, "norm_label": "the dialog's cancel handler routes through ``_cancel_session``.", "id": "ui_test_mount_rationale_2553" }, @@ -73187,7 +78551,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2593", - "community": 55, + "community": 170, "norm_label": "the \u00a79.4 dialog's discard button cancels with discard_files=true.", "id": "ui_test_mount_rationale_2593" }, @@ -73196,7 +78560,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2612", - "community": 26, + "community": 171, "norm_label": "the keep-files button cancels with discard_files=false.", "id": "ui_test_mount_rationale_2612" }, @@ -73205,7 +78569,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2629", - "community": 185, + "community": 172, "norm_label": "a cancel failure is caught and toasted, not raised.", "id": "ui_test_mount_rationale_2629" }, @@ -73214,7 +78578,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2645", - "community": 186, + "community": 181, "norm_label": "the back button closes the dialog without cancelling.", "id": "ui_test_mount_rationale_2645" }, @@ -73223,7 +78587,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2659", - "community": 94, + "community": 171, "norm_label": "with a job row, the dialog renders each populated field line.", "id": "ui_test_mount_rationale_2659" }, @@ -73232,7 +78596,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2687", - "community": 94, + "community": 54, "norm_label": "without a job row the dialog shows the 'no sync job' line.", "id": "ui_test_mount_rationale_2687" }, @@ -73241,7 +78605,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2703", - "community": 26, + "community": 23, "norm_label": "no progress view on the wizard state -> the consumer returns at once.", "id": "ui_test_mount_rationale_2703" }, @@ -73250,7 +78614,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2714", - "community": 26, + "community": 23, "norm_label": "an input_required frame opens the dialog; a done frame closes it.", "id": "ui_test_mount_rationale_2714" }, @@ -73259,7 +78623,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2751", - "community": 125, + "community": 23, "norm_label": "a subscribe error is logged, not raised.", "id": "ui_test_mount_rationale_2751" }, @@ -73268,7 +78632,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2791", - "community": 55, + "community": 170, "norm_label": "submitting a run with no template selected surfaces a negative toast.", "id": "ui_test_mount_rationale_2791" }, @@ -73277,7 +78641,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2802", - "community": 185, + "community": 172, "norm_label": "``_render_run_wizard`` wires templates/equipment into the run-wizard page.", "id": "ui_test_mount_rationale_2802" }, @@ -73286,7 +78650,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2831", - "community": 94, + "community": 54, "norm_label": "non-equipmentnode keys in the hierarchy are ignored; unknown root -> treated", "id": "ui_test_mount_rationale_2831" }, @@ -73295,7 +78659,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2840", - "community": 186, + "community": 181, "norm_label": "the received_equipment kind routes to the relay-equipment builder.", "id": "ui_test_mount_rationale_2840" }, @@ -73304,7 +78668,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2856", - "community": 94, + "community": 54, "norm_label": "a matching equipment id projects its config fields into the payload.", "id": "ui_test_mount_rationale_2856" }, @@ -73313,7 +78677,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2878", - "community": 242, + "community": 54, "norm_label": "a schema_version mismatch (read_catalogue -> none) yields ``[]``.", "id": "ui_test_mount_rationale_2878" }, @@ -73322,7 +78686,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2890", - "community": 77, + "community": 50, "norm_label": "a raising ``app.storage.tab`` degrades to an in-memory feed (no tab).", "id": "ui_test_mount_rationale_2890" }, @@ -73331,7 +78695,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2912", - "community": 26, + "community": 50, "norm_label": "a raising evaluator degrades to 'not ready' (banner stays up).", "id": "ui_test_mount_rationale_2912" }, @@ -73340,7 +78704,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2925", - "community": 125, + "community": 54, "norm_label": "an equipment id absent from config yields ``{}``.", "id": "ui_test_mount_rationale_2925" }, @@ -73349,7 +78713,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2933", - "community": 17, + "community": 351, "norm_label": "with no synced rows the sweep clears nothing and toasts 'none'.", "id": "ui_test_mount_rationale_2933" }, @@ -73358,7 +78722,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2950", - "community": 125, + "community": 54, "norm_label": "a run root that can't yield a relative path surfaces a negative toast.", "id": "ui_test_mount_rationale_2950" }, @@ -73367,7 +78731,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2968", - "community": 26, + "community": 23, "norm_label": "a failing ``controller.resume`` is caught + toasted, not raised.", "id": "ui_test_mount_rationale_2968" }, @@ -73376,7 +78740,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2997", - "community": 185, + "community": 172, "norm_label": "an import/engine failure in the outer try yields ``{}``.", "id": "ui_test_mount_rationale_2997" }, @@ -73385,7 +78749,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L3013", - "community": 186, + "community": 181, "norm_label": "a staging-query failure degrades to an empty dock, not a crash.", "id": "ui_test_mount_rationale_3013" }, @@ -73394,7 +78758,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L114", - "community": 378, + "community": 139, "norm_label": "a bare entry defaults ``keep_local`` and ``tombstone`` to false.", "id": "ui_test_file_list_rationale_114" }, @@ -73403,7 +78767,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L121", - "community": 379, + "community": 201, "norm_label": "flipping ``keep_local`` is a modification (drives a re-render).", "id": "ui_test_file_list_rationale_121" }, @@ -73412,7 +78776,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L129", - "community": 381, + "community": 201, "norm_label": "a file transitioning to a tombstone is a modification.", "id": "ui_test_file_list_rationale_129" }, @@ -73421,7 +78785,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L137", - "community": 380, + "community": 372, "norm_label": "``file_context_keep_local`` is a distinct discriminator value.", "id": "ui_test_file_list_rationale_137" }, @@ -73430,7 +78794,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L142", - "community": 376, + "community": 373, "norm_label": "the renderer wires the keep-local menu item and tombstone row. exercises th", "id": "ui_test_file_list_rationale_142" }, @@ -73439,7 +78803,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L266", - "community": 211, + "community": 147, "norm_label": "the row whose path matches ``selected_path`` carries the selected fill.", "id": "ui_test_file_list_rationale_266" }, @@ -73448,7 +78812,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L279", - "community": 211, + "community": 147, "norm_label": "a tombstone row carries the data-tombstone attr + dim/italic decoration.", "id": "ui_test_file_list_rationale_279" }, @@ -73457,7 +78821,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L288", - "community": 377, + "community": 147, "norm_label": "single-click selection fires ``on_select`` for files and folders.", "id": "ui_test_file_list_rationale_288" }, @@ -73466,7 +78830,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L301", - "community": 211, + "community": 147, "norm_label": "selection is opt-in: with no ``on_select`` the rows wire no click handler.", "id": "ui_test_file_list_rationale_301" }, @@ -73475,7 +78839,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L80", - "community": 378, + "community": 139, "norm_label": "a bare entry defaults ``keep_local`` and ``tombstone`` to false.", "id": "ui_test_file_list_rationale_80" }, @@ -73484,7 +78848,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L87", - "community": 379, + "community": 201, "norm_label": "flipping ``keep_local`` is a modification (drives a re-render).", "id": "ui_test_file_list_rationale_87" }, @@ -73493,7 +78857,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L95", - "community": 381, + "community": 201, "norm_label": "a file transitioning to a tombstone is a modification.", "id": "ui_test_file_list_rationale_95" }, @@ -73502,7 +78866,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L103", - "community": 380, + "community": 372, "norm_label": "``file_context_keep_local`` is a distinct discriminator value.", "id": "ui_test_file_list_rationale_103" }, @@ -73511,7 +78875,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L108", - "community": 376, + "community": 373, "norm_label": "the renderer wires the keep-local menu item and tombstone row. exercises th", "id": "ui_test_file_list_rationale_108" }, @@ -73520,7 +78884,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1395", - "community": 103, + "community": 107, "norm_label": "an unknown sys.platform falls through to false so the toast can warn.", "id": "ui_test_mount_rationale_1395" }, @@ -73529,7 +78893,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1401", - "community": 103, + "community": 131, "norm_label": "linux dispatches to xdg-open via subprocess.popen.", "id": "ui_test_mount_rationale_1401" }, @@ -73538,7 +78902,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1415", - "community": 299, + "community": 50, "norm_label": "macos dispatches to the ``open`` command.", "id": "ui_test_mount_rationale_1415" }, @@ -73547,7 +78911,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1424", - "community": 269, + "community": 125, "norm_label": "a subprocess failure is caught and surfaces false so the caller can toast.", "id": "ui_test_mount_rationale_1424" }, @@ -73556,7 +78920,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1448", - "community": 17, + "community": 14, "norm_label": "minimal nicegui surface stand-in: clipboard + navigate.to + notify.", "id": "ui_test_mount_rationale_1448" }, @@ -73565,7 +78929,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1473", - "community": 17, + "community": 14, "norm_label": "``open_in_os`` action calls the platform opener and reports success.", "id": "ui_test_mount_rationale_1473" }, @@ -73574,7 +78938,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1485", - "community": 297, + "community": 131, "norm_label": "when the opener returns false the action surfaces a negative toast.", "id": "ui_test_mount_rationale_1485" }, @@ -73583,7 +78947,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1494", - "community": 62, + "community": 33, "norm_label": "``copy_path`` writes the entry path to the nicegui clipboard.", "id": "ui_test_mount_rationale_1494" }, @@ -73592,7 +78956,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1502", - "community": 162, + "community": 125, "norm_label": "an unknown action verb is logged + toasted without raising.", "id": "ui_test_mount_rationale_1502" }, @@ -73601,7 +78965,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1509", - "community": 270, + "community": 107, "norm_label": "an entry with no path triggers the early-return toast.", "id": "ui_test_mount_rationale_1509" }, @@ -73610,7 +78974,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1529", - "community": 77, + "community": 50, "norm_label": "run any pending mount background tasks to completion.", "id": "ui_test_mount_rationale_1529" }, @@ -73619,7 +78983,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1544", - "community": 162, + "community": 86, "norm_label": "force-sync routes to ``deps.nas_sync.enqueue`` with the run path.", "id": "ui_test_mount_rationale_1544" }, @@ -73628,7 +78992,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1557", - "community": 145, + "community": 33, "norm_label": "force-sync without a wired nas sync surfaces a negative toast (no raise).", "id": "ui_test_mount_rationale_1557" }, @@ -73637,25 +79001,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1573", - "community": 145, + "community": 33, "norm_label": "``view_log`` dispatches to the dialog opener helper.", "id": "ui_test_mount_rationale_1573" }, - { - "label": "An unknown action verb is reported but doesn't raise.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1583", - "community": 145, - "norm_label": "an unknown action verb is reported but doesn't raise.", - "id": "ui_test_mount_rationale_1583" - }, { "label": "``clear_verified`` deletes the run directory via the local helper.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1592", - "community": 17, + "community": 14, "norm_label": "``clear_verified`` deletes the run directory via the local helper.", "id": "ui_test_mount_rationale_1592" }, @@ -73664,7 +79019,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1644", - "community": 55, + "community": 86, "norm_label": "the early-exit when config is missing produces a toast, no task.", "id": "ui_test_mount_rationale_1644" }, @@ -73673,7 +79028,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1653", - "community": 162, + "community": 125, "norm_label": "an exception from the clear sweep is caught + toasted.", "id": "ui_test_mount_rationale_1653" }, @@ -73691,7 +79046,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1688", - "community": 62, + "community": 33, "norm_label": "without a selected node the feed isn't started and returns ``[]``.", "id": "ui_test_mount_rationale_1688" }, @@ -73700,7 +79055,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1753", - "community": 78, + "community": 157, "norm_label": "the fetch is a no-op when refreshcoordinator just walked the tree.", "id": "ui_test_mount_rationale_1753" }, @@ -73709,7 +79064,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1770", - "community": 163, + "community": 106, "norm_label": "a successful scan records the refresh on the coordinator.", "id": "ui_test_mount_rationale_1770" }, @@ -73718,7 +79073,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1789", - "community": 165, + "community": 158, "norm_label": "a scan failure returns ``none`` so the feed keeps polling.", "id": "ui_test_mount_rationale_1789" }, @@ -73727,7 +79082,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1805", - "community": 165, + "community": 173, "norm_label": "a run with no sync-queue job still renders a dialog without raising.", "id": "ui_test_mount_rationale_1805" }, @@ -73736,7 +79091,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1814", - "community": 62, + "community": 158, "norm_label": "a run with a sync-queue job renders its state without raising.", "id": "ui_test_mount_rationale_1814" }, @@ -73745,7 +79100,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1842", - "community": 55, + "community": 69, "norm_label": "any exception raised by a per-kind builder is logged + swallowed.", "id": "ui_test_mount_rationale_1842" }, @@ -73754,7 +79109,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1889", - "community": 296, + "community": 69, "norm_label": "only directory children whose names start with the prefix are counted.", "id": "ui_test_mount_rationale_1889" }, @@ -73763,25 +79118,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1898", - "community": 295, + "community": 157, "norm_label": "a corrupt creation.json yields {path, name}, never crashes.", "id": "ui_test_mount_rationale_1898" }, - { - "label": "When nas_sync.enqueue raises, the background task swallows + toasts.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1911", - "community": 172, - "norm_label": "when nas_sync.enqueue raises, the background task swallows + toasts.", - "id": "ui_test_mount_rationale_1911" - }, { "label": "When the clear helper raises, the background task swallows + toasts.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1927", - "community": 172, + "community": 69, "norm_label": "when the clear helper raises, the background task swallows + toasts.", "id": "ui_test_mount_rationale_1927" }, @@ -73799,7 +79145,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2037", - "community": 55, + "community": 69, "norm_label": "no probe wired -> a failure result rather than a crash.", "id": "ui_test_mount_rationale_2037" }, @@ -73808,7 +79154,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2049", - "community": 62, + "community": 157, "norm_label": "a reachable probe maps ok/latency into a connected result.", "id": "ui_test_mount_rationale_2049" }, @@ -73817,7 +79163,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2076", - "community": 78, + "community": 180, "norm_label": "an async probe is awaited before its dict is mapped.", "id": "ui_test_mount_rationale_2076" }, @@ -73826,7 +79172,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2106", - "community": 172, + "community": 69, "norm_label": "a half-wired install names its first-failing gate as the next action.", "id": "ui_test_mount_rationale_2106" }, @@ -73844,7 +79190,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2137", - "community": 163, + "community": 106, "norm_label": "no sync-state writer wired -> negative toast, no task spawned.", "id": "ui_test_mount_rationale_2137" }, @@ -73853,7 +79199,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2146", - "community": 326, + "community": 14, "norm_label": "a path with no enclosing run root surfaces a negative toast.", "id": "ui_test_mount_rationale_2146" }, @@ -73862,7 +79208,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2157", - "community": 26, + "community": 23, "norm_label": "a resolvable file flips keep_local via the writer and fires on_done.", "id": "ui_test_mount_rationale_2157" }, @@ -73871,7 +79217,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2212", - "community": 17, + "community": 14, "norm_label": "the ``keep_local`` action routes to ``_toggle_keep_local``.", "id": "ui_test_mount_rationale_2212" }, @@ -73880,7 +79226,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2229", - "community": 55, + "community": 170, "norm_label": "on win32 the helper calls ``os.startfile`` and reports success.", "id": "ui_test_mount_rationale_2229" }, @@ -73889,7 +79235,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2263", - "community": 243, + "community": 180, "norm_label": "no controller -> a negative toast and no dialog open.", "id": "ui_test_mount_rationale_2263" }, @@ -73898,7 +79244,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2269", - "community": 243, + "community": 180, "norm_label": "a wired controller builds the modal and opens it (no raise).", "id": "ui_test_mount_rationale_2269" }, @@ -73907,7 +79253,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2290", - "community": 327, + "community": 300, "norm_label": "the details dialog renders the session state plus pending/error lines.", "id": "ui_test_mount_rationale_2290" }, @@ -73916,7 +79262,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2314", - "community": 17, + "community": 14, "norm_label": "a session not awaiting input cannot be resumed -> negative toast.", "id": "ui_test_mount_rationale_2314" }, @@ -73925,7 +79271,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2323", - "community": 94, + "community": 171, "norm_label": "a suspended session re-opens its escalation dialog with parked fields.", "id": "ui_test_mount_rationale_2323" }, @@ -73934,7 +79280,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2352", - "community": 26, + "community": 23, "norm_label": "the dialog's submit handler calls ``controller.resume`` in the background.", "id": "ui_test_mount_rationale_2352" }, @@ -73943,7 +79289,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2384", - "community": 125, + "community": 23, "norm_label": "the dialog's cancel handler routes through ``_cancel_session``.", "id": "ui_test_mount_rationale_2384" }, @@ -73952,7 +79298,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2424", - "community": 55, + "community": 170, "norm_label": "the \u00a79.4 dialog's discard button cancels with discard_files=true.", "id": "ui_test_mount_rationale_2424" }, @@ -73961,7 +79307,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2443", - "community": 26, + "community": 171, "norm_label": "the keep-files button cancels with discard_files=false.", "id": "ui_test_mount_rationale_2443" }, @@ -73970,7 +79316,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2460", - "community": 185, + "community": 172, "norm_label": "a cancel failure is caught and toasted, not raised.", "id": "ui_test_mount_rationale_2460" }, @@ -73979,7 +79325,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2476", - "community": 186, + "community": 181, "norm_label": "the back button closes the dialog without cancelling.", "id": "ui_test_mount_rationale_2476" }, @@ -73988,7 +79334,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2518", - "community": 94, + "community": 54, "norm_label": "without a job row the dialog shows the 'no sync job' line.", "id": "ui_test_mount_rationale_2518" }, @@ -73997,7 +79343,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2534", - "community": 26, + "community": 23, "norm_label": "no progress view on the wizard state -> the consumer returns at once.", "id": "ui_test_mount_rationale_2534" }, @@ -74006,7 +79352,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2545", - "community": 26, + "community": 23, "norm_label": "an input_required frame opens the dialog; a done frame closes it.", "id": "ui_test_mount_rationale_2545" }, @@ -74015,7 +79361,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2582", - "community": 125, + "community": 23, "norm_label": "a subscribe error is logged, not raised.", "id": "ui_test_mount_rationale_2582" }, @@ -74024,7 +79370,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2622", - "community": 55, + "community": 170, "norm_label": "submitting a run with no template selected surfaces a negative toast.", "id": "ui_test_mount_rationale_2622" }, @@ -74033,7 +79379,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2662", - "community": 94, + "community": 54, "norm_label": "non-equipmentnode keys in the hierarchy are ignored; unknown root -> treated", "id": "ui_test_mount_rationale_2662" }, @@ -74042,43 +79388,25 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2671", - "community": 186, + "community": 181, "norm_label": "the received_equipment kind routes to the relay-equipment builder.", "id": "ui_test_mount_rationale_2671" }, - { - "label": "A schema_version mismatch (read_catalogue -> None) yields ``[]``.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2709", - "community": 242, - "norm_label": "a schema_version mismatch (read_catalogue -> none) yields ``[]``.", - "id": "ui_test_mount_rationale_2709" - }, { "label": "A raising ``app.storage.tab`` degrades to an in-memory feed (no tab).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2721", - "community": 77, + "community": 50, "norm_label": "a raising ``app.storage.tab`` degrades to an in-memory feed (no tab).", "id": "ui_test_mount_rationale_2721" }, - { - "label": "A raising evaluator degrades to 'not ready' (banner stays up).", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2743", - "community": 26, - "norm_label": "a raising evaluator degrades to 'not ready' (banner stays up).", - "id": "ui_test_mount_rationale_2743" - }, { "label": "An equipment id absent from config yields ``{}``.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2756", - "community": 125, + "community": 54, "norm_label": "an equipment id absent from config yields ``{}``.", "id": "ui_test_mount_rationale_2756" }, @@ -74087,7 +79415,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2764", - "community": 17, + "community": 351, "norm_label": "with no synced rows the sweep clears nothing and toasts 'none'.", "id": "ui_test_mount_rationale_2764" }, @@ -74096,7 +79424,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2781", - "community": 125, + "community": 54, "norm_label": "a run root that can't yield a relative path surfaces a negative toast.", "id": "ui_test_mount_rationale_2781" }, @@ -74105,7 +79433,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2799", - "community": 26, + "community": 23, "norm_label": "a failing ``controller.resume`` is caught + toasted, not raised.", "id": "ui_test_mount_rationale_2799" }, @@ -74114,25 +79442,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2828", - "community": 185, + "community": 172, "norm_label": "an import/engine failure in the outer try yields ``{}``.", "id": "ui_test_mount_rationale_2828" }, - { - "label": "Equipment / project / run / received_equipment all classify correctly.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1211", - "community": 350, - "norm_label": "equipment / project / run / received_equipment all classify correctly.", - "id": "ui_test_mount_rationale_1211" - }, { "label": "A node id whose root is not in the hierarchy returns ``(None, False)``. Gua", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1232", - "community": 349, + "community": 350, "norm_label": "a node id whose root is not in the hierarchy returns ``(none, false)``. gua", "id": "ui_test_mount_rationale_1232" }, @@ -74141,7 +79460,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1254", - "community": 164, + "community": 80, "norm_label": "an equipment node payload pulls fields from config.equipment[id].", "id": "ui_test_mount_rationale_1254" }, @@ -74150,7 +79469,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1272", - "community": 164, + "community": 80, "norm_label": "asking for a node that isn't in config.equipment returns ``{}``.", "id": "ui_test_mount_rationale_1272" }, @@ -74159,7 +79478,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1298", - "community": 164, + "community": 80, "norm_label": "the run payload decodes creation.json into the metadata fields.", "id": "ui_test_mount_rationale_1298" }, @@ -74168,7 +79487,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1343", - "community": 242, + "community": 33, "norm_label": "a run dir without a creation.json yields {path, name}, not crash.", "id": "ui_test_mount_rationale_1343" }, @@ -74177,7 +79496,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1352", - "community": 103, + "community": 131, "norm_label": "the selected-node fields end up on mainpagestate for the renderer.", "id": "ui_test_mount_rationale_1352" }, @@ -74186,7 +79505,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1370", - "community": 103, + "community": 107, "norm_label": "an unknown sys.platform falls through to false so the toast can warn.", "id": "ui_test_mount_rationale_1370" }, @@ -74195,7 +79514,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1376", - "community": 103, + "community": 131, "norm_label": "linux dispatches to xdg-open via subprocess.popen.", "id": "ui_test_mount_rationale_1376" }, @@ -74204,7 +79523,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1390", - "community": 299, + "community": 50, "norm_label": "macos dispatches to the ``open`` command.", "id": "ui_test_mount_rationale_1390" }, @@ -74213,7 +79532,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1399", - "community": 269, + "community": 125, "norm_label": "a subprocess failure is caught and surfaces false so the caller can toast.", "id": "ui_test_mount_rationale_1399" }, @@ -74222,7 +79541,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1423", - "community": 17, + "community": 14, "norm_label": "minimal nicegui surface stand-in: clipboard + navigate.to + notify.", "id": "ui_test_mount_rationale_1423" }, @@ -74231,7 +79550,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1460", - "community": 297, + "community": 131, "norm_label": "when the opener returns false the action surfaces a negative toast.", "id": "ui_test_mount_rationale_1460" }, @@ -74240,7 +79559,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1469", - "community": 62, + "community": 33, "norm_label": "``copy_path`` writes the entry path to the nicegui clipboard.", "id": "ui_test_mount_rationale_1469" }, @@ -74249,34 +79568,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1477", - "community": 162, + "community": 125, "norm_label": "an unknown action verb is logged + toasted without raising.", "id": "ui_test_mount_rationale_1477" }, - { - "label": "An entry with no path triggers the early-return toast.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1484", - "community": 270, - "norm_label": "an entry with no path triggers the early-return toast.", - "id": "ui_test_mount_rationale_1484" - }, - { - "label": "Run any pending mount background tasks to completion.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1504", - "community": 77, - "norm_label": "run any pending mount background tasks to completion.", - "id": "ui_test_mount_rationale_1504" - }, { "label": "Force-sync routes to ``deps.nas_sync.enqueue`` with the run path.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1519", - "community": 162, + "community": 86, "norm_label": "force-sync routes to ``deps.nas_sync.enqueue`` with the run path.", "id": "ui_test_mount_rationale_1519" }, @@ -74285,7 +79586,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1532", - "community": 145, + "community": 33, "norm_label": "force-sync without a wired nas sync surfaces a negative toast (no raise).", "id": "ui_test_mount_rationale_1532" }, @@ -74294,7 +79595,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1539", - "community": 103, + "community": 107, "norm_label": "the early-exit when config is missing keeps the action a no-op.", "id": "ui_test_mount_rationale_1539" }, @@ -74303,7 +79604,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1548", - "community": 145, + "community": 33, "norm_label": "``view_log`` dispatches to the dialog opener helper.", "id": "ui_test_mount_rationale_1548" }, @@ -74312,7 +79613,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1558", - "community": 145, + "community": 33, "norm_label": "an unknown action verb is reported but doesn't raise.", "id": "ui_test_mount_rationale_1558" }, @@ -74321,7 +79622,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1567", - "community": 17, + "community": 14, "norm_label": "``clear_verified`` deletes the run directory via the local helper.", "id": "ui_test_mount_rationale_1567" }, @@ -74330,7 +79631,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1619", - "community": 55, + "community": 86, "norm_label": "the early-exit when config is missing produces a toast, no task.", "id": "ui_test_mount_rationale_1619" }, @@ -74339,7 +79640,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1628", - "community": 162, + "community": 125, "norm_label": "an exception from the clear sweep is caught + toasted.", "id": "ui_test_mount_rationale_1628" }, @@ -74348,7 +79649,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1673", - "community": 77, + "community": 50, "norm_label": "the first call mounts a folderfeed + refreshcoordinator on tab storage.", "id": "ui_test_mount_rationale_1673" }, @@ -74357,7 +79658,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1686", - "community": 78, + "community": 86, "norm_label": "when the feed's last_payload is set, entries are projected into filelistentr", "id": "ui_test_mount_rationale_1686" }, @@ -74366,7 +79667,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1728", - "community": 78, + "community": 157, "norm_label": "the fetch is a no-op when refreshcoordinator just walked the tree.", "id": "ui_test_mount_rationale_1728" }, @@ -74375,7 +79676,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1745", - "community": 163, + "community": 106, "norm_label": "a successful scan records the refresh on the coordinator.", "id": "ui_test_mount_rationale_1745" }, @@ -74384,7 +79685,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1764", - "community": 165, + "community": 173, "norm_label": "a scan failure returns ``none`` so the feed keeps polling.", "id": "ui_test_mount_rationale_1764" }, @@ -74393,7 +79694,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1780", - "community": 165, + "community": 173, "norm_label": "a run with no sync-queue job still renders a dialog without raising.", "id": "ui_test_mount_rationale_1780" }, @@ -74402,7 +79703,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1830", - "community": 62, + "community": 158, "norm_label": "the relay payload pulls id+label from build_received_equipment_nodes.", "id": "ui_test_mount_rationale_1830" }, @@ -74411,7 +79712,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1853", - "community": 78, + "community": 86, "norm_label": "a node id without an equipment/project split returns ``{}``.", "id": "ui_test_mount_rationale_1853" }, @@ -74420,25 +79721,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1859", - "community": 78, + "community": 86, "norm_label": "a missing parent dir returns 0 (no fs pre-check needed).", "id": "ui_test_mount_rationale_1859" }, - { - "label": "Only directory children whose names start with the prefix are counted.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1864", - "community": 296, - "norm_label": "only directory children whose names start with the prefix are counted.", - "id": "ui_test_mount_rationale_1864" - }, { "label": "A corrupt creation.json yields {path, name}, never crashes.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1873", - "community": 295, + "community": 157, "norm_label": "a corrupt creation.json yields {path, name}, never crashes.", "id": "ui_test_mount_rationale_1873" }, @@ -74447,7 +79739,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1886", - "community": 172, + "community": 69, "norm_label": "when nas_sync.enqueue raises, the background task swallows + toasts.", "id": "ui_test_mount_rationale_1886" }, @@ -74456,7 +79748,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1902", - "community": 172, + "community": 106, "norm_label": "when the clear helper raises, the background task swallows + toasts.", "id": "ui_test_mount_rationale_1902" }, @@ -74465,7 +79757,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1918", - "community": 163, + "community": 106, "norm_label": "the 0-file path reports ``already cleared`` rather than ``cleared n``.", "id": "ui_test_mount_rationale_1918" }, @@ -74474,7 +79766,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1931", - "community": 165, + "community": 173, "norm_label": "a clipboard write failure is caught and reported as a negative toast.", "id": "ui_test_mount_rationale_1931" }, @@ -74492,7 +79784,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2012", - "community": 55, + "community": 69, "norm_label": "no probe wired -> a failure result rather than a crash.", "id": "ui_test_mount_rationale_2012" }, @@ -74501,7 +79793,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2081", - "community": 172, + "community": 69, "norm_label": "a half-wired install names its first-failing gate as the next action.", "id": "ui_test_mount_rationale_2081" }, @@ -74519,7 +79811,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2121", - "community": 326, + "community": 14, "norm_label": "a path with no enclosing run root surfaces a negative toast.", "id": "ui_test_mount_rationale_2121" }, @@ -74528,7 +79820,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2132", - "community": 26, + "community": 23, "norm_label": "a resolvable file flips keep_local via the writer and fires on_done.", "id": "ui_test_mount_rationale_2132" }, @@ -74537,7 +79829,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2187", - "community": 17, + "community": 14, "norm_label": "the ``keep_local`` action routes to ``_toggle_keep_local``.", "id": "ui_test_mount_rationale_2187" }, @@ -74546,7 +79838,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2238", - "community": 243, + "community": 180, "norm_label": "no controller -> a negative toast and no dialog open.", "id": "ui_test_mount_rationale_2238" }, @@ -74555,7 +79847,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2244", - "community": 243, + "community": 180, "norm_label": "a wired controller builds the modal and opens it (no raise).", "id": "ui_test_mount_rationale_2244" }, @@ -74564,7 +79856,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2265", - "community": 327, + "community": 300, "norm_label": "the details dialog renders the session state plus pending/error lines.", "id": "ui_test_mount_rationale_2265" }, @@ -74573,7 +79865,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2289", - "community": 17, + "community": 14, "norm_label": "a session not awaiting input cannot be resumed -> negative toast.", "id": "ui_test_mount_rationale_2289" }, @@ -74582,7 +79874,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2298", - "community": 94, + "community": 171, "norm_label": "a suspended session re-opens its escalation dialog with parked fields.", "id": "ui_test_mount_rationale_2298" }, @@ -74591,7 +79883,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2327", - "community": 26, + "community": 23, "norm_label": "the dialog's submit handler calls ``controller.resume`` in the background.", "id": "ui_test_mount_rationale_2327" }, @@ -74600,7 +79892,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2359", - "community": 125, + "community": 23, "norm_label": "the dialog's cancel handler routes through ``_cancel_session``.", "id": "ui_test_mount_rationale_2359" }, @@ -74609,7 +79901,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2399", - "community": 55, + "community": 170, "norm_label": "the \u00a79.4 dialog's discard button cancels with discard_files=true.", "id": "ui_test_mount_rationale_2399" }, @@ -74618,7 +79910,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2418", - "community": 26, + "community": 171, "norm_label": "the keep-files button cancels with discard_files=false.", "id": "ui_test_mount_rationale_2418" }, @@ -74627,7 +79919,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2435", - "community": 185, + "community": 172, "norm_label": "a cancel failure is caught and toasted, not raised.", "id": "ui_test_mount_rationale_2435" }, @@ -74636,25 +79928,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2451", - "community": 186, + "community": 181, "norm_label": "the back button closes the dialog without cancelling.", "id": "ui_test_mount_rationale_2451" }, - { - "label": "With a job row, the dialog renders each populated field line.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2465", - "community": 94, - "norm_label": "with a job row, the dialog renders each populated field line.", - "id": "ui_test_mount_rationale_2465" - }, { "label": "Without a job row the dialog shows the 'no sync job' line.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2493", - "community": 94, + "community": 54, "norm_label": "without a job row the dialog shows the 'no sync job' line.", "id": "ui_test_mount_rationale_2493" }, @@ -74663,7 +79946,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2509", - "community": 26, + "community": 23, "norm_label": "no progress view on the wizard state -> the consumer returns at once.", "id": "ui_test_mount_rationale_2509" }, @@ -74672,7 +79955,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2520", - "community": 26, + "community": 23, "norm_label": "an input_required frame opens the dialog; a done frame closes it.", "id": "ui_test_mount_rationale_2520" }, @@ -74681,7 +79964,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2608", - "community": 185, + "community": 172, "norm_label": "``_render_run_wizard`` wires templates/equipment into the run-wizard page.", "id": "ui_test_mount_rationale_2608" }, @@ -74690,7 +79973,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2637", - "community": 94, + "community": 54, "norm_label": "non-equipmentnode keys in the hierarchy are ignored; unknown root -> treated", "id": "ui_test_mount_rationale_2637" }, @@ -74699,43 +79982,25 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2646", - "community": 186, + "community": 181, "norm_label": "the received_equipment kind routes to the relay-equipment builder.", "id": "ui_test_mount_rationale_2646" }, - { - "label": "A schema_version mismatch (read_catalogue -> None) yields ``[]``.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2684", - "community": 242, - "norm_label": "a schema_version mismatch (read_catalogue -> none) yields ``[]``.", - "id": "ui_test_mount_rationale_2684" - }, { "label": "A raising ``app.storage.tab`` degrades to an in-memory feed (no tab).", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2696", - "community": 77, + "community": 50, "norm_label": "a raising ``app.storage.tab`` degrades to an in-memory feed (no tab).", "id": "ui_test_mount_rationale_2696" }, - { - "label": "An equipment id absent from config yields ``{}``.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2731", - "community": 125, - "norm_label": "an equipment id absent from config yields ``{}``.", - "id": "ui_test_mount_rationale_2731" - }, { "label": "With no SYNCED rows the sweep clears nothing and toasts 'none'.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2739", - "community": 17, + "community": 351, "norm_label": "with no synced rows the sweep clears nothing and toasts 'none'.", "id": "ui_test_mount_rationale_2739" }, @@ -74744,7 +80009,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2774", - "community": 26, + "community": 23, "norm_label": "a failing ``controller.resume`` is caught + toasted, not raised.", "id": "ui_test_mount_rationale_2774" }, @@ -74753,7 +80018,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2803", - "community": 185, + "community": 172, "norm_label": "an import/engine failure in the outer try yields ``{}``.", "id": "ui_test_mount_rationale_2803" }, @@ -74762,7 +80027,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2819", - "community": 186, + "community": 181, "norm_label": "a staging-query failure degrades to an empty dock, not a crash.", "id": "ui_test_mount_rationale_2819" }, @@ -74807,7 +80072,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L129", - "community": 49, + "community": 60, "norm_label": "duck-typed creationcontroller for the create-flow helpers.", "id": "ui_test_mount_rationale_129" }, @@ -74870,7 +80135,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L460", - "community": 2, + "community": 324, "norm_label": "redesign \u00a73.1: orchestrator pipeline is always on, but a missing staging_roo", "id": "ui_test_mount_rationale_460" }, @@ -74879,7 +80144,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L507", - "community": 49, + "community": 60, "norm_label": "minimal stand-in for the nicegui ``ui`` object's navigate surface.", "id": "ui_test_mount_rationale_507" }, @@ -74888,7 +80153,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L515", - "community": 49, + "community": 324, "norm_label": "a successful save persists, then hot-reloads the live components. the old b", "id": "ui_test_mount_rationale_515" }, @@ -74897,7 +80162,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L592", - "community": 49, + "community": 60, "norm_label": "opt-in: a saved non-empty staging_root is created on save.", "id": "ui_test_mount_rationale_592" }, @@ -74906,7 +80171,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L607", - "community": 49, + "community": 60, "norm_label": "blank staging_root creates nothing -- the device is not a staging pc.", "id": "ui_test_mount_rationale_607" }, @@ -74915,7 +80180,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L621", - "community": 49, + "community": 60, "norm_label": "an ensure_dir failure warns but keeps the persisted config.", "id": "ui_test_mount_rationale_621" }, @@ -74924,7 +80189,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L648", - "community": 2, + "community": 386, "norm_label": "if the coordinator raises wholesale, the live config is still kept.", "id": "ui_test_mount_rationale_648" }, @@ -74951,7 +80216,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L763", - "community": 298, + "community": 385, "norm_label": "a raising keyring backend surfaces a toast, not an unhandled crash.", "id": "ui_test_mount_rationale_763" }, @@ -74969,25 +80234,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1185", - "community": 389, + "community": 387, "norm_label": "both empty -> empty string. one present -> single param.", "id": "ui_test_mount_rationale_1185" }, - { - "label": "Project names with spaces / special chars survive the round trip.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1193", - "community": 390, - "norm_label": "project names with spaces / special chars survive the round trip.", - "id": "ui_test_mount_rationale_1193" - }, { "label": "Equipment / project / run / received_equipment all classify correctly.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1210", - "community": 350, + "community": 80, "norm_label": "equipment / project / run / received_equipment all classify correctly.", "id": "ui_test_mount_rationale_1210" }, @@ -74996,7 +80252,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1231", - "community": 349, + "community": 350, "norm_label": "a node id whose root is not in the hierarchy returns ``(none, false)``. gua", "id": "ui_test_mount_rationale_1231" }, @@ -75005,7 +80261,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1253", - "community": 164, + "community": 80, "norm_label": "an equipment node payload pulls fields from config.equipment[id].", "id": "ui_test_mount_rationale_1253" }, @@ -75014,7 +80270,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1271", - "community": 164, + "community": 80, "norm_label": "asking for a node that isn't in config.equipment returns ``{}``.", "id": "ui_test_mount_rationale_1271" }, @@ -75023,7 +80279,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1278", - "community": 164, + "community": 80, "norm_label": "the project payload counts run_* and testrun_* directories.", "id": "ui_test_mount_rationale_1278" }, @@ -75032,7 +80288,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1342", - "community": 242, + "community": 33, "norm_label": "a run dir without a creation.json yields {path, name}, not crash.", "id": "ui_test_mount_rationale_1342" }, @@ -75041,7 +80297,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1351", - "community": 103, + "community": 131, "norm_label": "the selected-node fields end up on mainpagestate for the renderer.", "id": "ui_test_mount_rationale_1351" }, @@ -75050,7 +80306,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1369", - "community": 103, + "community": 107, "norm_label": "an unknown sys.platform falls through to false so the toast can warn.", "id": "ui_test_mount_rationale_1369" }, @@ -75059,7 +80315,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1389", - "community": 299, + "community": 50, "norm_label": "macos dispatches to the ``open`` command.", "id": "ui_test_mount_rationale_1389" }, @@ -75068,7 +80324,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1398", - "community": 269, + "community": 125, "norm_label": "a subprocess failure is caught and surfaces false so the caller can toast.", "id": "ui_test_mount_rationale_1398" }, @@ -75077,7 +80333,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1422", - "community": 17, + "community": 14, "norm_label": "minimal nicegui surface stand-in: clipboard + navigate.to + notify.", "id": "ui_test_mount_rationale_1422" }, @@ -75086,7 +80342,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1459", - "community": 297, + "community": 131, "norm_label": "when the opener returns false the action surfaces a negative toast.", "id": "ui_test_mount_rationale_1459" }, @@ -75095,7 +80351,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1476", - "community": 162, + "community": 125, "norm_label": "an unknown action verb is logged + toasted without raising.", "id": "ui_test_mount_rationale_1476" }, @@ -75104,7 +80360,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1483", - "community": 270, + "community": 107, "norm_label": "an entry with no path triggers the early-return toast.", "id": "ui_test_mount_rationale_1483" }, @@ -75113,7 +80369,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1503", - "community": 77, + "community": 50, "norm_label": "run any pending mount background tasks to completion.", "id": "ui_test_mount_rationale_1503" }, @@ -75122,7 +80378,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1518", - "community": 162, + "community": 125, "norm_label": "force-sync routes to ``deps.nas_sync.enqueue`` with the run path.", "id": "ui_test_mount_rationale_1518" }, @@ -75131,7 +80387,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1531", - "community": 145, + "community": 33, "norm_label": "force-sync without a wired nas sync surfaces a negative toast (no raise).", "id": "ui_test_mount_rationale_1531" }, @@ -75140,7 +80396,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1538", - "community": 103, + "community": 107, "norm_label": "the early-exit when config is missing keeps the action a no-op.", "id": "ui_test_mount_rationale_1538" }, @@ -75149,7 +80405,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1547", - "community": 145, + "community": 33, "norm_label": "``view_log`` dispatches to the dialog opener helper.", "id": "ui_test_mount_rationale_1547" }, @@ -75158,25 +80414,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1566", - "community": 17, + "community": 14, "norm_label": "``clear_verified`` deletes the run directory via the local helper.", "id": "ui_test_mount_rationale_1566" }, - { - "label": "The early-exit when config is missing produces a toast, no task.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1618", - "community": 55, - "norm_label": "the early-exit when config is missing produces a toast, no task.", - "id": "ui_test_mount_rationale_1618" - }, { "label": "An exception from the clear sweep is caught + toasted.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1627", - "community": 162, + "community": 125, "norm_label": "an exception from the clear sweep is caught + toasted.", "id": "ui_test_mount_rationale_1627" }, @@ -75194,7 +80441,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1662", - "community": 62, + "community": 33, "norm_label": "without a selected node the feed isn't started and returns ``[]``.", "id": "ui_test_mount_rationale_1662" }, @@ -75203,7 +80450,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1672", - "community": 77, + "community": 50, "norm_label": "the first call mounts a folderfeed + refreshcoordinator on tab storage.", "id": "ui_test_mount_rationale_1672" }, @@ -75212,7 +80459,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1685", - "community": 78, + "community": 86, "norm_label": "when the feed's last_payload is set, entries are projected into filelistentr", "id": "ui_test_mount_rationale_1685" }, @@ -75221,7 +80468,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1727", - "community": 78, + "community": 86, "norm_label": "the fetch is a no-op when refreshcoordinator just walked the tree.", "id": "ui_test_mount_rationale_1727" }, @@ -75230,7 +80477,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1744", - "community": 163, + "community": 106, "norm_label": "a successful scan records the refresh on the coordinator.", "id": "ui_test_mount_rationale_1744" }, @@ -75239,7 +80486,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1763", - "community": 165, + "community": 173, "norm_label": "a scan failure returns ``none`` so the feed keeps polling.", "id": "ui_test_mount_rationale_1763" }, @@ -75248,7 +80495,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1779", - "community": 165, + "community": 173, "norm_label": "a run with no sync-queue job still renders a dialog without raising.", "id": "ui_test_mount_rationale_1779" }, @@ -75257,7 +80504,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1788", - "community": 62, + "community": 158, "norm_label": "a run with a sync-queue job renders its state without raising.", "id": "ui_test_mount_rationale_1788" }, @@ -75266,7 +80513,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1816", - "community": 55, + "community": 69, "norm_label": "any exception raised by a per-kind builder is logged + swallowed.", "id": "ui_test_mount_rationale_1816" }, @@ -75275,7 +80522,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1829", - "community": 62, + "community": 158, "norm_label": "the relay payload pulls id+label from build_received_equipment_nodes.", "id": "ui_test_mount_rationale_1829" }, @@ -75284,7 +80531,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1845", - "community": 77, + "community": 158, "norm_label": "an unknown relay id still produces a payload (best-effort label).", "id": "ui_test_mount_rationale_1845" }, @@ -75293,7 +80540,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1852", - "community": 78, + "community": 86, "norm_label": "a node id without an equipment/project split returns ``{}``.", "id": "ui_test_mount_rationale_1852" }, @@ -75302,7 +80549,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1858", - "community": 78, + "community": 69, "norm_label": "a missing parent dir returns 0 (no fs pre-check needed).", "id": "ui_test_mount_rationale_1858" }, @@ -75311,7 +80558,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1863", - "community": 296, + "community": 69, "norm_label": "only directory children whose names start with the prefix are counted.", "id": "ui_test_mount_rationale_1863" }, @@ -75320,7 +80567,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1872", - "community": 295, + "community": 157, "norm_label": "a corrupt creation.json yields {path, name}, never crashes.", "id": "ui_test_mount_rationale_1872" }, @@ -75329,7 +80576,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1885", - "community": 172, + "community": 69, "norm_label": "when nas_sync.enqueue raises, the background task swallows + toasts.", "id": "ui_test_mount_rationale_1885" }, @@ -75338,7 +80585,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1901", - "community": 172, + "community": 106, "norm_label": "when the clear helper raises, the background task swallows + toasts.", "id": "ui_test_mount_rationale_1901" }, @@ -75347,7 +80594,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1917", - "community": 163, + "community": 106, "norm_label": "the 0-file path reports ``already cleared`` rather than ``cleared n``.", "id": "ui_test_mount_rationale_1917" }, @@ -75356,7 +80603,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1930", - "community": 165, + "community": 173, "norm_label": "a clipboard write failure is caught and reported as a negative toast.", "id": "ui_test_mount_rationale_1930" }, @@ -75374,7 +80621,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2023", - "community": 62, + "community": 157, "norm_label": "a reachable probe maps ok/latency into a connected result.", "id": "ui_test_mount_rationale_2023" }, @@ -75383,7 +80630,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2050", - "community": 78, + "community": 180, "norm_label": "an async probe is awaited before its dict is mapped.", "id": "ui_test_mount_rationale_2050" }, @@ -75401,7 +80648,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2111", - "community": 163, + "community": 106, "norm_label": "no sync-state writer wired -> negative toast, no task spawned.", "id": "ui_test_mount_rationale_2111" }, @@ -75410,7 +80657,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2120", - "community": 326, + "community": 14, "norm_label": "a path with no enclosing run root surfaces a negative toast.", "id": "ui_test_mount_rationale_2120" }, @@ -75419,7 +80666,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2131", - "community": 26, + "community": 23, "norm_label": "a resolvable file flips keep_local via the writer and fires on_done.", "id": "ui_test_mount_rationale_2131" }, @@ -75428,7 +80675,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2186", - "community": 17, + "community": 14, "norm_label": "the ``keep_local`` action routes to ``_toggle_keep_local``.", "id": "ui_test_mount_rationale_2186" }, @@ -75437,7 +80684,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2203", - "community": 55, + "community": 170, "norm_label": "on win32 the helper calls ``os.startfile`` and reports success.", "id": "ui_test_mount_rationale_2203" }, @@ -75446,7 +80693,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2237", - "community": 243, + "community": 180, "norm_label": "no controller -> a negative toast and no dialog open.", "id": "ui_test_mount_rationale_2237" }, @@ -75455,7 +80702,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2264", - "community": 327, + "community": 300, "norm_label": "the details dialog renders the session state plus pending/error lines.", "id": "ui_test_mount_rationale_2264" }, @@ -75464,7 +80711,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2288", - "community": 17, + "community": 14, "norm_label": "a session not awaiting input cannot be resumed -> negative toast.", "id": "ui_test_mount_rationale_2288" }, @@ -75473,7 +80720,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2297", - "community": 94, + "community": 171, "norm_label": "a suspended session re-opens its escalation dialog with parked fields.", "id": "ui_test_mount_rationale_2297" }, @@ -75482,7 +80729,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2358", - "community": 125, + "community": 23, "norm_label": "the dialog's cancel handler routes through ``_cancel_session``.", "id": "ui_test_mount_rationale_2358" }, @@ -75491,7 +80738,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2417", - "community": 26, + "community": 171, "norm_label": "the keep-files button cancels with discard_files=false.", "id": "ui_test_mount_rationale_2417" }, @@ -75500,7 +80747,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2434", - "community": 185, + "community": 172, "norm_label": "a cancel failure is caught and toasted, not raised.", "id": "ui_test_mount_rationale_2434" }, @@ -75509,7 +80756,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2450", - "community": 186, + "community": 181, "norm_label": "the back button closes the dialog without cancelling.", "id": "ui_test_mount_rationale_2450" }, @@ -75518,7 +80765,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2464", - "community": 94, + "community": 171, "norm_label": "with a job row, the dialog renders each populated field line.", "id": "ui_test_mount_rationale_2464" }, @@ -75527,25 +80774,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2508", - "community": 26, + "community": 23, "norm_label": "no progress view on the wizard state -> the consumer returns at once.", "id": "ui_test_mount_rationale_2508" }, - { - "label": "A subscribe error is logged, not raised.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2556", - "community": 125, - "norm_label": "a subscribe error is logged, not raised.", - "id": "ui_test_mount_rationale_2556" - }, { "label": "Submitting a run with no template selected surfaces a negative toast.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2596", - "community": 55, + "community": 170, "norm_label": "submitting a run with no template selected surfaces a negative toast.", "id": "ui_test_mount_rationale_2596" }, @@ -75554,7 +80792,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2607", - "community": 185, + "community": 172, "norm_label": "``_render_run_wizard`` wires templates/equipment into the run-wizard page.", "id": "ui_test_mount_rationale_2607" }, @@ -75563,7 +80801,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2636", - "community": 94, + "community": 54, "norm_label": "non-equipmentnode keys in the hierarchy are ignored; unknown root -> treated", "id": "ui_test_mount_rationale_2636" }, @@ -75572,7 +80810,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2661", - "community": 94, + "community": 54, "norm_label": "a matching equipment id projects its config fields into the payload.", "id": "ui_test_mount_rationale_2661" }, @@ -75581,7 +80819,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2683", - "community": 242, + "community": 54, "norm_label": "a schema_version mismatch (read_catalogue -> none) yields ``[]``.", "id": "ui_test_mount_rationale_2683" }, @@ -75590,7 +80828,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2695", - "community": 77, + "community": 50, "norm_label": "a raising ``app.storage.tab`` degrades to an in-memory feed (no tab).", "id": "ui_test_mount_rationale_2695" }, @@ -75599,7 +80837,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2717", - "community": 26, + "community": 50, "norm_label": "a raising evaluator degrades to 'not ready' (banner stays up).", "id": "ui_test_mount_rationale_2717" }, @@ -75608,7 +80846,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2730", - "community": 125, + "community": 54, "norm_label": "an equipment id absent from config yields ``{}``.", "id": "ui_test_mount_rationale_2730" }, @@ -75617,7 +80855,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2738", - "community": 17, + "community": 351, "norm_label": "with no synced rows the sweep clears nothing and toasts 'none'.", "id": "ui_test_mount_rationale_2738" }, @@ -75626,7 +80864,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2773", - "community": 26, + "community": 23, "norm_label": "a failing ``controller.resume`` is caught + toasted, not raised.", "id": "ui_test_mount_rationale_2773" }, @@ -75635,7 +80873,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L2818", - "community": 186, + "community": 181, "norm_label": "a staging-query failure degrades to an empty dock, not a crash.", "id": "ui_test_mount_rationale_2818" }, @@ -75644,7 +80882,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L484", - "community": 196, + "community": 182, "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", "id": "pages_main_rationale_484" }, @@ -75653,7 +80891,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L523", - "community": 205, + "community": 192, "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", "id": "pages_main_rationale_523" }, @@ -75662,7 +80900,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L463", - "community": 196, + "community": 182, "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", "id": "pages_main_rationale_463" }, @@ -75671,7 +80909,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L502", - "community": 205, + "community": 192, "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", "id": "pages_main_rationale_502" }, @@ -75680,7 +80918,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/framed_pane.py", "source_location": "L86", - "community": 70, + "community": 61, "norm_label": "context manager rendering a framed, titled pane; yields the body element. u", "id": "components_framed_pane_rationale_86" }, @@ -75689,7 +80927,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L462", - "community": 196, + "community": 182, "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", "id": "pages_main_rationale_462" }, @@ -75698,7 +80936,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L494", - "community": 205, + "community": 192, "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", "id": "pages_main_rationale_494" }, @@ -75707,7 +80945,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L170", - "community": 126, + "community": 81, "norm_label": "render the rebuilt three-region file-explorer main window. gui/orchestrator", "id": "pages_main_rationale_170" }, @@ -75716,7 +80954,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L460", - "community": 196, + "community": 182, "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", "id": "pages_main_rationale_460" }, @@ -75725,7 +80963,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L492", - "community": 205, + "community": 192, "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", "id": "pages_main_rationale_492" }, @@ -75734,7 +80972,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", "source_location": "L30", - "community": 156, + "community": 146, "norm_label": "mutable state for the metadata pane.", "id": "components_metadata_pane_rationale_30" }, @@ -75743,7 +80981,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", "source_location": "L43", - "community": 170, + "community": 132, "norm_label": "render the right-pane metadata content for ``state.selected_node``. dispatc", "id": "components_metadata_pane_rationale_43" }, @@ -75752,7 +80990,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", "source_location": "L212", - "community": 195, + "community": 202, "norm_label": "render the file-list column header row (name / size / modified / status).", "id": "components_file_list_rationale_212" }, @@ -75761,7 +80999,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", "source_location": "L172", - "community": 195, + "community": 202, "norm_label": "render the centre-pane file list. pure render function. double-clicking a f", "id": "components_file_list_rationale_172" }, @@ -75770,7 +81008,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", "source_location": "L210", - "community": 195, + "community": 202, "norm_label": "render the file-list column header row (name / size / modified / status).", "id": "components_file_list_rationale_210" }, @@ -75779,7 +81017,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", "source_location": "L69", - "community": 195, + "community": 201, "norm_label": "result of comparing two successive folder-list snapshots.", "id": "components_file_list_rationale_69" }, @@ -75788,7 +81026,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", "source_location": "L80", - "community": 169, + "community": 201, "norm_label": "return additions / removals / modifications between two snapshots. pure fun", "id": "components_file_list_rationale_80" }, @@ -75797,7 +81035,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", "source_location": "L119", - "community": 169, + "community": 139, "norm_label": "return the css background + decoration fragment for one file-list row. pure", "id": "components_file_list_rationale_119" }, @@ -75806,7 +81044,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", "source_location": "L169", - "community": 195, + "community": 202, "norm_label": "render the centre-pane file list. pure render function. double-clicking a f", "id": "components_file_list_rationale_169" }, @@ -75815,7 +81053,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", "source_location": "L207", - "community": 195, + "community": 202, "norm_label": "render the file-list column header row (name / size / modified / status).", "id": "components_file_list_rationale_207" }, @@ -75824,7 +81062,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L462", - "community": 45, + "community": 77, "norm_label": "build the lims-password save / clear handlers for the settings dialog. cred", "id": "ui_mount_rationale_462" }, @@ -75833,7 +81071,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L516", - "community": 237, + "community": 228, "norm_label": "run the rclone nas-remote probe and adapt it for the inline panel. rclone.c", "id": "ui_mount_rationale_516" }, @@ -75842,7 +81080,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L572", - "community": 193, + "community": 77, "norm_label": "write ``updated`` via ``deps.save_config`` and hot-reload components. retur", "id": "ui_mount_rationale_572" }, @@ -75851,7 +81089,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L604", - "community": 193, + "community": 77, "norm_label": "create the staging directory when the operator saved a non-empty path. ``st", "id": "ui_mount_rationale_604" }, @@ -75860,7 +81098,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L630", - "community": 193, + "community": 77, "norm_label": "push ``updated`` into the running components (no tray relaunch). wraps :fun", "id": "ui_mount_rationale_630" }, @@ -75869,7 +81107,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L647", - "community": 204, + "community": 82, "norm_label": "true when nas-mode equipment exist but the ``nas:`` remote is unusable. rcl", "id": "ui_mount_rationale_647" }, @@ -75878,7 +81116,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L671", - "community": 45, + "community": 52, "norm_label": "return true when the \u00a74.9 setup state is ``ready``. delegates to :func:`api", "id": "ui_mount_rationale_671" }, @@ -75887,7 +81125,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L703", - "community": 149, + "community": 153, "norm_label": "register / unregister platform autostart; return the real post-op state. re", "id": "ui_mount_rationale_703" }, @@ -75896,7 +81134,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L762", - "community": 45, + "community": 204, "norm_label": "return the (session_id, session) pairs the operations panel shows. the \u00a79.5", "id": "ui_mount_rationale_762" }, @@ -75905,7 +81143,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L779", - "community": 45, + "community": 204, "norm_label": "return ``(panel_count, input_required, active)`` operation counts. ``panel_", "id": "ui_mount_rationale_779" }, @@ -75914,7 +81152,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L796", - "community": 45, + "community": 52, "norm_label": "return the \u00a74.9.3 next-action string for the banner subline. unlike :func:`", "id": "ui_mount_rationale_796" }, @@ -75923,7 +81161,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L826", - "community": 302, + "community": 209, "norm_label": "compose the ``?selected=...&right_pane=...`` query string for /main. omits", "id": "ui_mount_rationale_826" }, @@ -75932,7 +81170,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L859", - "community": 303, + "community": 209, "norm_label": "map a selected node id to ``(kind, is_received)``. mirrors the shape classi", "id": "ui_mount_rationale_859" }, @@ -75941,7 +81179,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L903", - "community": 176, + "community": 151, "norm_label": "build the metadata-pane payload for the selected node, by kind. returns ``{", "id": "ui_mount_rationale_903" }, @@ -75950,7 +81188,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L930", - "community": 176, + "community": 151, "norm_label": "project equipment-config fields into the owned-equipment payload.", "id": "ui_mount_rationale_930" }, @@ -75959,7 +81197,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L945", - "community": 176, + "community": 151, "norm_label": "return the relay-equipment payload (label, source_host).", "id": "ui_mount_rationale_945" }, @@ -75968,7 +81206,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L959", - "community": 226, + "community": 210, "norm_label": "derive a project payload from the on-disk project directory. ``node_id`` is", "id": "ui_mount_rationale_959" }, @@ -75977,7 +81215,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L993", - "community": 226, + "community": 210, "norm_label": "count immediate child directories of ``parent`` whose names start with ``pre", "id": "ui_mount_rationale_993" }, @@ -75986,7 +81224,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1008", - "community": 192, + "community": 163, "norm_label": "decode the run's creation.json into the metadata-pane payload. returns ``{}", "id": "ui_mount_rationale_1008" }, @@ -75995,7 +81233,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1051", - "community": 192, + "community": 163, "norm_label": "resolve a centre-list selection (file or folder) to a render payload. phase", "id": "ui_mount_rationale_1051" }, @@ -76004,7 +81242,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1100", - "community": 192, + "community": 163, "norm_label": "aggregate a one-level folder scan into a folder-card payload (oq-4/b). phas", "id": "ui_mount_rationale_1100" }, @@ -76013,7 +81251,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1141", - "community": 203, + "community": 188, "norm_label": "mount / rebind the per-tab folderfeed and return current entries. uses ``ap", "id": "ui_mount_rationale_1141" }, @@ -76022,7 +81260,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1202", - "community": 203, + "community": 188, "norm_label": "folderfeed fetch hook. skips when the tree just walked. runs the synchronou", "id": "ui_mount_rationale_1202" }, @@ -76031,7 +81269,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1226", - "community": 68, + "community": 55, "norm_label": "force a fresh single-folder scan and prime the feed payload (oq-1/a). the f", "id": "ui_mount_rationale_1226" }, @@ -76040,7 +81278,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1259", - "community": 68, + "community": 55, "norm_label": "dispatch a per-run context action to its backend surface. mirrors :func:`ap", "id": "ui_mount_rationale_1259" }, @@ -76049,7 +81287,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1317", - "community": 168, + "community": 161, "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file", "id": "ui_mount_rationale_1317" }, @@ -76058,7 +81296,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1362", - "community": 168, + "community": 161, "norm_label": "handle ``open in os`` / ``copy path`` / ``keep local`` file actions.", "id": "ui_mount_rationale_1362" }, @@ -76067,7 +81305,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1401", - "community": 175, + "community": 55, "norm_label": "flip a file's ``keep_local`` flag via the orchestrator's writer. operator-f", "id": "ui_mount_rationale_1401" }, @@ -76076,7 +81314,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1444", - "community": 175, + "community": 164, "norm_label": "launch the host os's default opener for ``path``. returns false on platform", "id": "ui_mount_rationale_1444" }, @@ -76085,7 +81323,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1472", - "community": 57, + "community": 28, "norm_label": "build the operations-panel rows from the live session store (t3). uses the", "id": "ui_mount_rationale_1472" }, @@ -76094,7 +81332,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1484", - "community": 57, + "community": 28, "norm_label": "open the in-flight operations panel (frontend \u00a79.5). builds a fresh snapsho", "id": "ui_mount_rationale_1484" }, @@ -76103,7 +81341,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1508", - "community": 175, + "community": 164, "norm_label": "show a lightweight details/\"log\" dialog for one in-flight operation. the \u00a79", "id": "ui_mount_rationale_1508" }, @@ -76112,7 +81350,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1542", - "community": 154, + "community": 28, "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads", "id": "ui_mount_rationale_1542" }, @@ -76121,7 +81359,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1574", - "community": 154, + "community": 63, "norm_label": "open the \u00a79.1 escalation dialog; submit resumes, cancel confirms (t5). subm", "id": "ui_mount_rationale_1574" }, @@ -76130,7 +81368,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1612", - "community": 57, + "community": 28, "norm_label": "resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", "id": "ui_mount_rationale_1612" }, @@ -76139,7 +81377,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1662", - "community": 68, + "community": 55, "norm_label": "open a nicegui dialog showing the run's sync-queue job state. the operator-", "id": "ui_mount_rationale_1662" }, @@ -76148,7 +81386,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1710", - "community": 204, + "community": 82, "norm_label": "return the settings sections the operator still needs to fill in. mirrors a", "id": "ui_mount_rationale_1710" }, @@ -76157,7 +81395,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1743", - "community": 69, + "community": 40, "norm_label": "return the configured templates directory, or ``none``.", "id": "ui_mount_rationale_1743" }, @@ -76166,7 +81404,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1751", - "community": 69, + "community": 40, "norm_label": "list template directory names of ``template_type`` under templates_dir.", "id": "ui_mount_rationale_1751" }, @@ -76175,7 +81413,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1768", - "community": 69, + "community": 63, "norm_label": "map each ``template_type`` template name to its parsed copier questions. re", "id": "ui_mount_rationale_1768" }, @@ -76184,7 +81422,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1801", - "community": 119, + "community": 162, "norm_label": "read the offline-catalogue projects (disconnected-workstation source). read", "id": "ui_mount_rationale_1801" }, @@ -76193,7 +81431,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1835", - "community": 266, + "community": 162, "norm_label": "return the lims projects backing the project wizard's picker. tries the liv", "id": "ui_mount_rationale_1835" }, @@ -76202,7 +81440,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1865", - "community": 119, + "community": 63, "norm_label": "return the configured equipment ids.", "id": "ui_mount_rationale_1865" }, @@ -76211,7 +81449,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1873", - "community": 100, + "community": 63, "norm_label": "await a controller session's pipeline task and return the final handle. ``c", "id": "ui_mount_rationale_1873" }, @@ -76220,7 +81458,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1892", - "community": 194, + "community": 40, "norm_label": "fold the controller's ws frames into the wizard's live phase bar (t2) and su", "id": "ui_mount_rationale_1892" }, @@ -76229,7 +81467,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1935", - "community": 194, + "community": 40, "norm_label": "best-effort close of a nicegui dialog (no-op when ``none`` / test mode).", "id": "ui_mount_rationale_1935" }, @@ -76238,7 +81476,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1943", - "community": 119, + "community": 63, "norm_label": "build a projectcreaterequest from the wizard state and run it.", "id": "ui_mount_rationale_1943" }, @@ -76247,7 +81485,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1976", - "community": 69, + "community": 99, "norm_label": "build a runcreaterequest from the wizard state and run it.", "id": "ui_mount_rationale_1976" }, @@ -76256,7 +81494,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L2017", - "community": 100, + "community": 99, "norm_label": "drive a create_* call to completion and toast the outcome. when ``wizard_st", "id": "ui_mount_rationale_2017" }, @@ -76265,7 +81503,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L2060", - "community": 100, + "community": 99, "norm_label": "run the validator audit, swallowing failures to a warn log.", "id": "ui_mount_rationale_2060" }, @@ -76274,7 +81512,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L427", - "community": 45, + "community": 77, "norm_label": "build the lims-password save / clear handlers for the settings dialog. cred", "id": "ui_mount_rationale_427" }, @@ -76283,7 +81521,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L481", - "community": 237, + "community": 228, "norm_label": "run the rclone nas-remote probe and adapt it for the inline panel. rclone.c", "id": "ui_mount_rationale_481" }, @@ -76292,7 +81530,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L537", - "community": 193, + "community": 77, "norm_label": "write ``updated`` via ``deps.save_config`` and hot-reload components. retur", "id": "ui_mount_rationale_537" }, @@ -76301,7 +81539,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L569", - "community": 193, + "community": 77, "norm_label": "create the staging directory when the operator saved a non-empty path. ``st", "id": "ui_mount_rationale_569" }, @@ -76310,7 +81548,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L595", - "community": 193, + "community": 77, "norm_label": "push ``updated`` into the running components (no tray relaunch). wraps :fun", "id": "ui_mount_rationale_595" }, @@ -76319,7 +81557,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L612", - "community": 204, + "community": 82, "norm_label": "true when nas-mode equipment exist but the ``nas:`` remote is unusable. rcl", "id": "ui_mount_rationale_612" }, @@ -76328,7 +81566,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L636", - "community": 45, + "community": 52, "norm_label": "return true when the \u00a74.9 setup state is ``ready``. delegates to :func:`api", "id": "ui_mount_rationale_636" }, @@ -76337,7 +81575,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L668", - "community": 149, + "community": 153, "norm_label": "register / unregister platform autostart; return the real post-op state. re", "id": "ui_mount_rationale_668" }, @@ -76346,7 +81584,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L727", - "community": 45, + "community": 204, "norm_label": "return the (session_id, session) pairs the operations panel shows. the \u00a79.5", "id": "ui_mount_rationale_727" }, @@ -76355,7 +81593,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L744", - "community": 45, + "community": 204, "norm_label": "return ``(panel_count, input_required, active)`` operation counts. ``panel_", "id": "ui_mount_rationale_744" }, @@ -76364,7 +81602,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L761", - "community": 45, + "community": 52, "norm_label": "return the \u00a74.9.3 next-action string for the banner subline. unlike :func:`", "id": "ui_mount_rationale_761" }, @@ -76373,7 +81611,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L791", - "community": 302, + "community": 209, "norm_label": "compose the ``?selected=...&right_pane=...`` query string for /main. omits", "id": "ui_mount_rationale_791" }, @@ -76382,7 +81620,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L824", - "community": 303, + "community": 209, "norm_label": "map a selected node id to ``(kind, is_received)``. mirrors the shape classi", "id": "ui_mount_rationale_824" }, @@ -76391,7 +81629,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L868", - "community": 176, + "community": 151, "norm_label": "build the metadata-pane payload for the selected node, by kind. returns ``{", "id": "ui_mount_rationale_868" }, @@ -76400,7 +81638,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L895", - "community": 176, + "community": 151, "norm_label": "project equipment-config fields into the owned-equipment payload.", "id": "ui_mount_rationale_895" }, @@ -76409,7 +81647,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L924", - "community": 226, + "community": 210, "norm_label": "derive a project payload from the on-disk project directory. ``node_id`` is", "id": "ui_mount_rationale_924" }, @@ -76418,7 +81656,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L958", - "community": 226, + "community": 210, "norm_label": "count immediate child directories of ``parent`` whose names start with ``pre", "id": "ui_mount_rationale_958" }, @@ -76427,7 +81665,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L973", - "community": 192, + "community": 163, "norm_label": "decode the run's creation.json into the metadata-pane payload. returns ``{}", "id": "ui_mount_rationale_973" }, @@ -76436,7 +81674,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1016", - "community": 192, + "community": 163, "norm_label": "resolve a centre-list selection (file or folder) to a render payload. phase", "id": "ui_mount_rationale_1016" }, @@ -76445,7 +81683,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1065", - "community": 192, + "community": 163, "norm_label": "aggregate a one-level folder scan into a folder-card payload (oq-4/b). phas", "id": "ui_mount_rationale_1065" }, @@ -76454,7 +81692,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1106", - "community": 203, + "community": 188, "norm_label": "mount / rebind the per-tab folderfeed and return current entries. uses ``ap", "id": "ui_mount_rationale_1106" }, @@ -76463,7 +81701,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1167", - "community": 203, + "community": 188, "norm_label": "folderfeed fetch hook. skips when the tree just walked. runs the synchronou", "id": "ui_mount_rationale_1167" }, @@ -76472,7 +81710,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1191", - "community": 68, + "community": 55, "norm_label": "force a fresh single-folder scan and prime the feed payload (oq-1/a). the f", "id": "ui_mount_rationale_1191" }, @@ -76481,7 +81719,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1224", - "community": 68, + "community": 55, "norm_label": "dispatch a per-run context action to its backend surface. mirrors :func:`ap", "id": "ui_mount_rationale_1224" }, @@ -76490,7 +81728,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1282", - "community": 168, + "community": 161, "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file", "id": "ui_mount_rationale_1282" }, @@ -76499,7 +81737,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1327", - "community": 168, + "community": 161, "norm_label": "handle ``open in os`` / ``copy path`` / ``keep local`` file actions.", "id": "ui_mount_rationale_1327" }, @@ -76508,7 +81746,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1366", - "community": 68, + "community": 55, "norm_label": "flip a file's ``keep_local`` flag via the orchestrator's writer. operator-f", "id": "ui_mount_rationale_1366" }, @@ -76517,7 +81755,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1409", - "community": 175, + "community": 164, "norm_label": "launch the host os's default opener for ``path``. returns false on platform", "id": "ui_mount_rationale_1409" }, @@ -76526,7 +81764,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1437", - "community": 57, + "community": 28, "norm_label": "build the operations-panel rows from the live session store (t3). uses the", "id": "ui_mount_rationale_1437" }, @@ -76535,7 +81773,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1449", - "community": 57, + "community": 28, "norm_label": "open the in-flight operations panel (frontend \u00a79.5). builds a fresh snapsho", "id": "ui_mount_rationale_1449" }, @@ -76544,7 +81782,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1473", - "community": 175, + "community": 164, "norm_label": "show a lightweight details/\"log\" dialog for one in-flight operation. the \u00a79", "id": "ui_mount_rationale_1473" }, @@ -76553,7 +81791,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1507", - "community": 154, + "community": 28, "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads", "id": "ui_mount_rationale_1507" }, @@ -76562,7 +81800,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1539", - "community": 154, + "community": 40, "norm_label": "open the \u00a79.1 escalation dialog; submit resumes, cancel confirms (t5). subm", "id": "ui_mount_rationale_1539" }, @@ -76571,7 +81809,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1577", - "community": 57, + "community": 28, "norm_label": "resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", "id": "ui_mount_rationale_1577" }, @@ -76580,7 +81818,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1586", - "community": 68, + "community": 28, "norm_label": "cancel an in-flight session via the \u00a79.4 discard / keep dialog (t4). the op", "id": "ui_mount_rationale_1586" }, @@ -76589,7 +81827,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1627", - "community": 68, + "community": 55, "norm_label": "open a nicegui dialog showing the run's sync-queue job state. the operator-", "id": "ui_mount_rationale_1627" }, @@ -76598,7 +81836,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1675", - "community": 204, + "community": 82, "norm_label": "return the settings sections the operator still needs to fill in. mirrors a", "id": "ui_mount_rationale_1675" }, @@ -76607,7 +81845,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1708", - "community": 69, + "community": 40, "norm_label": "return the configured templates directory, or ``none``.", "id": "ui_mount_rationale_1708" }, @@ -76616,7 +81854,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1716", - "community": 69, + "community": 40, "norm_label": "list template directory names of ``template_type`` under templates_dir.", "id": "ui_mount_rationale_1716" }, @@ -76625,7 +81863,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1733", - "community": 69, + "community": 63, "norm_label": "map each ``template_type`` template name to its parsed copier questions. re", "id": "ui_mount_rationale_1733" }, @@ -76634,7 +81872,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1766", - "community": 119, + "community": 162, "norm_label": "read the offline-catalogue projects (disconnected-workstation source). read", "id": "ui_mount_rationale_1766" }, @@ -76643,7 +81881,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1800", - "community": 266, + "community": 162, "norm_label": "return the lims projects backing the project wizard's picker. tries the liv", "id": "ui_mount_rationale_1800" }, @@ -76652,7 +81890,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1830", - "community": 100, + "community": 63, "norm_label": "return the configured equipment ids.", "id": "ui_mount_rationale_1830" }, @@ -76661,7 +81899,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1838", - "community": 100, + "community": 63, "norm_label": "await a controller session's pipeline task and return the final handle. ``c", "id": "ui_mount_rationale_1838" }, @@ -76670,7 +81908,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1857", - "community": 194, + "community": 40, "norm_label": "fold the controller's ws frames into the wizard's live phase bar (t2) and su", "id": "ui_mount_rationale_1857" }, @@ -76679,7 +81917,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1900", - "community": 194, + "community": 40, "norm_label": "best-effort close of a nicegui dialog (no-op when ``none`` / test mode).", "id": "ui_mount_rationale_1900" }, @@ -76688,7 +81926,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1908", - "community": 119, + "community": 63, "norm_label": "build a projectcreaterequest from the wizard state and run it.", "id": "ui_mount_rationale_1908" }, @@ -76697,7 +81935,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1941", - "community": 69, + "community": 99, "norm_label": "build a runcreaterequest from the wizard state and run it.", "id": "ui_mount_rationale_1941" }, @@ -76706,7 +81944,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1982", - "community": 100, + "community": 99, "norm_label": "drive a create_* call to completion and toast the outcome. when ``wizard_st", "id": "ui_mount_rationale_1982" }, @@ -76715,7 +81953,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L2025", - "community": 100, + "community": 99, "norm_label": "run the validator audit, swallowing failures to a warn log.", "id": "ui_mount_rationale_2025" }, @@ -76724,7 +81962,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L719", - "community": 45, + "community": 204, "norm_label": "return the (session_id, session) pairs the operations panel shows. the \u00a79.5", "id": "ui_mount_rationale_719" }, @@ -76733,7 +81971,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L736", - "community": 45, + "community": 204, "norm_label": "return ``(panel_count, input_required, active)`` operation counts. ``panel_", "id": "ui_mount_rationale_736" }, @@ -76742,7 +81980,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L753", - "community": 45, + "community": 52, "norm_label": "return the \u00a74.9.3 next-action string for the banner subline. unlike :func:`", "id": "ui_mount_rationale_753" }, @@ -76751,7 +81989,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L783", - "community": 302, + "community": 209, "norm_label": "compose the ``?selected=...&right_pane=...`` query string for /main. omits", "id": "ui_mount_rationale_783" }, @@ -76760,7 +81998,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L816", - "community": 303, + "community": 209, "norm_label": "map a selected node id to ``(kind, is_received)``. mirrors the shape classi", "id": "ui_mount_rationale_816" }, @@ -76769,7 +82007,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L860", - "community": 176, + "community": 151, "norm_label": "build the metadata-pane payload for the selected node, by kind. returns ``{", "id": "ui_mount_rationale_860" }, @@ -76778,7 +82016,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L887", - "community": 176, + "community": 151, "norm_label": "project equipment-config fields into the owned-equipment payload.", "id": "ui_mount_rationale_887" }, @@ -76787,7 +82025,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L902", - "community": 176, + "community": 151, "norm_label": "return the relay-equipment payload (label, source_host).", "id": "ui_mount_rationale_902" }, @@ -76796,7 +82034,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L916", - "community": 226, + "community": 210, "norm_label": "derive a project payload from the on-disk project directory. ``node_id`` is", "id": "ui_mount_rationale_916" }, @@ -76805,7 +82043,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L950", - "community": 226, + "community": 210, "norm_label": "count immediate child directories of ``parent`` whose names start with ``pre", "id": "ui_mount_rationale_950" }, @@ -76814,7 +82052,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L965", - "community": 192, + "community": 163, "norm_label": "decode the run's creation.json into the metadata-pane payload. returns ``{}", "id": "ui_mount_rationale_965" }, @@ -76823,7 +82061,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1057", - "community": 192, + "community": 163, "norm_label": "aggregate a one-level folder scan into a folder-card payload (oq-4/b). phas", "id": "ui_mount_rationale_1057" }, @@ -76832,7 +82070,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1098", - "community": 203, + "community": 188, "norm_label": "mount / rebind the per-tab folderfeed and return current entries. uses ``ap", "id": "ui_mount_rationale_1098" }, @@ -76841,7 +82079,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1159", - "community": 203, + "community": 188, "norm_label": "folderfeed fetch hook. skips when the tree just walked. runs the synchronou", "id": "ui_mount_rationale_1159" }, @@ -76850,7 +82088,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1183", - "community": 68, + "community": 55, "norm_label": "force a fresh single-folder scan and prime the feed payload (oq-1/a). the f", "id": "ui_mount_rationale_1183" }, @@ -76859,7 +82097,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1216", - "community": 68, + "community": 55, "norm_label": "dispatch a per-run context action to its backend surface. mirrors :func:`ap", "id": "ui_mount_rationale_1216" }, @@ -76868,7 +82106,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1274", - "community": 168, + "community": 161, "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file", "id": "ui_mount_rationale_1274" }, @@ -76877,7 +82115,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1358", - "community": 68, + "community": 55, "norm_label": "flip a file's ``keep_local`` flag via the orchestrator's writer. operator-f", "id": "ui_mount_rationale_1358" }, @@ -76886,7 +82124,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1429", - "community": 57, + "community": 28, "norm_label": "build the operations-panel rows from the live session store (t3). uses the", "id": "ui_mount_rationale_1429" }, @@ -76895,7 +82133,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1441", - "community": 57, + "community": 28, "norm_label": "open the in-flight operations panel (frontend \u00a79.5). builds a fresh snapsho", "id": "ui_mount_rationale_1441" }, @@ -76904,7 +82142,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1465", - "community": 175, + "community": 164, "norm_label": "show a lightweight details/\"log\" dialog for one in-flight operation. the \u00a79", "id": "ui_mount_rationale_1465" }, @@ -76913,7 +82151,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1499", - "community": 154, + "community": 28, "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads", "id": "ui_mount_rationale_1499" }, @@ -76922,7 +82160,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1531", - "community": 154, + "community": 40, "norm_label": "open the \u00a79.1 escalation dialog; submit resumes, cancel confirms (t5). subm", "id": "ui_mount_rationale_1531" }, @@ -76931,7 +82169,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1569", - "community": 57, + "community": 28, "norm_label": "resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", "id": "ui_mount_rationale_1569" }, @@ -76940,7 +82178,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1578", - "community": 57, + "community": 28, "norm_label": "cancel an in-flight session via the \u00a79.4 discard / keep dialog (t4). the op", "id": "ui_mount_rationale_1578" }, @@ -76949,7 +82187,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1619", - "community": 68, + "community": 55, "norm_label": "open a nicegui dialog showing the run's sync-queue job state. the operator-", "id": "ui_mount_rationale_1619" }, @@ -76958,7 +82196,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1667", - "community": 204, + "community": 82, "norm_label": "return the settings sections the operator still needs to fill in. mirrors a", "id": "ui_mount_rationale_1667" }, @@ -76967,7 +82205,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1700", - "community": 69, + "community": 40, "norm_label": "return the configured templates directory, or ``none``.", "id": "ui_mount_rationale_1700" }, @@ -76976,7 +82214,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1725", - "community": 119, + "community": 63, "norm_label": "map each ``template_type`` template name to its parsed copier questions. re", "id": "ui_mount_rationale_1725" }, @@ -76985,7 +82223,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1758", - "community": 119, + "community": 162, "norm_label": "read the offline-catalogue projects (disconnected-workstation source). read", "id": "ui_mount_rationale_1758" }, @@ -76994,7 +82232,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1792", - "community": 266, + "community": 162, "norm_label": "return the lims projects backing the project wizard's picker. tries the liv", "id": "ui_mount_rationale_1792" }, @@ -77003,7 +82241,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1822", - "community": 119, + "community": 63, "norm_label": "return the configured equipment ids.", "id": "ui_mount_rationale_1822" }, @@ -77012,7 +82250,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1933", - "community": 69, + "community": 99, "norm_label": "build a runcreaterequest from the wizard state and run it.", "id": "ui_mount_rationale_1933" }, @@ -77021,7 +82259,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1974", - "community": 100, + "community": 99, "norm_label": "drive a create_* call to completion and toast the outcome. when ``wizard_st", "id": "ui_mount_rationale_1974" }, @@ -77030,7 +82268,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1241", - "community": 168, + "community": 161, "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file", "id": "ui_mount_rationale_1241" }, @@ -77039,7 +82277,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1286", - "community": 168, + "community": 161, "norm_label": "handle ``open in os`` / ``copy path`` / ``keep local`` file actions.", "id": "ui_mount_rationale_1286" }, @@ -77048,7 +82286,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1325", - "community": 68, + "community": 55, "norm_label": "flip a file's ``keep_local`` flag via the orchestrator's writer. operator-f", "id": "ui_mount_rationale_1325" }, @@ -77057,7 +82295,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1368", - "community": 175, + "community": 164, "norm_label": "launch the host os's default opener for ``path``. returns false on platform", "id": "ui_mount_rationale_1368" }, @@ -77066,7 +82304,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1396", - "community": 57, + "community": 28, "norm_label": "build the operations-panel rows from the live session store (t3). uses the", "id": "ui_mount_rationale_1396" }, @@ -77075,7 +82313,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1408", - "community": 57, + "community": 28, "norm_label": "open the in-flight operations panel (frontend \u00a79.5). builds a fresh snapsho", "id": "ui_mount_rationale_1408" }, @@ -77084,34 +82322,16 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1432", - "community": 175, + "community": 164, "norm_label": "show a lightweight details/\"log\" dialog for one in-flight operation. the \u00a79", "id": "ui_mount_rationale_1432" }, - { - "label": "Resume a suspended session by re-opening its \u00a79.1 input dialog (T5). Reads", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1466", - "community": 154, - "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads", - "id": "ui_mount_rationale_1466" - }, - { - "label": "Resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1536", - "community": 57, - "norm_label": "resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", - "id": "ui_mount_rationale_1536" - }, { "label": "Cancel an in-flight session via the \u00a79.4 Discard / Keep dialog (T4). The op", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1545", - "community": 57, + "community": 28, "norm_label": "cancel an in-flight session via the \u00a79.4 discard / keep dialog (t4). the op", "id": "ui_mount_rationale_1545" }, @@ -77120,7 +82340,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1634", - "community": 204, + "community": 82, "norm_label": "return the settings sections the operator still needs to fill in. mirrors a", "id": "ui_mount_rationale_1634" }, @@ -77129,7 +82349,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1692", - "community": 69, + "community": 63, "norm_label": "map each ``template_type`` template name to its parsed copier questions. re", "id": "ui_mount_rationale_1692" }, @@ -77138,7 +82358,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1759", - "community": 266, + "community": 162, "norm_label": "return the lims projects backing the project wizard's picker. tries the liv", "id": "ui_mount_rationale_1759" }, @@ -77147,7 +82367,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1789", - "community": 119, + "community": 63, "norm_label": "return the configured equipment ids.", "id": "ui_mount_rationale_1789" }, @@ -77156,7 +82376,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1797", - "community": 100, + "community": 63, "norm_label": "await a controller session's pipeline task and return the final handle. ``c", "id": "ui_mount_rationale_1797" }, @@ -77165,25 +82385,16 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1816", - "community": 194, + "community": 40, "norm_label": "fold the controller's ws frames into the wizard's live phase bar (t2) and su", "id": "ui_mount_rationale_1816" }, - { - "label": "Best-effort close of a NiceGUI dialog (no-op when ``None`` / test mode).", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1859", - "community": 194, - "norm_label": "best-effort close of a nicegui dialog (no-op when ``none`` / test mode).", - "id": "ui_mount_rationale_1859" - }, { "label": "Run the validator audit, swallowing failures to a WARN log.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1984", - "community": 100, + "community": 99, "norm_label": "run the validator audit, swallowing failures to a warn log.", "id": "ui_mount_rationale_1984" }, @@ -77192,7 +82403,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L999", - "community": 203, + "community": 188, "norm_label": "mount / rebind the per-tab folderfeed and return current entries. uses ``ap", "id": "ui_mount_rationale_999" }, @@ -77201,7 +82412,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1060", - "community": 203, + "community": 188, "norm_label": "folderfeed fetch hook. skips when the tree just walked. runs the synchronou", "id": "ui_mount_rationale_1060" }, @@ -77210,7 +82421,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1084", - "community": 68, + "community": 55, "norm_label": "dispatch a per-run context action to its backend surface. mirrors :func:`ap", "id": "ui_mount_rationale_1084" }, @@ -77219,7 +82430,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1142", - "community": 168, + "community": 161, "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file", "id": "ui_mount_rationale_1142" }, @@ -77228,7 +82439,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1187", - "community": 168, + "community": 161, "norm_label": "handle ``open in os`` / ``copy path`` / ``keep local`` file actions.", "id": "ui_mount_rationale_1187" }, @@ -77237,7 +82448,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1269", - "community": 175, + "community": 164, "norm_label": "launch the host os's default opener for ``path``. returns false on platform", "id": "ui_mount_rationale_1269" }, @@ -77246,7 +82457,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1297", - "community": 57, + "community": 28, "norm_label": "build the operations-panel rows from the live session store (t3). uses the", "id": "ui_mount_rationale_1297" }, @@ -77255,7 +82466,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1309", - "community": 57, + "community": 28, "norm_label": "open the in-flight operations panel (frontend \u00a79.5). builds a fresh snapsho", "id": "ui_mount_rationale_1309" }, @@ -77264,7 +82475,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1333", - "community": 175, + "community": 164, "norm_label": "show a lightweight details/\"log\" dialog for one in-flight operation. the \u00a79", "id": "ui_mount_rationale_1333" }, @@ -77273,7 +82484,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1367", - "community": 154, + "community": 28, "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads", "id": "ui_mount_rationale_1367" }, @@ -77282,7 +82493,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1399", - "community": 154, + "community": 40, "norm_label": "open the \u00a79.1 escalation dialog; submit resumes, cancel confirms (t5). subm", "id": "ui_mount_rationale_1399" }, @@ -77291,7 +82502,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1487", - "community": 68, + "community": 55, "norm_label": "open a nicegui dialog showing the run's sync-queue job state. the operator-", "id": "ui_mount_rationale_1487" }, @@ -77300,25 +82511,16 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1535", - "community": 204, + "community": 82, "norm_label": "return the settings sections the operator still needs to fill in. mirrors a", "id": "ui_mount_rationale_1535" }, - { - "label": "Return the configured templates directory, or ``None``.", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1568", - "community": 69, - "norm_label": "return the configured templates directory, or ``none``.", - "id": "ui_mount_rationale_1568" - }, { "label": "Map each ``template_type`` template name to its parsed copier questions. Re", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1593", - "community": 69, + "community": 63, "norm_label": "map each ``template_type`` template name to its parsed copier questions. re", "id": "ui_mount_rationale_1593" }, @@ -77327,7 +82529,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1660", - "community": 266, + "community": 162, "norm_label": "return the lims projects backing the project wizard's picker. tries the liv", "id": "ui_mount_rationale_1660" }, @@ -77336,7 +82538,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1690", - "community": 119, + "community": 63, "norm_label": "return the configured equipment ids.", "id": "ui_mount_rationale_1690" }, @@ -77345,7 +82547,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1698", - "community": 100, + "community": 63, "norm_label": "await a controller session's pipeline task and return the final handle. ``c", "id": "ui_mount_rationale_1698" }, @@ -77354,7 +82556,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1717", - "community": 194, + "community": 40, "norm_label": "fold the controller's ws frames into the wizard's live phase bar (t2) and su", "id": "ui_mount_rationale_1717" }, @@ -77363,7 +82565,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1842", - "community": 100, + "community": 99, "norm_label": "drive a create_* call to completion and toast the outcome. when ``wizard_st", "id": "ui_mount_rationale_1842" }, @@ -77372,7 +82574,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1885", - "community": 100, + "community": 99, "norm_label": "run the validator audit, swallowing failures to a warn log.", "id": "ui_mount_rationale_1885" }, @@ -77381,7 +82583,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L776", - "community": 302, + "community": 209, "norm_label": "compose the ``?selected=...&right_pane=...`` query string for /main. omits", "id": "ui_mount_rationale_776" }, @@ -77390,7 +82592,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L797", - "community": 303, + "community": 209, "norm_label": "map a selected node id to ``(kind, is_received)``. mirrors the shape classi", "id": "ui_mount_rationale_797" }, @@ -77399,7 +82601,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L841", - "community": 176, + "community": 151, "norm_label": "build the metadata-pane payload for the selected node, by kind. returns ``{", "id": "ui_mount_rationale_841" }, @@ -77408,7 +82610,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L883", - "community": 176, + "community": 151, "norm_label": "return the relay-equipment payload (label, source_host).", "id": "ui_mount_rationale_883" }, @@ -77417,7 +82619,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L897", - "community": 226, + "community": 210, "norm_label": "derive a project payload from the on-disk project directory. ``node_id`` is", "id": "ui_mount_rationale_897" }, @@ -77426,7 +82628,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L931", - "community": 226, + "community": 210, "norm_label": "count immediate child directories of ``parent`` whose names start with ``pre", "id": "ui_mount_rationale_931" }, @@ -77435,7 +82637,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L946", - "community": 192, + "community": 163, "norm_label": "decode the run's creation.json into the metadata-pane payload. returns ``{}", "id": "ui_mount_rationale_946" }, @@ -77444,7 +82646,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L980", - "community": 203, + "community": 188, "norm_label": "mount / rebind the per-tab folderfeed and return current entries. uses ``ap", "id": "ui_mount_rationale_980" }, @@ -77453,7 +82655,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1041", - "community": 203, + "community": 188, "norm_label": "folderfeed fetch hook. skips when the tree just walked. runs the synchronou", "id": "ui_mount_rationale_1041" }, @@ -77462,7 +82664,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1123", - "community": 168, + "community": 161, "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file", "id": "ui_mount_rationale_1123" }, @@ -77471,7 +82673,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1168", - "community": 168, + "community": 161, "norm_label": "handle ``open in os`` / ``copy path`` / ``keep local`` file actions.", "id": "ui_mount_rationale_1168" }, @@ -77480,7 +82682,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1207", - "community": 68, + "community": 55, "norm_label": "flip a file's ``keep_local`` flag via the orchestrator's writer. operator-f", "id": "ui_mount_rationale_1207" }, @@ -77489,7 +82691,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1250", - "community": 175, + "community": 164, "norm_label": "launch the host os's default opener for ``path``. returns false on platform", "id": "ui_mount_rationale_1250" }, @@ -77498,7 +82700,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1278", - "community": 57, + "community": 28, "norm_label": "build the operations-panel rows from the live session store (t3). uses the", "id": "ui_mount_rationale_1278" }, @@ -77507,7 +82709,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1290", - "community": 57, + "community": 28, "norm_label": "open the in-flight operations panel (frontend \u00a79.5). builds a fresh snapsho", "id": "ui_mount_rationale_1290" }, @@ -77516,7 +82718,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1314", - "community": 175, + "community": 164, "norm_label": "show a lightweight details/\"log\" dialog for one in-flight operation. the \u00a79", "id": "ui_mount_rationale_1314" }, @@ -77525,7 +82727,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1348", - "community": 154, + "community": 28, "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads", "id": "ui_mount_rationale_1348" }, @@ -77534,7 +82736,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1380", - "community": 154, + "community": 40, "norm_label": "open the \u00a79.1 escalation dialog; submit resumes, cancel confirms (t5). subm", "id": "ui_mount_rationale_1380" }, @@ -77543,7 +82745,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1418", - "community": 57, + "community": 28, "norm_label": "resolve the controller off ``deps`` and open the \u00a79.4 cancel dialog.", "id": "ui_mount_rationale_1418" }, @@ -77552,7 +82754,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1427", - "community": 57, + "community": 28, "norm_label": "cancel an in-flight session via the \u00a79.4 discard / keep dialog (t4). the op", "id": "ui_mount_rationale_1427" }, @@ -77561,7 +82763,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1468", - "community": 68, + "community": 55, "norm_label": "open a nicegui dialog showing the run's sync-queue job state. the operator-", "id": "ui_mount_rationale_1468" }, @@ -77570,7 +82772,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1516", - "community": 204, + "community": 82, "norm_label": "return the settings sections the operator still needs to fill in. mirrors a", "id": "ui_mount_rationale_1516" }, @@ -77579,7 +82781,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1549", - "community": 69, + "community": 40, "norm_label": "return the configured templates directory, or ``none``.", "id": "ui_mount_rationale_1549" }, @@ -77588,7 +82790,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1557", - "community": 69, + "community": 40, "norm_label": "list template directory names of ``template_type`` under templates_dir.", "id": "ui_mount_rationale_1557" }, @@ -77597,7 +82799,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1607", - "community": 119, + "community": 162, "norm_label": "read the offline-catalogue projects (disconnected-workstation source). read", "id": "ui_mount_rationale_1607" }, @@ -77606,7 +82808,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1641", - "community": 266, + "community": 162, "norm_label": "return the lims projects backing the project wizard's picker. tries the liv", "id": "ui_mount_rationale_1641" }, @@ -77615,7 +82817,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1679", - "community": 100, + "community": 63, "norm_label": "await a controller session's pipeline task and return the final handle. ``c", "id": "ui_mount_rationale_1679" }, @@ -77624,7 +82826,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1741", - "community": 194, + "community": 40, "norm_label": "best-effort close of a nicegui dialog (no-op when ``none`` / test mode).", "id": "ui_mount_rationale_1741" }, @@ -77633,7 +82835,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1749", - "community": 119, + "community": 63, "norm_label": "build a projectcreaterequest from the wizard state and run it.", "id": "ui_mount_rationale_1749" }, @@ -77642,7 +82844,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1823", - "community": 100, + "community": 99, "norm_label": "drive a create_* call to completion and toast the outcome. when ``wizard_st", "id": "ui_mount_rationale_1823" }, @@ -77651,7 +82853,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1866", - "community": 100, + "community": 99, "norm_label": "run the validator audit, swallowing failures to a warn log.", "id": "ui_mount_rationale_1866" }, @@ -77660,7 +82862,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L77", - "community": 126, + "community": 81, "norm_label": "the three default chips on the left-tree filter strip (\u00a73.5.4).", "id": "pages_main_rationale_77" }, @@ -77669,7 +82871,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L87", - "community": 126, + "community": 81, "norm_label": "translate a chip group state into a :class:`treefilters`.", "id": "pages_main_rationale_87" }, @@ -77678,7 +82880,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L98", - "community": 126, + "community": 81, "norm_label": "return the count text shown on the problems tab. frontend \u00a73.2: hard count", "id": "pages_main_rationale_98" }, @@ -77687,7 +82889,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L158", - "community": 126, + "community": 81, "norm_label": "render the rebuilt three-region file-explorer main window. gui/orchestrator", "id": "pages_main_rationale_158" }, @@ -77696,7 +82898,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L448", - "community": 196, + "community": 182, "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", "id": "pages_main_rationale_448" }, @@ -77705,7 +82907,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L480", - "community": 205, + "community": 192, "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", "id": "pages_main_rationale_480" }, @@ -77714,7 +82916,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L50", - "community": 70, + "community": 61, "norm_label": "test_framed_pane_yields_none_without_nicegui()", "id": "ui_test_framed_pane_test_framed_pane_yields_none_without_nicegui" }, @@ -77723,7 +82925,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L56", - "community": 70, + "community": 61, "norm_label": "test_framed_pane_with_count_yields_none_without_nicegui()", "id": "ui_test_framed_pane_test_framed_pane_with_count_yields_none_without_nicegui" }, @@ -77732,7 +82934,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L61", - "community": 70, + "community": 61, "norm_label": "test_framed_pane_nests_children_in_body_under_nicegui()", "id": "ui_test_framed_pane_test_framed_pane_nests_children_in_body_under_nicegui" }, @@ -77741,7 +82943,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L62", - "community": 70, + "community": 61, "norm_label": "under a nicegui app context the card > header > body nesting holds and child", "id": "ui_test_framed_pane_rationale_62" }, @@ -77750,7 +82952,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L446", - "community": 196, + "community": 182, "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", "id": "pages_main_rationale_446" }, @@ -77759,7 +82961,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L478", - "community": 205, + "community": 192, "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", "id": "pages_main_rationale_478" }, @@ -77768,7 +82970,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L440", - "community": 196, + "community": 182, "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", "id": "pages_main_rationale_440" }, @@ -77777,7 +82979,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L472", - "community": 205, + "community": 192, "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", "id": "pages_main_rationale_472" }, @@ -77786,7 +82988,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L434", - "community": 196, + "community": 182, "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", "id": "pages_main_rationale_434" }, @@ -77795,7 +82997,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L466", - "community": 205, + "community": 192, "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", "id": "pages_main_rationale_466" }, @@ -77804,7 +83006,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L428", - "community": 196, + "community": 182, "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", "id": "pages_main_rationale_428" }, @@ -77813,7 +83015,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L33", - "community": 126, + "community": 81, "norm_label": "render state for the main page. gui/orchestrator redesign \u00a74: the legacy tw", "id": "pages_main_rationale_33" }, @@ -77822,7 +83024,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L76", - "community": 126, + "community": 81, "norm_label": "the three default chips on the left-tree filter strip (\u00a73.5.4).", "id": "pages_main_rationale_76" }, @@ -77831,25 +83033,16 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L86", - "community": 126, + "community": 81, "norm_label": "translate a chip group state into a :class:`treefilters`.", "id": "pages_main_rationale_86" }, - { - "label": "Return the count text shown on the Problems tab. Frontend \u00a73.2: hard count", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L97", - "community": 126, - "norm_label": "return the count text shown on the problems tab. frontend \u00a73.2: hard count", - "id": "pages_main_rationale_97" - }, { "label": "Banner content for the setup-incomplete state (\u00a73.1.4). ``next_action`` is", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L109", - "community": 126, + "community": 81, "norm_label": "banner content for the setup-incomplete state (\u00a73.1.4). ``next_action`` is", "id": "pages_main_rationale_109" }, @@ -77858,7 +83051,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L157", - "community": 126, + "community": 81, "norm_label": "render the rebuilt three-region file-explorer main window. gui/orchestrator", "id": "pages_main_rationale_157" }, @@ -77867,7 +83060,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L427", - "community": 196, + "community": 182, "norm_label": "render the centre-pane file list (redesign \u00a74.3). each row carries a right-", "id": "pages_main_rationale_427" }, @@ -77876,7 +83069,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/main.py", "source_location": "L459", - "community": 205, + "community": 192, "norm_label": "render the right metadata / problems pane (redesign \u00a74.4).", "id": "pages_main_rationale_459" }, @@ -77885,7 +83078,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/sync_status_icon.py", "source_location": "L162", - "community": 143, + "community": 251, "norm_label": "build a nicegui row containing the icon and optional retry counter. ``stric", "id": "components_sync_status_icon_rationale_162" }, @@ -77894,7 +83087,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L79", - "community": 378, + "community": 139, "norm_label": "a bare entry defaults ``keep_local`` and ``tombstone`` to false.", "id": "ui_test_file_list_rationale_79" }, @@ -77903,7 +83096,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L86", - "community": 379, + "community": 201, "norm_label": "flipping ``keep_local`` is a modification (drives a re-render).", "id": "ui_test_file_list_rationale_86" }, @@ -77912,7 +83105,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L94", - "community": 381, + "community": 201, "norm_label": "a file transitioning to a tombstone is a modification.", "id": "ui_test_file_list_rationale_94" }, @@ -77921,7 +83114,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L102", - "community": 380, + "community": 372, "norm_label": "``file_context_keep_local`` is a distinct discriminator value.", "id": "ui_test_file_list_rationale_102" }, @@ -77930,7 +83123,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_file_list.py", "source_location": "L107", - "community": 376, + "community": 373, "norm_label": "the renderer wires the keep-local menu item and tombstone row. exercises th", "id": "ui_test_file_list_rationale_107" }, @@ -77939,7 +83132,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/sync_status_icon.py", "source_location": "L161", - "community": 143, + "community": 251, "norm_label": "build a nicegui row containing the icon and optional retry counter.", "id": "components_sync_status_icon_rationale_161" }, @@ -77948,7 +83141,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/sync_status_icon.py", "source_location": "L113", - "community": 143, + "community": 205, "norm_label": "compute icon + tooltip + retry-counter for a sync status. the ``retry_n``/`", "id": "components_sync_status_icon_rationale_113" }, @@ -77957,7 +83150,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/sync_status_icon.py", "source_location": "L140", - "community": 143, + "community": 251, "norm_label": "build a nicegui row containing the icon and optional retry counter.", "id": "components_sync_status_icon_rationale_140" }, @@ -77966,7 +83159,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", "source_location": "L118", - "community": 195, + "community": 202, "norm_label": "render the centre-pane file list. pure render function. double-clicking a f", "id": "components_file_list_rationale_118" }, @@ -77975,7 +83168,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/components/file_list.py", "source_location": "L156", - "community": 195, + "community": 202, "norm_label": "render the file-list column header row (name / size / modified / status).", "id": "components_file_list_rationale_156" }, @@ -77984,7 +83177,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_theme.py", "source_location": "L82", - "community": 117, + "community": 70, "norm_label": "all shadows are navy-tinted (design.md \u00a704).", "id": "ui_test_theme_rationale_82" }, @@ -77993,7 +83186,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_theme.py", "source_location": "L95", - "community": 117, + "community": 70, "norm_label": "the block opens with ``:root {`` per design.md \u00a707.", "id": "ui_test_theme_rationale_95" }, @@ -78002,7 +83195,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_theme.py", "source_location": "L102", - "community": 117, + "community": 70, "norm_label": "a body / heading / mono reset block follows the ``:root {}``.", "id": "ui_test_theme_rationale_102" }, @@ -78011,7 +83204,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_theme.py", "source_location": "L111", - "community": 117, + "community": 70, "norm_label": "in source layout, the resolver returns ``/assets/``.", "id": "ui_test_theme_rationale_111" }, @@ -78020,7 +83213,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L43", - "community": 421, + "community": 462, "norm_label": "semantic tokens alias the okabe-ito palette per design.md \u00a701.", "id": "ui_test_design_rationale_43" }, @@ -78029,7 +83222,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L52", - "community": 430, + "community": 468, "norm_label": "frontend \u00a72.1.4: warning is canonically ``--oi-orange``.", "id": "ui_test_design_rationale_52" }, @@ -78038,7 +83231,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L58", - "community": 328, + "community": 470, "norm_label": "frontend \u00a72.1.3 overrides dm sans / dm mono with ibm plex / system mono.", "id": "ui_test_design_rationale_58" }, @@ -78047,7 +83240,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L68", - "community": 426, + "community": 458, "norm_label": "type scale tokens are verbatim from design.md \u00a702.", "id": "ui_test_design_rationale_68" }, @@ -78056,7 +83249,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L82", - "community": 422, + "community": 465, "norm_label": "spacing tokens follow the 4px grid (design.md \u00a703).", "id": "ui_test_design_rationale_82" }, @@ -78065,7 +83258,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L99", - "community": 431, + "community": 463, "norm_label": "border radius tokens (design.md \u00a704).", "id": "ui_test_design_rationale_99" }, @@ -78074,7 +83267,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L108", - "community": 428, + "community": 461, "norm_label": "all shadow definitions use ``rgba(0,54,96,...)`` (design.md \u00a704).", "id": "ui_test_design_rationale_108" }, @@ -78083,7 +83276,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L115", - "community": 420, + "community": 459, "norm_label": "motion tokens (design.md \u00a707).", "id": "ui_test_design_rationale_115" }, @@ -78092,7 +83285,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L122", - "community": 424, + "community": 457, "norm_label": "series order is fixed (design.md absolute constraint).", "id": "ui_test_design_rationale_122" }, @@ -78101,7 +83294,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L136", - "community": 423, + "community": 460, "norm_label": "vermilion is reserved for the error / alert series (design.md \u00a706).", "id": "ui_test_design_rationale_136" }, @@ -78110,7 +83303,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L142", - "community": 425, + "community": 466, "norm_label": "frontend rules (design.md): series 5 is oi_blue but only after 4 prior series.", "id": "ui_test_design_rationale_142" }, @@ -78119,7 +83312,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L153", - "community": 432, + "community": 464, "norm_label": "badge text variants are the documented darkened hexes (design.md \u00a705).", "id": "ui_test_design_rationale_153" }, @@ -78128,7 +83321,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L165", - "community": 429, + "community": 469, "norm_label": "alert text variants are the documented hexes (design.md \u00a705).", "id": "ui_test_design_rationale_165" }, @@ -78137,7 +83330,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_design.py", "source_location": "L176", - "community": 427, + "community": 467, "norm_label": "``#f0e442`` is exposed as a token but never used for chrome. the chip strip", "id": "ui_test_design_rationale_176" }, @@ -78146,7 +83339,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/theme.py", "source_location": "L101", - "community": 177, + "community": 39, "norm_label": "register the design tokens with nicegui / quasar at app start. imports nice", "id": "ui_theme_rationale_101" }, @@ -78155,7 +83348,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/theme.py", "source_location": "L123", - "community": 177, + "community": 39, "norm_label": "return the absolute path to the bundled ``assets/`` directory. resolves bot", "id": "ui_theme_rationale_123" }, @@ -78164,7 +83357,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/theme.py", "source_location": "L138", - "community": 177, + "community": 39, "norm_label": "mount the project's ``assets/`` directory at ``/assets``. idempotent: a mod", "id": "ui_theme_rationale_138" }, @@ -78173,7 +83366,7 @@ "file_type": "code", "source_file": "tests/unit/test_paths.py", "source_location": "L876", - "community": 153, + "community": 160, "norm_label": "test_evaluate_setup_state_nas_keyring_missing()", "id": "unit_test_paths_test_evaluate_setup_state_nas_keyring_missing" }, @@ -78182,7 +83375,7 @@ "file_type": "code", "source_file": "tests/unit/test_paths.py", "source_location": "L895", - "community": 153, + "community": 160, "norm_label": "test_evaluate_setup_state_nas_state_resolves_once_password_added()", "id": "unit_test_paths_test_evaluate_setup_state_nas_state_resolves_once_password_added" }, @@ -78191,7 +83384,7 @@ "file_type": "code", "source_file": "tests/unit/test_paths.py", "source_location": "L905", - "community": 153, + "community": 160, "norm_label": "test_setup_state_missing_for_no_nas_credential_lists_per_equipment()", "id": "unit_test_paths_test_setup_state_missing_for_no_nas_credential_lists_per_equipment" }, @@ -78200,7 +83393,7 @@ "file_type": "code", "source_file": "tests/unit/test_paths.py", "source_location": "L919", - "community": 210, + "community": 75, "norm_label": "test_setup_state_next_action_for_no_nas_credential()", "id": "unit_test_paths_test_setup_state_next_action_for_no_nas_credential" }, @@ -78209,7 +83402,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L71", - "community": 52, + "community": 59, "norm_label": "minimal orchestrator identity (redesign \u00a73.1) for setup-state fixtures.", "id": "unit_test_paths_rationale_71" }, @@ -78218,7 +83411,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L81", - "community": 153, + "community": 160, "norm_label": "construct a fully ready config (paths + equipment + lims endpoint+email). r", "id": "unit_test_paths_rationale_81" }, @@ -78227,7 +83420,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L106", - "community": 82, + "community": 489, "norm_label": "return a fake home under tmp_path; route ``path.home()`` to it.", "id": "unit_test_paths_rationale_106" }, @@ -78236,7 +83429,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L351", - "community": 64, + "community": 76, "norm_label": "the suggestion now nests under app_name on every platform, so the test-mode", "id": "unit_test_paths_rationale_351" }, @@ -78245,7 +83438,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L360", - "community": 64, + "community": 76, "norm_label": "unset / non-'1' values must leave the real os dirs untouched.", "id": "unit_test_paths_rationale_360" }, @@ -78254,7 +83447,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L474", - "community": 82, + "community": 75, "norm_label": "non-str input hits the isinstance guard, not the regex.", "id": "unit_test_paths_rationale_474" }, @@ -78263,7 +83456,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L481", - "community": 82, + "community": 75, "norm_label": "non-str input hits the isinstance guard, not the length / regex check.", "id": "unit_test_paths_rationale_481" }, @@ -78272,7 +83465,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L489", - "community": 82, + "community": 75, "norm_label": "spec contract: input must already be canonical; no silent uppercasing.", "id": "unit_test_paths_rationale_489" }, @@ -78281,7 +83474,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L531", - "community": 167, + "community": 176, "norm_label": "the leaf is iso 8601 with colons replaced by hyphens. \u00a73.1. redesign \u00a73.4:", "id": "unit_test_paths_rationale_531" }, @@ -78290,7 +83483,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L548", - "community": 167, + "community": 176, "norm_label": "redesign \u00a73.4: experimental runs live under /runs/run_*.", "id": "unit_test_paths_rationale_548" }, @@ -78299,7 +83492,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L561", - "community": 167, + "community": 176, "norm_label": "redesign \u00a73.4: two runs in the same minute resolve to the same path (copier", "id": "unit_test_paths_rationale_561" }, @@ -78308,7 +83501,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L632", - "community": 167, + "community": 176, "norm_label": "a non-str project_name hits the isinstance guard.", "id": "unit_test_paths_rationale_632" }, @@ -78317,7 +83510,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L645", - "community": 167, + "community": 176, "norm_label": "an empty-string project_name also hits the same guard.", "id": "unit_test_paths_rationale_645" }, @@ -78326,7 +83519,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L673", - "community": 252, + "community": 256, "norm_label": "spaces and ordinary punctuation are fine -- the name is used verbatim.", "id": "unit_test_paths_rationale_673" }, @@ -78335,7 +83528,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L709", - "community": 252, + "community": 256, "norm_label": "the \u00a73.2 contract is 'used verbatim' -- no canonicalisation.", "id": "unit_test_paths_rationale_709" }, @@ -78344,7 +83537,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L733", - "community": 52, + "community": 59, "norm_label": "only one path is empty -- still incomplete_missing_paths.", "id": "unit_test_paths_rationale_733" }, @@ -78353,7 +83546,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L760", - "community": 52, + "community": 59, "norm_label": "only ``label`` gates orchestrator identity; a blank label trips it.", "id": "unit_test_paths_rationale_760" }, @@ -78362,7 +83555,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L773", - "community": 52, + "community": 59, "norm_label": "a staging root without a label still trips -- staging never substitutes.", "id": "unit_test_paths_rationale_773" }, @@ -78380,7 +83573,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L806", - "community": 52, + "community": 59, "norm_label": "the orchestrator missing-field rollup no longer mentions staging_root.", "id": "unit_test_paths_rationale_806" }, @@ -78389,7 +83582,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L837", - "community": 52, + "community": 59, "norm_label": "offline catalogue path satisfies the lims slot without endpoint+email.", "id": "unit_test_paths_rationale_837" }, @@ -78398,7 +83591,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L868", - "community": 153, + "community": 160, "norm_label": "endpoint+email present but keyring lacks the password -> incomplete_no_lims.", "id": "unit_test_paths_rationale_868" }, @@ -78407,7 +83600,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L877", - "community": 153, + "community": 160, "norm_label": "nas-mode equipment without its keyring entry gates with the new state.", "id": "unit_test_paths_rationale_877" }, @@ -78416,7 +83609,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L884", - "community": 153, + "community": 160, "norm_label": "a configured lims does not mask the missing nas credential.", "id": "unit_test_paths_rationale_884" }, @@ -78425,7 +83618,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L896", - "community": 153, + "community": 160, "norm_label": "adding the keyring entry advances the state to the next gate.", "id": "unit_test_paths_rationale_896" }, @@ -78434,7 +83627,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L906", - "community": 153, + "community": 160, "norm_label": "the missing list names each equipment id whose keyring entry is absent.", "id": "unit_test_paths_rationale_906" }, @@ -78443,7 +83636,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L929", - "community": 52, + "community": 59, "norm_label": "endpoint present but email empty -> incomplete_no_lims (email is required).", "id": "unit_test_paths_rationale_929" }, @@ -78452,7 +83645,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L981", - "community": 153, + "community": 160, "norm_label": "soft block: surfaces a banner, not a missing-field list.", "id": "unit_test_paths_rationale_981" }, @@ -78461,7 +83654,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L1019", - "community": 60, + "community": 177, "norm_label": "when config is none but state is incomplete_missing_paths, every paths field", "id": "unit_test_paths_rationale_1019" }, @@ -78470,7 +83663,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L1030", - "community": 460, + "community": 177, "norm_label": "when config is none but state is incomplete_no_lims, the whole lims block is", "id": "unit_test_paths_rationale_1030" }, @@ -78479,7 +83672,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L1038", - "community": 52, + "community": 59, "norm_label": "endpoint+email both filled in but no offline catalogue -> the keyring-passwo", "id": "unit_test_paths_rationale_1038" }, @@ -78488,7 +83681,7 @@ "file_type": "rationale", "source_file": "tests/unit/test_paths.py", "source_location": "L1064", - "community": 459, + "community": 177, "norm_label": "defensive fallback: any value that isn't a recognized setupstate returns an", "id": "unit_test_paths_rationale_1064" }, @@ -78497,7 +83690,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", "source_location": "L715", - "community": 407, + "community": 394, "norm_label": "archived projects are hidden by default.", "id": "ui_test_components_rationale_715" }, @@ -78506,7 +83699,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", "source_location": "L735", - "community": 408, + "community": 393, "norm_label": "deleted-from-lims rows always render (frontend \u00a73.5.3).", "id": "ui_test_components_rationale_735" }, @@ -78515,7 +83708,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", "source_location": "L782", - "community": 405, + "community": 326, "norm_label": "``runnode.sync_status`` flows through to the resulting ``treenode``.", "id": "ui_test_components_rationale_782" }, @@ -78524,7 +83717,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", "source_location": "L799", - "community": 410, + "community": 326, "norm_label": "a ``cleared`` run row carries the cloud-icon url and its sync_status. opera", "id": "ui_test_components_rationale_799" }, @@ -78533,7 +83726,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", "source_location": "L824", - "community": 413, + "community": 391, "norm_label": "any non-``cleaned`` sync status (or unset) maps to the local-icon url.", "id": "ui_test_components_rationale_824" }, @@ -78542,25 +83735,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", "source_location": "L850", - "community": 415, + "community": 327, "norm_label": "equipment and project rows render without the per-row sync icon.", "id": "ui_test_components_rationale_850" }, - { - "label": "An ``EquipmentNode(relay=True)`` builds a ``received_equipment`` row.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_components.py", - "source_location": "L872", - "community": 409, - "norm_label": "an ``equipmentnode(relay=true)`` builds a ``received_equipment`` row.", - "id": "ui_test_components_rationale_872" - }, { "label": "Each row carries a ``testid_kind`` matching the Playwright contract.", "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", "source_location": "L886", - "community": 406, + "community": 395, "norm_label": "each row carries a ``testid_kind`` matching the playwright contract.", "id": "ui_test_components_rationale_886" }, @@ -78569,7 +83753,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", "source_location": "L910", - "community": 412, + "community": 390, "norm_label": "the ``default-header`` template carries the per-row anchors the playwright f", "id": "ui_test_components_rationale_910" }, @@ -78578,7 +83762,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", "source_location": "L950", - "community": 414, + "community": 392, "norm_label": "each factory emits a dict (or nicegui element) without crashing. the factor", "id": "ui_test_components_rationale_950" }, @@ -78587,7 +83771,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_components.py", "source_location": "L983", - "community": 411, + "community": 389, "norm_label": "the pre-commit ``no-direct-ui-notify`` rule is mirrored in tests. any call", "id": "ui_test_components_rationale_983" }, @@ -78596,7 +83780,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", "source_location": "L94", - "community": 416, + "community": 397, "norm_label": "test_main_setup_banner_subline_tailored_for_nas_credentials()", "id": "ui_test_pages_test_main_setup_banner_subline_tailored_for_nas_credentials" }, @@ -78605,7 +83789,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_pages.py", "source_location": "L275", - "community": 417, + "community": 396, "norm_label": "test_settings_first_incomplete_resolves_nas_credentials()", "id": "ui_test_pages_test_settings_first_incomplete_resolves_nas_credentials" }, @@ -78708,21 +83892,12 @@ "norm_label": "real config with one password-requiring nas-mode equipment. ``offline_catal", "id": "ui_test_mount_rationale_342" }, - { - "label": "Redesign \u00a73.1: orchestrator pipeline is always on, but a missing staging_roo", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L446", - "community": 2, - "norm_label": "redesign \u00a73.1: orchestrator pipeline is always on, but a missing staging_roo", - "id": "ui_test_mount_rationale_446" - }, { "label": "Minimal stand-in for the NiceGUI ``ui`` object's navigate surface.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L493", - "community": 49, + "community": 60, "norm_label": "minimal stand-in for the nicegui ``ui`` object's navigate surface.", "id": "ui_test_mount_rationale_493" }, @@ -78731,7 +83906,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L501", - "community": 49, + "community": 324, "norm_label": "a successful save persists, then hot-reloads the live components. the old b", "id": "ui_test_mount_rationale_501" }, @@ -78740,7 +83915,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L578", - "community": 49, + "community": 60, "norm_label": "opt-in: a saved non-empty staging_root is created on save.", "id": "ui_test_mount_rationale_578" }, @@ -78749,7 +83924,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L634", - "community": 2, + "community": 386, "norm_label": "if the coordinator raises wholesale, the live config is still kept.", "id": "ui_test_mount_rationale_634" }, @@ -78776,7 +83951,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L749", - "community": 298, + "community": 385, "norm_label": "a raising keyring backend surfaces a toast, not an unhandled crash.", "id": "ui_test_mount_rationale_749" }, @@ -78794,7 +83969,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1227", - "community": 389, + "community": 387, "norm_label": "both empty -> empty string. one present -> single param.", "id": "ui_test_mount_rationale_1227" }, @@ -78803,7 +83978,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1235", - "community": 390, + "community": 80, "norm_label": "project names with spaces / special chars survive the round trip.", "id": "ui_test_mount_rationale_1235" }, @@ -78812,7 +83987,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1252", - "community": 350, + "community": 80, "norm_label": "equipment / project / run / received_equipment all classify correctly.", "id": "ui_test_mount_rationale_1252" }, @@ -78821,7 +83996,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1273", - "community": 349, + "community": 350, "norm_label": "a node id whose root is not in the hierarchy returns ``(none, false)``. gua", "id": "ui_test_mount_rationale_1273" }, @@ -78830,7 +84005,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1313", - "community": 164, + "community": 80, "norm_label": "asking for a node that isn't in config.equipment returns ``{}``.", "id": "ui_test_mount_rationale_1313" }, @@ -78839,7 +84014,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1320", - "community": 164, + "community": 80, "norm_label": "the project payload counts run_* and testrun_* directories.", "id": "ui_test_mount_rationale_1320" }, @@ -78848,34 +84023,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1339", - "community": 164, + "community": 80, "norm_label": "the run payload decodes creation.json into the metadata fields.", "id": "ui_test_mount_rationale_1339" }, - { - "label": "A run dir without a creation.json yields {path, name}, not crash.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1384", - "community": 242, - "norm_label": "a run dir without a creation.json yields {path, name}, not crash.", - "id": "ui_test_mount_rationale_1384" - }, - { - "label": "An unknown sys.platform falls through to False so the toast can warn.", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1411", - "community": 103, - "norm_label": "an unknown sys.platform falls through to false so the toast can warn.", - "id": "ui_test_mount_rationale_1411" - }, { "label": "Linux dispatches to xdg-open via subprocess.Popen.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1417", - "community": 103, + "community": 131, "norm_label": "linux dispatches to xdg-open via subprocess.popen.", "id": "ui_test_mount_rationale_1417" }, @@ -78884,7 +84041,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1431", - "community": 299, + "community": 50, "norm_label": "macos dispatches to the ``open`` command.", "id": "ui_test_mount_rationale_1431" }, @@ -78893,7 +84050,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1464", - "community": 17, + "community": 14, "norm_label": "minimal nicegui surface stand-in: clipboard + navigate.to + notify.", "id": "ui_test_mount_rationale_1464" }, @@ -78902,7 +84059,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1489", - "community": 17, + "community": 14, "norm_label": "``open_in_os`` action calls the platform opener and reports success.", "id": "ui_test_mount_rationale_1489" }, @@ -78911,7 +84068,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1501", - "community": 297, + "community": 131, "norm_label": "when the opener returns false the action surfaces a negative toast.", "id": "ui_test_mount_rationale_1501" }, @@ -78920,7 +84077,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1510", - "community": 62, + "community": 33, "norm_label": "``copy_path`` writes the entry path to the nicegui clipboard.", "id": "ui_test_mount_rationale_1510" }, @@ -78929,7 +84086,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1560", - "community": 162, + "community": 86, "norm_label": "force-sync routes to ``deps.nas_sync.enqueue`` with the run path.", "id": "ui_test_mount_rationale_1560" }, @@ -78938,7 +84095,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1580", - "community": 103, + "community": 107, "norm_label": "the early-exit when config is missing keeps the action a no-op.", "id": "ui_test_mount_rationale_1580" }, @@ -78947,7 +84104,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1589", - "community": 145, + "community": 33, "norm_label": "``view_log`` dispatches to the dialog opener helper.", "id": "ui_test_mount_rationale_1589" }, @@ -78956,7 +84113,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1599", - "community": 145, + "community": 33, "norm_label": "an unknown action verb is reported but doesn't raise.", "id": "ui_test_mount_rationale_1599" }, @@ -78965,7 +84122,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1608", - "community": 17, + "community": 14, "norm_label": "``clear_verified`` deletes the run directory via the local helper.", "id": "ui_test_mount_rationale_1608" }, @@ -78974,7 +84131,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1633", - "community": 17, + "community": 14, "norm_label": "the bulk action clears every ``synced`` row and toasts the count.", "id": "ui_test_mount_rationale_1633" }, @@ -78983,7 +84140,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1660", - "community": 55, + "community": 86, "norm_label": "the early-exit when config is missing produces a toast, no task.", "id": "ui_test_mount_rationale_1660" }, @@ -79001,7 +84158,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1704", - "community": 62, + "community": 33, "norm_label": "without a selected node the feed isn't started and returns ``[]``.", "id": "ui_test_mount_rationale_1704" }, @@ -79010,7 +84167,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1714", - "community": 77, + "community": 50, "norm_label": "the first call mounts a folderfeed + refreshcoordinator on tab storage.", "id": "ui_test_mount_rationale_1714" }, @@ -79019,7 +84176,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1769", - "community": 78, + "community": 157, "norm_label": "the fetch is a no-op when refreshcoordinator just walked the tree.", "id": "ui_test_mount_rationale_1769" }, @@ -79028,7 +84185,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1821", - "community": 165, + "community": 173, "norm_label": "a run with no sync-queue job still renders a dialog without raising.", "id": "ui_test_mount_rationale_1821" }, @@ -79037,7 +84194,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1887", - "community": 77, + "community": 158, "norm_label": "an unknown relay id still produces a payload (best-effort label).", "id": "ui_test_mount_rationale_1887" }, @@ -79046,25 +84203,16 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1894", - "community": 78, + "community": 86, "norm_label": "a node id without an equipment/project split returns ``{}``.", "id": "ui_test_mount_rationale_1894" }, - { - "label": "A missing parent dir returns 0 (no FS pre-check needed).", - "file_type": "rationale", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1900", - "community": 78, - "norm_label": "a missing parent dir returns 0 (no fs pre-check needed).", - "id": "ui_test_mount_rationale_1900" - }, { "label": "Only directory children whose names start with the prefix are counted.", "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1905", - "community": 296, + "community": 69, "norm_label": "only directory children whose names start with the prefix are counted.", "id": "ui_test_mount_rationale_1905" }, @@ -79073,7 +84221,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1914", - "community": 295, + "community": 157, "norm_label": "a corrupt creation.json yields {path, name}, never crashes.", "id": "ui_test_mount_rationale_1914" }, @@ -79082,7 +84230,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_mount.py", "source_location": "L1959", - "community": 163, + "community": 106, "norm_label": "the 0-file path reports ``already cleared`` rather than ``cleared n``.", "id": "ui_test_mount_rationale_1959" }, @@ -79091,7 +84239,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_wizard_equipment.py", "source_location": "L62", - "community": 71, + "community": 242, "norm_label": "test_can_advance_sync_mode_nas_requires_rclone_fields()", "id": "ui_test_wizard_equipment_test_can_advance_sync_mode_nas_requires_rclone_fields" }, @@ -79100,7 +84248,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_wizard_equipment.py", "source_location": "L69", - "community": 71, + "community": 242, "norm_label": "test_can_advance_sync_mode_stage_requires_staging_fields()", "id": "ui_test_wizard_equipment_test_can_advance_sync_mode_stage_requires_staging_fields" }, @@ -79109,7 +84257,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L140", - "community": 197, + "community": 194, "norm_label": "test_build_equipment_sftp()", "id": "ui_test_dynamic_form_test_build_equipment_sftp" }, @@ -79118,7 +84266,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_dynamic_form.py", "source_location": "L147", - "community": 197, + "community": 194, "norm_label": "test_build_equipment_smb()", "id": "ui_test_dynamic_form_test_build_equipment_smb" }, @@ -79127,7 +84275,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L1", - "community": 249, + "community": 250, "norm_label": "test_settings_nas_credentials.py", "id": "tests_unit_ui_test_settings_nas_credentials_py" }, @@ -79136,7 +84284,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L25", - "community": 249, + "community": 250, "norm_label": "_nas_equipment()", "id": "ui_test_settings_nas_credentials_nas_equipment" }, @@ -79145,7 +84293,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L41", - "community": 249, + "community": 250, "norm_label": "_stage_equipment()", "id": "ui_test_settings_nas_credentials_stage_equipment" }, @@ -79154,7 +84302,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L56", - "community": 249, + "community": 250, "norm_label": "_config_with()", "id": "ui_test_settings_nas_credentials_config_with" }, @@ -79163,7 +84311,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L64", - "community": 249, + "community": 250, "norm_label": "_testids()", "id": "ui_test_settings_nas_credentials_testids" }, @@ -79172,7 +84320,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L77", - "community": 249, + "community": 250, "norm_label": "test_sections_omit_nas_credentials_without_password_equipment()", "id": "ui_test_settings_nas_credentials_test_sections_omit_nas_credentials_without_password_equipment" }, @@ -79181,7 +84329,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L85", - "community": 249, + "community": 250, "norm_label": "test_sections_insert_nas_credentials_after_equipment()", "id": "ui_test_settings_nas_credentials_test_sections_insert_nas_credentials_after_equipment" }, @@ -79190,7 +84338,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L99", - "community": 249, + "community": 250, "norm_label": "test_section_renders_one_row_per_password_equipment()", "id": "ui_test_settings_nas_credentials_test_section_renders_one_row_per_password_equipment" }, @@ -79199,7 +84347,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L118", - "community": 249, + "community": 250, "norm_label": "test_section_nav_entry_present_when_password_equipment_exists()", "id": "ui_test_settings_nas_credentials_test_section_nav_entry_present_when_password_equipment_exists" }, @@ -79208,7 +84356,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L130", - "community": 249, + "community": 250, "norm_label": "test_section_nav_entry_absent_for_stage_only_config()", "id": "ui_test_settings_nas_credentials_test_section_nav_entry_absent_for_stage_only_config" }, @@ -79217,7 +84365,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L141", - "community": 249, + "community": 250, "norm_label": "test_present_password_opens_set_state_with_clear_action()", "id": "ui_test_settings_nas_credentials_test_present_password_opens_set_state_with_clear_action" }, @@ -79226,7 +84374,7 @@ "file_type": "code", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L155", - "community": 249, + "community": 250, "norm_label": "test_handlers_factory_called_per_equipment_id()", "id": "ui_test_settings_nas_credentials_test_handlers_factory_called_per_equipment_id" }, @@ -79235,7 +84383,7 @@ "file_type": "rationale", "source_file": "tests/unit/ui/test_settings_nas_credentials.py", "source_location": "L1", - "community": 249, + "community": 250, "norm_label": "tests for the settings nas-credentials section (rclone-only migration). the sec", "id": "ui_test_settings_nas_credentials_rationale_1" }, @@ -79244,7 +84392,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_loader.py", "source_location": "L307", - "community": 13, + "community": 108, "norm_label": "the default code path is a no-op: no env var, no rewrite.", "id": "config_test_loader_rationale_307" }, @@ -79253,7 +84401,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_loader.py", "source_location": "L314", - "community": 13, + "community": 108, "norm_label": "a truthy env value rewrites every id with the canonical prefix.", "id": "config_test_loader_rationale_314" }, @@ -79262,7 +84410,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_loader.py", "source_location": "L329", - "community": 13, + "community": 108, "norm_label": "an already-``test_``-prefixed id must not be re-prefixed.", "id": "config_test_loader_rationale_329" }, @@ -79271,7 +84419,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_loader.py", "source_location": "L359", - "community": 13, + "community": 108, "norm_label": "the transformed config still passes config.model_validate.", "id": "config_test_loader_rationale_359" }, @@ -79280,7 +84428,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_loader.py", "source_location": "L377", - "community": 13, + "community": 108, "norm_label": "every accepted spelling flips the loader on (case-insensitive).", "id": "config_test_loader_rationale_377" }, @@ -79289,7 +84437,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_loader.py", "source_location": "L389", - "community": 13, + "community": 108, "norm_label": "falsy / unrecognized values leave the loaded config untouched.", "id": "config_test_loader_rationale_389" }, @@ -79298,7 +84446,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_loader.py", "source_location": "L398", - "community": 13, + "community": 108, "norm_label": "an absent env var (not just empty) leaves the config untouched.", "id": "config_test_loader_rationale_398" }, @@ -79307,7 +84455,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_loader.py", "source_location": "L407", - "community": 13, + "community": 108, "norm_label": "``apply_test_mode_prefix`` itself ignores the env var. the env-var check is", "id": "config_test_loader_rationale_407" }, @@ -79316,7 +84464,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L48", - "community": 112, + "community": 4, "norm_label": "_sftp_transport_dict()", "id": "config_test_models_sftp_transport_dict" }, @@ -79325,7 +84473,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L59", - "community": 112, + "community": 212, "norm_label": "_smb_transport_dict()", "id": "config_test_models_smb_transport_dict" }, @@ -79334,7 +84482,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L388", - "community": 112, + "community": 4, "norm_label": "test_sftp_transport_minimal()", "id": "config_test_models_test_sftp_transport_minimal" }, @@ -79343,7 +84491,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L395", - "community": 112, + "community": 4, "norm_label": "test_sftp_transport_rejects_missing_host()", "id": "config_test_models_test_sftp_transport_rejects_missing_host" }, @@ -79352,7 +84500,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L402", - "community": 112, + "community": 4, "norm_label": "test_sftp_transport_rejects_empty_user()", "id": "config_test_models_test_sftp_transport_rejects_empty_user" }, @@ -79361,7 +84509,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L409", - "community": 112, + "community": 4, "norm_label": "test_sftp_transport_rejects_empty_remote_path()", "id": "config_test_models_test_sftp_transport_rejects_empty_remote_path" }, @@ -79370,7 +84518,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L416", - "community": 112, + "community": 4, "norm_label": "test_sftp_transport_rejects_out_of_range_port()", "id": "config_test_models_test_sftp_transport_rejects_out_of_range_port" }, @@ -79379,7 +84527,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L423", - "community": 112, + "community": 4, "norm_label": "test_sftp_transport_rejects_wrong_type_tag()", "id": "config_test_models_test_sftp_transport_rejects_wrong_type_tag" }, @@ -79388,7 +84536,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L435", - "community": 112, + "community": 212, "norm_label": "test_smb_transport_minimal()", "id": "config_test_models_test_smb_transport_minimal" }, @@ -79397,7 +84545,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L443", - "community": 112, + "community": 212, "norm_label": "test_smb_transport_accepts_optional_domain_and_subpath()", "id": "config_test_models_test_smb_transport_accepts_optional_domain_and_subpath" }, @@ -79406,7 +84554,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L452", - "community": 112, + "community": 212, "norm_label": "test_smb_transport_rejects_missing_share()", "id": "config_test_models_test_smb_transport_rejects_missing_share" }, @@ -79415,7 +84563,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L464", - "community": 112, + "community": 212, "norm_label": "test_requires_keyring_password_true_for_sftp_and_smb()", "id": "config_test_models_test_requires_keyring_password_true_for_sftp_and_smb" }, @@ -79424,7 +84572,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L471", - "community": 112, + "community": 212, "norm_label": "test_requires_keyring_password_false_for_none()", "id": "config_test_models_test_requires_keyring_password_false_for_none" }, @@ -79433,7 +84581,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L480", - "community": 6, + "community": 4, "norm_label": "test_equipment_transport_discriminates_on_type_sftp()", "id": "config_test_models_test_equipment_transport_discriminates_on_type_sftp" }, @@ -79442,7 +84590,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L485", - "community": 112, + "community": 212, "norm_label": "test_equipment_transport_discriminates_on_type_smb()", "id": "config_test_models_test_equipment_transport_discriminates_on_type_smb" }, @@ -79451,7 +84599,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L495", - "community": 6, + "community": 4, "norm_label": "test_equipment_transport_rejects_unknown_type()", "id": "config_test_models_test_equipment_transport_rejects_unknown_type" }, @@ -79460,7 +84608,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L507", - "community": 79, + "community": 378, "norm_label": "test_orchestrator_staging_transport_smb_mount()", "id": "config_test_models_test_orchestrator_staging_transport_smb_mount" }, @@ -79469,7 +84617,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L514", - "community": 79, + "community": 378, "norm_label": "test_orchestrator_staging_transport_file_transfer()", "id": "config_test_models_test_orchestrator_staging_transport_file_transfer" }, @@ -79478,7 +84626,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L521", - "community": 79, + "community": 378, "norm_label": "test_orchestrator_staging_transport_rejects_unknown_type()", "id": "config_test_models_test_orchestrator_staging_transport_rejects_unknown_type" }, @@ -79487,7 +84635,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L599", - "community": 6, + "community": 4, "norm_label": "test_equipment_orchestrator_staging_transport_optional()", "id": "config_test_models_test_equipment_orchestrator_staging_transport_optional" }, @@ -79496,7 +84644,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L609", - "community": 6, + "community": 4, "norm_label": "_orch_staging_transport_dict()", "id": "config_test_models_orch_staging_transport_dict" }, @@ -79505,7 +84653,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L622", - "community": 6, + "community": 4, "norm_label": "test_sync_mode_nas_requires_transport_block()", "id": "config_test_models_test_sync_mode_nas_requires_transport_block" }, @@ -79514,7 +84662,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L631", - "community": 6, + "community": 4, "norm_label": "test_sync_mode_nas_forbids_orchestrator_staging_transport()", "id": "config_test_models_test_sync_mode_nas_forbids_orchestrator_staging_transport" }, @@ -79523,7 +84671,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L640", - "community": 6, + "community": 4, "norm_label": "test_sync_mode_stage_requires_orchestrator_staging_transport()", "id": "config_test_models_test_sync_mode_stage_requires_orchestrator_staging_transport" }, @@ -79532,7 +84680,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L649", - "community": 6, + "community": 4, "norm_label": "test_sync_mode_stage_forbids_transport_block()", "id": "config_test_models_test_sync_mode_stage_forbids_transport_block" }, @@ -79541,7 +84689,7 @@ "file_type": "code", "source_file": "tests/unit/config/test_models.py", "source_location": "L659", - "community": 6, + "community": 4, "norm_label": "test_sync_mode_stage_with_only_orchestrator_transport_is_valid()", "id": "config_test_models_test_sync_mode_stage_with_only_orchestrator_transport_is_valid" }, @@ -79550,7 +84698,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_models.py", "source_location": "L49", - "community": 112, + "community": 4, "norm_label": "minimal valid rclone_sftp transport block.", "id": "config_test_models_rationale_49" }, @@ -79559,7 +84707,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_models.py", "source_location": "L74", - "community": 6, + "community": 4, "norm_label": "build a valid equipmentconfig dict with sensible defaults.", "id": "config_test_models_rationale_74" }, @@ -79568,7 +84716,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_models.py", "source_location": "L85", - "community": 112, + "community": 212, "norm_label": "full config dict mirroring the \u00a79 example. used by round-trip tests.", "id": "config_test_models_rationale_85" }, @@ -79577,7 +84725,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_models.py", "source_location": "L568", - "community": 6, + "community": 4, "norm_label": "the operator-free quiescence redesign drops the per-equipment completeness-s", "id": "config_test_models_rationale_568" }, @@ -79586,7 +84734,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_models.py", "source_location": "L686", - "community": 6, + "community": 4, "norm_label": "build a stage-mode equipmentconfig from a dict, dump it, compare.", "id": "config_test_models_rationale_686" }, @@ -79595,7 +84743,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_models.py", "source_location": "L904", - "community": 437, + "community": 493, "norm_label": "redesign \u00a73.1: the ``enabled`` toggle is removed; ``label`` and ``staging_ro", "id": "config_test_models_rationale_904" }, @@ -79604,7 +84752,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_models.py", "source_location": "L955", - "community": 436, + "community": 492, "norm_label": "redesign \u00a73.1: the ``enabled`` toggle is removed; old configs that carry it", "id": "config_test_models_rationale_955" }, @@ -79613,7 +84761,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_models.py", "source_location": "L971", - "community": 438, + "community": 494, "norm_label": "they can be empty at load time (the setup-incomplete gate trips, not the pyd", "id": "config_test_models_rationale_971" }, @@ -79622,7 +84770,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_models.py", "source_location": "L1010", - "community": 112, + "community": 212, "norm_label": "build a config from a \u00a79-shaped dict, dump it, and compare. ``model_dump()`", "id": "config_test_models_rationale_1010" }, @@ -79631,7 +84779,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_models.py", "source_location": "L1045", - "community": 250, + "community": 261, "norm_label": "a ``none`` config (fresh install) yields a default config + the device.", "id": "config_test_models_rationale_1045" }, @@ -79640,7 +84788,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_models.py", "source_location": "L1053", - "community": 250, + "community": 261, "norm_label": "appending keeps prior equipment and other config sections, unmutated.", "id": "config_test_models_rationale_1053" }, @@ -79649,7 +84797,7 @@ "file_type": "rationale", "source_file": "tests/unit/config/test_models.py", "source_location": "L1070", - "community": 250, + "community": 261, "norm_label": "a device whose id already exists raises configerror, not a silent merge.", "id": "config_test_models_rationale_1070" }, @@ -79658,7 +84806,7 @@ "file_type": "code", "source_file": "tests/unit/constants/test_enums.py", "source_location": "L173", - "community": 63, + "community": 73, "norm_label": "test_transport_type_values()", "id": "constants_test_enums_test_transport_type_values" }, @@ -79667,7 +84815,7 @@ "file_type": "code", "source_file": "tests/unit/constants/test_enums.py", "source_location": "L219", - "community": 63, + "community": 73, "norm_label": "test_orchestrator_transport_type_values()", "id": "constants_test_enums_test_orchestrator_transport_type_values" }, @@ -79676,7 +84824,7 @@ "file_type": "code", "source_file": "tests/unit/constants/test_keyring.py", "source_location": "L23", - "community": 283, + "community": 289, "norm_label": "test_keyring_username_nas_template_literal()", "id": "constants_test_keyring_test_keyring_username_nas_template_literal" }, @@ -79685,7 +84833,7 @@ "file_type": "code", "source_file": "tests/unit/constants/test_keyring.py", "source_location": "L28", - "community": 283, + "community": 289, "norm_label": "test_keyring_nas_username_formats_template()", "id": "constants_test_keyring_test_keyring_nas_username_formats_template" }, @@ -79694,7 +84842,7 @@ "file_type": "code", "source_file": "tests/unit/constants/test_keyring.py", "source_location": "L33", - "community": 283, + "community": 289, "norm_label": "test_keyring_nas_username_handles_various_ids()", "id": "constants_test_keyring_test_keyring_nas_username_handles_various_ids" }, @@ -79703,7 +84851,7 @@ "file_type": "code", "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L194", - "community": 48, + "community": 43, "norm_label": "test_check_nas_passwords_present_returns_only_populated_ids()", "id": "tray_test_dependencies_test_check_nas_passwords_present_returns_only_populated_ids" }, @@ -79712,7 +84860,7 @@ "file_type": "code", "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L208", - "community": 48, + "community": 43, "norm_label": "test_check_nas_passwords_present_handles_none_store_and_config()", "id": "tray_test_dependencies_test_check_nas_passwords_present_handles_none_store_and_config" }, @@ -79721,7 +84869,7 @@ "file_type": "code", "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L214", - "community": 48, + "community": 43, "norm_label": "test_make_equipment_probe_short_circuits_when_password_missing()", "id": "tray_test_dependencies_test_make_equipment_probe_short_circuits_when_password_missing" }, @@ -79730,7 +84878,7 @@ "file_type": "code", "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L237", - "community": 48, + "community": 43, "norm_label": "test_make_equipment_probe_targets_remote_root_with_colon()", "id": "tray_test_dependencies_test_make_equipment_probe_targets_remote_root_with_colon" }, @@ -79739,7 +84887,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L45", - "community": 48, + "community": 43, "norm_label": "trivial in-memory keyring backend, mirroring the keyring-store tests.", "id": "tray_test_dependencies_rationale_45" }, @@ -79748,7 +84896,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L73", - "community": 14, + "community": 22, "norm_label": "the settings gui persists the lims password through deps.keyring_store.", "id": "tray_test_dependencies_rationale_73" }, @@ -79766,7 +84914,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L121", - "community": 48, + "community": 43, "norm_label": "the probe must look up the password under keyring_username_lims. regression", "id": "tray_test_dependencies_rationale_121" }, @@ -79775,7 +84923,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L140", - "community": 48, + "community": 43, "norm_label": "the lims client's keyring provider resolves the stored password.", "id": "tray_test_dependencies_rationale_140" }, @@ -79784,7 +84932,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L160", - "community": 48, + "community": 43, "norm_label": "build a two-equipment nas-mode config for the nas-presence tests.", "id": "tray_test_dependencies_rationale_160" }, @@ -79793,7 +84941,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L217", - "community": 48, + "community": 43, "norm_label": "missing keyring entry must not spawn rclone.", "id": "tray_test_dependencies_rationale_217" }, @@ -79802,7 +84950,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L240", - "community": 48, + "community": 43, "norm_label": "the probe must call ``rclone about :`` (spec, not bare name). regre", "id": "tray_test_dependencies_rationale_240" }, @@ -79811,7 +84959,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L41", - "community": 97, + "community": 101, "norm_label": "stub the real logging reconfigure so tests don't churn global handlers. ret", "id": "tray_test_live_reload_rationale_41" }, @@ -79820,7 +84968,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L87", - "community": 134, + "community": 0, "norm_label": "stub controller / nas_sync / poller recording ``apply_config`` calls.", "id": "tray_test_live_reload_rationale_87" }, @@ -79829,7 +84977,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L107", - "community": 134, + "community": 0, "norm_label": "fresh-built nas_sync / poller stub with async init / start.", "id": "tray_test_live_reload_rationale_107" }, @@ -79838,7 +84986,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L121", - "community": 97, + "community": 101, "norm_label": "build a deps bundle whose config-dependent components already exist.", "id": "tray_test_live_reload_rationale_121" }, @@ -79847,7 +84995,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L157", - "community": 97, + "community": 101, "norm_label": "one component raising must not abort the rest, and config still lands.", "id": "tray_test_live_reload_rationale_157" }, @@ -79856,7 +85004,7 @@ "file_type": "rationale", "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L229", - "community": 97, + "community": 101, "norm_label": "on a first save the absent components are built and their async bring-up is", "id": "tray_test_live_reload_rationale_229" }, @@ -79865,7 +85013,7 @@ "file_type": "code", "source_file": "tests/unit/api/test_setup.py", "source_location": "L103", - "community": 1, + "community": 95, "norm_label": "test_compute_setup_state_returns_incomplete_no_nas_credential()", "id": "api_test_setup_test_compute_setup_state_returns_incomplete_no_nas_credential" }, @@ -79874,7 +85022,7 @@ "file_type": "code", "source_file": "tests/unit/api/test_setup.py", "source_location": "L109", - "community": 1, + "community": 95, "norm_label": "test_get_setup_status_lists_missing_nas_credential_per_equipment()", "id": "api_test_setup_test_get_setup_status_lists_missing_nas_credential_per_equipment" }, @@ -79892,7 +85040,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_setup.py", "source_location": "L104", - "community": 1, + "community": 95, "norm_label": "equipment with a password-requiring transport but no keyring entry gates.", "id": "api_test_setup_rationale_104" }, @@ -79901,7 +85049,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_setup.py", "source_location": "L122", - "community": 1, + "community": 95, "norm_label": "each non-soft incomplete_* state returns a 503 with the right code.", "id": "api_test_setup_rationale_122" }, @@ -79910,7 +85058,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_sessions.py", "source_location": "L54", - "community": 129, + "community": 135, "norm_label": "minimal in-memory controller for routing tests.", "id": "api_test_sessions_rationale_54" }, @@ -79919,7 +85067,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_sessions.py", "source_location": "L339", - "community": 129, + "community": 135, "norm_label": "posting without ``kind`` discriminator must 422.", "id": "api_test_sessions_rationale_339" }, @@ -79928,7 +85076,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L117", - "community": 1, + "community": 94, "norm_label": "when config has no equipment the setup gate blocks /tree.", "id": "api_test_browse_rationale_117" }, @@ -79937,7 +85085,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L185", - "community": 1, + "community": 12, "norm_label": "``testruns`` directory under a project surfaces as ``test_runs`` list.", "id": "api_test_browse_rationale_185" }, @@ -79946,7 +85094,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L205", - "community": 1, + "community": 12, "norm_label": "a creation.json that is present but malformed surfaces as 422.", "id": "api_test_browse_rationale_205" }, @@ -79955,7 +85103,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L226", - "community": 1, + "community": 12, "norm_label": "run with creation.json but no readme.md returns readme: null.", "id": "api_test_browse_rationale_226" }, @@ -79964,7 +85112,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L289", - "community": 1, + "community": 12, "norm_label": "path-confinement guard: only the configured local_root / staging_root / temp", "id": "api_test_browse_rationale_289" }, @@ -79991,7 +85139,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L339", - "community": 1, + "community": 12, "norm_label": "a staged run's sync-queue job state is surfaced as the log.", "id": "api_test_browse_rationale_339" }, @@ -80000,7 +85148,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L362", - "community": 1, + "community": 12, "norm_label": "a failed job row's ``last_error`` / ``attempts`` / ``verify_passes`` / ``nas", "id": "api_test_browse_rationale_362" }, @@ -80009,7 +85157,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L395", - "community": 1, + "community": 12, "norm_label": "a run with no sync-queue job returns an empty history + 'none' state.", "id": "api_test_browse_rationale_395" }, @@ -80018,7 +85166,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L413", - "community": 1, + "community": 12, "norm_label": "a run directory that does not exist returns 404 ``session_not_found``.", "id": "api_test_browse_rationale_413" }, @@ -80027,7 +85175,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L434", - "community": 1, + "community": 12, "norm_label": "the nested dict surfaces both owned and received-equipment roots with their", "id": "api_test_browse_rationale_434" }, @@ -80036,7 +85184,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L469", - "community": 1, + "community": 12, "norm_label": "``scan_folder_sync`` shares the same shape as the route handler.", "id": "api_test_browse_rationale_469" }, @@ -80045,7 +85193,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L488", - "community": 1, + "community": 12, "norm_label": "a missing folder raises the same 404 httpexception the route does.", "id": "api_test_browse_rationale_488" }, @@ -80054,7 +85202,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L509", - "community": 1, + "community": 12, "norm_label": "create a run dir with a creation.json so it is recognised as a run.", "id": "api_test_browse_rationale_509" }, @@ -80063,7 +85211,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L518", - "community": 1, + "community": 12, "norm_label": "write a sync_state.json with the given per-file records.", "id": "api_test_browse_rationale_518" }, @@ -80072,7 +85220,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L540", - "community": 1, + "community": 12, "norm_label": "a file on disk but absent from sync_state.json reads as ``acquiring``.", "id": "api_test_browse_rationale_540" }, @@ -80081,7 +85229,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L553", - "community": 1, + "community": 12, "norm_label": "a recorded file with verified_at null + on disk reads as ``syncing``.", "id": "api_test_browse_rationale_553" }, @@ -80090,7 +85238,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L567", - "community": 1, + "community": 12, "norm_label": "a recorded+verified file still on disk reads as ``synced``.", "id": "api_test_browse_rationale_567" }, @@ -80099,7 +85247,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L584", - "community": 1, + "community": 12, "norm_label": "a cleared run lists verified-but-absent files as ``on_nas`` tombstones.", "id": "api_test_browse_rationale_584" }, @@ -80108,7 +85256,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L607", - "community": 1, + "community": 12, "norm_label": "a keep_local file carries the flag alongside its sync status.", "id": "api_test_browse_rationale_607" }, @@ -80117,7 +85265,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L631", - "community": 1, + "community": 12, "norm_label": "the tree run-node sync_status is the sync_state.json rollup, not creation.json.", "id": "api_test_browse_rationale_631" }, @@ -80126,7 +85274,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_browse.py", "source_location": "L647", - "community": 1, + "community": 12, "norm_label": "a cleared run rolls up to ``cleared`` in the tree.", "id": "api_test_browse_rationale_647" }, @@ -80153,7 +85301,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L141", - "community": 5, + "community": 35, "norm_label": "write a fully-verified ``sync_state.json`` so the run rolls up to ``synced``.", "id": "api_test_staging_router_rationale_141" }, @@ -80162,7 +85310,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L297", - "community": 5, + "community": 35, "norm_label": "a run with no queue job and no directory clears to zeros.", "id": "api_test_staging_router_rationale_297" }, @@ -80171,7 +85319,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L315", - "community": 5, + "community": 35, "norm_label": "the bulk endpoint clears every fully-``synced`` run and reports paths.", "id": "api_test_staging_router_rationale_315" }, @@ -80180,7 +85328,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L341", - "community": 5, + "community": 35, "norm_label": "no verified rows -> empty cleared_paths, no error.", "id": "api_test_staging_router_rationale_341" }, @@ -80189,7 +85337,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L352", - "community": 1, + "community": 94, "norm_label": "a deps without a config raises the standard 503.", "id": "api_test_staging_router_rationale_352" }, @@ -80198,7 +85346,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L367", - "community": 5, + "community": 35, "norm_label": "the endpoint flips ``keep_local`` in the run's ``sync_state.json``.", "id": "api_test_staging_router_rationale_367" }, @@ -80207,7 +85355,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L390", - "community": 5, + "community": 35, "norm_label": "setting ``keep_local`` false after true clears the flag on disk.", "id": "api_test_staging_router_rationale_390" }, @@ -80216,7 +85364,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L408", - "community": 5, + "community": 35, "norm_label": "a deps without a ``sync_state_writer`` raises the standard 503.", "id": "api_test_staging_router_rationale_408" }, @@ -80225,7 +85373,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L422", - "community": 1, + "community": 94, "norm_label": "a deps without a config raises the standard 503.", "id": "api_test_staging_router_rationale_422" }, @@ -80234,7 +85382,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L434", - "community": 5, + "community": 35, "norm_label": "the request model forbids unknown fields.", "id": "api_test_staging_router_rationale_434" }, @@ -80243,7 +85391,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L448", - "community": 5, + "community": 35, "norm_label": "a path outside the configured roots is rejected before any write. operator-", "id": "api_test_staging_router_rationale_448" }, @@ -80252,7 +85400,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L469", - "community": 5, + "community": 35, "norm_label": "a dir under an allowed root but without a creation.json is not a run.", "id": "api_test_staging_router_rationale_469" }, @@ -80261,7 +85409,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_staging_router.py", "source_location": "L487", - "community": 5, + "community": 35, "norm_label": "the writer mkdir's the .exlab-wizard/ dir -- a real run with only a creation", "id": "api_test_staging_router_rationale_487" }, @@ -80270,7 +85418,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_problems.py", "source_location": "L259", - "community": 107, + "community": 121, "norm_label": "connecting to /problems/events emits a snapshot frame immediately.", "id": "api_test_problems_rationale_259" }, @@ -80279,7 +85427,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_problems.py", "source_location": "L281", - "community": 107, + "community": 121, "norm_label": "without an audit channel the websocket closes with 1011.", "id": "api_test_problems_rationale_281" }, @@ -80288,7 +85436,7 @@ "file_type": "rationale", "source_file": "tests/unit/api/test_problems.py", "source_location": "L302", - "community": 107, + "community": 121, "norm_label": "``post /problems/refresh`` invokes audit and publishes to the channel.", "id": "api_test_problems_rationale_302" }, @@ -80297,7 +85445,7 @@ "file_type": "code", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L124", - "community": 134, + "community": 1, "norm_label": "_stubkeyring", "id": "sync_test_nas_client_extra_stubkeyring" }, @@ -80306,7 +85454,7 @@ "file_type": "code", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L127", - "community": 134, + "community": 1, "norm_label": ".__init__()", "id": "sync_test_nas_client_extra_stubkeyring_init" }, @@ -80315,7 +85463,7 @@ "file_type": "code", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L130", - "community": 134, + "community": 1, "norm_label": ".get_password()", "id": "sync_test_nas_client_extra_stubkeyring_get_password" }, @@ -80324,7 +85472,7 @@ "file_type": "code", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L135", - "community": 134, + "community": 1, "norm_label": "test_build_transport_driver_sftp()", "id": "sync_test_nas_client_extra_test_build_transport_driver_sftp" }, @@ -80333,7 +85481,7 @@ "file_type": "code", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L154", - "community": 134, + "community": 1, "norm_label": "test_build_transport_driver_smb()", "id": "sync_test_nas_client_extra_test_build_transport_driver_smb" }, @@ -80342,7 +85490,7 @@ "file_type": "code", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L780", - "community": 12, + "community": 1, "norm_label": "test_verifier_mismatch_first_failure_then_pass()", "id": "sync_test_nas_client_extra_test_verifier_mismatch_first_failure_then_pass" }, @@ -80351,7 +85499,7 @@ "file_type": "code", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L831", - "community": 12, + "community": 1, "norm_label": "test_verifier_mismatch_second_failure_terminal()", "id": "sync_test_nas_client_extra_test_verifier_mismatch_second_failure_terminal" }, @@ -80360,7 +85508,7 @@ "file_type": "code", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L945", - "community": 134, + "community": 1, "norm_label": "test_build_transport_driver_rejects_unknown_type()", "id": "sync_test_nas_client_extra_test_build_transport_driver_rejects_unknown_type" }, @@ -80369,7 +85517,7 @@ "file_type": "code", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L1026", - "community": 12, + "community": 1, "norm_label": "test_partial_batch_credits_verified_files_in_sync_state()", "id": "sync_test_nas_client_extra_test_partial_batch_credits_verified_files_in_sync_state" }, @@ -80378,7 +85526,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L125", - "community": 134, + "community": 1, "norm_label": "minimal keyring stub returning a fixed password by username.", "id": "sync_test_nas_client_extra_rationale_125" }, @@ -80387,7 +85535,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L181", - "community": 12, + "community": 1, "norm_label": "a first hash-mismatch from the transport re-queues without backoff. the fir", "id": "sync_test_nas_client_extra_rationale_181" }, @@ -80396,7 +85544,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L238", - "community": 12, + "community": 1, "norm_label": "a second consecutive hash-mismatch terminates failed.", "id": "sync_test_nas_client_extra_rationale_238" }, @@ -80405,7 +85553,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L276", - "community": 12, + "community": 1, "norm_label": "``retain_cache=false`` removes the entire run directory after cleaned.", "id": "sync_test_nas_client_extra_rationale_276" }, @@ -80414,7 +85562,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L312", - "community": 12, + "community": 1, "norm_label": "``retain_cache=true`` deletes data files but keeps ``.exlab-wizard/``.", "id": "sync_test_nas_client_extra_rationale_312" }, @@ -80423,7 +85571,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L350", - "community": 12, + "community": 1, "norm_label": "``nas_cleanup.enabled=false`` -> job stays verified, no cleanup.", "id": "sync_test_nas_client_extra_rationale_350" }, @@ -80432,7 +85580,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L388", - "community": 12, + "community": 1, "norm_label": "job lands in cleanup_eligible when min_verify_passes > current passes.", "id": "sync_test_nas_client_extra_rationale_388" }, @@ -80441,7 +85589,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L424", - "community": 12, + "community": 1, "norm_label": "a failing remote_stat keeps the job in cleanup_eligible, not cleaned.", "id": "sync_test_nas_client_extra_rationale_424" }, @@ -80450,7 +85598,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L466", - "community": 222, + "community": 1, "norm_label": "build an un-init'd client for direct ``_delete_local`` calls.", "id": "sync_test_nas_client_extra_rationale_466" }, @@ -80459,7 +85607,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L505", - "community": 222, + "community": 1, "norm_label": "a directory holding only deleted files is pruned (deepest-first); a parent s", "id": "sync_test_nas_client_extra_rationale_505" }, @@ -80468,7 +85616,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L538", - "community": 12, + "community": 1, "norm_label": "a directory symlink inside the run is left untouched -- its target's content", "id": "sync_test_nas_client_extra_rationale_538" }, @@ -80477,7 +85625,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L564", - "community": 222, + "community": 1, "norm_label": "a ``keep_local`` file survives even when ``retain_cache=false``.", "id": "sync_test_nas_client_extra_rationale_564" }, @@ -80486,7 +85634,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L583", - "community": 222, + "community": 1, "norm_label": "with ``retain_cache=false`` and no kept files the run dir is removed.", "id": "sync_test_nas_client_extra_rationale_583" }, @@ -80495,7 +85643,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L595", - "community": 12, + "community": 1, "norm_label": "a full cleanup pass stamps ``cleared_at`` in ``sync_state.json``.", "id": "sync_test_nas_client_extra_rationale_595" }, @@ -80504,7 +85652,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L635", - "community": 12, + "community": 1, "norm_label": "a file flagged ``keep_local`` survives the cleanup sweep.", "id": "sync_test_nas_client_extra_rationale_635" }, @@ -80513,7 +85661,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L678", - "community": 12, + "community": 1, "norm_label": "cleanup does not run while a tracked file remains unverified. a pre-existin", "id": "sync_test_nas_client_extra_rationale_678" }, @@ -80522,7 +85670,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L735", - "community": 12, + "community": 1, "norm_label": "a run dir deleted between enqueue and worker pick -> failed.", "id": "sync_test_nas_client_extra_rationale_735" }, @@ -80531,7 +85679,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L781", - "community": 12, + "community": 1, "norm_label": "a rclone-check mismatch retries once, then passes.", "id": "sync_test_nas_client_extra_rationale_781" }, @@ -80540,7 +85688,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L832", - "community": 12, + "community": 1, "norm_label": "two consecutive verifier mismatches terminate failed.", "id": "sync_test_nas_client_extra_rationale_832" }, @@ -80549,7 +85697,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L872", - "community": 447, + "community": 1, "norm_label": "when no factory is injected, the client builds the per-equipment driver. we", "id": "sync_test_nas_client_extra_rationale_872" }, @@ -80567,7 +85715,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L946", - "community": 134, + "community": 1, "norm_label": "an unknown transport type raises valueerror from the helper.", "id": "sync_test_nas_client_extra_rationale_946" }, @@ -80576,7 +85724,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L964", - "community": 448, + "community": 1, "norm_label": "``_mark_synced`` is a no-op when ``creation.json`` doesn't exist.", "id": "sync_test_nas_client_extra_rationale_964" }, @@ -80585,7 +85733,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L982", - "community": 449, + "community": 1, "norm_label": "``_delete_local`` is a no-op when the run directory is already gone.", "id": "sync_test_nas_client_extra_rationale_982" }, @@ -80594,7 +85742,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L996", - "community": 451, + "community": 0, "norm_label": "if neither ``creation.paths.local`` nor ``run_path`` contains a configured e", "id": "sync_test_nas_client_extra_rationale_996" }, @@ -80603,7 +85751,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L1027", - "community": 12, + "community": 1, "norm_label": "a batch where one file fails verification still credits the others in ``sync", "id": "sync_test_nas_client_extra_rationale_1027" }, @@ -80612,7 +85760,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client_extra.py", "source_location": "L1084", - "community": 12, + "community": 1, "norm_label": "a fully-successful batch credits every verified file in sync_state.json.", "id": "sync_test_nas_client_extra_rationale_1084" }, @@ -80621,7 +85769,7 @@ "file_type": "code", "source_file": "tests/unit/sync/test_transports.py", "source_location": "L123", - "community": 38, + "community": 68, "norm_label": "test_rclone_push_forwards_env()", "id": "sync_test_transports_test_rclone_push_forwards_env" }, @@ -80630,7 +85778,7 @@ "file_type": "code", "source_file": "tests/unit/sync/test_transports.py", "source_location": "L247", - "community": 189, + "community": 425, "norm_label": "test_obscure_returns_stdout_stripped()", "id": "sync_test_transports_test_obscure_returns_stdout_stripped" }, @@ -80639,7 +85787,7 @@ "file_type": "code", "source_file": "tests/unit/sync/test_transports.py", "source_location": "L257", - "community": 189, + "community": 425, "norm_label": "test_obscure_missing_binary_raises_auth()", "id": "sync_test_transports_test_obscure_missing_binary_raises_auth" }, @@ -80648,7 +85796,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_transports.py", "source_location": "L34", - "community": 38, + "community": 495, "norm_label": "install the rclone stub under ``tmp_path/bin`` and prepend to path.", "id": "sync_test_transports_rationale_34" }, @@ -80657,7 +85805,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_transports.py", "source_location": "L48", - "community": 38, + "community": 496, "norm_label": "tell the stub to append every invocation's argv to a log file.", "id": "sync_test_transports_rationale_48" }, @@ -80666,7 +85814,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_transports.py", "source_location": "L55", - "community": 38, + "community": 68, "norm_label": "return the recorded argv lists, in invocation order.", "id": "sync_test_transports_rationale_55" }, @@ -80675,7 +85823,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_transports.py", "source_location": "L117", - "community": 38, + "community": 68, "norm_label": "a missing binary raises :class:`transporterror`, not a retry result.", "id": "sync_test_transports_rationale_117" }, @@ -80684,7 +85832,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_transports.py", "source_location": "L129", - "community": 38, + "community": 68, "norm_label": "``env`` arrives in the subprocess; ``mask_for_log`` redacts the password. t", "id": "sync_test_transports_rationale_129" }, @@ -80693,7 +85841,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L405", - "community": 18, + "community": 8, "norm_label": "re-enqueueing a failed row resets it back to queued.", "id": "sync_test_nas_client_rationale_405" }, @@ -80702,7 +85850,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L438", - "community": 18, + "community": 8, "norm_label": "enqueueing twice for the same path returns the same job id.", "id": "sync_test_nas_client_rationale_438" }, @@ -80711,7 +85859,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L490", - "community": 18, + "community": 8, "norm_label": "``_mark_cleaned`` flips ``creation.json.sync_status`` to ``\"cleaned\"``.", "id": "sync_test_nas_client_rationale_490" }, @@ -80720,7 +85868,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L512", - "community": 18, + "community": 8, "norm_label": "with ``retain_cache=false`` the cache dir is gone; ``_mark_cleaned`` no-ops.", "id": "sync_test_nas_client_rationale_512" }, @@ -80729,7 +85877,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L537", - "community": 18, + "community": 8, "norm_label": "``enqueue(run, files=[...])`` stores the subset on the queue row.", "id": "sync_test_nas_client_rationale_537" }, @@ -80738,7 +85886,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L567", - "community": 18, + "community": 8, "norm_label": "a terminal (failed) job is re-armed in queued with a fresh file subset.", "id": "sync_test_nas_client_rationale_567" }, @@ -80747,7 +85895,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L602", - "community": 18, + "community": 8, "norm_label": "an active (queued) job is left untouched when re-enqueued with new files.", "id": "sync_test_nas_client_rationale_602" }, @@ -80756,7 +85904,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/test_nas_client.py", "source_location": "L637", - "community": 18, + "community": 8, "norm_label": "a live config swap rebuilds the equipment lookup in place.", "id": "sync_test_nas_client_rationale_637" }, @@ -80765,7 +85913,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/_helpers.py", "source_location": "L30", - "community": 273, + "community": 1, "norm_label": "read run-relative paths from a ``--files-from`` tempfile.", "id": "sync_helpers_rationale_30" }, @@ -80774,7 +85922,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/_helpers.py", "source_location": "L41", - "community": 12, + "community": 1, "norm_label": "check factory whose closure declares every file equal. returns a closure co", "id": "sync_helpers_rationale_41" }, @@ -80783,7 +85931,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/_helpers.py", "source_location": "L62", - "community": 273, + "community": 1, "norm_label": "check factory whose closure flags ``corrupt_rel`` as ``differ``. every othe", "id": "sync_helpers_rationale_62" }, @@ -80792,7 +85940,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L1", - "community": 148, + "community": 111, "norm_label": "test_rclone_env.py", "id": "tests_unit_sync_transports_test_rclone_env_py" }, @@ -80801,7 +85949,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L36", - "community": 134, + "community": 1, "norm_label": "test_build_rclone_env_sftp_emits_all_keys()", "id": "transports_test_rclone_env_test_build_rclone_env_sftp_emits_all_keys" }, @@ -80810,7 +85958,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L59", - "community": 148, + "community": 111, "norm_label": "test_build_rclone_env_smb_minimal_omits_domain()", "id": "transports_test_rclone_env_test_build_rclone_env_smb_minimal_omits_domain" }, @@ -80819,7 +85967,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L83", - "community": 148, + "community": 111, "norm_label": "test_build_rclone_env_smb_with_domain_includes_domain_key()", "id": "transports_test_rclone_env_test_build_rclone_env_smb_with_domain_includes_domain_key" }, @@ -80828,7 +85976,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L100", - "community": 189, + "community": 111, "norm_label": "test_pass_env_keys_for_names_only_the_password_key()", "id": "transports_test_rclone_env_test_pass_env_keys_for_names_only_the_password_key" }, @@ -80837,7 +85985,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L111", - "community": 148, + "community": 111, "norm_label": "_keyring", "id": "transports_test_rclone_env_keyring" }, @@ -80846,7 +85994,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L114", - "community": 148, + "community": 111, "norm_label": ".__init__()", "id": "transports_test_rclone_env_keyring_init" }, @@ -80855,7 +86003,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L117", - "community": 148, + "community": 111, "norm_label": ".get_password()", "id": "transports_test_rclone_env_keyring_get_password" }, @@ -80864,7 +86012,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L122", - "community": 148, + "community": 111, "norm_label": "_brokenkeyring", "id": "transports_test_rclone_env_brokenkeyring" }, @@ -80873,7 +86021,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L125", - "community": 148, + "community": 111, "norm_label": ".get_password()", "id": "transports_test_rclone_env_brokenkeyring_get_password" }, @@ -80882,7 +86030,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L131", - "community": 148, + "community": 111, "norm_label": "_equipment()", "id": "transports_test_rclone_env_equipment" }, @@ -80891,7 +86039,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L157", - "community": 148, + "community": 111, "norm_label": "test_resolve_env_raises_auth_when_keyring_store_is_none()", "id": "transports_test_rclone_env_test_resolve_env_raises_auth_when_keyring_store_is_none" }, @@ -80900,7 +86048,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L164", - "community": 148, + "community": 111, "norm_label": "test_resolve_env_raises_auth_when_password_is_none()", "id": "transports_test_rclone_env_test_resolve_env_raises_auth_when_password_is_none" }, @@ -80909,7 +86057,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L171", - "community": 148, + "community": 111, "norm_label": "test_resolve_env_raises_auth_when_password_is_empty_string()", "id": "transports_test_rclone_env_test_resolve_env_raises_auth_when_password_is_empty_string" }, @@ -80918,7 +86066,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L178", - "community": 148, + "community": 111, "norm_label": "test_resolve_env_raises_auth_when_keyring_backend_explodes()", "id": "transports_test_rclone_env_test_resolve_env_raises_auth_when_keyring_backend_explodes" }, @@ -80927,7 +86075,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L1", - "community": 148, + "community": 111, "norm_label": "unit tests for ``build_rclone_env`` and ``_resolve_env_for_equipment``. the new", "id": "transports_test_rclone_env_rationale_1" }, @@ -80936,7 +86084,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L101", - "community": 189, + "community": 111, "norm_label": "the only secret in build_rclone_env's output is _pass.", "id": "transports_test_rclone_env_rationale_101" }, @@ -80945,7 +86093,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L112", - "community": 148, + "community": 111, "norm_label": "in-memory keyring stub used by the auth-path tests below.", "id": "transports_test_rclone_env_rationale_112" }, @@ -80954,7 +86102,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L123", - "community": 148, + "community": 111, "norm_label": "keyring stub whose ``get_password`` raises an exception.", "id": "transports_test_rclone_env_rationale_123" }, @@ -80963,7 +86111,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/transports/test_rclone_env.py", "source_location": "L179", - "community": 148, + "community": 111, "norm_label": "a keyring backend failure must surface as auth with the real cause attached.", "id": "transports_test_rclone_env_rationale_179" }, @@ -80972,7 +86120,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L28", - "community": 147, + "community": 167, "norm_label": "test_run_subprocess_forwards_env()", "id": "transports_test_run_test_run_subprocess_forwards_env" }, @@ -80981,7 +86129,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L38", - "community": 147, + "community": 167, "norm_label": "test_run_subprocess_preserves_existing_environ()", "id": "transports_test_run_test_run_subprocess_preserves_existing_environ" }, @@ -80990,7 +86138,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L56", - "community": 147, + "community": 167, "norm_label": "test_run_subprocess_pipes_stdin_payload()", "id": "transports_test_run_test_run_subprocess_pipes_stdin_payload" }, @@ -80999,7 +86147,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L66", - "community": 147, + "community": 167, "norm_label": "test_run_subprocess_masks_named_env_in_debug_log()", "id": "transports_test_run_test_run_subprocess_masks_named_env_in_debug_log" }, @@ -81008,7 +86156,7 @@ "file_type": "code", "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L86", - "community": 147, + "community": 167, "norm_label": "test_run_subprocess_omits_env_log_when_env_is_none()", "id": "transports_test_run_test_run_subprocess_omits_env_log_when_env_is_none" }, @@ -81017,7 +86165,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L29", - "community": 147, + "community": 167, "norm_label": "an env-dict entry must surface in the child process' environment.", "id": "transports_test_run_rationale_29" }, @@ -81026,7 +86174,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L39", - "community": 147, + "community": 167, "norm_label": "caller-supplied env is *merged* over ``os.environ`` -- it does not replace it.", "id": "transports_test_run_rationale_39" }, @@ -81035,7 +86183,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L57", - "community": 147, + "community": 167, "norm_label": "a bytes payload is fed to stdin and closed.", "id": "transports_test_run_rationale_57" }, @@ -81044,7 +86192,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L67", - "community": 147, + "community": 167, "norm_label": "``mask_for_log`` redacts the listed env keys from the debug log line.", "id": "transports_test_run_rationale_67" }, @@ -81053,7 +86201,7 @@ "file_type": "rationale", "source_file": "tests/unit/sync/transports/test_run.py", "source_location": "L87", - "community": 147, + "community": 167, "norm_label": "no env block in the log when the caller passes ``env=none``.", "id": "transports_test_run_rationale_87" }, @@ -81062,7 +86210,7 @@ "file_type": "code", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L60", - "community": 27, + "community": 30, "norm_label": "_transport()", "id": "orchestrator_test_quiescence_poller_transport" }, @@ -81071,7 +86219,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L42", - "community": 27, + "community": 30, "norm_label": "in-memory nas-sync stub recording per-file enqueue calls.", "id": "orchestrator_test_quiescence_poller_rationale_42" }, @@ -81080,7 +86228,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L76", - "community": 27, + "community": 30, "norm_label": "build a config with an optional staging root and a nas-mode equipment.", "id": "orchestrator_test_quiescence_poller_rationale_76" }, @@ -81089,7 +86237,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L102", - "community": 27, + "community": 30, "norm_label": "create a run-leaf directory mirroring the \u00a713.2 staging layout.", "id": "orchestrator_test_quiescence_poller_rationale_102" }, @@ -81098,7 +86246,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L129", - "community": 27, + "community": 30, "norm_label": "a file is enqueued only after its signature settles for the window.", "id": "orchestrator_test_quiescence_poller_rationale_129" }, @@ -81107,7 +86255,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L151", - "community": 27, + "community": 30, "norm_label": "a signature change resets ``first_seen``; the window restarts.", "id": "orchestrator_test_quiescence_poller_rationale_151" }, @@ -81116,7 +86264,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L177", - "community": 27, + "community": 30, "norm_label": "a run holding only ignore-glob files never enqueues.", "id": "orchestrator_test_quiescence_poller_rationale_177" }, @@ -81125,7 +86273,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L193", - "community": 27, + "community": 30, "norm_label": "a quiet non-ignored file enqueues even when ignored files coexist.", "id": "orchestrator_test_quiescence_poller_rationale_193" }, @@ -81134,7 +86282,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L213", - "community": 27, + "community": 30, "norm_label": "a sweep finds runs under staging_root and under nas-mode local_root.", "id": "orchestrator_test_quiescence_poller_rationale_213" }, @@ -81143,7 +86291,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L235", - "community": 27, + "community": 30, "norm_label": "a ``stage``-mode equipment sharing one ``local_root`` with a ``nas``-mode eq", "id": "orchestrator_test_quiescence_poller_rationale_235" }, @@ -81152,7 +86300,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L286", - "community": 27, + "community": 30, "norm_label": "a quiet file already synced at its current signature is skipped.", "id": "orchestrator_test_quiescence_poller_rationale_286" }, @@ -81161,7 +86309,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L310", - "community": 27, + "community": 30, "norm_label": "a file modified after its recorded sync re-enters the eligible set.", "id": "orchestrator_test_quiescence_poller_rationale_310" }, @@ -81170,7 +86318,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L333", - "community": 27, + "community": 30, "norm_label": "a run with a mix of synced + modified files enqueues only the dirty one.", "id": "orchestrator_test_quiescence_poller_rationale_333" }, @@ -81179,7 +86327,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L364", - "community": 27, + "community": 30, "norm_label": "start()/stop() can be called repeatedly without error.", "id": "orchestrator_test_quiescence_poller_rationale_364" }, @@ -81188,7 +86336,7 @@ "file_type": "rationale", "source_file": "tests/unit/orchestrator/test_quiescence_poller.py", "source_location": "L387", - "community": 27, + "community": 30, "norm_label": "a live quiescence-window change takes effect on the next sweep. poll_once r", "id": "orchestrator_test_quiescence_poller_rationale_387" }, @@ -81197,7 +86345,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L54", - "community": 8, + "community": 13, "norm_label": "in-memory sync client that records per-file enqueue + serves status/list_all.", "id": "integration_test_orchestrator_lifecycle_rationale_54" }, @@ -81206,7 +86354,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L117", - "community": 8, + "community": 13, "norm_label": "a staged run is enqueued only once its files settle for the window.", "id": "integration_test_orchestrator_lifecycle_rationale_117" }, @@ -81215,7 +86363,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L135", - "community": 8, + "community": 13, "norm_label": "a quiet file recorded in sync_state.json at its current signature is not re-", "id": "integration_test_orchestrator_lifecycle_rationale_135" }, @@ -81224,7 +86372,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L171", - "community": 8, + "community": 13, "norm_label": "``get /staging`` reports the run with its ``sync_state.json`` rollup.", "id": "integration_test_orchestrator_lifecycle_rationale_171" }, @@ -81233,7 +86381,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L188", - "community": 8, + "community": 13, "norm_label": "``post /staging/.../clear`` deletes a fully-``synced`` run's data files, ret", "id": "integration_test_orchestrator_lifecycle_rationale_188" }, @@ -81242,7 +86390,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_orchestrator_lifecycle.py", "source_location": "L211", - "community": 8, + "community": 13, "norm_label": "a run that is not fully ``synced`` cannot be cleared.", "id": "integration_test_orchestrator_lifecycle_rationale_211" }, @@ -81251,7 +86399,7 @@ "file_type": "code", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L349", - "community": 28, + "community": 37, "norm_label": "test_remote_hash_mismatch_triggers_retry()", "id": "integration_test_nas_sync_test_remote_hash_mismatch_triggers_retry" }, @@ -81260,7 +86408,7 @@ "file_type": "code", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L422", - "community": 28, + "community": 37, "norm_label": "test_remote_hashsum_probe_failure_does_not_skip_verify()", "id": "integration_test_nas_sync_test_remote_hashsum_probe_failure_does_not_skip_verify" }, @@ -81269,7 +86417,7 @@ "file_type": "code", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L489", - "community": 28, + "community": 37, "norm_label": "test_remote_hash_mismatch_terminal()", "id": "integration_test_nas_sync_test_remote_hash_mismatch_terminal" }, @@ -81278,7 +86426,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L54", - "community": 28, + "community": 37, "norm_label": "minimal keyring stub returning a fixed password for every username. the new", "id": "integration_test_nas_sync_rationale_54" }, @@ -81287,7 +86435,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L72", - "community": 453, + "community": 37, "norm_label": "install the rclone stub on path for the test.", "id": "integration_test_nas_sync_rationale_72" }, @@ -81296,7 +86444,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L149", - "community": 28, + "community": 37, "norm_label": "poll ``queue.get_by_id`` until ``state`` is in ``targets`` or timeout.", "id": "integration_test_nas_sync_rationale_149" }, @@ -81305,7 +86453,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L166", - "community": 28, + "community": 37, "norm_label": "enqueue -> running -> awaiting_verify -> verified -> cleaned. uses the pyth", "id": "integration_test_nas_sync_rationale_166" }, @@ -81314,7 +86462,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L240", - "community": 28, + "community": 37, "norm_label": "a run path with ```` is gated; sync_status -> blocked_by_validation.", "id": "integration_test_nas_sync_rationale_240" }, @@ -81323,7 +86471,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L279", - "community": 28, + "community": 37, "norm_label": "the stub returns ``auth_error`` -> queue row terminates failed.", "id": "integration_test_nas_sync_rationale_279" }, @@ -81332,7 +86480,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L310", - "community": 28, + "community": 37, "norm_label": "``force_verify`` runs a manifest pass against the local subtree.", "id": "integration_test_nas_sync_rationale_310" }, @@ -81341,7 +86489,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L354", - "community": 28, + "community": 37, "norm_label": "a first ``rclone check`` mismatch retries the transport phase once. the inj", "id": "integration_test_nas_sync_rationale_354" }, @@ -81350,7 +86498,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L427", - "community": 28, + "community": 37, "norm_label": "a ``rclone check`` transporterror must not promote the job to verified. the", "id": "integration_test_nas_sync_rationale_427" }, @@ -81359,7 +86507,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L552", - "community": 28, + "community": 37, "norm_label": "poller sweep -> per-file enqueue -> drive -> verify -> sync_state.json recor", "id": "integration_test_nas_sync_rationale_552" }, @@ -81368,7 +86516,7 @@ "file_type": "rationale", "source_file": "tests/integration/test_nas_sync.py", "source_location": "L626", - "community": 28, + "community": 37, "norm_label": "full phase 5 path: poller sweep -> enqueue -> verify -> synced rollup -> cle", "id": "integration_test_nas_sync_rationale_626" }, @@ -81377,7 +86525,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L68", - "community": 3, + "community": 140, "norm_label": "construct a minimal config with one equipment configured.", "id": "controller_test_creation_flow_rationale_68" }, @@ -81386,7 +86534,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L178", - "community": 3, + "community": 141, "norm_label": "wait for the session task to finish and return the final state dict.", "id": "controller_test_creation_flow_rationale_178" }, @@ -81395,7 +86543,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L195", - "community": 3, + "community": 140, "norm_label": "project creation walks every state and emits a current-version creation.json.", "id": "controller_test_creation_flow_rationale_195" }, @@ -81404,7 +86552,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L249", - "community": 3, + "community": 141, "norm_label": "redesign \u00a73.4: two creations on the same instrument within the same minute r", "id": "controller_test_creation_flow_rationale_249" }, @@ -81413,7 +86561,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L385", - "community": 3, + "community": 483, "norm_label": "a run whose parent project name is not a safe path segment (\u00a73.2) is rejecte", "id": "controller_test_creation_flow_rationale_385" }, @@ -81422,7 +86570,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L432", - "community": 3, + "community": 141, "norm_label": "when a plugin raises plugininputrequired, controller emits the event and res", "id": "controller_test_creation_flow_rationale_432" }, @@ -81431,7 +86579,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L503", - "community": 3, + "community": 415, "norm_label": "a cancel with ``discard_files=true`` deletes the partial directory.", "id": "controller_test_creation_flow_rationale_503" }, @@ -81440,7 +86588,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L541", - "community": 3, + "community": 410, "norm_label": "a cancel with ``discard_files=false`` leaves the partial directory.", "id": "controller_test_creation_flow_rationale_541" }, @@ -81449,7 +86597,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L565", - "community": 3, + "community": 141, "norm_label": "a rendered file containing ```` must trip the post-validate gate.", "id": "controller_test_creation_flow_rationale_565" }, @@ -81458,7 +86606,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L695", - "community": 3, + "community": 403, "norm_label": "t1 (\u00a7c1): the production ``readmegenerator`` -- injected by ``tray.dependenc", "id": "controller_test_creation_flow_rationale_695" }, @@ -81467,7 +86615,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L771", - "community": 3, + "community": 409, "norm_label": "a template-required readme field missing from ``readme_extra`` must trigger", "id": "controller_test_creation_flow_rationale_771" }, @@ -81476,7 +86624,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L807", - "community": 3, + "community": 141, "norm_label": "when ``readme_extra`` supplies a non-empty value for a required field the va", "id": "controller_test_creation_flow_rationale_807" }, @@ -81485,7 +86633,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L851", - "community": 3, + "community": 405, "norm_label": "when the operator cancels the input-required prompt (host returns ``aborted=", "id": "controller_test_creation_flow_rationale_851" }, @@ -81494,7 +86642,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L909", - "community": 3, + "community": 406, "norm_label": "``_cleanup`` swallows compose-path errors gracefully.", "id": "controller_test_creation_flow_rationale_909" }, @@ -81503,7 +86651,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L932", - "community": 3, + "community": 408, "norm_label": "``_cleanup`` removes the destination directory when ``discard_files=true``.", "id": "controller_test_creation_flow_rationale_932" }, @@ -81512,7 +86660,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L949", - "community": 3, + "community": 413, "norm_label": "a config.yaml-required readme field missing from ``readme_extra`` must trigg", "id": "controller_test_creation_flow_rationale_949" }, @@ -81521,7 +86669,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L975", - "community": 3, + "community": 412, "norm_label": "a copier render failure (e.g. dst exists) transitions the session to ``faile", "id": "controller_test_creation_flow_rationale_975" }, @@ -81530,7 +86678,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L1003", - "community": 3, + "community": 307, "norm_label": "the controller writes ``equipment.json`` under ``//.exlab-wiz", "id": "controller_test_creation_flow_rationale_1003" }, @@ -81539,7 +86687,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L1026", - "community": 3, + "community": 333, "norm_label": "the best-effort log appender writes to the equipment cache dir.", "id": "controller_test_creation_flow_rationale_1026" }, @@ -81548,7 +86696,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L1042", - "community": 3, + "community": 307, "norm_label": "a run inherits its lims identity from the parent project's creation.json (ba", "id": "controller_test_creation_flow_rationale_1042" }, @@ -81557,7 +86705,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L1066", - "community": 3, + "community": 411, "norm_label": "if ``cancel`` is invoked on a session that has not yet started a pipeline ta", "id": "controller_test_creation_flow_rationale_1066" }, @@ -81566,7 +86714,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L1086", - "community": 3, + "community": 414, "norm_label": "resume against a session that has no resume queue raises.", "id": "controller_test_creation_flow_rationale_1086" }, @@ -81575,7 +86723,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L1107", - "community": 3, + "community": 404, "norm_label": "``subscribe`` initializes ``event_queue`` if the session opened with none (d", "id": "controller_test_creation_flow_rationale_1107" }, @@ -81584,7 +86732,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L1131", - "community": 3, + "community": 402, "norm_label": "when :class:`pluginhost` returns ``aborted=true``, the controller transition", "id": "controller_test_creation_flow_rationale_1131" }, @@ -81593,7 +86741,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L1176", - "community": 3, + "community": 407, "norm_label": "the ``_required_field_ids`` helper must skip non-dict entries in the templat", "id": "controller_test_creation_flow_rationale_1176" }, @@ -81602,7 +86750,7 @@ "file_type": "rationale", "source_file": "tests/integration/controller/test_creation_flow.py", "source_location": "L1192", - "community": 3, + "community": 141, "norm_label": "a run whose parent project folder has no readable creation.json still produc", "id": "controller_test_creation_flow_rationale_1192" }, @@ -81611,7 +86759,7 @@ "file_type": "rationale", "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L81", - "community": 51, + "community": 10, "norm_label": "build a fastapi app with the real controller + validator wired.", "id": "api_test_full_flow_rationale_81" }, @@ -81620,7 +86768,7 @@ "file_type": "rationale", "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L117", - "community": 135, + "community": 175, "norm_label": "end-to-end: post /sessions -> session reaches done -> creation.json on disk.", "id": "api_test_full_flow_rationale_117" }, @@ -81629,7 +86777,7 @@ "file_type": "rationale", "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L181", - "community": 135, + "community": 175, "norm_label": "each non-soft incomplete_* state surfaces the right next_action.", "id": "api_test_full_flow_rationale_181" }, @@ -81638,7 +86786,7 @@ "file_type": "rationale", "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L215", - "community": 135, + "community": 175, "norm_label": "post /sessions returns 503 + setup_incomplete in non-soft incomplete_* states.", "id": "api_test_full_flow_rationale_215" }, @@ -81647,7 +86795,7 @@ "file_type": "rationale", "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L239", - "community": 135, + "community": 10, "norm_label": "the soft block does not gate post /sessions per \u00a74.9.4.", "id": "api_test_full_flow_rationale_239" }, @@ -81656,7 +86804,7 @@ "file_type": "rationale", "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L291", - "community": 135, + "community": 175, "norm_label": "``post /problems/refresh`` invokes validator.audit and returns the count.", "id": "api_test_full_flow_rationale_291" }, @@ -81665,7 +86813,7 @@ "file_type": "rationale", "source_file": "tests/integration/api/test_full_flow.py", "source_location": "L367", - "community": 9, + "community": 10, "norm_label": "end-to-end websocket stream of phase frames. uses the synchronous testclien", "id": "api_test_full_flow_rationale_367" }, @@ -81674,7 +86822,7 @@ "file_type": "code", "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L124", - "community": 202, + "community": 203, "norm_label": "_dump_env()", "id": "fixtures_stub_rclone_dump_env" }, @@ -81683,7 +86831,7 @@ "file_type": "code", "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L135", - "community": 202, + "community": 203, "norm_label": "_require_env()", "id": "fixtures_stub_rclone_require_env" }, @@ -81692,7 +86840,7 @@ "file_type": "rationale", "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L55", - "community": 202, + "community": 203, "norm_label": "return ``(local, remote_spec)`` from a ``rclone copy`` argv.", "id": "fixtures_stub_rclone_rationale_55" }, @@ -81701,7 +86849,7 @@ "file_type": "rationale", "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L67", - "community": 202, + "community": 203, "norm_label": "return true if ``arg`` is the value-half of a ``--flag value`` pair.", "id": "fixtures_stub_rclone_rationale_67" }, @@ -81710,7 +86858,7 @@ "file_type": "rationale", "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L85", - "community": 202, + "community": 203, "norm_label": "write `` `` per file in ``--files-from`` to ``--combined``. `", "id": "fixtures_stub_rclone_rationale_85" }, @@ -81719,7 +86867,7 @@ "file_type": "rationale", "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L114", - "community": 202, + "community": 203, "norm_label": "return the value following ``flag`` in ``argv`` or ``none``.", "id": "fixtures_stub_rclone_rationale_114" }, @@ -81728,7 +86876,7 @@ "file_type": "rationale", "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L125", - "community": 202, + "community": 203, "norm_label": "when ``stub_rclone_env_dump`` is set, write the rclone-prefixed env.", "id": "fixtures_stub_rclone_rationale_125" }, @@ -81737,7 +86885,7 @@ "file_type": "rationale", "source_file": "tests/fixtures/stub_rclone.py", "source_location": "L136", - "community": 202, + "community": 203, "norm_label": "enforce ``stub_rclone_require_env``; return 0 if satisfied else 3. confirms", "id": "fixtures_stub_rclone_rationale_136" }, @@ -81746,7 +86894,7 @@ "file_type": "code", "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L86", - "community": 139, + "community": 185, "norm_label": "_pick_radio()", "id": "e2e_test_flow_00_full_lifecycle_pick_radio" }, @@ -81755,7 +86903,7 @@ "file_type": "rationale", "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L87", - "community": 139, + "community": 185, "norm_label": "select a quasar ``ui.radio`` option by its label within the group.", "id": "e2e_test_flow_00_full_lifecycle_rationale_87" }, @@ -81764,7 +86912,7 @@ "file_type": "rationale", "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L100", - "community": 139, + "community": 185, "norm_label": "click a stepper-navigation button scoped to its step container. the next /", "id": "e2e_test_flow_00_full_lifecycle_rationale_100" }, @@ -81773,7 +86921,7 @@ "file_type": "rationale", "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L112", - "community": 139, + "community": 185, "norm_label": "advance the project wizard from ``step_id`` via its next button.", "id": "e2e_test_flow_00_full_lifecycle_rationale_112" }, @@ -81782,7 +86930,7 @@ "file_type": "rationale", "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L117", - "community": 139, + "community": 185, "norm_label": "advance the run wizard from ``step_id`` via its next button.", "id": "e2e_test_flow_00_full_lifecycle_rationale_117" }, @@ -81791,7 +86939,7 @@ "file_type": "rationale", "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L122", - "community": 139, + "community": 185, "norm_label": "navigate to a nicegui page, tolerating a transient err_aborted. nicegui's c", "id": "e2e_test_flow_00_full_lifecycle_rationale_122" }, @@ -81800,7 +86948,7 @@ "file_type": "rationale", "source_file": "tests/e2e/test_flow_00_full_lifecycle.py", "source_location": "L147", - "community": 139, + "community": 270, "norm_label": "yield a started :class:`prodserver` rooted at a fresh tmp home. the keyring", "id": "e2e_test_flow_00_full_lifecycle_rationale_147" }, @@ -81809,7 +86957,7 @@ "file_type": "code", "source_file": "tests/e2e/test_flow_27_nas_credential_settings.py", "source_location": "L179", - "community": 287, + "community": 291, "norm_label": "test_nas_credential_gate_set_test_and_clear()", "id": "e2e_test_flow_27_nas_credential_settings_test_nas_credential_gate_set_test_and_clear" }, @@ -81827,7 +86975,7 @@ "file_type": "rationale", "source_file": "tests/e2e/test_flow_27_nas_credential_settings.py", "source_location": "L106", - "community": 287, + "community": 291, "norm_label": "spawn the production wizard seeded with a credential-less nas equipment. yi", "id": "e2e_test_flow_27_nas_credential_settings_rationale_106" }, @@ -81836,7 +86984,7 @@ "file_type": "code", "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L44", - "community": 142, + "community": 150, "norm_label": "transport_type()", "id": "page_objects_wizard_equipment_page_transport_type" }, @@ -81845,7 +86993,7 @@ "file_type": "code", "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L49", - "community": 142, + "community": 150, "norm_label": "sftp_host()", "id": "page_objects_wizard_equipment_page_sftp_host" }, @@ -81854,7 +87002,7 @@ "file_type": "code", "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L53", - "community": 142, + "community": 150, "norm_label": "sftp_user()", "id": "page_objects_wizard_equipment_page_sftp_user" }, @@ -81863,7 +87011,7 @@ "file_type": "code", "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L57", - "community": 142, + "community": 150, "norm_label": "sftp_remote_path()", "id": "page_objects_wizard_equipment_page_sftp_remote_path" }, @@ -81872,7 +87020,7 @@ "file_type": "code", "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L62", - "community": 142, + "community": 150, "norm_label": "smb_host()", "id": "page_objects_wizard_equipment_page_smb_host" }, @@ -81881,7 +87029,7 @@ "file_type": "code", "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L66", - "community": 142, + "community": 150, "norm_label": "smb_share()", "id": "page_objects_wizard_equipment_page_smb_share" }, @@ -81890,7 +87038,7 @@ "file_type": "code", "source_file": "tests/e2e/page_objects/wizard_equipment_page.py", "source_location": "L70", - "community": 142, + "community": 150, "norm_label": "smb_user()", "id": "page_objects_wizard_equipment_page_smb_user" }, @@ -81899,7 +87047,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/paths.py", "source_location": "L447", - "community": 60, + "community": 187, "norm_label": "_password_required_equipment()", "id": "exlab_wizard_paths_password_required_equipment" }, @@ -81908,7 +87056,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/paths.py", "source_location": "L466", - "community": 60, + "community": 187, "norm_label": "_nas_slot_satisfied()", "id": "exlab_wizard_paths_nas_slot_satisfied" }, @@ -81917,7 +87065,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/paths.py", "source_location": "L471", - "community": 60, + "community": 187, "norm_label": "return true when every nas-mode equipment has its keyring password. rclone-", "id": "exlab_wizard_paths_rationale_471" }, @@ -81926,7 +87074,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/paths.py", "source_location": "L490", - "community": 52, + "community": 59, "norm_label": "evaluate the \u00a74.9.1 setup state. order of gates (first-failing wins):", "id": "exlab_wizard_paths_rationale_490" }, @@ -81935,7 +87083,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/paths.py", "source_location": "L534", - "community": 60, + "community": 187, "norm_label": "return true when this device has an orchestrator label. only ``label`` is r", "id": "exlab_wizard_paths_rationale_534" }, @@ -81944,7 +87092,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/paths.py", "source_location": "L550", - "community": 60, + "community": 177, "norm_label": "translate a state into ``{field, reason}`` dicts for ``/api/v1/setup/status``.", "id": "exlab_wizard_paths_rationale_550" }, @@ -81953,7 +87101,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/paths.py", "source_location": "L583", - "community": 60, + "community": 187, "norm_label": "per-equipment missing-keyring rows for ``incomplete_no_nas_credential``. re", "id": "exlab_wizard_paths_rationale_583" }, @@ -81962,7 +87110,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/paths.py", "source_location": "L602", - "community": 60, + "community": 177, "norm_label": "only ``label`` is required; ``staging_root`` is opt-in (see gate).", "id": "exlab_wizard_paths_rationale_602" }, @@ -81971,7 +87119,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/paths.py", "source_location": "L674", - "community": 210, + "community": 3, "norm_label": "return the ``.exlab-wizard/`` subdirectory for a run or project root.", "id": "exlab_wizard_paths_rationale_674" }, @@ -81980,7 +87128,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/paths.py", "source_location": "L689", - "community": 210, + "community": 491, "norm_label": "return the ``readme_fields.json`` path under a run or project directory.", "id": "exlab_wizard_paths_rationale_689" }, @@ -81989,7 +87137,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/paths.py", "source_location": "L699", - "community": 109, + "community": 71, "norm_label": "true if ``name`` is an experimental-run directory. note: ``run_dir_prefix``", "id": "exlab_wizard_paths_rationale_699" }, @@ -81998,7 +87146,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/paths.py", "source_location": "L709", - "community": 213, + "community": 11, "norm_label": "true if ``name`` is a test-run directory.", "id": "exlab_wizard_paths_rationale_709" }, @@ -82007,7 +87155,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/paths.py", "source_location": "L714", - "community": 210, + "community": 56, "norm_label": "return ``run_`` or ``testrun_``.", "id": "exlab_wizard_paths_rationale_714" }, @@ -82016,7 +87164,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/equipment_form.py", "source_location": "L54", - "community": 197, + "community": 194, "norm_label": "assemble a validated :class:`equipmentconfig` from raw form fields. redesig", "id": "ui_equipment_form_rationale_54" }, @@ -82025,7 +87173,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L486", - "community": 45, + "community": 77, "norm_label": "_nas_credential_handlers()", "id": "ui_mount_nas_credential_handlers" }, @@ -82034,7 +87182,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L668", - "community": 204, + "community": 82, "norm_label": "_nas_credential_missing()", "id": "ui_mount_nas_credential_missing" }, @@ -82043,7 +87191,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L433", - "community": 45, + "community": 77, "norm_label": "build the lims-password save / clear handlers for the settings dialog. cred", "id": "ui_mount_rationale_433" }, @@ -82052,7 +87200,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L489", - "community": 45, + "community": 77, "norm_label": "build the nas-password save / clear handlers for one equipment. rclone-only", "id": "ui_mount_rationale_489" }, @@ -82061,7 +87209,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L544", - "community": 237, + "community": 228, "norm_label": "run the rclone equipment probe for ``equipment_id`` and adapt it. resolves", "id": "ui_mount_rationale_544" }, @@ -82070,7 +87218,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L594", - "community": 193, + "community": 77, "norm_label": "write ``updated`` via ``deps.save_config`` and hot-reload components. retur", "id": "ui_mount_rationale_594" }, @@ -82079,7 +87227,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L626", - "community": 193, + "community": 77, "norm_label": "create the staging directory when the operator saved a non-empty path. ``st", "id": "ui_mount_rationale_626" }, @@ -82088,7 +87236,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L652", - "community": 193, + "community": 77, "norm_label": "push ``updated`` into the running components (no tray relaunch). wraps :fun", "id": "ui_mount_rationale_652" }, @@ -82097,7 +87245,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L669", - "community": 204, + "community": 82, "norm_label": "true when a password-requiring nas-mode equipment lacks its keyring entry.", "id": "ui_mount_rationale_669" }, @@ -82106,7 +87254,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L690", - "community": 45, + "community": 52, "norm_label": "return true when the \u00a74.9 setup state is ``ready``. delegates to :func:`api", "id": "ui_mount_rationale_690" }, @@ -82115,7 +87263,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L722", - "community": 149, + "community": 153, "norm_label": "register / unregister platform autostart; return the real post-op state. re", "id": "ui_mount_rationale_722" }, @@ -82124,7 +87272,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L773", - "community": 45, + "community": 204, "norm_label": "return the (session_id, session) pairs the operations panel shows. the \u00a79.5", "id": "ui_mount_rationale_773" }, @@ -82133,7 +87281,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L790", - "community": 45, + "community": 204, "norm_label": "return ``(panel_count, input_required, active)`` operation counts. ``panel_", "id": "ui_mount_rationale_790" }, @@ -82142,7 +87290,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L807", - "community": 45, + "community": 52, "norm_label": "return the \u00a74.9.3 next-action string for the banner subline. unlike :func:`", "id": "ui_mount_rationale_807" }, @@ -82151,25 +87299,16 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L830", - "community": 302, + "community": 209, "norm_label": "compose the ``?selected=...&right_pane=...`` query string for /main. omits", "id": "ui_mount_rationale_830" }, - { - "label": "Map a selected node id to ``(kind, is_received)``. Mirrors the shape classi", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L851", - "community": 303, - "norm_label": "map a selected node id to ``(kind, is_received)``. mirrors the shape classi", - "id": "ui_mount_rationale_851" - }, { "label": "Project equipment-config fields into the owned-equipment payload.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L922", - "community": 176, + "community": 151, "norm_label": "project equipment-config fields into the owned-equipment payload.", "id": "ui_mount_rationale_922" }, @@ -82178,7 +87317,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L951", - "community": 226, + "community": 210, "norm_label": "derive a project payload from the on-disk project directory. ``node_id`` is", "id": "ui_mount_rationale_951" }, @@ -82187,7 +87326,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L985", - "community": 226, + "community": 210, "norm_label": "count immediate child directories of ``parent`` whose names start with ``pre", "id": "ui_mount_rationale_985" }, @@ -82196,7 +87335,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1034", - "community": 203, + "community": 188, "norm_label": "mount / rebind the per-tab folderfeed and return current entries. uses ``ap", "id": "ui_mount_rationale_1034" }, @@ -82205,7 +87344,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1095", - "community": 203, + "community": 188, "norm_label": "folderfeed fetch hook. skips when the tree just walked. runs the synchronou", "id": "ui_mount_rationale_1095" }, @@ -82214,7 +87353,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1119", - "community": 68, + "community": 55, "norm_label": "dispatch a per-run context action to its backend surface. mirrors :func:`ap", "id": "ui_mount_rationale_1119" }, @@ -82223,7 +87362,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1177", - "community": 168, + "community": 161, "norm_label": "bulk-clear every staged run whose sync job is verified. wired from the file", "id": "ui_mount_rationale_1177" }, @@ -82232,7 +87371,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1222", - "community": 168, + "community": 161, "norm_label": "handle ``open in os`` / ``copy path`` / ``keep local`` file actions.", "id": "ui_mount_rationale_1222" }, @@ -82241,7 +87380,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1304", - "community": 175, + "community": 164, "norm_label": "launch the host os's default opener for ``path``. returns false on platform", "id": "ui_mount_rationale_1304" }, @@ -82250,7 +87389,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1332", - "community": 57, + "community": 28, "norm_label": "build the operations-panel rows from the live session store (t3). uses the", "id": "ui_mount_rationale_1332" }, @@ -82259,7 +87398,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1344", - "community": 57, + "community": 28, "norm_label": "open the in-flight operations panel (frontend \u00a79.5). builds a fresh snapsho", "id": "ui_mount_rationale_1344" }, @@ -82268,7 +87407,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1402", - "community": 154, + "community": 28, "norm_label": "resume a suspended session by re-opening its \u00a79.1 input dialog (t5). reads", "id": "ui_mount_rationale_1402" }, @@ -82277,7 +87416,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1434", - "community": 154, + "community": 40, "norm_label": "open the \u00a79.1 escalation dialog; submit resumes, cancel confirms (t5). subm", "id": "ui_mount_rationale_1434" }, @@ -82286,7 +87425,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1570", - "community": 204, + "community": 82, "norm_label": "return the settings sections the operator still needs to fill in. mirrors a", "id": "ui_mount_rationale_1570" }, @@ -82295,7 +87434,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1603", - "community": 69, + "community": 40, "norm_label": "return the configured templates directory, or ``none``.", "id": "ui_mount_rationale_1603" }, @@ -82304,7 +87443,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1611", - "community": 69, + "community": 40, "norm_label": "list template directory names of ``template_type`` under templates_dir.", "id": "ui_mount_rationale_1611" }, @@ -82313,7 +87452,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1628", - "community": 69, + "community": 63, "norm_label": "map each ``template_type`` template name to its parsed copier questions. re", "id": "ui_mount_rationale_1628" }, @@ -82322,7 +87461,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1661", - "community": 119, + "community": 162, "norm_label": "read the offline-catalogue projects (disconnected-workstation source). read", "id": "ui_mount_rationale_1661" }, @@ -82331,25 +87470,16 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1695", - "community": 266, + "community": 162, "norm_label": "return the lims projects backing the project wizard's picker. tries the liv", "id": "ui_mount_rationale_1695" }, - { - "label": "Best-effort close of a NiceGUI dialog (no-op when ``None`` / test mode).", - "file_type": "rationale", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1795", - "community": 194, - "norm_label": "best-effort close of a nicegui dialog (no-op when ``none`` / test mode).", - "id": "ui_mount_rationale_1795" - }, { "label": "Build a RunCreateRequest from the wizard state and run it.", "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1836", - "community": 69, + "community": 99, "norm_label": "build a runcreaterequest from the wizard state and run it.", "id": "ui_mount_rationale_1836" }, @@ -82358,7 +87488,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1877", - "community": 100, + "community": 99, "norm_label": "drive a create_* call to completion and toast the outcome. when ``wizard_st", "id": "ui_mount_rationale_1877" }, @@ -82367,7 +87497,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/mount.py", "source_location": "L1920", - "community": 100, + "community": 99, "norm_label": "run the validator audit, swallowing failures to a warn log.", "id": "ui_mount_rationale_1920" }, @@ -82376,7 +87506,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", "source_location": "L50", - "community": 71, + "community": 260, "norm_label": "mutable state for the in-flight add-equipment wizard.", "id": "pages_wizard_equipment_rationale_50" }, @@ -82385,7 +87515,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", "source_location": "L85", - "community": 71, + "community": 229, "norm_label": "return true if the active step has the data it needs to advance. pure funct", "id": "pages_wizard_equipment_rationale_85" }, @@ -82394,7 +87524,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", "source_location": "L122", - "community": 71, + "community": 229, "norm_label": "build the final equipmentconfig from the wizard's state. raises a pydantic", "id": "pages_wizard_equipment_rationale_122" }, @@ -82403,7 +87533,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", "source_location": "L155", - "community": 71, + "community": 260, "norm_label": "render the self-contained add-equipment wizard. next / back navigation is h", "id": "pages_wizard_equipment_rationale_155" }, @@ -82412,7 +87542,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L60", - "community": 290, + "community": 248, "norm_label": "_password_requiring_nas_equipment()", "id": "pages_settings_password_requiring_nas_equipment" }, @@ -82421,7 +87551,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L839", - "community": 290, + "community": 248, "norm_label": "_render_nas_credentials_section()", "id": "pages_settings_render_nas_credentials_section" }, @@ -82430,7 +87560,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L61", - "community": 290, + "community": 248, "norm_label": "return nas-mode equipment whose transport sources a keyring password. share", "id": "pages_settings_rationale_61" }, @@ -82439,7 +87569,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L79", - "community": 290, + "community": 248, "norm_label": "return the visible section ids for ``config``. the nas-credentials section", "id": "pages_settings_rationale_79" }, @@ -82448,7 +87578,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L99", - "community": 182, + "community": 421, "norm_label": "mutable state for the dialog.", "id": "pages_settings_rationale_99" }, @@ -82457,7 +87587,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L108", - "community": 182, + "community": 420, "norm_label": "return the first section id in canonical order that's incomplete. the dynam", "id": "pages_settings_rationale_108" }, @@ -82466,7 +87596,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L129", - "community": 182, + "community": 220, "norm_label": "compute the *save all* button label, including the badge count.", "id": "pages_settings_rationale_129" }, @@ -82475,7 +87605,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L139", - "community": 182, + "community": 220, "norm_label": "return ``true`` when the sidebar should decorate ``section``.", "id": "pages_settings_rationale_139" }, @@ -82484,7 +87614,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L145", - "community": 182, + "community": 220, "norm_label": "return ``true`` when ``section`` has uncommitted edits.", "id": "pages_settings_rationale_145" }, @@ -82493,7 +87623,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L151", - "community": 219, + "community": 178, "norm_label": "return the editable deep-copy draft the settings dialog mutates. ``none`` (", "id": "pages_settings_rationale_151" }, @@ -82502,7 +87632,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L162", - "community": 219, + "community": 178, "norm_label": "re-validate a mutated draft into a clean :class:`config`. the dialog's two-", "id": "pages_settings_rationale_162" }, @@ -82511,7 +87641,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L180", - "community": 360, + "community": 310, "norm_label": "return the credential-row state seeding the lims password field. a password", "id": "pages_settings_rationale_180" }, @@ -82520,7 +87650,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L211", - "community": 182, + "community": 220, "norm_label": "render the settings dialog. ``config`` is the live ``config.yaml`` model (o", "id": "pages_settings_rationale_211" }, @@ -82529,7 +87659,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L401", - "community": 289, + "community": 230, "norm_label": "reusable chip / list editor bound to a draft string list (t7 / t10). mutate", "id": "pages_settings_rationale_401" }, @@ -82538,7 +87668,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L492", - "community": 289, + "community": 230, "norm_label": "render the content for a single section, bound to ``draft``. every scalar f", "id": "pages_settings_rationale_492" }, @@ -82547,7 +87677,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L713", - "community": 289, + "community": 230, "norm_label": "render the equipment list + a full add-equipment sub-form. adding an entry", "id": "pages_settings_rationale_713" }, @@ -82556,7 +87686,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/ui/pages/settings.py", "source_location": "L847", - "community": 290, + "community": 248, "norm_label": "render one keyring-credential row + test-connection panel per equipment. rc", "id": "pages_settings_rationale_847" }, @@ -82574,7 +87704,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L247", - "community": 148, + "community": 111, "norm_label": "rclonesmbtransport", "id": "config_models_rclonesmbtransport" }, @@ -82583,7 +87713,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L276", - "community": 112, + "community": 212, "norm_label": "transport_requires_keyring_password()", "id": "config_models_transport_requires_keyring_password" }, @@ -82592,7 +87722,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L288", - "community": 79, + "community": 378, "norm_label": "orchestratorstagingtransport", "id": "config_models_orchestratorstagingtransport" }, @@ -82601,7 +87731,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L345", - "community": 79, + "community": 38, "norm_label": "_sync_mode_dictates_transport()", "id": "config_models_sync_mode_dictates_transport" }, @@ -82610,7 +87740,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L74", - "community": 79, + "community": 38, "norm_label": "return ``datetime.time`` for a strict zero-padded ``hh:mm`` string. the wiz", "id": "config_models_rationale_74" }, @@ -82637,7 +87767,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L129", - "community": 166, + "community": 4, "norm_label": "one operator-defined extra readme field. backend spec \u00a79, \u00a710.", "id": "config_models_rationale_129" }, @@ -82646,7 +87776,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L170", - "community": 79, + "community": 38, "norm_label": "``readme:`` block. lab-policy fields layered on top of the core set.", "id": "config_models_rationale_170" }, @@ -82655,7 +87785,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L183", - "community": 80, + "community": 89, "norm_label": "one ``{days, from, to}`` window. backend spec \u00a79.", "id": "config_models_rationale_183" }, @@ -82664,7 +87794,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L206", - "community": 134, + "community": 1, "norm_label": "``bandwidth:`` sub-block on a transport.", "id": "config_models_rationale_206" }, @@ -82682,7 +87812,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L248", - "community": 148, + "community": 111, "norm_label": "``transport:`` block for an smb share with password auth. the wizard invoke", "id": "config_models_rationale_248" }, @@ -82691,7 +87821,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L277", - "community": 112, + "community": 212, "norm_label": "return true when ``transport`` sources its credential from the keyring. bot", "id": "config_models_rationale_277" }, @@ -82700,7 +87830,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L289", - "community": 79, + "community": 378, "norm_label": "``orchestrator_staging_transport:`` -- staging hop only. backend spec \u00a713.", "id": "config_models_rationale_289" }, @@ -82718,7 +87848,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L376", - "community": 351, + "community": 37, "norm_label": "``nas_cleanup:`` block. local-copy retention after nas verify.", "id": "config_models_rationale_376" }, @@ -82727,7 +87857,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L392", - "community": 271, + "community": 19, "norm_label": "``logging:`` block. central app-log rotation + level.", "id": "config_models_rationale_392" }, @@ -82736,7 +87866,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L423", - "community": 370, + "community": 38, "norm_label": "``operators:`` block. optional case-sensitive allowlist.", "id": "config_models_rationale_423" }, @@ -82745,7 +87875,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L455", - "community": 133, + "community": 211, "norm_label": "``validator:`` block. content-scan tuning. backend spec \u00a78.1.1, \u00a711.8.", "id": "config_models_rationale_455" }, @@ -82754,7 +87884,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L480", - "community": 79, + "community": 423, "norm_label": "``plugins:`` block. master opt-in for network-declaring plugins.", "id": "config_models_rationale_480" }, @@ -82763,7 +87893,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L497", - "community": 166, + "community": 292, "norm_label": "``sync:`` block. nas sync engine kill-switch + retry / quiescence policy.", "id": "config_models_rationale_497" }, @@ -82772,7 +87902,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L514", - "community": 8, + "community": 13, "norm_label": "``orchestrator.staging_cleanup:`` sub-block. backend spec \u00a713.7.", "id": "config_models_rationale_514" }, @@ -82799,7 +87929,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/config/models.py", "source_location": "L593", - "community": 250, + "community": 261, "norm_label": "return a copy of ``config`` with ``equipment`` appended. the single place t", "id": "config_models_rationale_593" }, @@ -82808,7 +87938,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L159", - "community": 19, + "community": 78, "norm_label": "transporttype", "id": "constants_enums_transporttype" }, @@ -82817,7 +87947,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L214", - "community": 19, + "community": 29, "norm_label": "orchestratortransporttype", "id": "constants_enums_orchestratortransporttype" }, @@ -82826,7 +87956,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L188", - "community": 19, + "community": 29, "norm_label": "how nas staging directories are eventually purged. backend spec \u00a713.7.", "id": "constants_enums_rationale_188" }, @@ -82835,7 +87965,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L195", - "community": 15, + "community": 21, "norm_label": "plugin invocation outcome reported by the host. backend spec \u00a76.2.4.", "id": "constants_enums_rationale_195" }, @@ -82844,7 +87974,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L205", - "community": 19, + "community": 29, "norm_label": "whether a creation.json describes a project root or a run directory. stored", "id": "constants_enums_rationale_205" }, @@ -82853,7 +87983,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L215", - "community": 19, + "community": 29, "norm_label": "how the orchestrator delivered run data to the staging area. distinct from", "id": "constants_enums_rationale_215" }, @@ -82862,7 +87992,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L226", - "community": 19, + "community": 29, "norm_label": "allowed input types for readme field declarations. backend spec \u00a710.", "id": "constants_enums_rationale_226" }, @@ -82871,7 +88001,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L236", - "community": 19, + "community": 29, "norm_label": "day-of-week values for nas sync bandwidth windows. backend spec \u00a77.1.", "id": "constants_enums_rationale_236" }, @@ -82880,7 +88010,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L248", - "community": 19, + "community": 29, "norm_label": "whether a wizard session creates a project root or a run directory. mirrors", "id": "constants_enums_rationale_248" }, @@ -82889,7 +88019,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L260", - "community": 19, + "community": 29, "norm_label": "outcome of a session-store transition. backend spec \u00a74.7.", "id": "constants_enums_rationale_260" }, @@ -82898,7 +88028,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L267", - "community": 398, + "community": 29, "norm_label": "kind discriminator for validator audit scopes. backend spec \u00a78.1. values ma", "id": "constants_enums_rationale_267" }, @@ -82907,7 +88037,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L297", - "community": 19, + "community": 29, "norm_label": "normalized platform tag used for os-conditional path dispatch.", "id": "constants_enums_rationale_297" }, @@ -82916,7 +88046,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L305", - "community": 19, + "community": 29, "norm_label": "next action returned by ``paths.setup_state_next_action``. backend spec \u00a74.", "id": "constants_enums_rationale_305" }, @@ -82925,7 +88055,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L319", - "community": 19, + "community": 29, "norm_label": "in-process state of a nas sync job handle as observed by callers. distinct", "id": "constants_enums_rationale_319" }, @@ -82934,7 +88064,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L331", - "community": 19, + "community": 29, "norm_label": "origin of a plugin record. backend spec \u00a76.1.1.", "id": "constants_enums_rationale_331" }, @@ -82943,7 +88073,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/enums.py", "source_location": "L338", - "community": 83, + "community": 79, "norm_label": "ui-layer project status displayed in the tree view. distinct from :class:`l", "id": "constants_enums_rationale_338" }, @@ -82952,7 +88082,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/constants/keyring.py", "source_location": "L26", - "community": 2, + "community": 43, "norm_label": "keyring_nas_username()", "id": "constants_keyring_keyring_nas_username" }, @@ -82961,7 +88091,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/constants/keyring.py", "source_location": "L27", - "community": 2, + "community": 43, "norm_label": "return the keyring username for the given equipment's nas credential. equip", "id": "constants_keyring_rationale_27" }, @@ -82970,7 +88100,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L358", - "community": 114, + "community": 110, "norm_label": "server-only loop. boots the fastapi server, prints the published port, waits", "id": "tray_main_rationale_358" }, @@ -82979,7 +88109,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/main.py", "source_location": "L391", - "community": 114, + "community": 110, "norm_label": "``exlab-wizard-tray`` entry point. the main thread runs pystray; the fastap", "id": "tray_main_rationale_391" }, @@ -82988,7 +88118,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L624", - "community": 14, + "community": 43, "norm_label": "_nas_keyring_password()", "id": "tray_dependencies_nas_keyring_password" }, @@ -82997,7 +88127,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L643", - "community": 48, + "community": 43, "norm_label": "_check_nas_passwords_present()", "id": "tray_dependencies_check_nas_passwords_present" }, @@ -83006,7 +88136,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L48", - "community": 14, + "community": 22, "norm_label": "return a populated :class:`appdependencies` for the live tray. every per-co", "id": "tray_dependencies_rationale_48" }, @@ -83015,7 +88145,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L168", - "community": 97, + "community": 101, "norm_label": "push a freshly saved ``config.yaml`` into the running components. replaces", "id": "tray_dependencies_rationale_168" }, @@ -83024,7 +88154,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L271", - "community": 97, + "community": 101, "norm_label": "return the ``(endpoint, email)`` pair that defines a lims client. trailing", "id": "tray_dependencies_rationale_271" }, @@ -83033,7 +88163,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L283", - "community": 97, + "community": 101, "norm_label": "re-derive the plugin-host status counters after a rebuild. mirrors the boot", "id": "tray_dependencies_rationale_283" }, @@ -83042,7 +88172,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L298", - "community": 14, + "community": 22, "norm_label": "rebuild ``deps.lims_client`` for a changed endpoint / email. builds a fresh", "id": "tray_dependencies_rationale_298" }, @@ -83051,7 +88181,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L319", - "community": 14, + "community": 22, "norm_label": "reconfigure the nas-sync client in place, or build it fresh. returns ``true", "id": "tray_dependencies_rationale_319" }, @@ -83060,7 +88190,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L350", - "community": 14, + "community": 22, "norm_label": "reconfigure the quiescence poller in place, or build it fresh. returns ``tr", "id": "tray_dependencies_rationale_350" }, @@ -83069,7 +88199,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L378", - "community": 14, + "community": 22, "norm_label": "schedule ``nas_sync.init()`` / ``poller.start()`` on the running loop. used", "id": "tray_dependencies_rationale_378" }, @@ -83078,7 +88208,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L403", - "community": 14, + "community": 22, "norm_label": "run ``coro`` on the running loop, logging failures; no-op if loop-less.", "id": "tray_dependencies_rationale_403" }, @@ -83087,7 +88217,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L416", - "community": 14, + "community": 22, "norm_label": "run ``fn(*args, **kwargs)`` swallowing exceptions with a warn log.", "id": "tray_dependencies_rationale_416" }, @@ -83096,7 +88226,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L443", - "community": 14, + "community": 22, "norm_label": "derive ``(validator_config, equipment_roots, staging_root)`` from config. s", "id": "tray_dependencies_rationale_443" }, @@ -83105,7 +88235,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L560", - "community": 14, + "community": 22, "norm_label": "build the lims/nas secret store with an optional fallback passphrase. when", "id": "tray_dependencies_rationale_560" }, @@ -83114,7 +88244,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L577", - "community": 14, + "community": 22, "norm_label": "return the stored lims password, or ``none`` if absent/unavailable. the cre", "id": "tray_dependencies_rationale_577" }, @@ -83123,7 +88253,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L625", - "community": 14, + "community": 43, "norm_label": "return the stored nas password for ``equipment_id`` or ``none``. the creden", "id": "tray_dependencies_rationale_625" }, @@ -83132,7 +88262,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L644", - "community": 48, + "community": 43, "norm_label": "return the set of nas-mode equipment ids that have a keyring entry. rclone-", "id": "tray_dependencies_rationale_644" }, @@ -83141,7 +88271,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L668", - "community": 48, + "community": 43, "norm_label": "build the ``deps.equipment_probe`` callable. rclone-only nas sync migration", "id": "tray_dependencies_rationale_668" }, @@ -83150,7 +88280,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L757", - "community": 14, + "community": 22, "norm_label": "build the :class:`nassyncclient` -- the public nas-sync surface. the client", "id": "tray_dependencies_rationale_757" }, @@ -83159,7 +88289,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/tray/dependencies.py", "source_location": "L804", - "community": 14, + "community": 22, "norm_label": "build the orchestrator-only ``sync_state.json`` writer. operator-free per-f", "id": "tray_dependencies_rationale_804" }, @@ -83168,7 +88298,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L51", - "community": 261, + "community": 82, "norm_label": "nas_password_present()", "id": "api_dependencies_nas_password_present" }, @@ -83177,7 +88307,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L76", - "community": 127, + "community": 82, "norm_label": "return ``app.state.dependencies`` or raise a structured 503. a missing depe", "id": "api_dependencies_rationale_76" }, @@ -83186,7 +88316,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/_dependencies.py", "source_location": "L96", - "community": 261, + "community": 82, "norm_label": "return ``deps.controller`` or raise a structured 503. used by the routes th", "id": "api_dependencies_rationale_96" }, @@ -83195,7 +88325,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L73", - "community": 7, + "community": 112, "norm_label": "``get /setup/status`` response. backend spec \u00a74.9.3.", "id": "api_setup_rationale_73" }, @@ -83204,7 +88334,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L84", - "community": 7, + "community": 112, "norm_label": "``post /setup/test-lims`` request body. either reference the currently-conf", "id": "api_setup_rationale_84" }, @@ -83213,7 +88343,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L100", - "community": 7, + "community": 112, "norm_label": "``post /setup/test-equipment`` request body. rclone-only nas sync migration", "id": "api_setup_rationale_100" }, @@ -83222,7 +88352,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L116", - "community": 7, + "community": 112, "norm_label": "common ``ok``/``reason`` payload for the diagnostics endpoints.", "id": "api_setup_rationale_116" }, @@ -83231,7 +88361,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L134", - "community": 7, + "community": 112, "norm_label": "``post /setup/autostart`` request body. backend spec \u00a74.9.5 step 0.", "id": "api_setup_rationale_134" }, @@ -83240,7 +88370,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L142", - "community": 7, + "community": 112, "norm_label": "``post /setup/autostart`` response.", "id": "api_setup_rationale_142" }, @@ -83249,7 +88379,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L156", - "community": 1, + "community": 95, "norm_label": "evaluate the \u00a74.9.1 state for the app's current dependencies. the dependenc", "id": "api_setup_rationale_156" }, @@ -83258,7 +88388,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L173", - "community": 7, + "community": 331, "norm_label": "return true when ``state`` should gate creation flows. per \u00a74.9.4 the soft", "id": "api_setup_rationale_173" }, @@ -83267,7 +88397,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L183", - "community": 7, + "community": 331, "norm_label": "fastapi dependency that gates a route on setup state. looks up the app's bo", "id": "api_setup_rationale_183" }, @@ -83276,7 +88406,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L222", - "community": 7, + "community": 94, "norm_label": "construct the ``/setup/*`` router. always-available endpoints.", "id": "api_setup_rationale_222" }, @@ -83285,7 +88415,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L313", - "community": 7, + "community": 112, "norm_label": "build a ``proberesult`` from a probe's plain-dict return value. wired throu", "id": "api_setup_rationale_313" }, @@ -83294,7 +88424,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L330", - "community": 7, + "community": 112, "norm_label": "resolve the equipment to probe by id through ``deps.config``. rclone-only n", "id": "api_setup_rationale_330" }, @@ -83303,7 +88433,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/setup.py", "source_location": "L349", - "community": 7, + "community": 112, "norm_label": "invoke a probe that may be sync or async; await the result. the probes are", "id": "api_setup_rationale_349" }, @@ -83312,7 +88442,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/app.py", "source_location": "L261", - "community": 1, + "community": 94, "norm_label": "build the fastapi app. backend spec \u00a74.6. ``config``: optional pre-loaded `", "id": "api_app_rationale_261" }, @@ -83321,7 +88451,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/app.py", "source_location": "L340", - "community": 51, + "community": 67, "norm_label": "background task that re-runs the validator audit every interval. diffs the", "id": "api_app_rationale_340" }, @@ -83330,7 +88460,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/api/app.py", "source_location": "L384", - "community": 51, + "community": 67, "norm_label": "return ``(added, removed, changed)`` keyed on ``(rule, offending_path)``. t", "id": "api_app_rationale_384" }, @@ -83339,7 +88469,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L117", - "community": 53, + "community": 111, "norm_label": "_remote_name_for()", "id": "sync_nas_client_remote_name_for" }, @@ -83348,7 +88478,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L128", - "community": 53, + "community": 3, "norm_label": "_build_target_for()", "id": "sync_nas_client_build_target_for" }, @@ -83357,7 +88487,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L143", - "community": 148, + "community": 111, "norm_label": "_resolve_env_for_equipment()", "id": "sync_nas_client_resolve_env_for_equipment" }, @@ -83366,7 +88496,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L189", - "community": 134, + "community": 1, "norm_label": "_build_transport_driver()", "id": "sync_nas_client_build_transport_driver" }, @@ -83375,7 +88505,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L846", - "community": 53, + "community": 3, "norm_label": "._reconcile_synced_files()", "id": "sync_nas_client_nassyncclient_reconcile_synced_files" }, @@ -83384,7 +88514,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L99", - "community": 174, + "community": 3, "norm_label": "lightweight handle returned by :meth:`nassyncclient.enqueue`. ``job_id`` is", "id": "sync_nas_client_rationale_99" }, @@ -83393,7 +88523,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L118", - "community": 53, + "community": 111, "norm_label": "return the inline rclone remote name used for ``equipment``. the remote nam", "id": "sync_nas_client_rationale_118" }, @@ -83402,7 +88532,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L133", - "community": 53, + "community": 3, "norm_label": "compose the rclone destination string for a run directory.", "id": "sync_nas_client_rationale_133" }, @@ -83411,7 +88541,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L147", - "community": 148, + "community": 111, "norm_label": "look up the password, obscure it, build the rclone env. returns ``(env, mas", "id": "sync_nas_client_rationale_147" }, @@ -83420,7 +88550,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L193", - "community": 134, + "community": 1, "norm_label": "return a ``(driver, push_callable, check_callable)`` triple. both supported", "id": "sync_nas_client_rationale_193" }, @@ -83429,7 +88559,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L258", - "community": 18, + "community": 8, "norm_label": "durable, per-equipment nas sync queue with pre-sync gate. backend spec \u00a77.1", "id": "sync_nas_client_rationale_258" }, @@ -83438,7 +88568,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L314", - "community": 446, + "community": 8, "norm_label": "swap the cached config + equipment map in place (no relaunch). the ``eq", "id": "sync_nas_client_rationale_314" }, @@ -83447,7 +88577,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L329", - "community": 286, + "community": 8, "norm_label": "open the queue and start the worker task. backend spec \u00a77.1.2.", "id": "sync_nas_client_rationale_329" }, @@ -83456,7 +88586,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L335", - "community": 188, + "community": 3, "norm_label": "stop the worker and close the queue db. idempotent.", "id": "sync_nas_client_rationale_335" }, @@ -83465,7 +88595,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L352", - "community": 272, + "community": 3, "norm_label": "pre-sync gate -> if hard-tier finding without override, mark ``sync_stat", "id": "sync_nas_client_rationale_352" }, @@ -83474,7 +88604,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L442", - "community": 452, + "community": 8, "norm_label": "return the queue state of the job for ``run_path``. ``\"none\"`` when no", "id": "sync_nas_client_rationale_442" }, @@ -83483,7 +88613,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L453", - "community": 450, + "community": 8, "norm_label": "re-arm a ``failed`` job. backend spec \u00a77.1.5 (problems-tab retry).", "id": "sync_nas_client_rationale_453" }, @@ -83492,7 +88622,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L458", - "community": 188, + "community": 3, "norm_label": "re-run ``rclone check --download`` against the configured remote. used", "id": "sync_nas_client_rationale_458" }, @@ -83501,7 +88631,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L503", - "community": 286, + "community": 8, "norm_label": "pick the next due job and drive it through the state machine.", "id": "sync_nas_client_rationale_503" }, @@ -83510,7 +88640,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L523", - "community": 286, + "community": 8, "norm_label": "return the next queued row whose backoff has passed (or none).", "id": "sync_nas_client_rationale_523" }, @@ -83519,7 +88649,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L534", - "community": 53, + "community": 3, "norm_label": "drive ``job`` from queued through one transport+verify pass. worker sem", "id": "sync_nas_client_rationale_534" }, @@ -83528,7 +88658,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L755", - "community": 53, + "community": 3, "norm_label": "resolve the push callable for ``equipment.transport``. tests can inject", "id": "sync_nas_client_rationale_755" }, @@ -83537,7 +88667,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L767", - "community": 188, + "community": 3, "norm_label": "resolve the ``rclone check`` callable for ``equipment.transport``. test", "id": "sync_nas_client_rationale_767" }, @@ -83546,7 +88676,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L784", - "community": 53, + "community": 3, "norm_label": "compute the sha-256 hex digest of each file in ``files``. slot a of the", "id": "sync_nas_client_rationale_784" }, @@ -83555,7 +88685,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L823", - "community": 53, + "community": 3, "norm_label": "translate a transport failure into a queue update.", "id": "sync_nas_client_rationale_823" }, @@ -83564,7 +88694,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L852", - "community": 53, + "community": 3, "norm_label": "credit every individually-verified file in ``sync_state.json``. per-fil", "id": "sync_nas_client_rationale_852" }, @@ -83573,7 +88703,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L913", - "community": 641, + "community": 670, "norm_label": "return the ``(st_size, st_mtime_ns)`` signature for ``path``.", "id": "sync_nas_client_rationale_913" }, @@ -83582,7 +88712,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L922", - "community": 642, + "community": 671, "norm_label": "write a transport ``--files-from`` list and return its path. one run-re", "id": "sync_nas_client_rationale_922" }, @@ -83591,7 +88721,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L941", - "community": 188, + "community": 3, "norm_label": "apply the \u00a77.1.6 interlocks; if all pass, run the cleanup. operator-fre", "id": "sync_nas_client_rationale_941" }, @@ -83600,7 +88730,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1007", - "community": 246, + "community": 3, "norm_label": "delete ``run_path`` data files honoring ``retain_cache`` and ``keep_local``.", "id": "sync_nas_client_rationale_1007" }, @@ -83609,7 +88739,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1024", - "community": 272, + "community": 3, "norm_label": "return the equipment id for a run path. prefers an explicit equipment i", "id": "sync_nas_client_rationale_1024" }, @@ -83618,7 +88748,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1047", - "community": 643, + "community": 672, "norm_label": "return the recorded nas-side path from a creation payload.", "id": "sync_nas_client_rationale_1047" }, @@ -83627,7 +88757,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1051", - "community": 272, + "community": 3, "norm_label": "mutate ``creation.json`` ``sync_status`` to ``blocked_by_validation``.", "id": "sync_nas_client_rationale_1051" }, @@ -83636,7 +88766,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1060", - "community": 53, + "community": 3, "norm_label": "mutate ``creation.json`` ``sync_status`` to ``synced``. backend spec \u00a77.1.4.", "id": "sync_nas_client_rationale_1060" }, @@ -83645,7 +88775,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/nas_client.py", "source_location": "L1073", - "community": 188, + "community": 3, "norm_label": "mutate ``creation.json`` ``sync_status`` to ``cleaned``. backend spec \u00a77.1.10.", "id": "sync_nas_client_rationale_1073" }, @@ -83654,7 +88784,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/verifier.py", "source_location": "L118", - "community": 265, + "community": 293, "norm_label": "run ``rclone check --download`` over ``files_from`` and translate. rais", "id": "sync_verifier_rationale_118" }, @@ -83663,7 +88793,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L135", - "community": 148, + "community": 111, "norm_label": "build_rclone_env()", "id": "transports_rclone_build_rclone_env" }, @@ -83672,7 +88802,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L173", - "community": 189, + "community": 111, "norm_label": "pass_env_keys_for()", "id": "transports_rclone_pass_env_keys_for" }, @@ -83681,7 +88811,7 @@ "file_type": "code", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L188", - "community": 189, + "community": 425, "norm_label": "obscure()", "id": "transports_rclone_obscure" }, @@ -83690,7 +88820,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L70", - "community": 90, + "community": 104, "norm_label": "map a (returncode, stderr) into a :class:`transporterrorkind`. auth failure", "id": "transports_rclone_rationale_70" }, @@ -83699,7 +88829,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L94", - "community": 189, + "community": 232, "norm_label": "parsed result of a ``rclone check --combined`` run. the combined-output for", "id": "transports_rclone_rationale_94" }, @@ -83708,7 +88838,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L117", - "community": 90, + "community": 232, "norm_label": "outcome of ``rclone about --json``. surfaces as the equipment-prob", "id": "transports_rclone_rationale_117" }, @@ -83717,7 +88847,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L174", - "community": 189, + "community": 111, "norm_label": "return the env-key tuple that must be redacted from subprocess logs. the on", "id": "transports_rclone_rationale_174" }, @@ -83726,7 +88856,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L189", - "community": 189, + "community": 425, "norm_label": "return the rclone-obscured form of ``password``. rclone refuses raw passwor", "id": "transports_rclone_rationale_189" }, @@ -83735,7 +88865,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L221", - "community": 38, + "community": 68, "norm_label": "rclone transport driver. backend spec \u00a77.1.3.", "id": "transports_rclone_rationale_221" }, @@ -83744,7 +88874,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L236", - "community": 90, + "community": 104, "norm_label": "run ``rclone copy --checksum`` from ``local`` to ``remote``. ``remote``", "id": "transports_rclone_rationale_236" }, @@ -83753,7 +88883,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L286", - "community": 188, + "community": 104, "norm_label": "run ``rclone check --download --files-from --combined`` over ``files_from``.", "id": "transports_rclone_rationale_286" }, @@ -83762,7 +88892,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L365", - "community": 90, + "community": 104, "norm_label": "run ``rclone about --json`` -- the equipment probe. used by th", "id": "transports_rclone_rationale_365" }, @@ -83771,7 +88901,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/transports/rclone.py", "source_location": "L401", - "community": 189, + "community": 232, "norm_label": "parse ``rclone check --combined`` output into a :class:`checkresult`. each", "id": "transports_rclone_rationale_401" }, @@ -83780,7 +88910,7 @@ "file_type": "rationale", "source_file": "src/exlab_wizard/sync/transports/_run.py", "source_location": "L36", - "community": 147, + "community": 167, "norm_label": "launch ``cmd`` and return ``(returncode, stdout, stderr)`` as text. ``env``", "id": "transports_run_rationale_36" }, @@ -83789,7 +88919,7 @@ "file_type": "document", "source_file": "tests/docker/README.md", "source_location": "L87", - "community": 140, + "community": 145, "norm_label": "`rclone_sftp` transport", "id": "docker_readme_rclone_sftp_transport" }, @@ -83798,7 +88928,7 @@ "file_type": "document", "source_file": "tests/docker/README.md", "source_location": "L103", - "community": 140, + "community": 145, "norm_label": "`rclone_smb` transport", "id": "docker_readme_rclone_smb_transport" }, @@ -83807,7 +88937,7 @@ "file_type": "document", "source_file": "docs/UX_INTERACTIONS.md", "source_location": "L55", - "community": 262, + "community": 266, "norm_label": "nas credentials", "id": "docs_ux_interactions_nas_credentials" }, @@ -83816,7 +88946,7 @@ "file_type": "document", "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L63", - "community": 37, + "community": 45, "norm_label": "7.1.3 transport drivers", "id": "design_spec_sections_07_sync_and_database_integration_7_1_3_transport_drivers" }, @@ -83825,7 +88955,7 @@ "file_type": "document", "source_file": "design_specs/design_spec_sections/07_Sync_and_Database_Integration.md", "source_location": "L73", - "community": 37, + "community": 45, "norm_label": "7.1.4 hash verification", "id": "design_spec_sections_07_sync_and_database_integration_7_1_4_hash_verification" } @@ -88957,6 +94087,16 @@ "source": "tests_unit_ui_test_components_py", "target": "ui_test_components_test_sync_status_unknown_raises" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L178", + "weight": 1.0, + "source": "tests_unit_ui_test_components_py", + "target": "ui_test_components_test_sync_legend_entries_cover_every_state", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -89477,6 +94617,36 @@ "source": "tests_unit_ui_test_components_py", "target": "ui_test_components_test_to_nicegui_nodes_equipment_and_project_have_no_sync_icon" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L888", + "weight": 1.0, + "source": "tests_unit_ui_test_components_py", + "target": "ui_test_components_test_to_nicegui_nodes_carries_sync_title", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L912", + "weight": 1.0, + "source": "tests_unit_ui_test_components_py", + "target": "ui_test_components_test_build_tree_seeds_selected_node", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L930", + "weight": 1.0, + "source": "tests_unit_ui_test_components_py", + "target": "ui_test_components_test_build_tree_no_selection_leaves_selected_unset", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -89677,6 +94847,26 @@ "source": "ui_test_components_rationale_172", "target": "ui_test_components_test_sync_status_unknown_raises" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L179", + "weight": 1.0, + "source": "ui_test_components_rationale_179", + "target": "ui_test_components_test_sync_legend_entries_cover_every_state", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L201", + "weight": 1.0, + "source": "ui_test_components_rationale_201", + "target": "ui_test_components_test_session_progress_phase_order_is_canonical", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89687,6 +94877,16 @@ "source": "ui_test_components_rationale_184", "target": "ui_test_components_test_session_progress_phase_order_is_canonical" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L249", + "weight": 1.0, + "source": "ui_test_components_rationale_249", + "target": "ui_test_components_test_session_progress_active_phase_marked", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89697,6 +94897,16 @@ "source": "ui_test_components_rationale_232", "target": "ui_test_components_test_session_progress_active_phase_marked" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L262", + "weight": 1.0, + "source": "ui_test_components_rationale_262", + "target": "ui_test_components_test_session_progress_plugin_sub_row_present", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89707,6 +94917,16 @@ "source": "ui_test_components_rationale_245", "target": "ui_test_components_test_session_progress_plugin_sub_row_present" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L309", + "weight": 1.0, + "source": "ui_test_components_rationale_309", + "target": "ui_test_components_test_begin_edit_from_not_set_enters_editing_remembering_not_set", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89717,6 +94937,16 @@ "source": "ui_test_components_rationale_292", "target": "ui_test_components_test_begin_edit_from_not_set_enters_editing_remembering_not_set" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L319", + "weight": 1.0, + "source": "ui_test_components_rationale_319", + "target": "ui_test_components_test_begin_edit_from_set_remembers_set_as_resting", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89727,6 +94957,16 @@ "source": "ui_test_components_rationale_302", "target": "ui_test_components_test_begin_edit_from_set_remembers_set_as_resting" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L351", + "weight": 1.0, + "source": "ui_test_components_rationale_351", + "target": "ui_test_components_test_commit_edit_with_empty_value_stays_editing_and_skips_save", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89737,6 +94977,16 @@ "source": "ui_test_components_rationale_334", "target": "ui_test_components_test_commit_edit_with_empty_value_stays_editing_and_skips_save" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L471", + "weight": 1.0, + "source": "ui_test_components_rationale_471", + "target": "ui_test_components_test_banner_stack_shows_visible_and_overflow_split", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89747,6 +94997,16 @@ "source": "ui_test_components_rationale_454", "target": "ui_test_components_test_banner_stack_shows_visible_and_overflow_split" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L520", + "weight": 1.0, + "source": "ui_test_components_rationale_520", + "target": "ui_test_components_test_operations_modal_sort_suspended_first_oldest_first", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89779,6 +95039,16 @@ "source": "ui_test_components_test_input_required_dialog_builds_without_raising", "target": "components_input_required_dialog_input_required_dialog" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L737", + "weight": 1.0, + "source": "ui_test_components_rationale_737", + "target": "ui_test_components_test_tree_filter_archived_default_off_hides_archived", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89799,6 +95069,16 @@ "source": "ui_test_components_rationale_715", "target": "ui_test_components_test_tree_filter_archived_default_off_hides_archived" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L757", + "weight": 1.0, + "source": "ui_test_components_rationale_757", + "target": "ui_test_components_test_tree_filter_deleted_always_shown", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89819,6 +95099,16 @@ "source": "ui_test_components_rationale_735", "target": "ui_test_components_test_tree_filter_deleted_always_shown" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L804", + "weight": 1.0, + "source": "ui_test_components_rationale_804", + "target": "ui_test_components_test_tree_run_node_propagates_sync_status", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89839,6 +95129,16 @@ "source": "ui_test_components_rationale_782", "target": "ui_test_components_test_tree_run_node_propagates_sync_status" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L821", + "weight": 1.0, + "source": "ui_test_components_rationale_821", + "target": "ui_test_components_test_to_nicegui_nodes_cleared_run_uses_cloud_icon", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89859,6 +95159,16 @@ "source": "ui_test_components_rationale_799", "target": "ui_test_components_test_to_nicegui_nodes_cleared_run_uses_cloud_icon" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L846", + "weight": 1.0, + "source": "ui_test_components_rationale_846", + "target": "ui_test_components_test_to_nicegui_nodes_local_run_uses_local_icon", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89879,6 +95189,16 @@ "source": "ui_test_components_rationale_824", "target": "ui_test_components_test_to_nicegui_nodes_local_run_uses_local_icon" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L872", + "weight": 1.0, + "source": "ui_test_components_rationale_872", + "target": "ui_test_components_test_to_nicegui_nodes_equipment_and_project_have_no_sync_icon", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89899,6 +95219,46 @@ "source": "ui_test_components_rationale_850", "target": "ui_test_components_test_to_nicegui_nodes_equipment_and_project_have_no_sync_icon" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L889", + "weight": 1.0, + "source": "ui_test_components_rationale_889", + "target": "ui_test_components_test_to_nicegui_nodes_carries_sync_title", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L913", + "weight": 1.0, + "source": "ui_test_components_rationale_913", + "target": "ui_test_components_test_build_tree_seeds_selected_node", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L931", + "weight": 1.0, + "source": "ui_test_components_rationale_931", + "target": "ui_test_components_test_build_tree_no_selection_leaves_selected_unset", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L949", + "weight": 1.0, + "source": "ui_test_components_rationale_949", + "target": "ui_test_components_test_equipment_node_relay_flag_emits_received_equipment_kind", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89919,6 +95279,16 @@ "source": "ui_test_components_rationale_872", "target": "ui_test_components_test_equipment_node_relay_flag_emits_received_equipment_kind" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L963", + "weight": 1.0, + "source": "ui_test_components_rationale_963", + "target": "ui_test_components_test_to_nicegui_nodes_emits_testid_kind", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89939,6 +95309,16 @@ "source": "ui_test_components_rationale_886", "target": "ui_test_components_test_to_nicegui_nodes_emits_testid_kind" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L987", + "weight": 1.0, + "source": "ui_test_components_rationale_987", + "target": "ui_test_components_test_slot_template_emits_testid_data_node_id_and_context_menus", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89959,6 +95339,16 @@ "source": "ui_test_components_rationale_910", "target": "ui_test_components_test_slot_template_emits_testid_data_node_id_and_context_menus" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L1027", + "weight": 1.0, + "source": "ui_test_components_rationale_1027", + "target": "ui_test_components_test_factories_smoke_outside_nicegui", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -89979,6 +95369,16 @@ "source": "ui_test_components_rationale_950", "target": "ui_test_components_test_factories_smoke_outside_nicegui" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_components.py", + "source_location": "L1060", + "weight": 1.0, + "source": "ui_test_components_rationale_1060", + "target": "ui_test_components_test_no_stray_ui_notify_calls_in_ui_package", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90069,6 +95469,26 @@ "source": "tests_unit_ui_test_framed_pane_py", "target": "ui_test_framed_pane_test_framed_pane_card_carries_testid" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_framed_pane.py", + "source_location": "L77", + "weight": 1.0, + "source": "tests_unit_ui_test_framed_pane_py", + "target": "ui_test_framed_pane_test_framed_pane_applies_card_classes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_framed_pane.py", + "source_location": "L89", + "weight": 1.0, + "source": "tests_unit_ui_test_framed_pane_py", + "target": "ui_test_framed_pane_test_framed_pane_no_card_classes_by_default", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -90242,9 +95662,51 @@ "source_file": "tests/unit/ui/test_framed_pane.py", "source_location": "L78", "weight": 1.0, - "confidence_score": 1.0, "source": "ui_test_framed_pane_rationale_78", - "target": "ui_test_framed_pane_test_framed_pane_renders_header_extra_in_strip" + "target": "ui_test_framed_pane_test_framed_pane_applies_card_classes", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_framed_pane.py", + "source_location": "L80", + "weight": 1.0, + "source": "ui_test_framed_pane_test_framed_pane_applies_card_classes", + "target": "components_framed_pane_framed_pane" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_framed_pane.py", + "source_location": "L90", + "weight": 1.0, + "source": "ui_test_framed_pane_rationale_90", + "target": "ui_test_framed_pane_test_framed_pane_no_card_classes_by_default", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_framed_pane.py", + "source_location": "L91", + "weight": 1.0, + "source": "ui_test_framed_pane_test_framed_pane_no_card_classes_by_default", + "target": "components_framed_pane_framed_pane" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_framed_pane.py", + "source_location": "L99", + "weight": 1.0, + "source": "ui_test_framed_pane_rationale_99", + "target": "ui_test_framed_pane_test_framed_pane_renders_header_extra_in_strip", + "confidence_score": 1.0 }, { "relation": "calls", @@ -90257,6 +95719,16 @@ "source": "ui_test_framed_pane_test_framed_pane_renders_header_extra_in_strip", "target": "components_framed_pane_framed_pane" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_framed_pane.py", + "source_location": "L78", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_framed_pane_rationale_78", + "target": "ui_test_framed_pane_test_framed_pane_renders_header_extra_in_strip" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90347,6 +95819,66 @@ "source": "tests_unit_ui_test_pages_py", "target": "ui_test_pages_test_main_setup_banner_subline_tailored_for_rclone_remote" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L116", + "weight": 1.0, + "source": "tests_unit_ui_test_pages_py", + "target": "ui_test_pages_search_hierarchy", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L129", + "weight": 1.0, + "source": "tests_unit_ui_test_pages_py", + "target": "ui_test_pages_test_main_chip_state_to_tree_filters_threads_search", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L137", + "weight": 1.0, + "source": "tests_unit_ui_test_pages_py", + "target": "ui_test_pages_test_main_count_search_results_counts_projects_and_runs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L146", + "weight": 1.0, + "source": "tests_unit_ui_test_pages_py", + "target": "ui_test_pages_test_main_count_search_results_narrows_with_query", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L155", + "weight": 1.0, + "source": "tests_unit_ui_test_pages_py", + "target": "ui_test_pages_test_main_count_search_results_zero_on_no_match", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L166", + "weight": 1.0, + "source": "tests_unit_ui_test_pages_py", + "target": "ui_test_pages_test_main_density_card_class_maps_compact", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -90757,6 +96289,16 @@ "source": "tests_unit_ui_test_pages_py", "target": "ui_test_pages_test_settings_first_incomplete_resolves_nas_credentials" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L33", + "weight": 1.0, + "source": "ui_test_pages_rationale_33", + "target": "ui_test_pages_test_welcome_card_spec_default_autostart_on", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90767,6 +96309,16 @@ "source": "ui_test_pages_rationale_26", "target": "ui_test_pages_test_welcome_card_spec_default_autostart_on" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L44", + "weight": 1.0, + "source": "ui_test_pages_rationale_44", + "target": "ui_test_pages_test_welcome_card_three_bullets", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90777,6 +96329,16 @@ "source": "ui_test_pages_rationale_37", "target": "ui_test_pages_test_welcome_card_three_bullets" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L64", + "weight": 1.0, + "source": "ui_test_pages_rationale_64", + "target": "ui_test_pages_test_main_default_chips_match_spec", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90787,6 +96349,16 @@ "source": "ui_test_pages_rationale_57", "target": "ui_test_pages_test_main_default_chips_match_spec" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L74", + "weight": 1.0, + "source": "ui_test_pages_rationale_74", + "target": "ui_test_pages_test_main_chip_state_to_tree_filters_round_trip", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90797,6 +96369,16 @@ "source": "ui_test_pages_rationale_67", "target": "ui_test_pages_test_main_chip_state_to_tree_filters_round_trip" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L94", + "weight": 1.0, + "source": "ui_test_pages_rationale_94", + "target": "ui_test_pages_test_main_setup_incomplete_banner_uses_warning", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90807,6 +96389,16 @@ "source": "ui_test_pages_rationale_87", "target": "ui_test_pages_test_main_setup_incomplete_banner_uses_warning" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L102", + "weight": 1.0, + "source": "ui_test_pages_rationale_102", + "target": "ui_test_pages_test_main_setup_banner_subline_tailored_for_rclone_remote", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90817,6 +96409,142 @@ "source": "ui_test_pages_rationale_95", "target": "ui_test_pages_test_main_setup_banner_subline_tailored_for_rclone_remote" }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L141", + "weight": 1.0, + "source": "ui_test_pages_test_main_count_search_results_counts_projects_and_runs", + "target": "ui_test_pages_search_hierarchy", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L150", + "weight": 1.0, + "source": "ui_test_pages_test_main_count_search_results_narrows_with_query", + "target": "ui_test_pages_search_hierarchy", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L162", + "weight": 1.0, + "source": "ui_test_pages_test_main_count_search_results_zero_on_no_match", + "target": "ui_test_pages_search_hierarchy", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L117", + "weight": 1.0, + "source": "ui_test_pages_rationale_117", + "target": "ui_test_pages_search_hierarchy", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L130", + "weight": 1.0, + "source": "ui_test_pages_rationale_130", + "target": "ui_test_pages_test_main_chip_state_to_tree_filters_threads_search", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L138", + "weight": 1.0, + "source": "ui_test_pages_rationale_138", + "target": "ui_test_pages_test_main_count_search_results_counts_projects_and_runs", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L141", + "weight": 1.0, + "source": "ui_test_pages_test_main_count_search_results_counts_projects_and_runs", + "target": "components_tree_build_nodes" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L147", + "weight": 1.0, + "source": "ui_test_pages_rationale_147", + "target": "ui_test_pages_test_main_count_search_results_narrows_with_query", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L150", + "weight": 1.0, + "source": "ui_test_pages_test_main_count_search_results_narrows_with_query", + "target": "components_tree_build_nodes" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L156", + "weight": 1.0, + "source": "ui_test_pages_rationale_156", + "target": "ui_test_pages_test_main_count_search_results_zero_on_no_match", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L162", + "weight": 1.0, + "source": "ui_test_pages_test_main_count_search_results_zero_on_no_match", + "target": "components_tree_build_nodes" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L167", + "weight": 1.0, + "source": "ui_test_pages_rationale_167", + "target": "ui_test_pages_test_main_density_card_class_maps_compact", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L181", + "weight": 1.0, + "source": "ui_test_pages_rationale_181", + "target": "ui_test_pages_test_wizard_project_seven_steps", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90827,6 +96555,16 @@ "source": "ui_test_pages_rationale_110", "target": "ui_test_pages_test_wizard_project_seven_steps" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L189", + "weight": 1.0, + "source": "ui_test_pages_rationale_189", + "target": "ui_test_pages_test_wizard_project_can_advance_blocks_until_lims_picked", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90837,6 +96575,16 @@ "source": "ui_test_pages_rationale_118", "target": "ui_test_pages_test_wizard_project_can_advance_blocks_until_lims_picked" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L220", + "weight": 1.0, + "source": "ui_test_pages_rationale_220", + "target": "ui_test_pages_test_wizard_project_preview_blocks_with_low_disk", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90847,6 +96595,16 @@ "source": "ui_test_pages_rationale_149", "target": "ui_test_pages_test_wizard_project_preview_blocks_with_low_disk" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L268", + "weight": 1.0, + "source": "ui_test_pages_rationale_268", + "target": "ui_test_pages_test_wizard_run_test_button_uses_warning_color", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90857,6 +96615,16 @@ "source": "ui_test_pages_rationale_197", "target": "ui_test_pages_test_wizard_run_test_button_uses_warning_color" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L282", + "weight": 1.0, + "source": "ui_test_pages_rationale_282", + "target": "ui_test_pages_test_wizard_run_preview_test_path_highlights", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90867,6 +96635,16 @@ "source": "ui_test_pages_rationale_211", "target": "ui_test_pages_test_wizard_run_preview_test_path_highlights" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L327", + "weight": 1.0, + "source": "ui_test_pages_rationale_327", + "target": "ui_test_pages_test_settings_nine_sections_includes_operators", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90877,6 +96655,16 @@ "source": "ui_test_pages_rationale_256", "target": "ui_test_pages_test_settings_nine_sections_includes_operators" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L340", + "weight": 1.0, + "source": "ui_test_pages_rationale_340", + "target": "ui_test_pages_test_settings_first_incomplete_returns_canonical_first", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90887,6 +96675,16 @@ "source": "ui_test_pages_rationale_269", "target": "ui_test_pages_test_settings_first_incomplete_returns_canonical_first" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L347", + "weight": 1.0, + "source": "ui_test_pages_rationale_347", + "target": "ui_test_pages_test_settings_first_incomplete_resolves_nas_remote", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90941,6 +96739,16 @@ "source": "ui_test_pages_test_problems_filter_scope_filters_by_equipment", "target": "ui_test_pages_sample_findings" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L408", + "weight": 1.0, + "source": "ui_test_pages_rationale_408", + "target": "ui_test_pages_test_problems_filter_default_shows_hard_only", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90951,6 +96759,16 @@ "source": "ui_test_pages_rationale_337", "target": "ui_test_pages_test_problems_filter_default_shows_hard_only" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L436", + "weight": 1.0, + "source": "ui_test_pages_rationale_436", + "target": "ui_test_pages_test_problems_override_reason_min_length", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90961,6 +96779,16 @@ "source": "ui_test_pages_rationale_365", "target": "ui_test_pages_test_problems_override_reason_min_length" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L444", + "weight": 1.0, + "source": "ui_test_pages_rationale_444", + "target": "ui_test_pages_test_problems_override_reason_max_length", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90971,6 +96799,16 @@ "source": "ui_test_pages_rationale_373", "target": "ui_test_pages_test_problems_override_reason_max_length" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L459", + "weight": 1.0, + "source": "ui_test_pages_rationale_459", + "target": "ui_test_pages_test_problems_override_reason_trims_whitespace", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -90985,41 +96823,41 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L395", + "source_location": "L466", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_pages_rationale_395", - "target": "ui_test_pages_test_problems_near_limit_flag" + "source": "ui_test_pages_rationale_466", + "target": "ui_test_pages_test_problems_near_limit_flag", + "confidence_score": 1.0 }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L419", + "source_location": "L395", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_pages_rationale_419", - "target": "ui_test_pages_test_problems_chip_definitions_match_spec" + "source": "ui_test_pages_rationale_395", + "target": "ui_test_pages_test_problems_near_limit_flag" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L95", + "source_location": "L490", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_pages_rationale_95", - "target": "ui_test_pages_test_main_setup_banner_subline_tailored_for_nas_credentials" + "source": "ui_test_pages_rationale_490", + "target": "ui_test_pages_test_problems_chip_definitions_match_spec", + "confidence_score": 1.0 }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_pages.py", - "source_location": "L276", + "source_location": "L419", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_pages_rationale_276", - "target": "ui_test_pages_test_settings_first_incomplete_resolves_nas_credentials" + "source": "ui_test_pages_rationale_419", + "target": "ui_test_pages_test_problems_chip_definitions_match_spec" }, { "relation": "contains", @@ -91051,26 +96889,6 @@ "source": "tests_unit_ui_test_mount_py", "target": "ui_test_mount_fluent" }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L98", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_fakeui" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L116", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_boomui" - }, { "relation": "contains", "confidence": "EXTRACTED", @@ -91351,36 +97169,6 @@ "source": "tests_unit_ui_test_mount_py", "target": "ui_test_mount_test_safe_audit_forwards_validator_output" }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L445", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_staging_state_when_staging_root_missing" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L460", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_staging_state_none_when_no_config" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L464", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_staging_state_returns_empty_rows_on_query_failure" - }, { "relation": "contains", "confidence": "EXTRACTED", @@ -91471,26 +97259,6 @@ "source": "tests_unit_ui_test_mount_py", "target": "ui_test_mount_test_apply_live_config_falls_back_to_setting_config" }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L656", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_render_unavailable_renders_headline_and_subline" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L663", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_render_unavailable_swallows_failure" - }, { "relation": "contains", "confidence": "EXTRACTED", @@ -92281,16 +98049,6 @@ "source": "tests_unit_ui_test_mount_py", "target": "ui_test_mount_stubnassync" }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1544", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_drain_background" - }, { "relation": "contains", "confidence": "EXTRACTED", @@ -92351,36 +98109,6 @@ "source": "tests_unit_ui_test_mount_py", "target": "ui_test_mount_test_run_staging_action_clear_verified_invokes_clear" }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1630", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1659", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1666", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" - }, { "relation": "contains", "confidence": "EXTRACTED", @@ -93115,61 +98843,201 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2735", + "source_location": "L2752", "weight": 1.0, "confidence_score": 1.0, "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" + "target": "ui_test_mount_test_toggle_keep_local_unresolvable_relative_path_toasts" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2752", + "source_location": "L2770", "weight": 1.0, "confidence_score": 1.0, "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_toggle_keep_local_unresolvable_relative_path_toasts" + "target": "ui_test_mount_test_open_input_required_dialog_submit_swallows_resume_failure" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2770", + "source_location": "L2799", "weight": 1.0, "confidence_score": 1.0, "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_open_input_required_dialog_submit_swallows_resume_failure" + "target": "ui_test_mount_test_template_questions_map_swallows_outer_failure" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1", + "target": "tests_unit_ui_test_mount_py" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L425", + "weight": 1.0, + "source": "ui_test_mount_rationale_425", + "target": "tests_unit_ui_test_mount_py", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L596", + "weight": 1.0, + "source": "ui_test_mount_rationale_596", + "target": "tests_unit_ui_test_mount_py", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1683", + "weight": 1.0, + "source": "ui_test_mount_rationale_1683", + "target": "tests_unit_ui_test_mount_py", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2799", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_template_questions_map_swallows_outer_failure" + "target": "ui_test_mount_fakeui" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2815", + "source_location": "L116", "weight": 1.0, "confidence_score": 1.0, "source": "tests_unit_ui_test_mount_py", - "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + "target": "ui_test_mount_boomui" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1", + "source_location": "L445", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1", - "target": "tests_unit_ui_test_mount_py" + "source": "tests_unit_ui_test_mount_py", + "target": "ui_test_mount_test_staging_state_when_staging_root_missing" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L460", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_mount_py", + "target": "ui_test_mount_test_staging_state_none_when_no_config" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L464", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_mount_py", + "target": "ui_test_mount_test_staging_state_returns_empty_rows_on_query_failure" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L656", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_mount_py", + "target": "ui_test_mount_test_render_unavailable_renders_headline_and_subline" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L663", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_mount_py", + "target": "ui_test_mount_test_render_unavailable_swallows_failure" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1544", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_mount_py", + "target": "ui_test_mount_drain_background" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1630", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_mount_py", + "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1659", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_mount_py", + "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1666", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_mount_py", + "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2735", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_mount_py", + "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2815", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_mount_py", + "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" }, { "relation": "contains", @@ -93461,39 +99329,6 @@ "source": "ui_test_mount_test_safe_audit_forwards_validator_output", "target": "ui_test_mount_deps" }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L448", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_staging_state_when_staging_root_missing", - "target": "ui_test_mount_deps" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L461", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_staging_state_none_when_no_config", - "target": "ui_test_mount_deps" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L467", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_staging_state_returns_empty_rows_on_query_failure", - "target": "ui_test_mount_deps" - }, { "relation": "calls", "context": "call", @@ -94176,39 +100011,6 @@ "source": "ui_test_mount_test_run_staging_action_clear_verified_invokes_clear", "target": "ui_test_mount_deps" }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1649", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows", - "target": "ui_test_mount_deps" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1661", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns", - "target": "ui_test_mount_deps" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1675", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception", - "target": "ui_test_mount_deps" - }, { "relation": "calls", "context": "call", @@ -94621,10 +100423,10 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2746", + "source_location": "L2765", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts", + "source": "ui_test_mount_test_toggle_keep_local_unresolvable_relative_path_toasts", "target": "ui_test_mount_deps" }, { @@ -94632,10 +100434,20 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2765", + "source_location": "L2811", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_test_toggle_keep_local_unresolvable_relative_path_toasts", + "source": "ui_test_mount_test_template_questions_map_swallows_outer_failure", + "target": "ui_test_mount_deps" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L31", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_31", "target": "ui_test_mount_deps" }, { @@ -94643,10 +100455,10 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2811", + "source_location": "L448", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_test_template_questions_map_swallows_outer_failure", + "source": "ui_test_mount_test_staging_state_when_staging_root_missing", "target": "ui_test_mount_deps" }, { @@ -94654,20 +100466,76 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2826", + "source_location": "L461", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows", + "source": "ui_test_mount_test_staging_state_none_when_no_config", "target": "ui_test_mount_deps" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L31", + "source_location": "L467", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_rationale_31", + "source": "ui_test_mount_test_staging_state_returns_empty_rows_on_query_failure", + "target": "ui_test_mount_deps" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1649", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows", + "target": "ui_test_mount_deps" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1661", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns", + "target": "ui_test_mount_deps" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1675", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception", + "target": "ui_test_mount_deps" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2746", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts", + "target": "ui_test_mount_deps" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2826", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows", "target": "ui_test_mount_deps" }, { @@ -94801,28 +100669,6 @@ "source": "ui_test_mount_test_missing_sections_empty_when_fully_configured", "target": "ui_test_mount_config" }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L449", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_staging_state_when_staging_root_missing", - "target": "ui_test_mount_config" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L468", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_staging_state_returns_empty_rows_on_query_failure", - "target": "ui_test_mount_config" - }, { "relation": "calls", "context": "call", @@ -95197,28 +101043,6 @@ "source": "ui_test_mount_test_run_staging_action_clear_verified_invokes_clear", "target": "ui_test_mount_config" }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1649", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows", - "target": "ui_test_mount_config" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1675", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception", - "target": "ui_test_mount_config" - }, { "relation": "calls", "context": "call", @@ -95356,10 +101180,10 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2746", + "source_location": "L2811", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts", + "source": "ui_test_mount_test_template_questions_map_swallows_outer_failure", "target": "ui_test_mount_config" }, { @@ -95367,10 +101191,54 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2811", + "source_location": "L449", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_test_template_questions_map_swallows_outer_failure", + "source": "ui_test_mount_test_staging_state_when_staging_root_missing", + "target": "ui_test_mount_config" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L468", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_staging_state_returns_empty_rows_on_query_failure", + "target": "ui_test_mount_config" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1649", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows", + "target": "ui_test_mount_config" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1675", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception", + "target": "ui_test_mount_config" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2746", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts", "target": "ui_test_mount_config" }, { @@ -95444,28 +101312,6 @@ "source": "ui_test_mount_dialogstub", "target": "ui_test_mount_fluent" }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L109", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_fakeui_card", - "target": "ui_test_mount_fluent" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L113", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_fakeui_label", - "target": "ui_test_mount_fluent" - }, { "relation": "calls", "context": "call", @@ -95671,427 +101517,37 @@ "source": "ui_test_mount_fluent", "target": "routers_browse_folderresponse" }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L80", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_80", - "target": "ui_test_mount_fluent" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L350", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fluent", - "target": "config_models_rclonesftptransport" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L101", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_fakeui", - "target": "ui_test_mount_fakeui_init" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L107", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_fakeui", - "target": "ui_test_mount_fakeui_card" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L111", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_fakeui", - "target": "ui_test_mount_fakeui_label" - }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L657", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_render_unavailable_renders_headline_and_subline", - "target": "ui_test_mount_fakeui" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L100", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_100", - "target": "ui_test_mount_fakeui" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L27", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "components_file_list_filelistentry" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L282", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "controller_session_store_sessionstore" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L350", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "config_models_config" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L350", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "config_models_equipmentconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L350", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "config_models_limsconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L360", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "config_models_nasconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L350", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "config_models_orchestratorconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L350", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "config_models_pathsconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1344", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "api_schemas_creationjson" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1344", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "api_schemas_limsprojectblock" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1344", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "api_schemas_pathsblock" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1344", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "api_schemas_templateblock" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1729", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "routers_browse_folderentry" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1729", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "routers_browse_folderresponse" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L99", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_99", - "target": "ui_test_mount_fakeui" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L350", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_fakeui", - "target": "config_models_rclonesftptransport" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L119", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_boomui", - "target": "ui_test_mount_boomui_card" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L123", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_boomui", - "target": "ui_test_mount_boomui_label" + "source": "ui_test_mount_fakeui_card", + "target": "ui_test_mount_fluent" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L665", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_render_unavailable_swallows_failure", - "target": "ui_test_mount_boomui" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L118", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_rationale_118", - "target": "ui_test_mount_boomui" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L27", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "components_file_list_filelistentry" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L282", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "controller_session_store_sessionstore" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L350", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "config_models_config" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L350", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "config_models_equipmentconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L350", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "config_models_limsconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L360", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "config_models_nasconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L350", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "config_models_orchestratorconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L350", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "config_models_pathsconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1344", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "api_schemas_creationjson" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1344", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "api_schemas_limsprojectblock" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1344", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "api_schemas_pathsblock" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1344", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "api_schemas_templateblock" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1729", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "routers_browse_folderentry" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1729", - "weight": 0.8, - "confidence_score": 0.5, - "source": "ui_test_mount_boomui", - "target": "routers_browse_folderresponse" + "source": "ui_test_mount_fakeui_label", + "target": "ui_test_mount_fluent" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L117", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_rationale_117", - "target": "ui_test_mount_boomui" + "source": "ui_test_mount_rationale_80", + "target": "ui_test_mount_fluent" }, { "relation": "uses", @@ -96100,7 +101556,7 @@ "source_location": "L350", "weight": 0.8, "confidence_score": 0.5, - "source": "ui_test_mount_boomui", + "source": "ui_test_mount_fluent", "target": "config_models_rclonesftptransport" }, { @@ -96246,11 +101702,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L130", + "source_location": "L100", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_130", - "target": "ui_test_mount_fakecontroller" + "source": "ui_test_mount_rationale_100", + "target": "ui_test_mount_fakecontroller", + "confidence_score": 1.0 }, { "relation": "uses", @@ -96392,6 +101848,16 @@ "source": "ui_test_mount_fakecontroller", "target": "routers_browse_folderresponse" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L130", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_130", + "target": "ui_test_mount_fakecontroller" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -96434,6 +101900,16 @@ "source": "ui_test_mount_test_is_setup_ready_false_when_keyring_missing", "target": "ui_test_mount_nas_config" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L155", + "weight": 1.0, + "source": "ui_test_mount_rationale_155", + "target": "ui_test_mount_test_is_setup_ready_false_when_keyring_missing", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -96487,6 +101963,16 @@ "source": "ui_test_mount_test_is_setup_ready_false_when_nas_remote_unset", "target": "ui_test_mount_nas_config" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L183", + "weight": 1.0, + "source": "ui_test_mount_rationale_183", + "target": "ui_test_mount_test_is_setup_ready_false_when_nas_remote_unset", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -96518,6 +102004,16 @@ "source": "ui_test_mount_test_is_setup_ready_false_when_nas_remote_unavailable", "target": "ui_test_mount_nas_config" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L193", + "weight": 1.0, + "source": "ui_test_mount_rationale_193", + "target": "ui_test_mount_test_is_setup_ready_false_when_nas_remote_unavailable", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -96549,6 +102045,16 @@ "source": "ui_test_mount_test_is_setup_ready_true_with_offline_catalogue_lims", "target": "ui_test_mount_nas_config" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L204", + "weight": 1.0, + "source": "ui_test_mount_rationale_204", + "target": "ui_test_mount_test_is_setup_ready_true_with_offline_catalogue_lims", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -96579,6 +102085,16 @@ "source": "ui_test_mount_rationale_226", "target": "ui_test_mount_test_is_setup_ready_true_with_offline_catalogue_lims" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L241", + "weight": 1.0, + "source": "ui_test_mount_rationale_241", + "target": "ui_test_mount_test_build_main_state_always_on_orchestrator", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -96767,11 +102283,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L349", + "source_location": "L319", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_349", - "target": "ui_test_mount_nas_config" + "source": "ui_test_mount_rationale_319", + "target": "ui_test_mount_nas_config", + "confidence_score": 1.0 }, { "relation": "calls", @@ -96828,6 +102344,16 @@ "source": "ui_test_mount_nas_config", "target": "config_models_nasconfig" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L349", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_349", + "target": "ui_test_mount_nas_config" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -97244,36 +102770,6 @@ "source": "ui_test_mount_okvalidator", "target": "config_models_rclonesftptransport" }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L461", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_461", - "target": "ui_test_mount_test_staging_state_when_staging_root_missing" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L460", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_460", - "target": "ui_test_mount_test_staging_state_when_staging_root_missing" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L446", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_446", - "target": "ui_test_mount_test_staging_state_when_staging_root_missing" - }, { "relation": "method", "confidence": "EXTRACTED", @@ -97453,11 +102949,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L508", + "source_location": "L438", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_508", - "target": "ui_test_mount_navspy" + "source": "ui_test_mount_rationale_438", + "target": "ui_test_mount_navspy", + "confidence_score": 1.0 }, { "relation": "uses", @@ -97599,6 +103095,16 @@ "source": "ui_test_mount_navspy", "target": "routers_browse_folderresponse" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L508", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_508", + "target": "ui_test_mount_navspy" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -97629,6 +103135,16 @@ "source": "ui_test_mount_navspy", "target": "config_models_rclonesftptransport" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L446", + "weight": 1.0, + "source": "ui_test_mount_rationale_446", + "target": "ui_test_mount_test_persist_config_writes_and_applies_live", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -97659,6 +103175,16 @@ "source": "ui_test_mount_rationale_501", "target": "ui_test_mount_test_persist_config_writes_and_applies_live" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L523", + "weight": 1.0, + "source": "ui_test_mount_rationale_523", + "target": "ui_test_mount_test_persist_config_creates_staging_root_when_set", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -97689,6 +103215,16 @@ "source": "ui_test_mount_rationale_578", "target": "ui_test_mount_test_persist_config_creates_staging_root_when_set" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L538", + "weight": 1.0, + "source": "ui_test_mount_rationale_538", + "target": "ui_test_mount_test_persist_config_does_not_create_staging_root_when_blank", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -97719,6 +103255,16 @@ "source": "ui_test_mount_rationale_593", "target": "ui_test_mount_test_persist_config_does_not_create_staging_root_when_blank" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L552", + "weight": 1.0, + "source": "ui_test_mount_rationale_552", + "target": "ui_test_mount_test_persist_config_staging_dir_failure_is_non_fatal", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -97749,6 +103295,16 @@ "source": "ui_test_mount_rationale_607", "target": "ui_test_mount_test_persist_config_staging_dir_failure_is_non_fatal" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L579", + "weight": 1.0, + "source": "ui_test_mount_rationale_579", + "target": "ui_test_mount_test_apply_live_config_falls_back_to_setting_config", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -97846,11 +103402,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L716", + "source_location": "L632", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_716", - "target": "ui_test_mount_recordingkeyringstore" + "source": "ui_test_mount_rationale_632", + "target": "ui_test_mount_recordingkeyringstore", + "confidence_score": 1.0 }, { "relation": "uses", @@ -97992,6 +103548,16 @@ "source": "ui_test_mount_recordingkeyringstore", "target": "routers_browse_folderresponse" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L716", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_716", + "target": "ui_test_mount_recordingkeyringstore" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98055,6 +103621,16 @@ "source": "ui_test_mount_recordingkeyringstore", "target": "config_models_rclonesftptransport" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L671", + "weight": 1.0, + "source": "ui_test_mount_rationale_671", + "target": "ui_test_mount_test_lims_credential_handlers_tolerate_missing_keyring_store", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98085,6 +103661,16 @@ "source": "ui_test_mount_rationale_740", "target": "ui_test_mount_test_lims_credential_handlers_tolerate_missing_keyring_store" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L680", + "weight": 1.0, + "source": "ui_test_mount_rationale_680", + "target": "ui_test_mount_test_lims_credential_handlers_swallow_backend_errors", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98172,11 +103758,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L940", + "source_location": "L856", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_940", - "target": "ui_test_mount_fakelimsclient" + "source": "ui_test_mount_rationale_856", + "target": "ui_test_mount_fakelimsclient", + "confidence_score": 1.0 }, { "relation": "uses", @@ -98318,6 +103904,16 @@ "source": "ui_test_mount_fakelimsclient", "target": "routers_browse_folderresponse" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L940", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_940", + "target": "ui_test_mount_fakelimsclient" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98348,6 +103944,16 @@ "source": "ui_test_mount_fakelimsclient", "target": "config_models_rclonesftptransport" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1102", + "weight": 1.0, + "source": "ui_test_mount_rationale_1102", + "target": "ui_test_mount_test_build_main_query_omits_empty_params", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98378,6 +103984,16 @@ "source": "ui_test_mount_rationale_1227", "target": "ui_test_mount_test_build_main_query_omits_empty_params" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1110", + "weight": 1.0, + "source": "ui_test_mount_rationale_1110", + "target": "ui_test_mount_test_build_main_query_url_encodes_special_chars", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98408,6 +104024,16 @@ "source": "ui_test_mount_rationale_1235", "target": "ui_test_mount_test_build_main_query_url_encodes_special_chars" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1122", + "weight": 1.0, + "source": "ui_test_mount_rationale_1122", + "target": "ui_test_mount_test_build_main_query_includes_file_q_density", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98418,6 +104044,16 @@ "source": "ui_test_mount_rationale_1206", "target": "ui_test_mount_test_build_main_query_includes_file_q_density" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1131", + "weight": 1.0, + "source": "ui_test_mount_rationale_1131", + "target": "ui_test_mount_test_build_main_query_omits_empty_phase4_params", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98438,6 +104074,16 @@ "source": "ui_test_mount_rationale_1217", "target": "ui_test_mount_test_build_main_query_omits_empty_phase4_params" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1136", + "weight": 1.0, + "source": "ui_test_mount_rationale_1136", + "target": "ui_test_mount_test_build_main_query_encodes_file_path_and_search", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98458,6 +104104,16 @@ "source": "ui_test_mount_rationale_1222", "target": "ui_test_mount_test_build_main_query_encodes_file_path_and_search" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1150", + "weight": 1.0, + "source": "ui_test_mount_rationale_1150", + "target": "ui_test_mount_test_classify_node_discriminates_kinds", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98508,6 +104164,16 @@ "source": "ui_test_mount_rationale_1252", "target": "ui_test_mount_test_classify_node_discriminates_kinds" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1171", + "weight": 1.0, + "source": "ui_test_mount_rationale_1171", + "target": "ui_test_mount_test_classify_node_rejects_unknown_root", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98558,6 +104224,16 @@ "source": "ui_test_mount_rationale_1273", "target": "ui_test_mount_test_classify_node_rejects_unknown_root" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1193", + "weight": 1.0, + "source": "ui_test_mount_rationale_1193", + "target": "ui_test_mount_test_build_metadata_payload_owned_equipment_reads_config", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98608,6 +104284,16 @@ "source": "ui_test_mount_rationale_1295", "target": "ui_test_mount_test_build_metadata_payload_owned_equipment_reads_config" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1211", + "weight": 1.0, + "source": "ui_test_mount_rationale_1211", + "target": "ui_test_mount_test_build_metadata_payload_unknown_equipment_id_returns_empty", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98658,6 +104344,16 @@ "source": "ui_test_mount_rationale_1313", "target": "ui_test_mount_test_build_metadata_payload_unknown_equipment_id_returns_empty" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1218", + "weight": 1.0, + "source": "ui_test_mount_rationale_1218", + "target": "ui_test_mount_test_build_metadata_payload_project_scans_run_counts", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98712,11 +104408,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1321", + "source_location": "L1237", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1321", - "target": "ui_test_mount_test_build_metadata_payload_run_parses_creation_json" + "source": "ui_test_mount_rationale_1237", + "target": "ui_test_mount_test_build_metadata_payload_run_parses_creation_json", + "confidence_score": 1.0 }, { "relation": "calls", @@ -98762,6 +104458,16 @@ "source": "ui_test_mount_test_build_metadata_payload_run_parses_creation_json", "target": "api_schemas_pathsblock" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1321", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1321", + "target": "ui_test_mount_test_build_metadata_payload_run_parses_creation_json" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98802,6 +104508,16 @@ "source": "ui_test_mount_rationale_1339", "target": "ui_test_mount_test_build_metadata_payload_run_parses_creation_json" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1282", + "weight": 1.0, + "source": "ui_test_mount_rationale_1282", + "target": "ui_test_mount_test_build_metadata_payload_run_missing_creation_returns_path_only", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98852,6 +104568,16 @@ "source": "ui_test_mount_rationale_1384", "target": "ui_test_mount_test_build_metadata_payload_run_missing_creation_returns_path_only" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1291", + "weight": 1.0, + "source": "ui_test_mount_rationale_1291", + "target": "ui_test_mount_test_build_main_state_threads_selection_into_state", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98902,6 +104628,16 @@ "source": "ui_test_mount_rationale_1393", "target": "ui_test_mount_test_build_main_state_threads_selection_into_state" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1307", + "weight": 1.0, + "source": "ui_test_mount_rationale_1307", + "target": "ui_test_mount_test_build_main_state_threads_file_search_density", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98926,11 +104662,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1412", + "source_location": "L1328", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1412", - "target": "ui_test_mount_test_build_selected_file_resolves_file_by_path_match" + "source": "ui_test_mount_rationale_1328", + "target": "ui_test_mount_test_build_selected_file_resolves_file_by_path_match", + "confidence_score": 1.0 }, { "relation": "calls", @@ -98954,6 +104690,16 @@ "source": "ui_test_mount_test_build_selected_file_resolves_file_by_path_match", "target": "pages_staging_format_bytes" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1412", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1412", + "target": "ui_test_mount_test_build_selected_file_resolves_file_by_path_match" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98968,11 +104714,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1438", + "source_location": "L1354", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1438", - "target": "ui_test_mount_test_build_selected_file_none_for_empty_or_missing_path" + "source": "ui_test_mount_rationale_1354", + "target": "ui_test_mount_test_build_selected_file_none_for_empty_or_missing_path", + "confidence_score": 1.0 }, { "relation": "calls", @@ -98985,6 +104731,16 @@ "source": "ui_test_mount_test_build_selected_file_none_for_empty_or_missing_path", "target": "components_file_list_filelistentry" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1438", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1438", + "target": "ui_test_mount_test_build_selected_file_none_for_empty_or_missing_path" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -98999,11 +104755,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1447", + "source_location": "L1363", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1447", - "target": "ui_test_mount_test_build_selected_file_tombstone_omits_size" + "source": "ui_test_mount_rationale_1363", + "target": "ui_test_mount_test_build_selected_file_tombstone_omits_size", + "confidence_score": 1.0 }, { "relation": "calls", @@ -99016,6 +104772,16 @@ "source": "ui_test_mount_test_build_selected_file_tombstone_omits_size", "target": "components_file_list_filelistentry" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1447", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1447", + "target": "ui_test_mount_test_build_selected_file_tombstone_omits_size" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -99030,11 +104796,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1468", + "source_location": "L1384", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1468", - "target": "ui_test_mount_test_build_selected_file_folder_delegates_to_aggregate" + "source": "ui_test_mount_rationale_1384", + "target": "ui_test_mount_test_build_selected_file_folder_delegates_to_aggregate", + "confidence_score": 1.0 }, { "relation": "calls", @@ -99047,6 +104813,16 @@ "source": "ui_test_mount_test_build_selected_file_folder_delegates_to_aggregate", "target": "components_file_list_filelistentry" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1468", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1468", + "target": "ui_test_mount_test_build_selected_file_folder_delegates_to_aggregate" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -99057,6 +104833,16 @@ "source": "ui_test_mount_rationale_1470", "target": "ui_test_mount_test_build_selected_file_folder_delegates_to_aggregate" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1411", + "weight": 1.0, + "source": "ui_test_mount_rationale_1411", + "target": "ui_test_mount_test_build_selected_folder_degrades_on_scan_failure", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -99077,6 +104863,16 @@ "source": "ui_test_mount_rationale_1497", "target": "ui_test_mount_test_build_selected_folder_degrades_on_scan_failure" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1439", + "weight": 1.0, + "source": "ui_test_mount_rationale_1439", + "target": "ui_test_mount_test_refresh_selected_folder_primes_feed_payload", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -99097,6 +104893,16 @@ "source": "ui_test_mount_rationale_1525", "target": "ui_test_mount_test_refresh_selected_folder_primes_feed_payload" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1457", + "weight": 1.0, + "source": "ui_test_mount_rationale_1457", + "target": "ui_test_mount_test_refresh_selected_folder_noop_when_path_none", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -99127,6 +104933,16 @@ "source": "ui_test_mount_rationale_1537", "target": "ui_test_mount_test_refresh_selected_folder_noop_when_path_none" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1465", + "weight": 1.0, + "source": "ui_test_mount_rationale_1465", + "target": "ui_test_mount_test_refresh_selected_folder_swallows_scan_failure", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -99157,6 +104973,16 @@ "source": "ui_test_mount_rationale_1545", "target": "ui_test_mount_test_refresh_selected_folder_swallows_scan_failure" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1484", + "weight": 1.0, + "source": "ui_test_mount_rationale_1484", + "target": "ui_test_mount_test_open_in_os_returns_false_on_unhandled_platform", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -99227,6 +105053,16 @@ "source": "ui_test_mount_rationale_1411", "target": "ui_test_mount_test_open_in_os_returns_false_on_unhandled_platform" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1490", + "weight": 1.0, + "source": "ui_test_mount_rationale_1490", + "target": "ui_test_mount_test_open_in_os_linux_invokes_xdg_open", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -99297,6 +105133,16 @@ "source": "ui_test_mount_rationale_1417", "target": "ui_test_mount_test_open_in_os_linux_invokes_xdg_open" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1504", + "weight": 1.0, + "source": "ui_test_mount_rationale_1504", + "target": "ui_test_mount_test_open_in_os_darwin_invokes_open", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -99367,6 +105213,16 @@ "source": "ui_test_mount_rationale_1431", "target": "ui_test_mount_test_open_in_os_darwin_invokes_open" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1513", + "weight": 1.0, + "source": "ui_test_mount_rationale_1513", + "target": "ui_test_mount_test_open_in_os_returns_false_when_popen_raises", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -99759,39 +105615,6 @@ "source": "ui_test_mount_test_run_staging_action_clear_verified_invokes_clear", "target": "ui_test_mount_uispy" }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1650", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows", - "target": "ui_test_mount_uispy" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1662", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns", - "target": "ui_test_mount_uispy" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1676", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception", - "target": "ui_test_mount_uispy" - }, { "relation": "calls", "context": "call", @@ -100067,17 +105890,6 @@ "source": "ui_test_mount_test_render_run_wizard_builds_page", "target": "ui_test_mount_uispy" }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2746", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts", - "target": "ui_test_mount_uispy" - }, { "relation": "calls", "context": "call", @@ -100104,11 +105916,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1621", + "source_location": "L1537", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1621", - "target": "ui_test_mount_uispy" + "source": "ui_test_mount_rationale_1537", + "target": "ui_test_mount_uispy", + "confidence_score": 1.0 }, { "relation": "uses", @@ -100250,6 +106062,60 @@ "source": "ui_test_mount_uispy", "target": "routers_browse_folderresponse" }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1650", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows", + "target": "ui_test_mount_uispy" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1662", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns", + "target": "ui_test_mount_uispy" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1676", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception", + "target": "ui_test_mount_uispy" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2746", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts", + "target": "ui_test_mount_uispy" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1621", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1621", + "target": "ui_test_mount_uispy" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -100320,6 +106186,16 @@ "source": "ui_test_mount_uispy", "target": "config_models_rclonesftptransport" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1562", + "weight": 1.0, + "source": "ui_test_mount_rationale_1562", + "target": "ui_test_mount_test_file_context_action_open_in_os_dispatches_to_helper", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -100390,6 +106266,16 @@ "source": "ui_test_mount_rationale_1489", "target": "ui_test_mount_test_file_context_action_open_in_os_dispatches_to_helper" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1574", + "weight": 1.0, + "source": "ui_test_mount_rationale_1574", + "target": "ui_test_mount_test_file_context_action_open_in_os_failure_toasts_negative", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -100460,6 +106346,16 @@ "source": "ui_test_mount_rationale_1501", "target": "ui_test_mount_test_file_context_action_open_in_os_failure_toasts_negative" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1583", + "weight": 1.0, + "source": "ui_test_mount_rationale_1583", + "target": "ui_test_mount_test_file_context_action_copy_path_writes_clipboard", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -100530,6 +106426,16 @@ "source": "ui_test_mount_rationale_1510", "target": "ui_test_mount_test_file_context_action_copy_path_writes_clipboard" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1591", + "weight": 1.0, + "source": "ui_test_mount_rationale_1591", + "target": "ui_test_mount_test_file_context_action_unknown_action_no_raise", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -100600,6 +106506,16 @@ "source": "ui_test_mount_rationale_1518", "target": "ui_test_mount_test_file_context_action_unknown_action_no_raise" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1598", + "weight": 1.0, + "source": "ui_test_mount_rationale_1598", + "target": "ui_test_mount_test_file_context_action_empty_path_toasts_negative", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -100851,86 +106767,15 @@ "source": "ui_test_mount_stubnassync", "target": "config_models_rclonesftptransport" }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1514", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_drain_background", - "target": "ui_test_mount_dialogstub_close" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1702", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1702", - "target": "ui_test_mount_drain_background" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1696", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1696", - "target": "ui_test_mount_drain_background" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1698", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1698", - "target": "ui_test_mount_drain_background" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1529", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1529", - "target": "ui_test_mount_drain_background" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1504", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1504", - "target": "ui_test_mount_drain_background" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1503", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1503", - "target": "ui_test_mount_drain_background" - }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1545", + "source_location": "L1618", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1545", - "target": "ui_test_mount_drain_background" + "source": "ui_test_mount_rationale_1618", + "target": "ui_test_mount_test_run_staging_action_force_sync_invokes_nas_sync_enqueue", + "confidence_score": 1.0 }, { "relation": "rationale_for", @@ -101002,6 +106847,16 @@ "source": "ui_test_mount_rationale_1560", "target": "ui_test_mount_test_run_staging_action_force_sync_invokes_nas_sync_enqueue" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1631", + "weight": 1.0, + "source": "ui_test_mount_rationale_1631", + "target": "ui_test_mount_test_run_staging_action_force_sync_missing_nas_sync_toasts", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -101072,6 +106927,16 @@ "source": "ui_test_mount_rationale_1573", "target": "ui_test_mount_test_run_staging_action_force_sync_missing_nas_sync_toasts" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1638", + "weight": 1.0, + "source": "ui_test_mount_rationale_1638", + "target": "ui_test_mount_test_run_staging_action_no_config_toasts_negative", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -101142,6 +107007,16 @@ "source": "ui_test_mount_rationale_1580", "target": "ui_test_mount_test_run_staging_action_no_config_toasts_negative" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1647", + "weight": 1.0, + "source": "ui_test_mount_rationale_1647", + "target": "ui_test_mount_test_run_staging_action_view_log_invokes_log_dialog", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -101212,6 +107087,16 @@ "source": "ui_test_mount_rationale_1589", "target": "ui_test_mount_test_run_staging_action_view_log_invokes_log_dialog" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1657", + "weight": 1.0, + "source": "ui_test_mount_rationale_1657", + "target": "ui_test_mount_test_run_staging_action_unknown_action_no_raise", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -101282,6 +107167,16 @@ "source": "ui_test_mount_rationale_1599", "target": "ui_test_mount_test_run_staging_action_unknown_action_no_raise" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1666", + "weight": 1.0, + "source": "ui_test_mount_rationale_1666", + "target": "ui_test_mount_test_run_staging_action_clear_verified_invokes_clear", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -101352,216 +107247,6 @@ "source": "ui_test_mount_rationale_1608", "target": "ui_test_mount_test_run_staging_action_clear_verified_invokes_clear" }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1790", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1790", - "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1784", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1784", - "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1786", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1786", - "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1617", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1617", - "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1592", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1592", - "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1591", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1591", - "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1633", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1633", - "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1817", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1817", - "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1811", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1811", - "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1813", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1813", - "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1644", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1644", - "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1619", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1619", - "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1618", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1618", - "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1660", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1660", - "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1826", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1826", - "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1820", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1820", - "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1822", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1822", - "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1653", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1653", - "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1628", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1628", - "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1627", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1627", - "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1669", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1669", - "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" - }, { "relation": "inherits", "confidence": "EXTRACTED", @@ -102008,6 +107693,28 @@ "source": "controller_creation_format_error", "target": "dict" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L214", + "weight": 1.0, + "source": "controller_metadata_assembly_build_creation_json", + "target": "dict" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L377", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_project", + "target": "dict" + }, { "relation": "calls", "context": "call", @@ -102187,11 +107894,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1850", + "source_location": "L1699", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1850", - "target": "ui_test_mount_stubapp" + "source": "ui_test_mount_rationale_1699", + "target": "ui_test_mount_stubapp", + "confidence_score": 1.0 }, { "relation": "uses", @@ -102333,6 +108040,16 @@ "source": "ui_test_mount_stubapp", "target": "routers_browse_folderresponse" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1850", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1850", + "target": "ui_test_mount_stubapp" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -102403,6 +108120,16 @@ "source": "ui_test_mount_stubapp", "target": "config_models_rclonesftptransport" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1710", + "weight": 1.0, + "source": "ui_test_mount_rationale_1710", + "target": "ui_test_mount_test_drive_folder_feed_returns_empty_when_no_selection", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -102484,6 +108211,16 @@ "source": "ui_test_mount_test_drive_folder_feed_creates_feed_on_first_render", "target": "ui_test_mount_dialogstub_close" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1720", + "weight": 1.0, + "source": "ui_test_mount_rationale_1720", + "target": "ui_test_mount_test_drive_folder_feed_creates_feed_on_first_render", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -102569,11 +108306,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L1884", + "source_location": "L1733", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_1884", - "target": "ui_test_mount_test_drive_folder_feed_converts_cached_payload_to_entries" + "source": "ui_test_mount_rationale_1733", + "target": "ui_test_mount_test_drive_folder_feed_converts_cached_payload_to_entries", + "confidence_score": 1.0 }, { "relation": "calls", @@ -102597,6 +108334,16 @@ "source": "ui_test_mount_test_drive_folder_feed_converts_cached_payload_to_entries", "target": "routers_browse_folderentry" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1884", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1884", + "target": "ui_test_mount_test_drive_folder_feed_converts_cached_payload_to_entries" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -102657,6 +108404,16 @@ "source": "ui_test_mount_rationale_1727", "target": "ui_test_mount_test_drive_folder_feed_converts_cached_payload_to_entries" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1775", + "weight": 1.0, + "source": "ui_test_mount_rationale_1775", + "target": "ui_test_mount_test_fetch_folder_async_skips_when_coord_says_skip", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -102727,6 +108484,16 @@ "source": "ui_test_mount_rationale_1769", "target": "ui_test_mount_test_fetch_folder_async_skips_when_coord_says_skip" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1792", + "weight": 1.0, + "source": "ui_test_mount_rationale_1792", + "target": "ui_test_mount_test_fetch_folder_async_records_refresh_on_success", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -102797,6 +108564,16 @@ "source": "ui_test_mount_rationale_1786", "target": "ui_test_mount_test_fetch_folder_async_records_refresh_on_success" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1811", + "weight": 1.0, + "source": "ui_test_mount_rationale_1811", + "target": "ui_test_mount_test_fetch_folder_async_swallows_helper_exceptions", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -102867,6 +108644,16 @@ "source": "ui_test_mount_rationale_1805", "target": "ui_test_mount_test_fetch_folder_async_swallows_helper_exceptions" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1827", + "weight": 1.0, + "source": "ui_test_mount_rationale_1827", + "target": "ui_test_mount_test_open_log_dialog_no_queue_job_renders_dialog", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -102937,6 +108724,16 @@ "source": "ui_test_mount_rationale_1821", "target": "ui_test_mount_test_open_log_dialog_no_queue_job_renders_dialog" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1836", + "weight": 1.0, + "source": "ui_test_mount_rationale_1836", + "target": "ui_test_mount_test_open_log_dialog_with_queue_job_renders_dialog", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -103007,6 +108804,16 @@ "source": "ui_test_mount_rationale_1830", "target": "ui_test_mount_test_open_log_dialog_with_queue_job_renders_dialog" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1864", + "weight": 1.0, + "source": "ui_test_mount_rationale_1864", + "target": "ui_test_mount_test_build_metadata_payload_returns_empty_on_builder_exception", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -103077,6 +108884,16 @@ "source": "ui_test_mount_rationale_1858", "target": "ui_test_mount_test_build_metadata_payload_returns_empty_on_builder_exception" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1877", + "weight": 1.0, + "source": "ui_test_mount_rationale_1877", + "target": "ui_test_mount_test_metadata_for_relay_equipment_emits_id_label_source_host", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -103147,6 +108964,16 @@ "source": "ui_test_mount_rationale_1871", "target": "ui_test_mount_test_metadata_for_relay_equipment_emits_id_label_source_host" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1893", + "weight": 1.0, + "source": "ui_test_mount_rationale_1893", + "target": "ui_test_mount_test_metadata_for_relay_equipment_unknown_id_falls_back", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -103217,6 +109044,16 @@ "source": "ui_test_mount_rationale_1887", "target": "ui_test_mount_test_metadata_for_relay_equipment_unknown_id_falls_back" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1900", + "weight": 1.0, + "source": "ui_test_mount_rationale_1900", + "target": "ui_test_mount_test_metadata_for_project_returns_empty_for_single_segment_id", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -103287,6 +109124,16 @@ "source": "ui_test_mount_rationale_1894", "target": "ui_test_mount_test_metadata_for_project_returns_empty_for_single_segment_id" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1906", + "weight": 1.0, + "source": "ui_test_mount_rationale_1906", + "target": "ui_test_mount_test_count_dir_children_returns_zero_for_missing_dir", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -103357,6 +109204,16 @@ "source": "ui_test_mount_rationale_1900", "target": "ui_test_mount_test_count_dir_children_returns_zero_for_missing_dir" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1911", + "weight": 1.0, + "source": "ui_test_mount_rationale_1911", + "target": "ui_test_mount_test_count_dir_children_filters_by_prefix", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -103427,6 +109284,16 @@ "source": "ui_test_mount_rationale_1905", "target": "ui_test_mount_test_count_dir_children_filters_by_prefix" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1920", + "weight": 1.0, + "source": "ui_test_mount_rationale_1920", + "target": "ui_test_mount_test_metadata_for_run_returns_partial_on_decode_failure", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -103497,6 +109364,16 @@ "source": "ui_test_mount_rationale_1914", "target": "ui_test_mount_test_metadata_for_run_returns_partial_on_decode_failure" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1933", + "weight": 1.0, + "source": "ui_test_mount_rationale_1933", + "target": "ui_test_mount_test_run_staging_action_force_sync_exception_path_no_raise", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -103567,6 +109444,16 @@ "source": "ui_test_mount_rationale_1927", "target": "ui_test_mount_test_run_staging_action_force_sync_exception_path_no_raise" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1949", + "weight": 1.0, + "source": "ui_test_mount_rationale_1949", + "target": "ui_test_mount_test_run_staging_action_clear_verified_exception_path_no_raise", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -103637,6 +109524,16 @@ "source": "ui_test_mount_rationale_1943", "target": "ui_test_mount_test_run_staging_action_clear_verified_exception_path_no_raise" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1965", + "weight": 1.0, + "source": "ui_test_mount_rationale_1965", + "target": "ui_test_mount_test_run_staging_action_clear_verified_zero_files_branch", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -103707,6 +109604,16 @@ "source": "ui_test_mount_rationale_1959", "target": "ui_test_mount_test_run_staging_action_clear_verified_zero_files_branch" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1978", + "weight": 1.0, + "source": "ui_test_mount_rationale_1978", + "target": "ui_test_mount_test_file_context_action_clipboard_failure_toasts", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -103980,6 +109887,17 @@ "source": "ui_test_mount_test_drive_folder_feed_tolerates_storage_error", "target": "ui_test_mount_dialogstub_close" }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1514", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_drain_background", + "target": "ui_test_mount_dialogstub_close" + }, { "relation": "method", "confidence": "EXTRACTED", @@ -104131,11 +110049,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2166", + "source_location": "L2015", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_2166", - "target": "ui_test_mount_dialogui" + "source": "ui_test_mount_rationale_2015", + "target": "ui_test_mount_dialogui", + "confidence_score": 1.0 }, { "relation": "uses", @@ -104277,6 +110195,16 @@ "source": "ui_test_mount_dialogui", "target": "routers_browse_folderresponse" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2166", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_2166", + "target": "ui_test_mount_dialogui" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -104327,6 +110255,16 @@ "source": "ui_test_mount_rationale_1967", "target": "ui_test_mount_dialogui" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2059", + "weight": 1.0, + "source": "ui_test_mount_rationale_2059", + "target": "ui_test_mount_test_nas_test_connection_unavailable_when_probe_missing", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -104387,6 +110325,16 @@ "source": "ui_test_mount_rationale_2011", "target": "ui_test_mount_test_nas_test_connection_unavailable_when_probe_missing" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2071", + "weight": 1.0, + "source": "ui_test_mount_rationale_2071", + "target": "ui_test_mount_test_nas_test_connection_success_maps_latency", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -104447,6 +110395,16 @@ "source": "ui_test_mount_rationale_2023", "target": "ui_test_mount_test_nas_test_connection_success_maps_latency" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2098", + "weight": 1.0, + "source": "ui_test_mount_rationale_2098", + "target": "ui_test_mount_test_nas_test_connection_awaits_coroutine_probe", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -104507,6 +110465,16 @@ "source": "ui_test_mount_rationale_2050", "target": "ui_test_mount_test_nas_test_connection_awaits_coroutine_probe" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2128", + "weight": 1.0, + "source": "ui_test_mount_rationale_2128", + "target": "ui_test_mount_test_setup_next_action_returns_action_for_incomplete_setup", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -104567,6 +110535,16 @@ "source": "ui_test_mount_rationale_2080", "target": "ui_test_mount_test_setup_next_action_returns_action_for_incomplete_setup" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2135", + "weight": 1.0, + "source": "ui_test_mount_rationale_2135", + "target": "ui_test_mount_test_setup_next_action_none_when_ready", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -104627,6 +110605,16 @@ "source": "ui_test_mount_rationale_2087", "target": "ui_test_mount_test_setup_next_action_none_when_ready" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2159", + "weight": 1.0, + "source": "ui_test_mount_rationale_2159", + "target": "ui_test_mount_test_toggle_keep_local_no_writer_toasts", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -104687,6 +110675,16 @@ "source": "ui_test_mount_rationale_2111", "target": "ui_test_mount_test_toggle_keep_local_no_writer_toasts" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2168", + "weight": 1.0, + "source": "ui_test_mount_rationale_2168", + "target": "ui_test_mount_test_toggle_keep_local_file_not_in_run_toasts", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -104747,6 +110745,16 @@ "source": "ui_test_mount_rationale_2120", "target": "ui_test_mount_test_toggle_keep_local_file_not_in_run_toasts" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2179", + "weight": 1.0, + "source": "ui_test_mount_rationale_2179", + "target": "ui_test_mount_test_toggle_keep_local_invokes_writer_and_on_done", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -104807,6 +110815,16 @@ "source": "ui_test_mount_rationale_2131", "target": "ui_test_mount_test_toggle_keep_local_invokes_writer_and_on_done" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2234", + "weight": 1.0, + "source": "ui_test_mount_rationale_2234", + "target": "ui_test_mount_test_file_context_action_keep_local_dispatches", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -104867,6 +110885,16 @@ "source": "ui_test_mount_rationale_2186", "target": "ui_test_mount_test_file_context_action_keep_local_dispatches" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2251", + "weight": 1.0, + "source": "ui_test_mount_rationale_2251", + "target": "ui_test_mount_test_open_in_os_win32_invokes_startfile", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -104960,6 +110988,16 @@ "source": "ui_test_mount_store_with_running_session", "target": "controller_session_store_sessionstore" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2285", + "weight": 1.0, + "source": "ui_test_mount_rationale_2285", + "target": "ui_test_mount_test_open_operations_modal_no_controller_toasts", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105020,6 +111058,16 @@ "source": "ui_test_mount_rationale_2237", "target": "ui_test_mount_test_open_operations_modal_no_controller_toasts" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2291", + "weight": 1.0, + "source": "ui_test_mount_rationale_2291", + "target": "ui_test_mount_test_open_operations_modal_opens_with_controller", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105080,6 +111128,16 @@ "source": "ui_test_mount_rationale_2243", "target": "ui_test_mount_test_open_operations_modal_opens_with_controller" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2312", + "weight": 1.0, + "source": "ui_test_mount_rationale_2312", + "target": "ui_test_mount_test_open_operation_details_renders_state_and_pending", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105140,6 +111198,16 @@ "source": "ui_test_mount_rationale_2264", "target": "ui_test_mount_test_open_operation_details_renders_state_and_pending" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2336", + "weight": 1.0, + "source": "ui_test_mount_rationale_2336", + "target": "ui_test_mount_test_resume_operation_no_pending_input_toasts", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105200,6 +111268,16 @@ "source": "ui_test_mount_rationale_2288", "target": "ui_test_mount_test_resume_operation_no_pending_input_toasts" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2345", + "weight": 1.0, + "source": "ui_test_mount_rationale_2345", + "target": "ui_test_mount_test_resume_operation_opens_input_dialog", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105260,6 +111338,16 @@ "source": "ui_test_mount_rationale_2297", "target": "ui_test_mount_test_resume_operation_opens_input_dialog" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2374", + "weight": 1.0, + "source": "ui_test_mount_rationale_2374", + "target": "ui_test_mount_test_open_input_required_dialog_submit_resumes_controller", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105331,6 +111419,16 @@ "source": "ui_test_mount_rationale_2326", "target": "ui_test_mount_test_open_input_required_dialog_submit_resumes_controller" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2406", + "weight": 1.0, + "source": "ui_test_mount_rationale_2406", + "target": "ui_test_mount_test_open_input_required_dialog_cancel_routes_to_cancel_session", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105391,6 +111489,16 @@ "source": "ui_test_mount_rationale_2358", "target": "ui_test_mount_test_open_input_required_dialog_cancel_routes_to_cancel_session" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2446", + "weight": 1.0, + "source": "ui_test_mount_rationale_2446", + "target": "ui_test_mount_test_cancel_session_discard_calls_controller_cancel", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105462,6 +111570,16 @@ "source": "ui_test_mount_rationale_2398", "target": "ui_test_mount_test_cancel_session_discard_calls_controller_cancel" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2465", + "weight": 1.0, + "source": "ui_test_mount_rationale_2465", + "target": "ui_test_mount_test_cancel_session_keep_files_calls_controller_cancel", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105533,6 +111651,16 @@ "source": "ui_test_mount_rationale_2417", "target": "ui_test_mount_test_cancel_session_keep_files_calls_controller_cancel" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2482", + "weight": 1.0, + "source": "ui_test_mount_rationale_2482", + "target": "ui_test_mount_test_cancel_session_swallows_controller_failure", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105604,6 +111732,16 @@ "source": "ui_test_mount_rationale_2434", "target": "ui_test_mount_test_cancel_session_swallows_controller_failure" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2498", + "weight": 1.0, + "source": "ui_test_mount_rationale_2498", + "target": "ui_test_mount_test_cancel_session_back_button_closes_dialog", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105664,6 +111802,16 @@ "source": "ui_test_mount_rationale_2450", "target": "ui_test_mount_test_cancel_session_back_button_closes_dialog" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2512", + "weight": 1.0, + "source": "ui_test_mount_rationale_2512", + "target": "ui_test_mount_test_open_log_dialog_renders_row_fields", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105724,6 +111872,16 @@ "source": "ui_test_mount_rationale_2464", "target": "ui_test_mount_test_open_log_dialog_renders_row_fields" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2540", + "weight": 1.0, + "source": "ui_test_mount_rationale_2540", + "target": "ui_test_mount_test_open_log_dialog_no_row_renders_empty_line", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105784,6 +111942,16 @@ "source": "ui_test_mount_rationale_2492", "target": "ui_test_mount_test_open_log_dialog_no_row_renders_empty_line" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2556", + "weight": 1.0, + "source": "ui_test_mount_rationale_2556", + "target": "ui_test_mount_test_consume_session_progress_early_return_without_progress", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105855,6 +112023,16 @@ "source": "ui_test_mount_rationale_2508", "target": "ui_test_mount_test_consume_session_progress_early_return_without_progress" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2567", + "weight": 1.0, + "source": "ui_test_mount_rationale_2567", + "target": "ui_test_mount_test_consume_session_progress_opens_dialog_then_closes_on_done", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105926,6 +112104,16 @@ "source": "ui_test_mount_rationale_2519", "target": "ui_test_mount_test_consume_session_progress_opens_dialog_then_closes_on_done" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2604", + "weight": 1.0, + "source": "ui_test_mount_rationale_2604", + "target": "ui_test_mount_test_consume_session_progress_swallows_stream_failure", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -105997,6 +112185,16 @@ "source": "ui_test_mount_rationale_2556", "target": "ui_test_mount_test_consume_session_progress_swallows_stream_failure" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2644", + "weight": 1.0, + "source": "ui_test_mount_rationale_2644", + "target": "ui_test_mount_test_submit_run_toasts_without_template", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -106057,6 +112255,16 @@ "source": "ui_test_mount_rationale_2596", "target": "ui_test_mount_test_submit_run_toasts_without_template" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2655", + "weight": 1.0, + "source": "ui_test_mount_rationale_2655", + "target": "ui_test_mount_test_render_run_wizard_builds_page", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -106117,6 +112325,16 @@ "source": "ui_test_mount_rationale_2607", "target": "ui_test_mount_test_render_run_wizard_builds_page" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2684", + "weight": 1.0, + "source": "ui_test_mount_rationale_2684", + "target": "ui_test_mount_test_classify_node_skips_non_equipment_hierarchy_keys", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -106177,6 +112395,16 @@ "source": "ui_test_mount_rationale_2636", "target": "ui_test_mount_test_classify_node_skips_non_equipment_hierarchy_keys" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2693", + "weight": 1.0, + "source": "ui_test_mount_rationale_2693", + "target": "ui_test_mount_test_build_metadata_payload_received_equipment_kind", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -106237,6 +112465,16 @@ "source": "ui_test_mount_rationale_2645", "target": "ui_test_mount_test_build_metadata_payload_received_equipment_kind" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2709", + "weight": 1.0, + "source": "ui_test_mount_rationale_2709", + "target": "ui_test_mount_test_metadata_for_owned_equipment_projects_fields", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -106297,6 +112535,16 @@ "source": "ui_test_mount_rationale_2661", "target": "ui_test_mount_test_metadata_for_owned_equipment_projects_fields" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2731", + "weight": 1.0, + "source": "ui_test_mount_rationale_2731", + "target": "ui_test_mount_test_lims_catalogue_projects_schema_mismatch_returns_empty", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -106357,6 +112605,16 @@ "source": "ui_test_mount_rationale_2683", "target": "ui_test_mount_test_lims_catalogue_projects_schema_mismatch_returns_empty" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2743", + "weight": 1.0, + "source": "ui_test_mount_rationale_2743", + "target": "ui_test_mount_test_drive_folder_feed_tolerates_storage_error", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -106417,6 +112675,16 @@ "source": "ui_test_mount_rationale_2695", "target": "ui_test_mount_test_drive_folder_feed_tolerates_storage_error" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2765", + "weight": 1.0, + "source": "ui_test_mount_rationale_2765", + "target": "ui_test_mount_test_is_setup_ready_swallows_evaluation_failure", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -106477,6 +112745,16 @@ "source": "ui_test_mount_rationale_2717", "target": "ui_test_mount_test_is_setup_ready_swallows_evaluation_failure" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2778", + "weight": 1.0, + "source": "ui_test_mount_rationale_2778", + "target": "ui_test_mount_test_metadata_for_owned_equipment_no_match_returns_empty", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -106541,61 +112819,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2937", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_2937", - "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2931", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_2931", - "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2933", + "source_location": "L2786", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_2933", - "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2764", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_2764", - "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2739", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_2739", - "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2738", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_mount_rationale_2738", - "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" + "source": "ui_test_mount_rationale_2786", + "target": "ui_test_mount_test_toggle_keep_local_unresolvable_relative_path_toasts", + "confidence_score": 1.0 }, { "relation": "rationale_for", @@ -106657,6 +112885,16 @@ "source": "ui_test_mount_rationale_2755", "target": "ui_test_mount_test_toggle_keep_local_unresolvable_relative_path_toasts" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2804", + "weight": 1.0, + "source": "ui_test_mount_rationale_2804", + "target": "ui_test_mount_test_open_input_required_dialog_submit_swallows_resume_failure", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -106728,6 +112966,16 @@ "source": "ui_test_mount_rationale_2773", "target": "ui_test_mount_test_open_input_required_dialog_submit_swallows_resume_failure" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2833", + "weight": 1.0, + "source": "ui_test_mount_rationale_2833", + "target": "ui_test_mount_test_template_questions_map_swallows_outer_failure", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -106792,61 +113040,61 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L3017", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_rationale_3017", - "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + "source": "ui_test_mount_rationale_100", + "target": "ui_test_mount_fakeui" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L3011", + "source_location": "L446", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_rationale_3011", - "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + "source": "ui_test_mount_rationale_446", + "target": "ui_test_mount_test_staging_state_when_staging_root_missing" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L3013", + "source_location": "L1504", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_rationale_3013", - "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + "source": "ui_test_mount_rationale_1504", + "target": "ui_test_mount_drain_background" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2844", + "source_location": "L1591", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_rationale_2844", - "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + "source": "ui_test_mount_rationale_1591", + "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2819", + "source_location": "L1618", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_rationale_2819", - "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + "source": "ui_test_mount_rationale_1618", + "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_mount.py", - "source_location": "L2818", + "source_location": "L1811", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_mount_rationale_2818", - "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + "source": "ui_test_mount_rationale_1811", + "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" }, { "relation": "contains", @@ -106908,6 +113156,16 @@ "source": "tests_unit_ui_test_settings_page_py", "target": "ui_test_settings_page_test_finalize_allows_blank_staging_root" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_settings_page.py", + "source_location": "L106", + "weight": 1.0, + "source": "tests_unit_ui_test_settings_page_py", + "target": "ui_test_settings_page_test_orchestrator_section_is_titled_workstation", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -107029,11 +113287,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L91", + "source_location": "L93", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_settings_page_rationale_91", - "target": "ui_test_settings_page_test_finalize_allows_blank_staging_root" + "source": "ui_test_settings_page_rationale_93", + "target": "ui_test_settings_page_test_finalize_allows_blank_staging_root", + "confidence_score": 1.0 }, { "relation": "calls", @@ -107057,6 +113315,26 @@ "source": "ui_test_settings_page_test_finalize_allows_blank_staging_root", "target": "pages_settings_finalize_settings_draft" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_settings_page.py", + "source_location": "L91", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_settings_page_rationale_91", + "target": "ui_test_settings_page_test_finalize_allows_blank_staging_root" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_settings_page.py", + "source_location": "L107", + "weight": 1.0, + "source": "ui_test_settings_page_rationale_107", + "target": "ui_test_settings_page_test_orchestrator_section_is_titled_workstation", + "confidence_score": 1.0 + }, { "relation": "calls", "context": "call", @@ -107094,11 +113372,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_settings_page.py", - "source_location": "L119", + "source_location": "L132", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_settings_page_rationale_119", - "target": "ui_test_settings_page_test_lims_credential_initial_state_set_when_keyring_has_password" + "source": "ui_test_settings_page_rationale_132", + "target": "ui_test_settings_page_test_lims_credential_initial_state_set_when_keyring_has_password", + "confidence_score": 1.0 }, { "relation": "calls", @@ -107111,6 +113389,16 @@ "source": "ui_test_settings_page_test_lims_credential_initial_state_set_when_keyring_has_password", "target": "pages_settings_lims_credential_initial_state" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_settings_page.py", + "source_location": "L119", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_settings_page_rationale_119", + "target": "ui_test_settings_page_test_lims_credential_initial_state_set_when_keyring_has_password" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -107137,9 +113425,19 @@ "source_file": "tests/unit/ui/test_wizard_equipment.py", "source_location": "L17", "weight": 1.0, - "confidence_score": 1.0, "source": "tests_unit_ui_test_wizard_equipment_py", - "target": "ui_test_wizard_equipment_test_wizard_has_four_steps_without_signal_step" + "target": "ui_test_wizard_equipment_test_wizard_has_three_steps_with_sync_mode_hidden", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_equipment.py", + "source_location": "L28", + "weight": 1.0, + "source": "tests_unit_ui_test_wizard_equipment_py", + "target": "ui_test_wizard_equipment_test_assembled_equipment_defaults_to_nas_sync_mode", + "confidence_score": 1.0 }, { "relation": "contains", @@ -107241,6 +113539,16 @@ "source": "ui_test_wizard_equipment_rationale_1", "target": "tests_unit_ui_test_wizard_equipment_py" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_equipment.py", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_equipment_py", + "target": "ui_test_wizard_equipment_test_wizard_has_four_steps_without_signal_step" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -107267,9 +113575,41 @@ "source_file": "tests/unit/ui/test_wizard_equipment.py", "source_location": "L18", "weight": 1.0, - "confidence_score": 1.0, "source": "ui_test_wizard_equipment_rationale_18", - "target": "ui_test_wizard_equipment_test_wizard_has_four_steps_without_signal_step" + "target": "ui_test_wizard_equipment_test_wizard_has_three_steps_with_sync_mode_hidden", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_equipment.py", + "source_location": "L29", + "weight": 1.0, + "source": "ui_test_wizard_equipment_rationale_29", + "target": "ui_test_wizard_equipment_test_assembled_equipment_defaults_to_nas_sync_mode", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_equipment.py", + "source_location": "L32", + "weight": 1.0, + "source": "ui_test_wizard_equipment_test_assembled_equipment_defaults_to_nas_sync_mode", + "target": "pages_wizard_equipment_equipmentwizardstate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_equipment.py", + "source_location": "L37", + "weight": 1.0, + "source": "ui_test_wizard_equipment_test_assembled_equipment_defaults_to_nas_sync_mode", + "target": "pages_wizard_equipment_assemble_equipment_config" }, { "relation": "calls", @@ -107425,6 +113765,16 @@ "source": "ui_test_wizard_equipment_test_assemble_rejects_invalid_input", "target": "pages_wizard_equipment_assemble_equipment_config" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_equipment.py", + "source_location": "L18", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_wizard_equipment_rationale_18", + "target": "ui_test_wizard_equipment_test_wizard_has_four_steps_without_signal_step" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -107837,11 +114187,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L150", + "source_location": "L161", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_staging_page_rationale_150", - "target": "ui_test_staging_page_test_row_props_marks_synced_rollup_as_clearable" + "source": "ui_test_staging_page_rationale_161", + "target": "ui_test_staging_page_test_row_props_marks_synced_rollup_as_clearable", + "confidence_score": 1.0 }, { "relation": "calls", @@ -107854,6 +114204,16 @@ "source": "ui_test_staging_page_test_row_props_marks_synced_rollup_as_clearable", "target": "pages_staging_row_props" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_staging_page.py", + "source_location": "L150", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_staging_page_rationale_150", + "target": "ui_test_staging_page_test_row_props_marks_synced_rollup_as_clearable" + }, { "relation": "calls", "context": "call", @@ -107880,11 +114240,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L175", + "source_location": "L186", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_staging_page_rationale_175", - "target": "ui_test_staging_page_test_render_staging_dock_returns_dict_when_nicegui_unavailable" + "source": "ui_test_staging_page_rationale_186", + "target": "ui_test_staging_page_test_render_staging_dock_returns_dict_when_nicegui_unavailable", + "confidence_score": 1.0 }, { "relation": "calls", @@ -107912,11 +114272,21 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/ui/test_staging_page.py", - "source_location": "L192", + "source_location": "L175", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_staging_page_rationale_192", - "target": "ui_test_staging_page_test_staging_dock_state_defaults" + "source": "ui_test_staging_page_rationale_175", + "target": "ui_test_staging_page_test_render_staging_dock_returns_dict_when_nicegui_unavailable" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_staging_page.py", + "source_location": "L203", + "weight": 1.0, + "source": "ui_test_staging_page_rationale_203", + "target": "ui_test_staging_page_test_staging_dock_state_defaults", + "confidence_score": 1.0 }, { "relation": "calls", @@ -107929,6 +114299,16 @@ "source": "ui_test_staging_page_test_staging_dock_state_defaults", "target": "pages_staging_stagingdockstate" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_staging_page.py", + "source_location": "L192", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_staging_page_rationale_192", + "target": "ui_test_staging_page_test_staging_dock_state_defaults" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -108281,6 +114661,317 @@ "source": "ui_test_notifications_test_action_spec_is_frozen", "target": "ui_notifications_actionspec" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L19", + "weight": 1.0, + "source": "tests_unit_ui_test_status_bar_segment_py", + "target": "ui_test_status_bar_segment_test_footer_segments_all_clear_default_normal", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L32", + "weight": 1.0, + "source": "tests_unit_ui_test_status_bar_segment_py", + "target": "ui_test_status_bar_segment_test_footer_validator_warns_on_hard_findings", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L42", + "weight": 1.0, + "source": "tests_unit_ui_test_status_bar_segment_py", + "target": "ui_test_status_bar_segment_test_footer_lims_danger_when_unreachable", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L50", + "weight": 1.0, + "source": "tests_unit_ui_test_status_bar_segment_py", + "target": "ui_test_status_bar_segment_test_footer_staging_warns_when_pending", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L59", + "weight": 1.0, + "source": "tests_unit_ui_test_status_bar_segment_py", + "target": "ui_test_status_bar_segment_test_footer_segments_defaults_are_safe", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L1", + "weight": 1.0, + "source": "ui_test_status_bar_segment_rationale_1", + "target": "tests_unit_ui_test_status_bar_segment_py", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L20", + "weight": 1.0, + "source": "ui_test_status_bar_segment_rationale_20", + "target": "ui_test_status_bar_segment_test_footer_segments_all_clear_default_normal", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L22", + "weight": 1.0, + "source": "ui_test_status_bar_segment_test_footer_segments_all_clear_default_normal", + "target": "components_status_bar_segment_derive_footer_segment_states" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L33", + "weight": 1.0, + "source": "ui_test_status_bar_segment_rationale_33", + "target": "ui_test_status_bar_segment_test_footer_validator_warns_on_hard_findings", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L35", + "weight": 1.0, + "source": "ui_test_status_bar_segment_test_footer_validator_warns_on_hard_findings", + "target": "components_status_bar_segment_derive_footer_segment_states" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L43", + "weight": 1.0, + "source": "ui_test_status_bar_segment_rationale_43", + "target": "ui_test_status_bar_segment_test_footer_lims_danger_when_unreachable", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L45", + "weight": 1.0, + "source": "ui_test_status_bar_segment_test_footer_lims_danger_when_unreachable", + "target": "components_status_bar_segment_derive_footer_segment_states" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L51", + "weight": 1.0, + "source": "ui_test_status_bar_segment_rationale_51", + "target": "ui_test_status_bar_segment_test_footer_staging_warns_when_pending", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L53", + "weight": 1.0, + "source": "ui_test_status_bar_segment_test_footer_staging_warns_when_pending", + "target": "components_status_bar_segment_derive_footer_segment_states" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L60", + "weight": 1.0, + "source": "ui_test_status_bar_segment_rationale_60", + "target": "ui_test_status_bar_segment_test_footer_segments_defaults_are_safe", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_status_bar_segment.py", + "source_location": "L62", + "weight": 1.0, + "source": "ui_test_status_bar_segment_test_footer_segments_defaults_are_safe", + "target": "components_status_bar_segment_derive_footer_segment_states" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L15", + "weight": 1.0, + "source": "tests_unit_ui_test_empty_state_py", + "target": "ui_test_empty_state_walk", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L22", + "weight": 1.0, + "source": "tests_unit_ui_test_empty_state_py", + "target": "ui_test_empty_state_by_testid", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L26", + "weight": 1.0, + "source": "tests_unit_ui_test_empty_state_py", + "target": "ui_test_empty_state_texts", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L30", + "weight": 1.0, + "source": "tests_unit_ui_test_empty_state_py", + "target": "ui_test_empty_state_test_empty_state_carries_testid_and_message", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L42", + "weight": 1.0, + "source": "tests_unit_ui_test_empty_state_py", + "target": "ui_test_empty_state_test_empty_state_renders_the_icon", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L1", + "weight": 1.0, + "source": "ui_test_empty_state_rationale_1", + "target": "tests_unit_ui_test_empty_state_py", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L23", + "weight": 1.0, + "source": "ui_test_empty_state_by_testid", + "target": "ui_test_empty_state_walk", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L27", + "weight": 1.0, + "source": "ui_test_empty_state_texts", + "target": "ui_test_empty_state_walk", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L38", + "weight": 1.0, + "source": "ui_test_empty_state_test_empty_state_carries_testid_and_message", + "target": "ui_test_empty_state_walk", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L46", + "weight": 1.0, + "source": "ui_test_empty_state_test_empty_state_renders_the_icon", + "target": "ui_test_empty_state_walk", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L37", + "weight": 1.0, + "source": "ui_test_empty_state_test_empty_state_carries_testid_and_message", + "target": "ui_test_empty_state_by_testid", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L39", + "weight": 1.0, + "source": "ui_test_empty_state_test_empty_state_carries_testid_and_message", + "target": "ui_test_empty_state_texts", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L31", + "weight": 1.0, + "source": "ui_test_empty_state_rationale_31", + "target": "ui_test_empty_state_test_empty_state_carries_testid_and_message", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_empty_state.py", + "source_location": "L43", + "weight": 1.0, + "source": "ui_test_empty_state_rationale_43", + "target": "ui_test_empty_state_test_empty_state_renders_the_icon", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -111116,6 +117807,26 @@ "source": "ui_test_file_list_rationale_301", "target": "ui_test_file_list_test_no_click_listener_when_on_select_absent" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L13", + "weight": 1.0, + "source": "tests_unit_ui_test_theme_py", + "target": "ui_test_theme_test_root_css_includes_compact_density_rule", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L22", + "weight": 1.0, + "source": "tests_unit_ui_test_theme_py", + "target": "ui_test_theme_test_root_css_includes_tree_selection_rule", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -111266,6 +117977,36 @@ "source": "ui_test_theme_rationale_1", "target": "tests_unit_ui_test_theme_py" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L14", + "weight": 1.0, + "source": "ui_test_theme_rationale_14", + "target": "ui_test_theme_test_root_css_includes_compact_density_rule", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L23", + "weight": 1.0, + "source": "ui_test_theme_rationale_23", + "target": "ui_test_theme_test_root_css_includes_tree_selection_rule", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L63", + "weight": 1.0, + "source": "ui_test_theme_rationale_63", + "target": "ui_test_theme_test_root_css_contains_ui_refresh_surface_tokens", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -111276,6 +118017,16 @@ "source": "ui_test_theme_rationale_44", "target": "ui_test_theme_test_root_css_contains_ui_refresh_surface_tokens" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L76", + "weight": 1.0, + "source": "ui_test_theme_rationale_76", + "target": "ui_test_theme_test_root_css_emits_previously_undefined_referenced_vars", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -111286,6 +118037,16 @@ "source": "ui_test_theme_rationale_57", "target": "ui_test_theme_test_root_css_emits_previously_undefined_referenced_vars" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L153", + "weight": 1.0, + "source": "ui_test_theme_rationale_153", + "target": "ui_test_theme_test_root_css_navy_tinted_shadows", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -111306,6 +118067,16 @@ "source": "ui_test_theme_rationale_82", "target": "ui_test_theme_test_root_css_navy_tinted_shadows" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L166", + "weight": 1.0, + "source": "ui_test_theme_rationale_166", + "target": "ui_test_theme_test_root_css_starts_with_root_block", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -111326,6 +118097,16 @@ "source": "ui_test_theme_rationale_95", "target": "ui_test_theme_test_root_css_starts_with_root_block" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L173", + "weight": 1.0, + "source": "ui_test_theme_rationale_173", + "target": "ui_test_theme_test_root_css_includes_body_resets", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -111346,6 +118127,16 @@ "source": "ui_test_theme_rationale_102", "target": "ui_test_theme_test_root_css_includes_body_resets" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_theme.py", + "source_location": "L182", + "weight": 1.0, + "source": "ui_test_theme_rationale_182", + "target": "ui_test_theme_test_resolve_assets_dir_points_at_repo_assets_in_source_layout", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -114544,28763 +121335,31085 @@ "source_file": "tests/unit/ui/test_design.py", "source_location": "L172", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_design_rationale_172", - "target": "ui_test_design_test_badge_text_variants_are_wcag_aa" + "confidence_score": 1.0, + "source": "ui_test_design_rationale_172", + "target": "ui_test_design_test_badge_text_variants_are_wcag_aa" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_design.py", + "source_location": "L153", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_design_rationale_153", + "target": "ui_test_design_test_badge_text_variants_are_wcag_aa" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_design.py", + "source_location": "L184", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_design_rationale_184", + "target": "ui_test_design_test_alert_text_variants_match_designmd" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_design.py", + "source_location": "L165", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_design_rationale_165", + "target": "ui_test_design_test_alert_text_variants_match_designmd" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_design.py", + "source_location": "L195", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_design_rationale_195", + "target": "ui_test_design_test_yellow_is_present_but_only_for_fills" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_design.py", + "source_location": "L176", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_design_rationale_176", + "target": "ui_test_design_test_yellow_is_present_but_only_for_fills" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_travelling_badge_py", + "target": "ui_test_travelling_badge_hard" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_travelling_badge_py", + "target": "ui_test_travelling_badge_soft" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_travelling_badge_py", + "target": "ui_test_travelling_badge_test_badge_on_root_when_all_collapsed" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_travelling_badge_py", + "target": "ui_test_travelling_badge_test_badge_travels_inward_as_nodes_expand" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L41", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_travelling_badge_py", + "target": "ui_test_travelling_badge_test_badge_lands_on_leaf_when_fully_expanded" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L52", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_travelling_badge_py", + "target": "ui_test_travelling_badge_test_red_beats_amber_when_aggregated_on_same_node" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L62", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_travelling_badge_py", + "target": "ui_test_travelling_badge_test_amber_only_when_no_hard_findings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L68", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_travelling_badge_py", + "target": "ui_test_travelling_badge_test_two_equipment_get_independent_badges" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_travelling_badge_rationale_1", + "target": "tests_unit_ui_test_travelling_badge_py" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_travelling_badge_test_badge_on_root_when_all_collapsed", + "target": "ui_test_travelling_badge_hard" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L36", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_travelling_badge_test_badge_travels_inward_as_nodes_expand", + "target": "ui_test_travelling_badge_hard" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L42", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_travelling_badge_test_badge_lands_on_leaf_when_fully_expanded", + "target": "ui_test_travelling_badge_hard" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L54", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_travelling_badge_test_red_beats_amber_when_aggregated_on_same_node", + "target": "ui_test_travelling_badge_hard" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L70", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_travelling_badge_test_two_equipment_get_independent_badges", + "target": "ui_test_travelling_badge_hard" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L18", + "weight": 1.0, + "source": "ui_test_travelling_badge_hard", + "target": "components_travelling_badge_findinglocation" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_travelling_badge_test_red_beats_amber_when_aggregated_on_same_node", + "target": "ui_test_travelling_badge_soft" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L63", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_travelling_badge_test_amber_only_when_no_hard_findings", + "target": "ui_test_travelling_badge_soft" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L71", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_travelling_badge_test_two_equipment_get_independent_badges", + "target": "ui_test_travelling_badge_soft" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L22", + "weight": 1.0, + "source": "ui_test_travelling_badge_soft", + "target": "components_travelling_badge_findinglocation" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_travelling_badge_rationale_26", + "target": "ui_test_travelling_badge_test_badge_on_root_when_all_collapsed" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L30", + "weight": 1.0, + "source": "ui_test_travelling_badge_test_badge_on_root_when_all_collapsed", + "target": "components_travelling_badge_travelling_badges" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L31", + "weight": 1.0, + "source": "ui_test_travelling_badge_test_badge_on_root_when_all_collapsed", + "target": "components_travelling_badge_badgeprops" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_travelling_badge_rationale_35", + "target": "ui_test_travelling_badge_test_badge_travels_inward_as_nodes_expand" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L37", + "weight": 1.0, + "source": "ui_test_travelling_badge_test_badge_travels_inward_as_nodes_expand", + "target": "components_travelling_badge_travelling_badges" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L38", + "weight": 1.0, + "source": "ui_test_travelling_badge_test_badge_travels_inward_as_nodes_expand", + "target": "components_travelling_badge_badgeprops" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L48", + "weight": 1.0, + "source": "ui_test_travelling_badge_test_badge_lands_on_leaf_when_fully_expanded", + "target": "components_travelling_badge_travelling_badges" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L49", + "weight": 1.0, + "source": "ui_test_travelling_badge_test_badge_lands_on_leaf_when_fully_expanded", + "target": "components_travelling_badge_badgeprops" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L57", + "weight": 1.0, + "source": "ui_test_travelling_badge_test_red_beats_amber_when_aggregated_on_same_node", + "target": "components_travelling_badge_travelling_badges" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L59", + "weight": 1.0, + "source": "ui_test_travelling_badge_test_red_beats_amber_when_aggregated_on_same_node", + "target": "components_travelling_badge_badgeprops" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L64", + "weight": 1.0, + "source": "ui_test_travelling_badge_test_amber_only_when_no_hard_findings", + "target": "components_travelling_badge_travelling_badges" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L65", + "weight": 1.0, + "source": "ui_test_travelling_badge_test_amber_only_when_no_hard_findings", + "target": "components_travelling_badge_badgeprops" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L73", + "weight": 1.0, + "source": "ui_test_travelling_badge_test_two_equipment_get_independent_badges", + "target": "components_travelling_badge_travelling_badges" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_location": "L75", + "weight": 1.0, + "source": "ui_test_travelling_badge_test_two_equipment_get_independent_badges", + "target": "components_travelling_badge_badgeprops" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_can_advance_equipment_step_requires_selection" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_can_advance_variables_step_always_true" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L45", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_can_advance_confirm_step_always_true" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_can_advance_default_step_is_lims_project" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L58", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_can_advance_readme_blocks_on_partial_core_fields" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L71", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_disk_space_message_none_when_unknown" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L76", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_disk_space_message_none_when_ample" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L81", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_disk_space_message_present_just_below_threshold" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L92", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_state_lims_project_name_defaults_empty_and_is_settable" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L104", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_render_project_wizard_with_choices_does_not_raise" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L114", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_render_project_wizard_with_empty_choices_does_not_raise" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L123", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_render_project_wizard_defaults_state_when_omitted" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L128", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_wizard_project_page_py", + "target": "ui_test_wizard_project_page_test_wizard_project_step_titles_cover_every_step" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_wizard_project_page_rationale_1", + "target": "tests_unit_ui_test_wizard_project_page_py" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L31", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_can_advance_equipment_step_requires_selection", + "target": "pages_wizard_project_projectwizardstate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L39", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_can_advance_variables_step_always_true", + "target": "pages_wizard_project_projectwizardstate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L46", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_can_advance_confirm_step_always_true", + "target": "pages_wizard_project_projectwizardstate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L51", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_can_advance_default_step_is_lims_project", + "target": "pages_wizard_project_projectwizardstate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L59", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_can_advance_readme_blocks_on_partial_core_fields", + "target": "pages_wizard_project_projectwizardstate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L72", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_disk_space_message_none_when_unknown", + "target": "pages_wizard_project_projectwizardstate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L73", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_disk_space_message_none_when_unknown", + "target": "pages_wizard_project_disk_space_pre_flight_message" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L77", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_disk_space_message_none_when_ample", + "target": "pages_wizard_project_projectwizardstate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L78", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_disk_space_message_none_when_ample", + "target": "pages_wizard_project_disk_space_pre_flight_message" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L82", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_disk_space_message_present_just_below_threshold", + "target": "pages_wizard_project_projectwizardstate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L83", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_disk_space_message_present_just_below_threshold", + "target": "pages_wizard_project_disk_space_pre_flight_message" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L93", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_state_lims_project_name_defaults_empty_and_is_settable", + "target": "pages_wizard_project_projectwizardstate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L105", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_render_project_wizard_with_choices_does_not_raise", + "target": "pages_wizard_project_render_project_wizard" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L106", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_render_project_wizard_with_choices_does_not_raise", + "target": "pages_wizard_project_projectwizardstate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L115", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_render_project_wizard_with_empty_choices_does_not_raise", + "target": "pages_wizard_project_render_project_wizard" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L116", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_render_project_wizard_with_empty_choices_does_not_raise", + "target": "pages_wizard_project_projectwizardstate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_location": "L124", + "weight": 1.0, + "source": "ui_test_wizard_project_page_test_render_project_wizard_defaults_state_when_omitted", + "target": "pages_wizard_project_render_project_wizard" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_folder_feed.py", + "source_location": "L18", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_folder_feed_py", + "target": "ui_test_folder_feed_test_folder_feed_start_then_stop_calls_fetch_at_least_once" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_folder_feed.py", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_folder_feed_py", + "target": "ui_test_folder_feed_test_folder_feed_switching_paths_stops_previous" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_folder_feed.py", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_folder_feed_py", + "target": "ui_test_folder_feed_test_folder_feed_pause_skips_fetch" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_folder_feed.py", + "source_location": "L73", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_ui_test_folder_feed_py", + "target": "ui_test_folder_feed_test_refresh_coordinator_coalesces_within_window" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_folder_feed.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_folder_feed_rationale_1", + "target": "tests_unit_ui_test_folder_feed_py" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_folder_feed.py", + "source_location": "L25", + "weight": 1.0, + "source": "ui_test_folder_feed_test_folder_feed_start_then_stop_calls_fetch_at_least_once", + "target": "client_folder_feed_folderfeed" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_design.py", - "source_location": "L153", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_folder_feed.py", + "source_location": "L41", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_design_rationale_153", - "target": "ui_test_design_test_badge_text_variants_are_wcag_aa" + "source": "ui_test_folder_feed_test_folder_feed_switching_paths_stops_previous", + "target": "client_folder_feed_folderfeed" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_design.py", - "source_location": "L184", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_folder_feed.py", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_design_rationale_184", - "target": "ui_test_design_test_alert_text_variants_match_designmd" + "source": "ui_test_folder_feed_test_folder_feed_pause_skips_fetch", + "target": "client_folder_feed_folderfeed" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_design.py", - "source_location": "L165", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/ui/test_folder_feed.py", + "source_location": "L74", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_design_rationale_165", - "target": "ui_test_design_test_alert_text_variants_match_designmd" + "source": "ui_test_folder_feed_test_refresh_coordinator_coalesces_within_window", + "target": "client_refresh_coordinator_refreshcoordinator" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_design.py", - "source_location": "L195", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_design_rationale_195", - "target": "ui_test_design_test_yellow_is_present_but_only_for_fills" + "source": "tests_unit_lims_test_catalogue_py", + "target": "lims_test_catalogue_make_catalogue" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_design.py", - "source_location": "L176", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_design_rationale_176", - "target": "ui_test_design_test_yellow_is_present_but_only_for_fills" + "source": "tests_unit_lims_test_catalogue_py", + "target": "lims_test_catalogue_test_round_trip_via_write_then_read" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L17", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_travelling_badge_py", - "target": "ui_test_travelling_badge_hard" + "source": "tests_unit_lims_test_catalogue_py", + "target": "lims_test_catalogue_test_read_missing_file_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L21", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_travelling_badge_py", - "target": "ui_test_travelling_badge_soft" + "source": "tests_unit_lims_test_catalogue_py", + "target": "lims_test_catalogue_test_read_invalid_json_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L25", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_travelling_badge_py", - "target": "ui_test_travelling_badge_test_badge_on_root_when_all_collapsed" + "source": "tests_unit_lims_test_catalogue_py", + "target": "lims_test_catalogue_test_read_non_object_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L34", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_travelling_badge_py", - "target": "ui_test_travelling_badge_test_badge_travels_inward_as_nodes_expand" + "source": "tests_unit_lims_test_catalogue_py", + "target": "lims_test_catalogue_test_schema_version_mismatch_treated_as_absent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L41", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L85", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_travelling_badge_py", - "target": "ui_test_travelling_badge_test_badge_lands_on_leaf_when_fully_expanded" + "source": "tests_unit_lims_test_catalogue_py", + "target": "lims_test_catalogue_test_endpoint_mismatch_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L52", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_travelling_badge_py", - "target": "ui_test_travelling_badge_test_red_beats_amber_when_aggregated_on_same_node" + "source": "tests_unit_lims_test_catalogue_py", + "target": "lims_test_catalogue_test_write_creates_parent_directory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L62", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_travelling_badge_py", - "target": "ui_test_travelling_badge_test_amber_only_when_no_hard_findings" + "source": "tests_unit_lims_test_catalogue_py", + "target": "lims_test_catalogue_test_write_atomic_replaces_previous_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L68", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L121", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_travelling_badge_py", - "target": "ui_test_travelling_badge_test_two_equipment_get_independent_badges" + "source": "tests_unit_lims_test_catalogue_py", + "target": "lims_test_catalogue_test_read_handles_missing_projects_array" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", + "source_file": "tests/unit/lims/test_catalogue.py", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_travelling_badge_rationale_1", - "target": "tests_unit_ui_test_travelling_badge_py" + "source": "lims_test_catalogue_rationale_1", + "target": "tests_unit_lims_test_catalogue_py" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L28", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_travelling_badge_test_badge_on_root_when_all_collapsed", - "target": "ui_test_travelling_badge_hard" + "source": "lims_test_catalogue_test_round_trip_via_write_then_read", + "target": "lims_test_catalogue_make_catalogue" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L36", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_travelling_badge_test_badge_travels_inward_as_nodes_expand", - "target": "ui_test_travelling_badge_hard" + "source": "lims_test_catalogue_test_endpoint_mismatch_raises", + "target": "lims_test_catalogue_make_catalogue" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L42", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_travelling_badge_test_badge_lands_on_leaf_when_fully_expanded", - "target": "ui_test_travelling_badge_hard" + "source": "lims_test_catalogue_test_write_creates_parent_directory", + "target": "lims_test_catalogue_make_catalogue" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L54", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L102", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_travelling_badge_test_red_beats_amber_when_aggregated_on_same_node", - "target": "ui_test_travelling_badge_hard" + "source": "lims_test_catalogue_test_write_atomic_replaces_previous_file", + "target": "lims_test_catalogue_make_catalogue" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L70", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L15", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_travelling_badge_test_two_equipment_get_independent_badges", - "target": "ui_test_travelling_badge_hard" + "source": "lims_test_catalogue_make_catalogue", + "target": "lims_catalogue_offlinecatalogue" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L18", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L21", "weight": 1.0, - "source": "ui_test_travelling_badge_hard", - "target": "components_travelling_badge_findinglocation" + "source": "lims_test_catalogue_make_catalogue", + "target": "lims_schemas_limsproject" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L55", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L39", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_travelling_badge_test_red_beats_amber_when_aggregated_on_same_node", - "target": "ui_test_travelling_badge_soft" + "source": "lims_test_catalogue_test_round_trip_via_write_then_read", + "target": "lims_catalogue_write_catalogue" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L63", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_travelling_badge_test_amber_only_when_no_hard_findings", - "target": "ui_test_travelling_badge_soft" + "source": "lims_test_catalogue_test_round_trip_via_write_then_read", + "target": "lims_catalogue_read_catalogue" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L71", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L50", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_travelling_badge_test_two_equipment_get_independent_badges", - "target": "ui_test_travelling_badge_soft" + "source": "lims_test_catalogue_test_read_missing_file_raises", + "target": "lims_catalogue_read_catalogue" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L22", - "weight": 1.0, - "source": "ui_test_travelling_badge_soft", - "target": "components_travelling_badge_findinglocation" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L26", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L57", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_travelling_badge_rationale_26", - "target": "ui_test_travelling_badge_test_badge_on_root_when_all_collapsed" + "source": "lims_test_catalogue_test_read_invalid_json_raises", + "target": "lims_catalogue_read_catalogue" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L30", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L64", "weight": 1.0, - "source": "ui_test_travelling_badge_test_badge_on_root_when_all_collapsed", - "target": "components_travelling_badge_travelling_badges" + "source": "lims_test_catalogue_test_read_non_object_raises", + "target": "lims_catalogue_read_catalogue" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L31", - "weight": 1.0, - "source": "ui_test_travelling_badge_test_badge_on_root_when_all_collapsed", - "target": "components_travelling_badge_badgeprops" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L35", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L80", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_test_travelling_badge_rationale_35", - "target": "ui_test_travelling_badge_test_badge_travels_inward_as_nodes_expand" + "source": "lims_test_catalogue_test_schema_version_mismatch_treated_as_absent", + "target": "lims_catalogue_read_catalogue" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L37", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L88", "weight": 1.0, - "source": "ui_test_travelling_badge_test_badge_travels_inward_as_nodes_expand", - "target": "components_travelling_badge_travelling_badges" + "source": "lims_test_catalogue_test_endpoint_mismatch_raises", + "target": "lims_catalogue_write_catalogue" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L38", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L90", "weight": 1.0, - "source": "ui_test_travelling_badge_test_badge_travels_inward_as_nodes_expand", - "target": "components_travelling_badge_badgeprops" + "source": "lims_test_catalogue_test_endpoint_mismatch_raises", + "target": "lims_catalogue_read_catalogue" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L48", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L96", "weight": 1.0, - "source": "ui_test_travelling_badge_test_badge_lands_on_leaf_when_fully_expanded", - "target": "components_travelling_badge_travelling_badges" + "source": "lims_test_catalogue_test_write_creates_parent_directory", + "target": "lims_catalogue_write_catalogue" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L49", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L103", "weight": 1.0, - "source": "ui_test_travelling_badge_test_badge_lands_on_leaf_when_fully_expanded", - "target": "components_travelling_badge_badgeprops" + "source": "lims_test_catalogue_test_write_atomic_replaces_previous_file", + "target": "lims_catalogue_write_catalogue" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L57", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L106", "weight": 1.0, - "source": "ui_test_travelling_badge_test_red_beats_amber_when_aggregated_on_same_node", - "target": "components_travelling_badge_travelling_badges" + "source": "lims_test_catalogue_test_write_atomic_replaces_previous_file", + "target": "lims_catalogue_offlinecatalogue" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L59", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L116", "weight": 1.0, - "source": "ui_test_travelling_badge_test_red_beats_amber_when_aggregated_on_same_node", - "target": "components_travelling_badge_badgeprops" + "source": "lims_test_catalogue_test_write_atomic_replaces_previous_file", + "target": "lims_catalogue_read_catalogue" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L64", + "source_file": "tests/unit/lims/test_catalogue.py", + "source_location": "L130", "weight": 1.0, - "source": "ui_test_travelling_badge_test_amber_only_when_no_hard_findings", - "target": "components_travelling_badge_travelling_badges" + "source": "lims_test_catalogue_test_read_handles_missing_projects_array", + "target": "lims_catalogue_read_catalogue" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L65", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L25", "weight": 1.0, - "source": "ui_test_travelling_badge_test_amber_only_when_no_hard_findings", - "target": "components_travelling_badge_badgeprops" + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_inmemorykeyring" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L73", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L45", "weight": 1.0, - "source": "ui_test_travelling_badge_test_two_equipment_get_independent_badges", - "target": "components_travelling_badge_travelling_badges" + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_brokenkeyring" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_travelling_badge.py", - "source_location": "L75", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L61", "weight": 1.0, - "source": "ui_test_travelling_badge_test_two_equipment_get_independent_badges", - "target": "components_travelling_badge_badgeprops" + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_swap_keyring" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L30", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L70", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_can_advance_equipment_step_requires_selection" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_set_get_delete_via_os_keyring" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L37", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_can_advance_variables_step_always_true" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_get_returns_none_for_missing" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L45", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L85", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_can_advance_confirm_step_always_true" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_delete_missing_is_silent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L49", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_can_advance_default_step_is_lims_project" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_is_keyring_available_true" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L58", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L99", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_can_advance_readme_blocks_on_partial_core_fields" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_is_keyring_available_false_on_broken_backend" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L71", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_disk_space_message_none_when_unknown" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_round_trip" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L76", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_disk_space_message_none_when_ample" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_delete" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L81", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_disk_space_message_present_just_below_threshold" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L92", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L155", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_state_lims_project_name_defaults_empty_and_is_settable" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_no_passphrase_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L104", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L162", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_render_project_wizard_with_choices_does_not_raise" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_empty_passphrase_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L114", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_render_project_wizard_with_empty_choices_does_not_raise" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_file_format_integrity" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L123", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_render_project_wizard_defaults_state_when_omitted" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_corrupt_file_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L128", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L198", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_wizard_project_page_py", - "target": "ui_test_wizard_project_page_test_wizard_project_step_titles_cover_every_step" + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_unsupported_version_raises" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L212", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_missing_fields_raises" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L224", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_set_then_overwrite" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L236", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_keyring_set_failure_falls_back" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L249", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_is_keyring_available_false_on_unexpected_exception" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L269", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L281", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_delete_when_no_file" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L292", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_delete_when_username_absent" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L306", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L324", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_fallback_plaintext_must_be_object" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L360", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_envelope_must_be_object" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L373", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_lims_test_keyring_store_py", + "target": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_wizard_project_page.py", + "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_wizard_project_page_rationale_1", - "target": "tests_unit_ui_test_wizard_project_page_py" + "source": "lims_test_keyring_store_rationale_1", + "target": "tests_unit_lims_test_keyring_store_py" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_inmemorykeyring", + "target": "lims_test_keyring_store_inmemorykeyring_init" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L33", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_inmemorykeyring", + "target": "lims_test_keyring_store_inmemorykeyring_get_password" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L36", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_inmemorykeyring", + "target": "lims_test_keyring_store_inmemorykeyring_set_password" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_inmemorykeyring", + "target": "lims_test_keyring_store_inmemorykeyring_delete_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L31", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L71", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_can_advance_equipment_step_requires_selection", - "target": "pages_wizard_project_projectwizardstate" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", + "target": "lims_test_keyring_store_inmemorykeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L39", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L80", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_can_advance_variables_step_always_true", - "target": "pages_wizard_project_projectwizardstate" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_get_returns_none_for_missing", + "target": "lims_test_keyring_store_inmemorykeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L46", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L86", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_can_advance_confirm_step_always_true", - "target": "pages_wizard_project_projectwizardstate" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_delete_missing_is_silent", + "target": "lims_test_keyring_store_inmemorykeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L51", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L94", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_can_advance_default_step_is_lims_project", - "target": "pages_wizard_project_projectwizardstate" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_is_keyring_available_true", + "target": "lims_test_keyring_store_inmemorykeyring" }, { "relation": "calls", "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L386", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", + "target": "lims_test_keyring_store_inmemorykeyring" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_rationale_26", + "target": "lims_test_keyring_store_inmemorykeyring" + }, + { + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L59", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L21", + "weight": 0.8, + "confidence_score": 0.5, + "source": "lims_test_keyring_store_inmemorykeyring", + "target": "exlab_wizard_errors_keyringunavailableerror" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "lims_test_keyring_store_inmemorykeyring", + "target": "lims_keyring_store_keyringstore" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L50", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_can_advance_readme_blocks_on_partial_core_fields", - "target": "pages_wizard_project_projectwizardstate" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_brokenkeyring", + "target": "lims_test_keyring_store_brokenkeyring_get_password" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_brokenkeyring", + "target": "lims_test_keyring_store_brokenkeyring_set_password" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L56", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_brokenkeyring", + "target": "lims_test_keyring_store_brokenkeyring_delete_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L72", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L100", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_disk_space_message_none_when_unknown", - "target": "pages_wizard_project_projectwizardstate" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_is_keyring_available_false_on_broken_backend", + "target": "lims_test_keyring_store_brokenkeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L73", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L107", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_disk_space_message_none_when_unknown", - "target": "pages_wizard_project_disk_space_pre_flight_message" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_round_trip", + "target": "lims_test_keyring_store_brokenkeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L77", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L123", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_disk_space_message_none_when_ample", - "target": "pages_wizard_project_projectwizardstate" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_delete", + "target": "lims_test_keyring_store_brokenkeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L78", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L139", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_disk_space_message_none_when_ample", - "target": "pages_wizard_project_disk_space_pre_flight_message" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises", + "target": "lims_test_keyring_store_brokenkeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L82", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L156", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_disk_space_message_present_just_below_threshold", - "target": "pages_wizard_project_projectwizardstate" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_no_passphrase_raises", + "target": "lims_test_keyring_store_brokenkeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L83", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L163", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_disk_space_message_present_just_below_threshold", - "target": "pages_wizard_project_disk_space_pre_flight_message" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_empty_passphrase_raises", + "target": "lims_test_keyring_store_brokenkeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L93", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L171", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_state_lims_project_name_defaults_empty_and_is_settable", - "target": "pages_wizard_project_projectwizardstate" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_file_format_integrity", + "target": "lims_test_keyring_store_brokenkeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L105", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L189", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_render_project_wizard_with_choices_does_not_raise", - "target": "pages_wizard_project_render_project_wizard" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_corrupt_file_raises", + "target": "lims_test_keyring_store_brokenkeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L106", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L203", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_render_project_wizard_with_choices_does_not_raise", - "target": "pages_wizard_project_projectwizardstate" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_unsupported_version_raises", + "target": "lims_test_keyring_store_brokenkeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L115", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L215", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_render_project_wizard_with_empty_choices_does_not_raise", - "target": "pages_wizard_project_render_project_wizard" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_missing_fields_raises", + "target": "lims_test_keyring_store_brokenkeyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L116", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L226", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_render_project_wizard_with_empty_choices_does_not_raise", - "target": "pages_wizard_project_projectwizardstate" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_set_then_overwrite", + "target": "lims_test_keyring_store_brokenkeyring" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L240", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_keyring_set_failure_falls_back", + "target": "lims_test_keyring_store_brokenkeyring" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L273", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file", + "target": "lims_test_keyring_store_brokenkeyring" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L283", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_delete_when_no_file", + "target": "lims_test_keyring_store_brokenkeyring" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L294", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_delete_when_username_absent", + "target": "lims_test_keyring_store_brokenkeyring" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L315", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises", + "target": "lims_test_keyring_store_brokenkeyring" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L351", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_plaintext_must_be_object", + "target": "lims_test_keyring_store_brokenkeyring" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L364", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_envelope_must_be_object", + "target": "lims_test_keyring_store_brokenkeyring" }, { "relation": "calls", "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L378", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", + "target": "lims_test_keyring_store_brokenkeyring" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L46", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_rationale_46", + "target": "lims_test_keyring_store_brokenkeyring" + }, + { + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_wizard_project_page.py", - "source_location": "L124", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L21", + "weight": 0.8, + "confidence_score": 0.5, + "source": "lims_test_keyring_store_brokenkeyring", + "target": "exlab_wizard_errors_keyringunavailableerror" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "lims_test_keyring_store_brokenkeyring", + "target": "lims_keyring_store_keyringstore" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L74", "weight": 1.0, - "source": "ui_test_wizard_project_page_test_render_project_wizard_defaults_state_when_omitted", - "target": "pages_wizard_project_render_project_wizard" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", + "target": "lims_test_keyring_store_brokenkeyring_get_password" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L82", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_get_returns_none_for_missing", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_folder_feed.py", - "source_location": "L18", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_folder_feed_py", - "target": "ui_test_folder_feed_test_folder_feed_start_then_stop_calls_fetch_at_least_once" + "source": "lims_test_keyring_store_test_fallback_round_trip", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_folder_feed.py", - "source_location": "L34", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_folder_feed_py", - "target": "ui_test_folder_feed_test_folder_feed_switching_paths_stops_previous" + "source": "lims_test_keyring_store_test_fallback_delete", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_folder_feed.py", - "source_location": "L53", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_folder_feed_py", - "target": "ui_test_folder_feed_test_folder_feed_pause_skips_fetch" + "source": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_folder_feed.py", - "source_location": "L73", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_ui_test_folder_feed_py", - "target": "ui_test_folder_feed_test_refresh_coordinator_coalesces_within_window" + "source": "lims_test_keyring_store_test_fallback_corrupt_file_raises", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/ui/test_folder_feed.py", - "source_location": "L1", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L209", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_test_folder_feed_rationale_1", - "target": "tests_unit_ui_test_folder_feed_py" + "source": "lims_test_keyring_store_test_fallback_unsupported_version_raises", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_folder_feed.py", - "source_location": "L25", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L221", "weight": 1.0, - "source": "ui_test_folder_feed_test_folder_feed_start_then_stop_calls_fetch_at_least_once", - "target": "client_folder_feed_folderfeed" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_missing_fields_raises", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_folder_feed.py", - "source_location": "L41", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L233", "weight": 1.0, - "source": "ui_test_folder_feed_test_folder_feed_switching_paths_stops_previous", - "target": "client_folder_feed_folderfeed" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_set_then_overwrite", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_folder_feed.py", - "source_location": "L60", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L246", "weight": 1.0, - "source": "ui_test_folder_feed_test_folder_feed_pause_skips_fetch", - "target": "client_folder_feed_folderfeed" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_keyring_set_failure_falls_back", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/ui/test_folder_feed.py", - "source_location": "L74", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L278", "weight": 1.0, - "source": "ui_test_folder_feed_test_refresh_coordinator_coalesces_within_window", - "target": "client_refresh_coordinator_refreshcoordinator" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L14", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L303", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_catalogue_py", - "target": "lims_test_catalogue_make_catalogue" + "source": "lims_test_keyring_store_test_fallback_delete_when_username_absent", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L36", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L321", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_catalogue_py", - "target": "lims_test_catalogue_test_round_trip_via_write_then_read" + "source": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L48", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L357", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_catalogue_py", - "target": "lims_test_catalogue_test_read_missing_file_raises" + "source": "lims_test_keyring_store_test_fallback_plaintext_must_be_object", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L53", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L370", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_catalogue_py", - "target": "lims_test_catalogue_test_read_invalid_json_raises" + "source": "lims_test_keyring_store_test_envelope_must_be_object", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L60", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L391", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_catalogue_py", - "target": "lims_test_catalogue_test_read_non_object_raises" + "source": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", + "target": "lims_test_keyring_store_brokenkeyring_get_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L67", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L73", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_catalogue_py", - "target": "lims_test_catalogue_test_schema_version_mismatch_treated_as_absent" + "source": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", + "target": "lims_test_keyring_store_brokenkeyring_set_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L85", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_catalogue_py", - "target": "lims_test_catalogue_test_endpoint_mismatch_raises" + "source": "lims_test_keyring_store_test_fallback_round_trip", + "target": "lims_test_keyring_store_brokenkeyring_set_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L93", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_catalogue_py", - "target": "lims_test_catalogue_test_write_creates_parent_directory" + "source": "lims_test_keyring_store_test_fallback_delete", + "target": "lims_test_keyring_store_brokenkeyring_set_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L100", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_catalogue_py", - "target": "lims_test_catalogue_test_write_atomic_replaces_previous_file" + "source": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises", + "target": "lims_test_keyring_store_brokenkeyring_set_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L121", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_catalogue_py", - "target": "lims_test_catalogue_test_read_handles_missing_projects_array" + "source": "lims_test_keyring_store_test_fallback_no_passphrase_raises", + "target": "lims_test_keyring_store_brokenkeyring_set_password" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L1", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_catalogue_rationale_1", - "target": "tests_unit_lims_test_catalogue_py" + "source": "lims_test_keyring_store_test_fallback_empty_passphrase_raises", + "target": "lims_test_keyring_store_brokenkeyring_set_password" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L38", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L176", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_catalogue_test_round_trip_via_write_then_read", - "target": "lims_test_catalogue_make_catalogue" + "source": "lims_test_keyring_store_test_fallback_file_format_integrity", + "target": "lims_test_keyring_store_brokenkeyring_set_password" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L87", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L231", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_catalogue_test_endpoint_mismatch_raises", - "target": "lims_test_catalogue_make_catalogue" + "source": "lims_test_keyring_store_test_fallback_set_then_overwrite", + "target": "lims_test_keyring_store_brokenkeyring_set_password" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L95", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L245", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_catalogue_test_write_creates_parent_directory", - "target": "lims_test_catalogue_make_catalogue" + "source": "lims_test_keyring_store_test_keyring_set_failure_falls_back", + "target": "lims_test_keyring_store_brokenkeyring_set_password" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L102", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L299", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_catalogue_test_write_atomic_replaces_previous_file", - "target": "lims_test_catalogue_make_catalogue" + "source": "lims_test_keyring_store_test_fallback_delete_when_username_absent", + "target": "lims_test_keyring_store_brokenkeyring_set_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L15", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L383", "weight": 1.0, - "source": "lims_test_catalogue_make_catalogue", - "target": "lims_catalogue_offlinecatalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", + "target": "lims_test_keyring_store_brokenkeyring_set_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L21", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L75", "weight": 1.0, - "source": "lims_test_catalogue_make_catalogue", - "target": "lims_schemas_limsproject" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", + "target": "lims_test_keyring_store_brokenkeyring_delete_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L39", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L90", "weight": 1.0, - "source": "lims_test_catalogue_test_round_trip_via_write_then_read", - "target": "lims_catalogue_write_catalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_delete_missing_is_silent", + "target": "lims_test_keyring_store_brokenkeyring_delete_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L40", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L129", "weight": 1.0, - "source": "lims_test_catalogue_test_round_trip_via_write_then_read", - "target": "lims_catalogue_read_catalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_delete", + "target": "lims_test_keyring_store_brokenkeyring_delete_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L50", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L289", "weight": 1.0, - "source": "lims_test_catalogue_test_read_missing_file_raises", - "target": "lims_catalogue_read_catalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_delete_when_no_file", + "target": "lims_test_keyring_store_brokenkeyring_delete_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L57", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L302", "weight": 1.0, - "source": "lims_test_catalogue_test_read_invalid_json_raises", - "target": "lims_catalogue_read_catalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_delete_when_username_absent", + "target": "lims_test_keyring_store_brokenkeyring_delete_password" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L64", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L71", "weight": 1.0, - "source": "lims_test_catalogue_test_read_non_object_raises", - "target": "lims_catalogue_read_catalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", + "target": "lims_test_keyring_store_swap_keyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", "source_location": "L80", "weight": 1.0, - "source": "lims_test_catalogue_test_schema_version_mismatch_treated_as_absent", - "target": "lims_catalogue_read_catalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_get_returns_none_for_missing", + "target": "lims_test_keyring_store_swap_keyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L88", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L86", "weight": 1.0, - "source": "lims_test_catalogue_test_endpoint_mismatch_raises", - "target": "lims_catalogue_write_catalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_delete_missing_is_silent", + "target": "lims_test_keyring_store_swap_keyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L90", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L94", "weight": 1.0, - "source": "lims_test_catalogue_test_endpoint_mismatch_raises", - "target": "lims_catalogue_read_catalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_is_keyring_available_true", + "target": "lims_test_keyring_store_swap_keyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L96", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L100", "weight": 1.0, - "source": "lims_test_catalogue_test_write_creates_parent_directory", - "target": "lims_catalogue_write_catalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_is_keyring_available_false_on_broken_backend", + "target": "lims_test_keyring_store_swap_keyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L103", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L107", "weight": 1.0, - "source": "lims_test_catalogue_test_write_atomic_replaces_previous_file", - "target": "lims_catalogue_write_catalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_round_trip", + "target": "lims_test_keyring_store_swap_keyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L106", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L123", "weight": 1.0, - "source": "lims_test_catalogue_test_write_atomic_replaces_previous_file", - "target": "lims_catalogue_offlinecatalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_delete", + "target": "lims_test_keyring_store_swap_keyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L116", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L139", "weight": 1.0, - "source": "lims_test_catalogue_test_write_atomic_replaces_previous_file", - "target": "lims_catalogue_read_catalogue" + "confidence_score": 1.0, + "source": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises", + "target": "lims_test_keyring_store_swap_keyring" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_catalogue.py", - "source_location": "L130", - "weight": 1.0, - "source": "lims_test_catalogue_test_read_handles_missing_projects_array", - "target": "lims_catalogue_read_catalogue" - }, - { - "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L25", + "source_location": "L156", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_inmemorykeyring" + "source": "lims_test_keyring_store_test_fallback_no_passphrase_raises", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L45", + "source_location": "L163", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "lims_test_keyring_store_test_fallback_empty_passphrase_raises", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L61", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", + "source": "lims_test_keyring_store_test_fallback_file_format_integrity", "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L70", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_set_get_delete_via_os_keyring" + "source": "lims_test_keyring_store_test_fallback_corrupt_file_raises", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L79", + "source_location": "L203", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_get_returns_none_for_missing" + "source": "lims_test_keyring_store_test_fallback_unsupported_version_raises", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L85", + "source_location": "L215", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_delete_missing_is_silent" + "source": "lims_test_keyring_store_test_fallback_missing_fields_raises", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L93", + "source_location": "L226", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_is_keyring_available_true" + "source": "lims_test_keyring_store_test_fallback_set_then_overwrite", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L99", + "source_location": "L240", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_is_keyring_available_false_on_broken_backend" + "source": "lims_test_keyring_store_test_keyring_set_failure_falls_back", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L105", + "source_location": "L264", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_round_trip" + "source": "lims_test_keyring_store_test_is_keyring_available_false_on_unexpected_exception", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L122", + "source_location": "L273", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_delete" + "source": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L138", + "source_location": "L283", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises" + "source": "lims_test_keyring_store_test_fallback_delete_when_no_file", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L155", + "source_location": "L294", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_no_passphrase_raises" + "source": "lims_test_keyring_store_test_fallback_delete_when_username_absent", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L162", + "source_location": "L315", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_empty_passphrase_raises" + "source": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L169", + "source_location": "L351", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_file_format_integrity" + "source": "lims_test_keyring_store_test_fallback_plaintext_must_be_object", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L185", + "source_location": "L364", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_corrupt_file_raises" + "source": "lims_test_keyring_store_test_envelope_must_be_object", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L198", + "source_location": "L378", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_unsupported_version_raises" + "source": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", + "target": "lims_test_keyring_store_swap_keyring" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L212", + "source_location": "L72", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_missing_fields_raises" + "source": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L224", + "source_location": "L81", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_set_then_overwrite" + "source": "lims_test_keyring_store_test_get_returns_none_for_missing", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L236", + "source_location": "L87", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_keyring_set_failure_falls_back" + "source": "lims_test_keyring_store_test_delete_missing_is_silent", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L249", + "source_location": "L95", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_is_keyring_available_false_on_unexpected_exception" + "source": "lims_test_keyring_store_test_is_keyring_available_true", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L269", + "source_location": "L101", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file" + "source": "lims_test_keyring_store_test_is_keyring_available_false_on_broken_backend", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L281", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_delete_when_no_file" + "source": "lims_test_keyring_store_rationale_106", + "target": "lims_test_keyring_store_test_fallback_round_trip" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L292", + "source_location": "L108", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_delete_when_username_absent" + "source": "lims_test_keyring_store_test_fallback_round_trip", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L306", + "source_location": "L124", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises" + "source": "lims_test_keyring_store_test_fallback_delete", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L324", + "source_location": "L140", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_fallback_plaintext_must_be_object" + "source": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L360", + "source_location": "L157", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_envelope_must_be_object" + "source": "lims_test_keyring_store_test_fallback_no_passphrase_raises", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L373", + "source_location": "L164", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_lims_test_keyring_store_py", - "target": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing" + "source": "lims_test_keyring_store_test_fallback_empty_passphrase_raises", + "target": "lims_keyring_store_keyringstore" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L1", + "source_location": "L170", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_1", - "target": "tests_unit_lims_test_keyring_store_py" + "source": "lims_test_keyring_store_rationale_170", + "target": "lims_test_keyring_store_test_fallback_file_format_integrity" }, { - "relation": "method", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L30", + "source_location": "L172", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_inmemorykeyring", - "target": "lims_test_keyring_store_inmemorykeyring_init" + "source": "lims_test_keyring_store_test_fallback_file_format_integrity", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "method", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L33", + "source_location": "L190", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_inmemorykeyring", - "target": "lims_test_keyring_store_inmemorykeyring_get_password" + "source": "lims_test_keyring_store_test_fallback_corrupt_file_raises", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "method", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L36", + "source_location": "L204", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_inmemorykeyring", - "target": "lims_test_keyring_store_inmemorykeyring_set_password" + "source": "lims_test_keyring_store_test_fallback_unsupported_version_raises", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "method", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L216", + "weight": 1.0, + "source": "lims_test_keyring_store_test_fallback_missing_fields_raises", + "target": "lims_keyring_store_keyringstore" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L39", + "source_location": "L225", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_inmemorykeyring", - "target": "lims_test_keyring_store_inmemorykeyring_delete_password" + "source": "lims_test_keyring_store_rationale_225", + "target": "lims_test_keyring_store_test_fallback_set_then_overwrite" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L227", + "weight": 1.0, + "source": "lims_test_keyring_store_test_fallback_set_then_overwrite", + "target": "lims_keyring_store_keyringstore" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L71", + "source_location": "L237", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", - "target": "lims_test_keyring_store_inmemorykeyring" + "source": "lims_test_keyring_store_rationale_237", + "target": "lims_test_keyring_store_test_keyring_set_failure_falls_back" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L241", + "weight": 1.0, + "source": "lims_test_keyring_store_test_keyring_set_failure_falls_back", + "target": "lims_keyring_store_keyringstore" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L80", + "source_location": "L250", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_get_returns_none_for_missing", - "target": "lims_test_keyring_store_inmemorykeyring" + "source": "lims_test_keyring_store_rationale_250", + "target": "lims_test_keyring_store_test_is_keyring_available_false_on_unexpected_exception" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L265", + "weight": 1.0, + "source": "lims_test_keyring_store_test_is_keyring_available_false_on_unexpected_exception", + "target": "lims_keyring_store_keyringstore" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L86", + "source_location": "L270", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_delete_missing_is_silent", - "target": "lims_test_keyring_store_inmemorykeyring" + "source": "lims_test_keyring_store_rationale_270", + "target": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L274", + "weight": 1.0, + "source": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file", + "target": "lims_keyring_store_keyringstore" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L94", + "source_location": "L282", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_is_keyring_available_true", - "target": "lims_test_keyring_store_inmemorykeyring" + "source": "lims_test_keyring_store_rationale_282", + "target": "lims_test_keyring_store_test_fallback_delete_when_no_file" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L386", + "source_location": "L284", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", - "target": "lims_test_keyring_store_inmemorykeyring" + "source": "lims_test_keyring_store_test_fallback_delete_when_no_file", + "target": "lims_keyring_store_keyringstore" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L26", + "source_location": "L293", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_26", - "target": "lims_test_keyring_store_inmemorykeyring" + "source": "lims_test_keyring_store_rationale_293", + "target": "lims_test_keyring_store_test_fallback_delete_when_username_absent" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L21", - "weight": 0.8, - "confidence_score": 0.5, - "source": "lims_test_keyring_store_inmemorykeyring", - "target": "exlab_wizard_errors_keyringunavailableerror" + "source_location": "L295", + "weight": 1.0, + "source": "lims_test_keyring_store_test_fallback_delete_when_username_absent", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "uses", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L307", + "weight": 1.0, + "confidence_score": 1.0, + "source": "lims_test_keyring_store_rationale_307", + "target": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises" + }, + { + "relation": "calls", + "context": "call", "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "lims_test_keyring_store_inmemorykeyring", + "source_location": "L316", + "weight": 1.0, + "source": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises", "target": "lims_keyring_store_keyringstore" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L50", + "source_location": "L325", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_brokenkeyring", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_keyring_store_rationale_325", + "target": "lims_test_keyring_store_test_fallback_plaintext_must_be_object" }, { - "relation": "method", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L53", + "source_location": "L352", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_brokenkeyring", - "target": "lims_test_keyring_store_brokenkeyring_set_password" + "source": "lims_test_keyring_store_test_fallback_plaintext_must_be_object", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L56", + "source_location": "L361", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_brokenkeyring", - "target": "lims_test_keyring_store_brokenkeyring_delete_password" + "source": "lims_test_keyring_store_rationale_361", + "target": "lims_test_keyring_store_test_envelope_must_be_object" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_keyring_store.py", + "source_location": "L365", + "weight": 1.0, + "source": "lims_test_keyring_store_test_envelope_must_be_object", + "target": "lims_keyring_store_keyringstore" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L100", + "source_location": "L374", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_is_keyring_available_false_on_broken_backend", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "lims_test_keyring_store_rationale_374", + "target": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L107", + "source_location": "L379", + "weight": 1.0, + "source": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", + "target": "lims_keyring_store_keyringstore" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/lims/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_round_trip", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "lims_init_rationale_1", + "target": "tests_unit_lims_init_py" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L123", + "source_file": "src/exlab_wizard/lims/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "lims_init_rationale_1", + "target": "src_exlab_wizard_lims_init_py" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L139", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_make_client" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L156", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_no_passphrase_raises", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_login_happy_path" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L163", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_empty_passphrase_raises", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_login_uses_explicit_password_over_provider" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L171", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_file_format_integrity", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_login_wrong_password_raises" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L189", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L69", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_corrupt_file_raises", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_login_with_no_password_raises_config_error" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L203", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_unsupported_version_raises", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_list_projects_returns_typed_rows" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L215", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_missing_fields_raises", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_list_projects_status_filter" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L226", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_set_then_overwrite", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_get_project_by_uid" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L240", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_keyring_set_failure_falls_back", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_get_project_by_short_id" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L273", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L146", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_get_project_404_returns_none" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L283", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L157", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete_when_no_file", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_get_me" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L294", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete_when_username_absent", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_health_check_ok" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L315", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L182", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_health_check_failure_returns_status" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L351", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L197", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_plaintext_must_be_object", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_relogin_after_401" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L364", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L213", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_envelope_must_be_object", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_health_check_returns_non200_status" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L378", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L243", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", - "target": "lims_test_keyring_store_brokenkeyring" + "source": "tests_unit_lims_test_client_py", + "target": "lims_test_client_test_endpoint_strips_trailing_slash" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L46", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_46", - "target": "lims_test_keyring_store_brokenkeyring" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L21", - "weight": 0.8, - "confidence_score": 0.5, - "source": "lims_test_keyring_store_brokenkeyring", - "target": "exlab_wizard_errors_keyringunavailableerror" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "lims_test_keyring_store_brokenkeyring", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_client_rationale_1", + "target": "tests_unit_lims_test_client_py" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L74", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_login_happy_path", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L82", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_get_returns_none_for_missing", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_login_uses_explicit_password_over_provider", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L119", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_round_trip", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_login_wrong_password_raises", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L135", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_login_with_no_password_raises_config_error", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L152", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L81", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_list_projects_returns_typed_rows", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L195", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_corrupt_file_raises", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_list_projects_status_filter", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L209", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L124", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_unsupported_version_raises", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_get_project_by_uid", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L221", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L136", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_missing_fields_raises", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_get_project_by_short_id", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L233", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_set_then_overwrite", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_get_project_404_returns_none", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L246", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_keyring_set_failure_falls_back", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_get_me", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L278", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_health_check_ok", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L303", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete_when_username_absent", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_health_check_failure_returns_status", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L321", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L202", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_relogin_after_401", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L357", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L233", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_plaintext_must_be_object", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_health_check_returns_non200_status", + "target": "lims_test_client_make_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L370", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L23", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_envelope_must_be_object", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_make_client", + "target": "lims_client_limsclient" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L391", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L36", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", - "target": "lims_test_keyring_store_brokenkeyring_get_password" + "source": "lims_test_client_test_login_happy_path", + "target": "fixtures_mock_lims_make_mock_lims_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L73", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L49", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", - "target": "lims_test_keyring_store_brokenkeyring_set_password" + "source": "lims_test_client_test_login_uses_explicit_password_over_provider", + "target": "fixtures_mock_lims_make_mock_lims_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L112", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_round_trip", - "target": "lims_test_keyring_store_brokenkeyring_set_password" + "source": "lims_test_client_test_login_wrong_password_raises", + "target": "fixtures_mock_lims_make_mock_lims_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L128", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L70", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete", - "target": "lims_test_keyring_store_brokenkeyring_set_password" + "source": "lims_test_client_test_login_with_no_password_raises_config_error", + "target": "fixtures_mock_lims_make_mock_lims_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L144", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L80", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises", - "target": "lims_test_keyring_store_brokenkeyring_set_password" + "source": "lims_test_client_test_list_projects_returns_typed_rows", + "target": "fixtures_mock_lims_make_mock_lims_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L159", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L112", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_no_passphrase_raises", - "target": "lims_test_keyring_store_brokenkeyring_set_password" + "source": "lims_test_client_test_list_projects_status_filter", + "target": "fixtures_mock_lims_make_mock_lims_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L166", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L123", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_empty_passphrase_raises", - "target": "lims_test_keyring_store_brokenkeyring_set_password" + "source": "lims_test_client_test_get_project_by_uid", + "target": "fixtures_mock_lims_make_mock_lims_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L176", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L135", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_file_format_integrity", - "target": "lims_test_keyring_store_brokenkeyring_set_password" + "source": "lims_test_client_test_get_project_by_short_id", + "target": "fixtures_mock_lims_make_mock_lims_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L231", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L147", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_set_then_overwrite", - "target": "lims_test_keyring_store_brokenkeyring_set_password" + "source": "lims_test_client_test_get_project_404_returns_none", + "target": "fixtures_mock_lims_make_mock_lims_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L245", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L158", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_keyring_set_failure_falls_back", - "target": "lims_test_keyring_store_brokenkeyring_set_password" + "source": "lims_test_client_test_get_me", + "target": "fixtures_mock_lims_make_mock_lims_app" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L170", + "weight": 1.0, + "source": "lims_test_client_test_health_check_ok", + "target": "fixtures_mock_lims_make_mock_lims_app" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L299", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L183", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete_when_username_absent", - "target": "lims_test_keyring_store_brokenkeyring_set_password" + "source": "lims_test_client_rationale_183", + "target": "lims_test_client_test_health_check_failure_returns_status" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L184", + "weight": 1.0, + "source": "lims_test_client_test_health_check_failure_returns_status", + "target": "fixtures_mock_lims_make_mock_lims_app" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L383", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L198", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", - "target": "lims_test_keyring_store_brokenkeyring_set_password" + "source": "lims_test_client_rationale_198", + "target": "lims_test_client_test_relogin_after_401" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L201", + "weight": 1.0, + "source": "lims_test_client_test_relogin_after_401", + "target": "fixtures_mock_lims_make_mock_lims_app" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L75", + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L214", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", - "target": "lims_test_keyring_store_brokenkeyring_delete_password" + "source": "lims_test_client_rationale_214", + "target": "lims_test_client_test_health_check_returns_non200_status" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/lims/test_client.py", + "source_location": "L244", + "weight": 1.0, + "source": "lims_test_client_test_endpoint_strips_trailing_slash", + "target": "lims_client_limsclient" + }, + { + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L90", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_delete_missing_is_silent", - "target": "lims_test_keyring_store_brokenkeyring_delete_password" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_project" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L129", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete", - "target": "lims_test_keyring_store_brokenkeyring_delete_password" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_init_creates_table_idempotent" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L289", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete_when_no_file", - "target": "lims_test_keyring_store_brokenkeyring_delete_password" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_upsert_many_then_list" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L302", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete_when_username_absent", - "target": "lims_test_keyring_store_brokenkeyring_delete_password" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_upsert_many_empty_is_noop" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L71", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L70", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_upsert_updates_existing_row" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L80", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_get_returns_none_for_missing", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_get_project_by_uid_or_short_id" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L86", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_delete_missing_is_silent", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_get_project_missing_returns_none" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L94", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_is_keyring_available_true", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_list_projects_status_filter" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L100", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_is_keyring_available_false_on_broken_backend", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_is_fresh_true_when_within_ttl" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L107", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_round_trip", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_is_fresh_false_when_stale" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L123", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L156", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_is_fresh_false_when_empty" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L139", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L165", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_is_fresh_handles_zulu_suffix" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L156", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_no_passphrase_raises", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_is_fresh_ignores_invalid_timestamp" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L163", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L192", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_empty_passphrase_raises", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_endpoint_isolates_rows" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L171", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L206", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_file_format_integrity", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_require_conn_before_init_raises" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L189", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L212", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_corrupt_file_raises", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_close_is_idempotent" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L203", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L220", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_unsupported_version_raises", - "target": "lims_test_keyring_store_swap_keyring" + "source": "tests_unit_lims_test_cache_py", + "target": "lims_test_cache_test_is_fresh_handles_naive_timestamp" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L215", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_missing_fields_raises", - "target": "lims_test_keyring_store_swap_keyring" + "source": "lims_test_cache_rationale_1", + "target": "tests_unit_lims_test_cache_py" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L226", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_set_then_overwrite", - "target": "lims_test_keyring_store_swap_keyring" + "source": "lims_test_cache_test_upsert_many_then_list", + "target": "lims_test_cache_project" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L240", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_keyring_set_failure_falls_back", - "target": "lims_test_keyring_store_swap_keyring" + "source": "lims_test_cache_test_upsert_updates_existing_row", + "target": "lims_test_cache_project" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L264", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L99", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_is_keyring_available_false_on_unexpected_exception", - "target": "lims_test_keyring_store_swap_keyring" + "source": "lims_test_cache_test_get_project_by_uid_or_short_id", + "target": "lims_test_cache_project" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L273", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L125", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file", - "target": "lims_test_keyring_store_swap_keyring" + "source": "lims_test_cache_test_list_projects_status_filter", + "target": "lims_test_cache_project" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L283", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L139", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete_when_no_file", - "target": "lims_test_keyring_store_swap_keyring" + "source": "lims_test_cache_test_is_fresh_true_when_within_ttl", + "target": "lims_test_cache_project" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L294", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L150", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete_when_username_absent", - "target": "lims_test_keyring_store_swap_keyring" + "source": "lims_test_cache_test_is_fresh_false_when_stale", + "target": "lims_test_cache_project" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L315", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L172", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises", - "target": "lims_test_keyring_store_swap_keyring" + "source": "lims_test_cache_test_is_fresh_handles_zulu_suffix", + "target": "lims_test_cache_project" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L351", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_fallback_plaintext_must_be_object", - "target": "lims_test_keyring_store_swap_keyring" + "source": "lims_test_cache_test_is_fresh_ignores_invalid_timestamp", + "target": "lims_test_cache_project" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L364", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L196", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_envelope_must_be_object", - "target": "lims_test_keyring_store_swap_keyring" + "source": "lims_test_cache_test_endpoint_isolates_rows", + "target": "lims_test_cache_project" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L378", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L227", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", - "target": "lims_test_keyring_store_swap_keyring" + "source": "lims_test_cache_test_is_fresh_handles_naive_timestamp", + "target": "lims_test_cache_project" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L72", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L26", "weight": 1.0, - "source": "lims_test_keyring_store_test_set_get_delete_via_os_keyring", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_project", + "target": "lims_schemas_limsproject" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L81", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L40", "weight": 1.0, - "source": "lims_test_keyring_store_test_get_returns_none_for_missing", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_test_init_creates_table_idempotent", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L87", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L48", "weight": 1.0, - "source": "lims_test_keyring_store_test_delete_missing_is_silent", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_test_upsert_many_then_list", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L95", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L60", "weight": 1.0, - "source": "lims_test_keyring_store_test_is_keyring_available_true", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_test_upsert_many_empty_is_noop", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L101", - "weight": 1.0, - "source": "lims_test_keyring_store_test_is_keyring_available_false_on_broken_backend", - "target": "lims_keyring_store_keyringstore" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L106", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L71", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_106", - "target": "lims_test_keyring_store_test_fallback_round_trip" + "source": "lims_test_cache_test_upsert_updates_existing_row", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L108", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L77", "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_round_trip", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_test_upsert_updates_existing_row", + "target": "lims_schemas_limsproject" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L124", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L96", "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_test_get_project_by_uid_or_short_id", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L140", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L109", "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_wrong_passphrase_raises", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_test_get_project_missing_returns_none", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L157", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L119", "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_no_passphrase_raises", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_test_list_projects_status_filter", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L164", - "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_empty_passphrase_raises", - "target": "lims_keyring_store_keyringstore" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L170", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L136", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_170", - "target": "lims_test_keyring_store_test_fallback_file_format_integrity" + "source": "lims_test_cache_test_is_fresh_true_when_within_ttl", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L172", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L146", "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_file_format_integrity", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_test_is_fresh_false_when_stale", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L190", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L157", "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_corrupt_file_raises", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_test_is_fresh_false_when_empty", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L204", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L166", "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_unsupported_version_raises", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_test_is_fresh_handles_zulu_suffix", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L216", - "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_missing_fields_raises", - "target": "lims_keyring_store_keyringstore" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L225", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L180", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_225", - "target": "lims_test_keyring_store_test_fallback_set_then_overwrite" + "source": "lims_test_cache_test_is_fresh_ignores_invalid_timestamp", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L227", - "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_set_then_overwrite", - "target": "lims_keyring_store_keyringstore" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L237", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L193", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_237", - "target": "lims_test_keyring_store_test_keyring_set_failure_falls_back" + "source": "lims_test_cache_test_endpoint_isolates_rows", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L241", - "weight": 1.0, - "source": "lims_test_keyring_store_test_keyring_set_failure_falls_back", - "target": "lims_keyring_store_keyringstore" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L250", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L207", "weight": 1.0, - "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_250", - "target": "lims_test_keyring_store_test_is_keyring_available_false_on_unexpected_exception" + "source": "lims_test_cache_test_require_conn_before_init_raises", + "target": "lims_cache_limscache" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L265", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L213", "weight": 1.0, - "source": "lims_test_keyring_store_test_is_keyring_available_false_on_unexpected_exception", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_test_close_is_idempotent", + "target": "lims_cache_limscache" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L270", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L221", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_270", - "target": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file" + "source": "lims_test_cache_rationale_221", + "target": "lims_test_cache_test_is_fresh_handles_naive_timestamp" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L274", + "source_file": "tests/unit/lims/test_cache.py", + "source_location": "L222", "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_get_when_no_secrets_file", - "target": "lims_keyring_store_keyringstore" + "source": "lims_test_cache_test_is_fresh_handles_naive_timestamp", + "target": "lims_cache_limscache" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L282", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_282", - "target": "lims_test_keyring_store_test_fallback_delete_when_no_file" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L284", - "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete_when_no_file", - "target": "lims_keyring_store_keyringstore" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_clean_input" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L293", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L85", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_293", - "target": "lims_test_keyring_store_test_fallback_delete_when_username_absent" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L295", - "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_delete_when_username_absent", - "target": "lims_keyring_store_keyringstore" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_split_path_segments_posix_path" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L307", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_307", - "target": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_split_path_segments_windows_path" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L316", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L96", "weight": 1.0, - "source": "lims_test_keyring_store_test_load_fallback_unreadable_path_raises", - "target": "lims_keyring_store_keyringstore" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_split_path_segments_empty_string" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L325", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_325", - "target": "lims_test_keyring_store_test_fallback_plaintext_must_be_object" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_split_path_segments_drops_trailing_slash" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L352", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L110", "weight": 1.0, - "source": "lims_test_keyring_store_test_fallback_plaintext_must_be_object", - "target": "lims_keyring_store_keyringstore" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_validator_default_config_uses_spec_defaults" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L361", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_361", - "target": "lims_test_keyring_store_test_envelope_must_be_object" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_validator_accepts_explicit_config" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L365", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L131", "weight": 1.0, - "source": "lims_test_keyring_store_test_envelope_must_be_object", - "target": "lims_keyring_store_keyringstore" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_clean_input_returns_empty_list" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L374", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L136", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_keyring_store_rationale_374", - "target": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_clean_input_with_test_run_returns_empty_list" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_keyring_store.py", - "source_location": "L379", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L152", "weight": 1.0, - "source": "lims_test_keyring_store_test_get_consults_fallback_when_keyring_missing", - "target": "lims_keyring_store_keyringstore" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_unresolved_placeholder_in_path_segment_triggers_finding" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L167", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_init_rationale_1", - "target": "tests_unit_lims_init_py" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_unresolved_placeholder_in_file_name_triggers_finding" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/lims/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L183", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_init_rationale_1", - "target": "src_exlab_wizard_lims_init_py" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_leftover_jinja_marker_in_file_content_triggers_finding" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L22", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_make_client" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_illegal_filesystem_character_in_file_name_triggers_finding" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L35", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L211", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_login_happy_path" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_reserved_filesystem_name_triggers_finding" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L48", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L225", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_login_uses_explicit_password_over_provider" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_run_leaf_with_test_run_kind_triggers_mode_prefix_mismatch" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L59", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L238", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_login_wrong_password_raises" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_test_run_leaf_with_experimental_run_kind_triggers_mode_prefix_mismatch" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L69", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L254", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_login_with_no_password_raises_config_error" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_missing_required_field_triggers_soft_tier_finding" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L79", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L272", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_list_projects_returns_typed_rows" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_required_field_present_does_not_trigger_finding" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L93", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L288", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_list_projects_status_filter" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_malformed_yaml_front_matter_triggers_soft_tier_finding" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L122", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L304", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_get_project_by_uid" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_no_readme_md_skips_front_matter_rule" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L134", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L320", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_get_project_by_short_id" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_multiple_findings_aggregate_in_one_call" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L146", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L342", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_get_project_404_returns_none" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_findings_are_sorted_with_hard_tier_first" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L157", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L366", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_get_me" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_findings_sorted_lexicographically_within_same_tier" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L169", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L386", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_health_check_ok" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_findings_carry_run_path_from_proposed_path" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L182", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L395", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_health_check_failure_returns_status" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_findings_default_audit_flags_to_false" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L197", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L408", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_relogin_after_401" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_findings_are_finding_instances" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L213", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L424", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_health_check_returns_non200_status" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_creation_validation_input_is_frozen" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L243", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L431", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_client_py", - "target": "lims_test_client_test_endpoint_strips_trailing_slash" + "source": "tests_unit_validator_test_engine_creation_py", + "target": "validator_test_engine_creation_test_creation_validation_input_defaults" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", + "source_file": "tests/unit/validator/test_engine_creation.py", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_rationale_1", - "target": "tests_unit_lims_test_client_py" + "source": "validator_test_engine_creation_rationale_1", + "target": "tests_unit_validator_test_engine_creation_py" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L37", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L132", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_login_happy_path", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_clean_input_returns_empty_list", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L50", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L139", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_login_uses_explicit_password_over_provider", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_clean_input_with_test_run_returns_empty_list", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L61", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L155", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_login_wrong_password_raises", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_unresolved_placeholder_in_path_segment_triggers_finding", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L71", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_login_with_no_password_raises_config_error", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_unresolved_placeholder_in_file_name_triggers_finding", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L81", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_list_projects_returns_typed_rows", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_leftover_jinja_marker_in_file_content_triggers_finding", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L113", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L198", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_list_projects_status_filter", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_illegal_filesystem_character_in_file_name_triggers_finding", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L124", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L214", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_get_project_by_uid", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_reserved_filesystem_name_triggers_finding", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L136", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L228", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_get_project_by_short_id", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_run_leaf_with_test_run_kind_triggers_mode_prefix_mismatch", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L148", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L241", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_get_project_404_returns_none", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_test_run_leaf_with_experimental_run_kind_triggers_mode_prefix_mismatch", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L159", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L257", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_get_me", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_missing_required_field_triggers_soft_tier_finding", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L171", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L275", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_health_check_ok", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_required_field_present_does_not_trigger_finding", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L185", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L291", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_health_check_failure_returns_status", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_malformed_yaml_front_matter_triggers_soft_tier_finding", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L202", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L307", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_relogin_after_401", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_no_readme_md_skips_front_matter_rule", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L233", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L323", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_test_health_check_returns_non200_status", - "target": "lims_test_client_make_client" + "source": "validator_test_engine_creation_test_multiple_findings_aggregate_in_one_call", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L23", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L345", "weight": 1.0, - "source": "lims_test_client_make_client", - "target": "lims_client_limsclient" + "confidence_score": 1.0, + "source": "validator_test_engine_creation_test_findings_are_sorted_with_hard_tier_first", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L36", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L369", "weight": 1.0, - "source": "lims_test_client_test_login_happy_path", - "target": "fixtures_mock_lims_make_mock_lims_app" + "confidence_score": 1.0, + "source": "validator_test_engine_creation_test_findings_sorted_lexicographically_within_same_tier", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L49", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L389", "weight": 1.0, - "source": "lims_test_client_test_login_uses_explicit_password_over_provider", - "target": "fixtures_mock_lims_make_mock_lims_app" + "confidence_score": 1.0, + "source": "validator_test_engine_creation_test_findings_carry_run_path_from_proposed_path", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L60", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L398", "weight": 1.0, - "source": "lims_test_client_test_login_wrong_password_raises", - "target": "fixtures_mock_lims_make_mock_lims_app" + "confidence_score": 1.0, + "source": "validator_test_engine_creation_test_findings_default_audit_flags_to_false", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L70", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L411", "weight": 1.0, - "source": "lims_test_client_test_login_with_no_password_raises_config_error", - "target": "fixtures_mock_lims_make_mock_lims_app" + "confidence_score": 1.0, + "source": "validator_test_engine_creation_test_findings_are_finding_instances", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L80", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L426", "weight": 1.0, - "source": "lims_test_client_test_list_projects_returns_typed_rows", - "target": "fixtures_mock_lims_make_mock_lims_app" + "confidence_score": 1.0, + "source": "validator_test_engine_creation_test_creation_validation_input_is_frozen", + "target": "validator_test_engine_creation_clean_input" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L112", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L39", "weight": 1.0, - "source": "lims_test_client_test_list_projects_status_filter", - "target": "fixtures_mock_lims_make_mock_lims_app" + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_39", + "target": "validator_test_engine_creation_clean_input" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L123", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L77", "weight": 1.0, - "source": "lims_test_client_test_get_project_by_uid", - "target": "fixtures_mock_lims_make_mock_lims_app" + "source": "validator_test_engine_creation_clean_input", + "target": "validator_engine_creationvalidationinput" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L135", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L86", "weight": 1.0, - "source": "lims_test_client_test_get_project_by_short_id", - "target": "fixtures_mock_lims_make_mock_lims_app" + "source": "validator_test_engine_creation_test_split_path_segments_posix_path", + "target": "validator_engine_split_path_segments" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L147", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L91", "weight": 1.0, - "source": "lims_test_client_test_get_project_404_returns_none", - "target": "fixtures_mock_lims_make_mock_lims_app" + "source": "validator_test_engine_creation_test_split_path_segments_windows_path", + "target": "validator_engine_split_path_segments" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L158", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L97", "weight": 1.0, - "source": "lims_test_client_test_get_me", - "target": "fixtures_mock_lims_make_mock_lims_app" + "source": "validator_test_engine_creation_test_split_path_segments_empty_string", + "target": "validator_engine_split_path_segments" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L170", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L101", "weight": 1.0, - "source": "lims_test_client_test_health_check_ok", - "target": "fixtures_mock_lims_make_mock_lims_app" + "source": "validator_test_engine_creation_test_split_path_segments_drops_trailing_slash", + "target": "validator_engine_split_path_segments" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L183", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L111", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_rationale_183", - "target": "lims_test_client_test_health_check_failure_returns_status" + "source": "validator_test_engine_creation_rationale_111", + "target": "validator_test_engine_creation_test_validator_default_config_uses_spec_defaults" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L184", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L120", "weight": 1.0, - "source": "lims_test_client_test_health_check_failure_returns_status", - "target": "fixtures_mock_lims_make_mock_lims_app" + "source": "validator_test_engine_creation_test_validator_accepts_explicit_config", + "target": "config_models_validatorconfig" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L198", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L137", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_rationale_198", - "target": "lims_test_client_test_relogin_after_401" + "source": "validator_test_engine_creation_rationale_137", + "target": "validator_test_engine_creation_test_clean_input_with_test_run_returns_empty_list" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L153", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_153", + "target": "validator_test_engine_creation_test_unresolved_placeholder_in_path_segment_triggers_finding" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L196", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_196", + "target": "validator_test_engine_creation_test_illegal_filesystem_character_in_file_name_triggers_finding" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L212", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_212", + "target": "validator_test_engine_creation_test_reserved_filesystem_name_triggers_finding" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L226", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_226", + "target": "validator_test_engine_creation_test_run_leaf_with_test_run_kind_triggers_mode_prefix_mismatch" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L239", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_239", + "target": "validator_test_engine_creation_test_test_run_leaf_with_experimental_run_kind_triggers_mode_prefix_mismatch" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L255", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_255", + "target": "validator_test_engine_creation_test_missing_required_field_triggers_soft_tier_finding" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L273", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_273", + "target": "validator_test_engine_creation_test_required_field_present_does_not_trigger_finding" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L289", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_289", + "target": "validator_test_engine_creation_test_malformed_yaml_front_matter_triggers_soft_tier_finding" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L305", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_305", + "target": "validator_test_engine_creation_test_no_readme_md_skips_front_matter_rule" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L321", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_321", + "target": "validator_test_engine_creation_test_multiple_findings_aggregate_in_one_call" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L343", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_343", + "target": "validator_test_engine_creation_test_findings_are_sorted_with_hard_tier_first" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L367", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_367", + "target": "validator_test_engine_creation_test_findings_sorted_lexicographically_within_same_tier" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L387", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_387", + "target": "validator_test_engine_creation_test_findings_carry_run_path_from_proposed_path" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L396", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_396", + "target": "validator_test_engine_creation_test_findings_default_audit_flags_to_false" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L409", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_409", + "target": "validator_test_engine_creation_test_findings_are_finding_instances" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L425", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_425", + "target": "validator_test_engine_creation_test_creation_validation_input_is_frozen" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L432", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_creation_rationale_432", + "target": "validator_test_engine_creation_test_creation_validation_input_defaults" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L201", + "source_file": "tests/unit/validator/test_engine_creation.py", + "source_location": "L433", "weight": 1.0, - "source": "lims_test_client_test_relogin_after_401", - "target": "fixtures_mock_lims_make_mock_lims_app" + "source": "validator_test_engine_creation_test_creation_validation_input_defaults", + "target": "validator_engine_creationvalidationinput" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_reconfigure.py", + "source_location": "L16", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_validator_test_engine_reconfigure_py", + "target": "validator_test_engine_reconfigure_test_reconfigure_refreshes_scan_limits_and_roots" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_reconfigure.py", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_validator_test_engine_reconfigure_py", + "target": "validator_test_engine_reconfigure_test_reconfigure_defaults_to_empty_roots" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L214", + "source_file": "tests/unit/validator/test_engine_reconfigure.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_client_rationale_214", - "target": "lims_test_client_test_health_check_returns_non200_status" + "source": "validator_test_engine_reconfigure_rationale_1", + "target": "tests_unit_validator_test_engine_reconfigure_py" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_client.py", - "source_location": "L244", + "source_file": "tests/unit/validator/test_engine_reconfigure.py", + "source_location": "L18", "weight": 1.0, - "source": "lims_test_client_test_endpoint_strips_trailing_slash", - "target": "lims_client_limsclient" + "source": "validator_test_engine_reconfigure_test_reconfigure_refreshes_scan_limits_and_roots", + "target": "config_models_validatorconfig" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_engine_reconfigure.py", + "source_location": "L39", + "weight": 1.0, + "source": "validator_test_engine_reconfigure_test_reconfigure_defaults_to_empty_roots", + "target": "config_models_validatorconfig" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L19", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_project" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_make_finding" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L39", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_init_creates_table_idempotent" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_finding_instantiation_with_all_fields" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L47", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_upsert_many_then_list" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_finding_minimum_required_fields" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L59", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_upsert_many_empty_is_noop" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_finding_is_frozen" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L70", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_upsert_updates_existing_row" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_to_dict_contains_all_spec_keys" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L95", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L103", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_get_project_by_uid_or_short_id" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_to_dict_values_match_field_values" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L108", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_get_project_missing_returns_none" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_to_dict_from_dict_round_trip_identity" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L118", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_list_projects_status_filter" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_from_dict_accepts_minimal_payload" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", + "source_file": "tests/unit/validator/test_findings.py", "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_is_fresh_true_when_within_ttl" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_from_dict_ignores_unknown_keys" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L145", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L149", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_is_fresh_false_when_stale" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_to_dict_preserves_none_matched_token" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L156", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_is_fresh_false_when_empty" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_finding_is_hashable" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L165", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L176", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_is_fresh_handles_zulu_suffix" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_findings_in_set_dedupe_by_value" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L179", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L184", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_is_fresh_ignores_invalid_timestamp" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_findings_in_set_distinguish_by_value" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L192", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L198", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_endpoint_isolates_rows" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_findings_can_be_sorted_by_to_dict_key" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", + "source_file": "tests/unit/validator/test_findings.py", "source_location": "L206", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_require_conn_before_init_raises" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_findings_sort_by_tier_then_rule_then_path" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L212", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L224", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_close_is_idempotent" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_equality_with_same_field_values" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L220", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L230", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_lims_test_cache_py", - "target": "lims_test_cache_test_is_fresh_handles_naive_timestamp" + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_inequality_when_one_field_differs" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L236", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_finding_equality_is_not_identity" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L243", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_validator_test_findings_py", + "target": "validator_test_findings_test_audit_mode_flags_round_trip" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", + "source_file": "tests/unit/validator/test_findings.py", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_cache_rationale_1", - "target": "tests_unit_lims_test_cache_py" + "source": "validator_test_findings_rationale_1", + "target": "tests_unit_validator_test_findings_py" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L51", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_cache_test_upsert_many_then_list", - "target": "lims_test_cache_project" + "source": "validator_test_findings_test_finding_instantiation_with_all_fields", + "target": "validator_test_findings_make_finding" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L74", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_cache_test_upsert_updates_existing_row", - "target": "lims_test_cache_project" + "source": "validator_test_findings_test_finding_is_frozen", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L87", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_test_to_dict_contains_all_spec_keys", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L104", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_test_to_dict_values_match_field_values", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L114", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_test_to_dict_from_dict_round_trip_identity", + "target": "validator_test_findings_make_finding" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L99", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L170", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_test_finding_is_hashable", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L178", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_test_findings_in_set_dedupe_by_value", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L187", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_test_findings_in_set_distinguish_by_value", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L200", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_test_findings_can_be_sorted_by_to_dict_key", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L208", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_test_findings_sort_by_tier_then_rule_then_path", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L225", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_test_equality_with_same_field_values", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L231", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_test_inequality_when_one_field_differs", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L237", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_test_finding_equality_is_not_identity", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L247", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_test_audit_mode_flags_round_trip", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_rationale_24", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/validator/rules.py", + "source_location": "L381", + "weight": 1.0, + "source": "validator_rules_check_mode_prefix_mismatch", + "target": "validator_test_findings_make_finding" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L59", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_findings_rationale_59", + "target": "validator_test_findings_test_finding_minimum_required_fields" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L75", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_cache_test_get_project_by_uid_or_short_id", - "target": "lims_test_cache_project" + "source": "validator_test_findings_rationale_75", + "target": "validator_test_findings_test_finding_is_frozen" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L125", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_cache_test_list_projects_status_filter", - "target": "lims_test_cache_project" + "source": "validator_test_findings_rationale_120", + "target": "validator_test_findings_test_from_dict_accepts_minimal_payload" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L139", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L136", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_cache_test_is_fresh_true_when_within_ttl", - "target": "lims_test_cache_project" + "source": "validator_test_findings_rationale_136", + "target": "validator_test_findings_test_from_dict_ignores_unknown_keys" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", + "source_file": "tests/unit/validator/test_findings.py", "source_location": "L150", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_cache_test_is_fresh_false_when_stale", - "target": "lims_test_cache_project" + "source": "validator_test_findings_rationale_150", + "target": "validator_test_findings_test_to_dict_preserves_none_matched_token" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L172", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L177", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_cache_test_is_fresh_handles_zulu_suffix", - "target": "lims_test_cache_project" + "source": "validator_test_findings_rationale_177", + "target": "validator_test_findings_test_findings_in_set_dedupe_by_value" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", + "source_file": "tests/unit/validator/test_findings.py", "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_cache_test_is_fresh_ignores_invalid_timestamp", - "target": "lims_test_cache_project" + "source": "validator_test_findings_rationale_185", + "target": "validator_test_findings_test_findings_in_set_distinguish_by_value" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L196", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L199", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_cache_test_endpoint_isolates_rows", - "target": "lims_test_cache_project" + "source": "validator_test_findings_rationale_199", + "target": "validator_test_findings_test_findings_can_be_sorted_by_to_dict_key" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L227", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L207", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_cache_test_is_fresh_handles_naive_timestamp", - "target": "lims_test_cache_project" + "source": "validator_test_findings_rationale_207", + "target": "validator_test_findings_test_findings_sort_by_tier_then_rule_then_path" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L26", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_findings.py", + "source_location": "L244", "weight": 1.0, - "source": "lims_test_cache_project", - "target": "lims_schemas_limsproject" + "confidence_score": 1.0, + "source": "validator_test_findings_rationale_244", + "target": "validator_test_findings_test_audit_mode_flags_round_trip" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L40", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/__init__.py", + "source_location": "L1", "weight": 1.0, - "source": "lims_test_cache_test_init_creates_table_idempotent", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "validator_init_rationale_1", + "target": "tests_unit_validator_init_py" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L48", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/validator/__init__.py", + "source_location": "L1", "weight": 1.0, - "source": "lims_test_cache_test_upsert_many_then_list", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "validator_init_rationale_1", + "target": "src_exlab_wizard_validator_init_py" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L60", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L37", "weight": 1.0, - "source": "lims_test_cache_test_upsert_many_empty_is_noop", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_angle_bracket_token_in_segment_fires" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L71", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L64", "weight": 1.0, - "source": "lims_test_cache_test_upsert_updates_existing_row", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_non_token_angle_brackets_pass" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L77", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L75", "weight": 1.0, - "source": "lims_test_cache_test_upsert_updates_existing_row", - "target": "lims_schemas_limsproject" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_jinja_var_marker_in_filename_fires" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L96", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L88", "weight": 1.0, - "source": "lims_test_cache_test_get_project_by_uid_or_short_id", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_jinja_block_marker_in_content_fires" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L109", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L101", "weight": 1.0, - "source": "lims_test_cache_test_get_project_missing_returns_none", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_unresolved_placeholder_in_content_fires" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L119", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L110", "weight": 1.0, - "source": "lims_test_cache_test_list_projects_status_filter", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_no_findings_on_clean_inputs" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L136", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L119", "weight": 1.0, - "source": "lims_test_cache_test_is_fresh_true_when_within_ttl", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_large_text_file_skipped_from_content_scan" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L146", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L131", "weight": 1.0, - "source": "lims_test_cache_test_is_fresh_false_when_stale", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_under_size_cap_content_is_scanned" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L157", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L142", "weight": 1.0, - "source": "lims_test_cache_test_is_fresh_false_when_empty", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_multiple_matches_in_same_input_each_yield_finding" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L166", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L152", "weight": 1.0, - "source": "lims_test_cache_test_is_fresh_handles_zulu_suffix", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_empty_file_contents_dict_is_path_only_scan" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_rules.py", "source_location": "L180", "weight": 1.0, - "source": "lims_test_cache_test_is_fresh_ignores_invalid_timestamp", - "target": "lims_cache_limscache" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L193", - "weight": 1.0, - "source": "lims_test_cache_test_endpoint_isolates_rows", - "target": "lims_cache_limscache" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L207", - "weight": 1.0, - "source": "lims_test_cache_test_require_conn_before_init_raises", - "target": "lims_cache_limscache" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L213", - "weight": 1.0, - "source": "lims_test_cache_test_close_is_idempotent", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_windows_illegal_char_in_segment_fires" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L221", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L191", "weight": 1.0, "confidence_score": 1.0, - "source": "lims_test_cache_rationale_221", - "target": "lims_test_cache_test_is_fresh_handles_naive_timestamp" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_nul_byte_in_name_fires" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/lims/test_cache.py", - "source_location": "L222", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L200", "weight": 1.0, - "source": "lims_test_cache_test_is_fresh_handles_naive_timestamp", - "target": "lims_cache_limscache" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_low_ascii_control_char_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L38", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L210", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_clean_input" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_trailing_dot_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L85", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L218", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_split_path_segments_posix_path" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_trailing_space_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L90", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L237", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_split_path_segments_windows_path" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_normal_names_pass" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L96", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L245", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_split_path_segments_empty_string" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_findings_have_hard_tier" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L100", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L276", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_split_path_segments_drops_trailing_slash" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_reserved_name_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L110", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L297", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_validator_default_config_uses_spec_defaults" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_non_reserved_name_passes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L119", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L320", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_validator_accepts_explicit_config" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_unsafe_project_name_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L131", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L340", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_clean_input_returns_empty_list" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_safe_project_name_passes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L136", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L349", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_clean_input_with_test_run_returns_empty_list" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_experimental_with_run_prefix_under_runs_parent_passes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L152", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L359", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_unresolved_placeholder_in_path_segment_triggers_finding" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_experimental_with_run_prefix_at_project_level_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L167", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L372", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_unresolved_placeholder_in_file_name_triggers_finding" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_experimental_with_test_run_prefix_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L183", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L382", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_leftover_jinja_marker_in_file_content_triggers_finding" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_experimental_under_test_runs_parent_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L195", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L391", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_illegal_filesystem_character_in_file_name_triggers_finding" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_test_with_test_run_prefix_under_test_runs_passes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L211", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L400", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_reserved_filesystem_name_triggers_finding" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_test_with_run_prefix_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L225", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L409", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_run_leaf_with_test_run_kind_triggers_mode_prefix_mismatch" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_test_with_test_run_prefix_but_wrong_parent_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L238", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L418", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_test_run_leaf_with_experimental_run_kind_triggers_mode_prefix_mismatch" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_run_kind_none_returns_no_findings" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L254", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L432", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_missing_required_field_triggers_soft_tier_finding" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_project_without_creation_json_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L272", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L439", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_required_field_present_does_not_trigger_finding" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_run_without_creation_json_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L288", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L445", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_malformed_yaml_front_matter_triggers_soft_tier_finding" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_equipment_without_creation_json_does_not_fire" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L304", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L450", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_no_readme_md_skips_front_matter_rule" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_project_with_creation_json_passes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L320", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L455", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_multiple_findings_aggregate_in_one_call" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_run_with_creation_json_passes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L342", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L465", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_findings_are_sorted_with_hard_tier_first" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_missing_id_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L366", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L479", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_findings_sorted_lexicographically_within_same_tier" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_empty_string_value_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L386", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L492", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_findings_carry_run_path_from_proposed_path" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_present_id_with_non_empty_value_passes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L395", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L504", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_findings_default_audit_flags_to_false" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_field_present_in_template_fields_layer_passes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L408", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L516", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_findings_are_finding_instances" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_none_readme_fields_treats_all_required_as_missing" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L424", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L524", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_creation_validation_input_is_frozen" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_value_explicit_none_fires" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L431", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L541", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_creation_py", - "target": "validator_test_engine_creation_test_creation_validation_input_defaults" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_well_formed_front_matter_passes" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L1", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L546", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_1", - "target": "tests_unit_validator_test_engine_creation_py" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_unterminated_front_matter_fires" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L132", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L554", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_clean_input_returns_empty_list", - "target": "validator_test_engine_creation_clean_input" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_malformed_yaml_in_block_fires" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L139", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L562", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_clean_input_with_test_run_returns_empty_list", - "target": "validator_test_engine_creation_clean_input" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_no_front_matter_passes" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L155", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L567", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_unresolved_placeholder_in_path_segment_triggers_finding", - "target": "validator_test_engine_creation_clean_input" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_empty_content_passes" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L169", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L571", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_unresolved_placeholder_in_file_name_triggers_finding", - "target": "validator_test_engine_creation_clean_input" + "source": "tests_unit_validator_test_rules_py", + "target": "validator_test_rules_test_front_matter_with_nested_yaml_passes" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L185", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_leftover_jinja_marker_in_file_content_triggers_finding", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_rationale_1", + "target": "tests_unit_validator_test_rules_py" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L198", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L38", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_illegal_filesystem_character_in_file_name_triggers_finding", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_angle_bracket_token_in_segment_fires", + "target": "validator_rules_check_unresolved_placeholder" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L214", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L65", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_reserved_filesystem_name_triggers_finding", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_non_token_angle_brackets_pass", + "target": "validator_rules_check_unresolved_placeholder" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L228", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L76", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_run_leaf_with_test_run_kind_triggers_mode_prefix_mismatch", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_jinja_var_marker_in_filename_fires", + "target": "validator_rules_check_unresolved_placeholder" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L241", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L89", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_test_run_leaf_with_experimental_run_kind_triggers_mode_prefix_mismatch", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_jinja_block_marker_in_content_fires", + "target": "validator_rules_check_unresolved_placeholder" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L257", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L102", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_missing_required_field_triggers_soft_tier_finding", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_unresolved_placeholder_in_content_fires", + "target": "validator_rules_check_unresolved_placeholder" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L275", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L111", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_required_field_present_does_not_trigger_finding", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_no_findings_on_clean_inputs", + "target": "validator_rules_check_unresolved_placeholder" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L291", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L123", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_malformed_yaml_front_matter_triggers_soft_tier_finding", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_large_text_file_skipped_from_content_scan", + "target": "validator_rules_check_unresolved_placeholder" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L307", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L134", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_no_readme_md_skips_front_matter_rule", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_under_size_cap_content_is_scanned", + "target": "validator_rules_check_unresolved_placeholder" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L323", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L143", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_multiple_findings_aggregate_in_one_call", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_multiple_matches_in_same_input_each_yield_finding", + "target": "validator_rules_check_unresolved_placeholder" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L345", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L153", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_findings_are_sorted_with_hard_tier_first", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_empty_file_contents_dict_is_path_only_scan", + "target": "validator_rules_check_unresolved_placeholder" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L369", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L181", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_findings_sorted_lexicographically_within_same_tier", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_windows_illegal_char_in_segment_fires", + "target": "validator_rules_check_illegal_filesystem_character" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L389", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L193", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_findings_carry_run_path_from_proposed_path", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_nul_byte_in_name_fires", + "target": "validator_rules_check_illegal_filesystem_character" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L398", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L203", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_findings_default_audit_flags_to_false", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_low_ascii_control_char_fires", + "target": "validator_rules_check_illegal_filesystem_character" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L411", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L211", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_findings_are_finding_instances", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_trailing_dot_fires", + "target": "validator_rules_check_illegal_filesystem_character" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L426", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L219", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_test_creation_validation_input_is_frozen", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_trailing_space_fires", + "target": "validator_rules_check_illegal_filesystem_character" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L39", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L238", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_39", - "target": "validator_test_engine_creation_clean_input" + "source": "validator_test_rules_test_normal_names_pass", + "target": "validator_rules_check_illegal_filesystem_character" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L77", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L246", "weight": 1.0, - "source": "validator_test_engine_creation_clean_input", - "target": "validator_engine_creationvalidationinput" + "source": "validator_test_rules_test_findings_have_hard_tier", + "target": "validator_rules_check_illegal_filesystem_character" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L86", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L277", "weight": 1.0, - "source": "validator_test_engine_creation_test_split_path_segments_posix_path", - "target": "validator_engine_split_path_segments" + "source": "validator_test_rules_test_reserved_name_fires", + "target": "validator_rules_check_reserved_filesystem_name" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L91", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L298", "weight": 1.0, - "source": "validator_test_engine_creation_test_split_path_segments_windows_path", - "target": "validator_engine_split_path_segments" + "source": "validator_test_rules_test_non_reserved_name_passes", + "target": "validator_rules_check_reserved_filesystem_name" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L97", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L321", "weight": 1.0, - "source": "validator_test_engine_creation_test_split_path_segments_empty_string", - "target": "validator_engine_split_path_segments" + "source": "validator_test_rules_test_unsafe_project_name_fires", + "target": "validator_rules_check_unsafe_project_name" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L101", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L341", "weight": 1.0, - "source": "validator_test_engine_creation_test_split_path_segments_drops_trailing_slash", - "target": "validator_engine_split_path_segments" + "source": "validator_test_rules_test_safe_project_name_passes", + "target": "validator_rules_check_unsafe_project_name" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L111", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L350", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_111", - "target": "validator_test_engine_creation_test_validator_default_config_uses_spec_defaults" + "source": "validator_test_rules_rationale_350", + "target": "validator_test_rules_test_experimental_with_run_prefix_under_runs_parent_passes" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L120", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L351", "weight": 1.0, - "source": "validator_test_engine_creation_test_validator_accepts_explicit_config", - "target": "config_models_validatorconfig" + "source": "validator_test_rules_test_experimental_with_run_prefix_under_runs_parent_passes", + "target": "validator_rules_check_mode_prefix_mismatch" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L137", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L360", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_137", - "target": "validator_test_engine_creation_test_clean_input_with_test_run_returns_empty_list" + "source": "validator_test_rules_rationale_360", + "target": "validator_test_rules_test_experimental_with_run_prefix_at_project_level_fires" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L153", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L362", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_153", - "target": "validator_test_engine_creation_test_unresolved_placeholder_in_path_segment_triggers_finding" + "source": "validator_test_rules_test_experimental_with_run_prefix_at_project_level_fires", + "target": "validator_rules_check_mode_prefix_mismatch" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L196", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L373", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_196", - "target": "validator_test_engine_creation_test_illegal_filesystem_character_in_file_name_triggers_finding" + "source": "validator_test_rules_test_experimental_with_test_run_prefix_fires", + "target": "validator_rules_check_mode_prefix_mismatch" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L212", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L383", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_212", - "target": "validator_test_engine_creation_test_reserved_filesystem_name_triggers_finding" + "source": "validator_test_rules_test_experimental_under_test_runs_parent_fires", + "target": "validator_rules_check_mode_prefix_mismatch" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L226", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L392", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_226", - "target": "validator_test_engine_creation_test_run_leaf_with_test_run_kind_triggers_mode_prefix_mismatch" + "source": "validator_test_rules_test_test_with_test_run_prefix_under_test_runs_passes", + "target": "validator_rules_check_mode_prefix_mismatch" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L239", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L401", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_239", - "target": "validator_test_engine_creation_test_test_run_leaf_with_experimental_run_kind_triggers_mode_prefix_mismatch" + "source": "validator_test_rules_test_test_with_run_prefix_fires", + "target": "validator_rules_check_mode_prefix_mismatch" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L255", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L410", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_255", - "target": "validator_test_engine_creation_test_missing_required_field_triggers_soft_tier_finding" + "source": "validator_test_rules_test_test_with_test_run_prefix_but_wrong_parent_fires", + "target": "validator_rules_check_mode_prefix_mismatch" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L273", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L419", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_273", - "target": "validator_test_engine_creation_test_required_field_present_does_not_trigger_finding" + "source": "validator_test_rules_test_run_kind_none_returns_no_findings", + "target": "validator_rules_check_mode_prefix_mismatch" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L289", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L433", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_289", - "target": "validator_test_engine_creation_test_malformed_yaml_front_matter_triggers_soft_tier_finding" + "source": "validator_test_rules_test_project_without_creation_json_fires", + "target": "validator_rules_check_orphan" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L440", + "weight": 1.0, + "source": "validator_test_rules_test_run_without_creation_json_fires", + "target": "validator_rules_check_orphan" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L305", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L446", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_305", - "target": "validator_test_engine_creation_test_no_readme_md_skips_front_matter_rule" + "source": "validator_test_rules_test_equipment_without_creation_json_does_not_fire", + "target": "validator_rules_check_orphan" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L321", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L451", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_321", - "target": "validator_test_engine_creation_test_multiple_findings_aggregate_in_one_call" + "source": "validator_test_rules_test_project_with_creation_json_passes", + "target": "validator_rules_check_orphan" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L343", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L456", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_343", - "target": "validator_test_engine_creation_test_findings_are_sorted_with_hard_tier_first" + "source": "validator_test_rules_test_run_with_creation_json_passes", + "target": "validator_rules_check_orphan" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L367", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L466", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_367", - "target": "validator_test_engine_creation_test_findings_sorted_lexicographically_within_same_tier" + "source": "validator_test_rules_test_missing_id_fires", + "target": "validator_rules_check_missing_required_field" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L387", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L480", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_387", - "target": "validator_test_engine_creation_test_findings_carry_run_path_from_proposed_path" + "source": "validator_test_rules_test_empty_string_value_fires", + "target": "validator_rules_check_missing_required_field" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L396", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L493", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_396", - "target": "validator_test_engine_creation_test_findings_default_audit_flags_to_false" + "source": "validator_test_rules_test_present_id_with_non_empty_value_passes", + "target": "validator_rules_check_missing_required_field" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L409", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L505", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_409", - "target": "validator_test_engine_creation_test_findings_are_finding_instances" + "source": "validator_test_rules_test_field_present_in_template_fields_layer_passes", + "target": "validator_rules_check_missing_required_field" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L425", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L517", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_425", - "target": "validator_test_engine_creation_test_creation_validation_input_is_frozen" + "source": "validator_test_rules_test_none_readme_fields_treats_all_required_as_missing", + "target": "validator_rules_check_missing_required_field" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L432", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L525", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_creation_rationale_432", - "target": "validator_test_engine_creation_test_creation_validation_input_defaults" + "source": "validator_test_rules_test_value_explicit_none_fires", + "target": "validator_rules_check_missing_required_field" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_engine_creation.py", - "source_location": "L433", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L543", "weight": 1.0, - "source": "validator_test_engine_creation_test_creation_validation_input_defaults", - "target": "validator_engine_creationvalidationinput" + "source": "validator_test_rules_test_well_formed_front_matter_passes", + "target": "validator_rules_check_malformed_yaml_front_matter" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_reconfigure.py", - "source_location": "L16", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L548", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_reconfigure_py", - "target": "validator_test_engine_reconfigure_test_reconfigure_refreshes_scan_limits_and_roots" + "source": "validator_test_rules_test_unterminated_front_matter_fires", + "target": "validator_rules_check_malformed_yaml_front_matter" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_reconfigure.py", - "source_location": "L37", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L557", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_reconfigure_py", - "target": "validator_test_engine_reconfigure_test_reconfigure_defaults_to_empty_roots" + "source": "validator_test_rules_test_malformed_yaml_in_block_fires", + "target": "validator_rules_check_malformed_yaml_front_matter" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_reconfigure.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L564", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_reconfigure_rationale_1", - "target": "tests_unit_validator_test_engine_reconfigure_py" + "source": "validator_test_rules_test_no_front_matter_passes", + "target": "validator_rules_check_malformed_yaml_front_matter" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_engine_reconfigure.py", - "source_location": "L18", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L568", "weight": 1.0, - "source": "validator_test_engine_reconfigure_test_reconfigure_refreshes_scan_limits_and_roots", - "target": "config_models_validatorconfig" + "source": "validator_test_rules_test_empty_content_passes", + "target": "validator_rules_check_malformed_yaml_front_matter" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_engine_reconfigure.py", - "source_location": "L39", + "source_file": "tests/unit/validator/test_rules.py", + "source_location": "L585", "weight": 1.0, - "source": "validator_test_engine_reconfigure_test_reconfigure_defaults_to_empty_roots", - "target": "config_models_validatorconfig" + "source": "validator_test_rules_test_front_matter_with_nested_yaml_passes", + "target": "validator_rules_check_malformed_yaml_front_matter" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L23", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L45", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_finding_instantiation_with_all_fields" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L58", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L96", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_finding_minimum_required_fields" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L74", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L140", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_finding_is_frozen" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L86", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L164", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_to_dict_contains_all_spec_keys" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_by_rule" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L103", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L173", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_to_dict_values_match_field_values" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_clean_tree_returns_empty_list" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L113", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L181", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_to_dict_from_dict_round_trip_identity" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L119", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L202", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_from_dict_accepts_minimal_payload" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L135", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L219", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_from_dict_ignores_unknown_keys" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L149", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L238", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_to_dict_preserves_none_matched_token" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_clean_project_name_has_no_unsafe_finding" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L169", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L246", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_finding_is_hashable" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L176", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L268", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_findings_in_set_dedupe_by_value" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L184", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L291", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_findings_in_set_distinguish_by_value" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L198", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L324", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_findings_can_be_sorted_by_to_dict_key" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L206", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L348", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_findings_sort_by_tier_then_rule_then_path" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L224", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L374", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_equality_with_same_field_values" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_respects_content_scan_max_mib_cap" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L230", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L398", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_inequality_when_one_field_differs" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_respects_extensions_allowlist" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L236", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L417", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_finding_equality_is_not_identity" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_detects_binary_files_via_null_byte_sniff" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L243", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L436", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_findings_py", - "target": "validator_test_findings_test_audit_mode_flags_round_trip" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_scans_text_file_content_when_within_limits" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L1", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L452", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_rationale_1", - "target": "tests_unit_validator_test_findings_py" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_findings_are_sorted_by_tier_then_rule_then_offending_path" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L46", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L474", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_finding_instantiation_with_all_fields", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_query_problems_is_alias_for_audit" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L76", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L487", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_finding_is_frozen", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_scope_equipment_id_resolves_to_configured_root" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L87", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L524", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_to_dict_contains_all_spec_keys", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_scope_project_path_walks_one_subtree" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L104", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L549", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_to_dict_values_match_field_values", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_scope_all_walks_every_configured_equipment" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L114", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L584", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_to_dict_from_dict_round_trip_identity", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_scope_unknown_equipment_id_returns_empty" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L170", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L591", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_finding_is_hashable", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_skips_cache_directory_contents" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L178", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L607", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_findings_in_set_dedupe_by_value", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L187", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L644", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_findings_in_set_distinguish_by_value", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_file_name" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L200", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L660", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_findings_can_be_sorted_by_to_dict_key", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L208", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L680", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_findings_sort_by_tier_then_rule_then_path", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_returns_list_of_finding_dataclass_instances" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L225", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L695", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_equality_with_same_field_values", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_includes_staging_root_when_orchestrator_on" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L231", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L722", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_inequality_when_one_field_differs", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_findings_carry_full_section_11_8_shape" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L237", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L760", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_finding_equality_is_not_identity", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_unknown_scope_kind_raises_value_error" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L247", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L767", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_test_audit_mode_flags_round_trip", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_root_does_not_exist_returns_empty" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L24", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L775", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_rationale_24", - "target": "validator_test_findings_make_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_root_is_a_file_returns_empty" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "src/exlab_wizard/validator/rules.py", - "source_location": "L381", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L783", "weight": 1.0, - "source": "validator_rules_check_mode_prefix_mismatch", - "target": "validator_test_findings_make_finding" + "confidence_score": 1.0, + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_handles_unreadable_directory" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L59", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L803", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_rationale_59", - "target": "validator_test_findings_test_finding_minimum_required_fields" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_other_level_subfolder_under_project" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L75", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L819", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_rationale_75", - "target": "validator_test_findings_test_finding_is_frozen" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_other_under_test_runs_unknown_leaf" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L120", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L835", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_rationale_120", - "target": "validator_test_findings_test_from_dict_accepts_minimal_payload" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_deeply_nested_other_subfolder" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L136", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L854", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_rationale_136", - "target": "validator_test_findings_test_from_dict_ignores_unknown_keys" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_creation_json_unreadable" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L150", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L876", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_rationale_150", - "target": "validator_test_findings_test_to_dict_preserves_none_matched_token" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_creation_json_malformed_raw_decode" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L177", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L888", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_rationale_177", - "target": "validator_test_findings_test_findings_in_set_dedupe_by_value" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_creation_json_missing_required_struct_field" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L185", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L908", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_rationale_185", - "target": "validator_test_findings_test_findings_in_set_distinguish_by_value" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_readme_fields_json_decode_failure" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L199", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L920", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_rationale_199", - "target": "validator_test_findings_test_findings_can_be_sorted_by_to_dict_key" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_missing_required_field_with_required_ids" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L207", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L956", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_rationale_207", - "target": "validator_test_findings_test_findings_sort_by_tier_then_rule_then_path" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_missing_required_field_required_ids_not_a_list" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_findings.py", - "source_location": "L244", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L991", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_findings_rationale_244", - "target": "validator_test_findings_test_audit_mode_flags_round_trip" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_content_scan_skips_test_runs_marker_file" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1021", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_init_rationale_1", - "target": "tests_unit_validator_init_py" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_content_scan_eligibility_returns_false_on_stat_failure" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/validator/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1048", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_init_rationale_1", - "target": "src_exlab_wizard_validator_init_py" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_audit_read_text_for_scan_handles_oserror" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L37", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1075", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_angle_bracket_token_in_segment_fires" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_classify_level_value_error_returns_other" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L64", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1089", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_non_token_angle_brackets_pass" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_finding_sort_unknown_tier_sorts_after_committed_tiers" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L75", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1113", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_jinja_var_marker_in_filename_fires" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_level_for_orphan_returns_none_for_unmapped_levels" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L88", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1122", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_jinja_block_marker_in_content_fires" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_validator_from_config_builds_engine" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L101", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1140", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_unresolved_placeholder_in_content_fires" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_validator_from_config_orchestrator_disabled" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L110", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1154", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_no_findings_on_clean_inputs" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_validator_from_config_no_orchestrator_attr" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L119", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1165", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_large_text_file_skipped_from_content_scan" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_classify_level_unrelated_dir_returns_other" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L131", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1175", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_under_size_cap_content_is_scanned" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_compute_run_path_unrelated_other_returns_input" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L142", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1187", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_multiple_matches_in_same_input_each_yield_finding" + "source": "tests_unit_validator_test_engine_audit_py", + "target": "validator_test_engine_audit_test_compute_run_path_root_other_returns_root" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L152", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_empty_file_contents_dict_is_path_only_scan" + "source": "validator_test_engine_audit_rationale_1", + "target": "tests_unit_validator_test_engine_audit_py" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L180", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L187", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_windows_illegal_char_in_segment_fires" + "source": "validator_test_engine_audit_rationale_187", + "target": "tests_unit_validator_test_engine_audit_py" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L191", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L121", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_nul_byte_in_name_fires" + "source": "validator_test_engine_audit_make_clean_tree", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L200", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L190", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_low_ascii_control_char_fires" + "source": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L210", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_trailing_dot_fires" + "source": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L218", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L227", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_trailing_space_fires" + "source": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L237", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L252", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_normal_names_pass" + "source": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L245", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L277", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_findings_have_hard_tier" + "source": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L276", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L309", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_reserved_name_fires" + "source": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L297", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L332", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_non_reserved_name_passes" + "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L320", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L361", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_unsafe_project_name_fires" + "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L340", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L462", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_safe_project_name_passes" + "source": "validator_test_engine_audit_test_audit_findings_are_sorted_by_tier_then_rule_then_offending_path", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L349", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L479", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_experimental_with_run_prefix_under_runs_parent_passes" + "source": "validator_test_engine_audit_test_query_problems_is_alias_for_audit", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L359", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L495", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_experimental_with_run_prefix_at_project_level_fires" + "source": "validator_test_engine_audit_test_audit_scope_equipment_id_resolves_to_configured_root", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L372", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L531", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_experimental_with_test_run_prefix_fires" + "source": "validator_test_engine_audit_test_audit_scope_project_path_walks_one_subtree", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L382", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L557", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_experimental_under_test_runs_parent_fires" + "source": "validator_test_engine_audit_test_audit_scope_all_walks_every_configured_equipment", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L391", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L631", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_test_with_test_run_prefix_under_test_runs_passes" + "source": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L400", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L667", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_test_with_run_prefix_fires" + "source": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L409", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L686", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_test_with_test_run_prefix_but_wrong_parent_fires" + "source": "validator_test_engine_audit_test_audit_returns_list_of_finding_dataclass_instances", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L418", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L702", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_run_kind_none_returns_no_findings" + "source": "validator_test_engine_audit_test_audit_includes_staging_root_when_orchestrator_on", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L432", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L731", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_project_without_creation_json_fires" + "source": "validator_test_engine_audit_test_audit_findings_carry_full_section_11_8_shape", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L439", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L809", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_run_without_creation_json_fires" + "source": "validator_test_engine_audit_test_audit_other_level_subfolder_under_project", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L445", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L826", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_equipment_without_creation_json_does_not_fire" + "source": "validator_test_engine_audit_test_audit_other_under_test_runs_unknown_leaf", + "target": "validator_test_engine_audit_build_creation_json_dict" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L898", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_creation_json_missing_required_struct_field", + "target": "validator_test_engine_audit_build_creation_json_dict" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L927", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_missing_required_field_with_required_ids", + "target": "validator_test_engine_audit_build_creation_json_dict" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L964", + "weight": 1.0, + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_missing_required_field_required_ids_not_a_list", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L450", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L998", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_project_with_creation_json_passes" + "source": "validator_test_engine_audit_test_audit_content_scan_skips_test_runs_marker_file", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L455", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_run_with_creation_json_passes" + "source": "validator_test_engine_audit_rationale_56", + "target": "validator_test_engine_audit_build_creation_json_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L465", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_missing_id_fires" + "source": "validator_test_engine_audit_make_clean_tree", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L479", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L188", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_empty_string_value_fires" + "source": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L492", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_present_id_with_non_empty_value_passes" + "source": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L504", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L227", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_field_present_in_template_fields_layer_passes" + "source": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L516", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L252", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_none_readme_fields_treats_all_required_as_missing" + "source": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L524", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L277", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_value_explicit_none_fires" + "source": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L541", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L309", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_well_formed_front_matter_passes" + "source": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L546", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L332", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_unterminated_front_matter_fires" + "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L554", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L361", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_malformed_yaml_in_block_fires" + "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L562", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L462", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_no_front_matter_passes" + "source": "validator_test_engine_audit_test_audit_findings_are_sorted_by_tier_then_rule_then_offending_path", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L567", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L479", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_empty_content_passes" + "source": "validator_test_engine_audit_test_query_problems_is_alias_for_audit", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L571", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L493", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_rules_py", - "target": "validator_test_rules_test_front_matter_with_nested_yaml_passes" + "source": "validator_test_engine_audit_test_audit_scope_equipment_id_resolves_to_configured_root", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L1", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L531", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_rules_rationale_1", - "target": "tests_unit_validator_test_rules_py" + "source": "validator_test_engine_audit_test_audit_scope_project_path_walks_one_subtree", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L38", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L555", "weight": 1.0, - "source": "validator_test_rules_test_angle_bracket_token_in_segment_fires", - "target": "validator_rules_check_unresolved_placeholder" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_scope_all_walks_every_configured_equipment", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L65", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L631", "weight": 1.0, - "source": "validator_test_rules_test_non_token_angle_brackets_pass", - "target": "validator_rules_check_unresolved_placeholder" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L76", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L667", "weight": 1.0, - "source": "validator_test_rules_test_jinja_var_marker_in_filename_fires", - "target": "validator_rules_check_unresolved_placeholder" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L89", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L686", "weight": 1.0, - "source": "validator_test_rules_test_jinja_block_marker_in_content_fires", - "target": "validator_rules_check_unresolved_placeholder" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_returns_list_of_finding_dataclass_instances", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L102", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L702", "weight": 1.0, - "source": "validator_test_rules_test_unresolved_placeholder_in_content_fires", - "target": "validator_rules_check_unresolved_placeholder" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_includes_staging_root_when_orchestrator_on", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L111", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L731", "weight": 1.0, - "source": "validator_test_rules_test_no_findings_on_clean_inputs", - "target": "validator_rules_check_unresolved_placeholder" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_findings_carry_full_section_11_8_shape", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L123", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L809", "weight": 1.0, - "source": "validator_test_rules_test_large_text_file_skipped_from_content_scan", - "target": "validator_rules_check_unresolved_placeholder" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_other_level_subfolder_under_project", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L134", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L826", "weight": 1.0, - "source": "validator_test_rules_test_under_size_cap_content_is_scanned", - "target": "validator_rules_check_unresolved_placeholder" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_other_under_test_runs_unknown_leaf", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L143", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L898", "weight": 1.0, - "source": "validator_test_rules_test_multiple_matches_in_same_input_each_yield_finding", - "target": "validator_rules_check_unresolved_placeholder" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_creation_json_missing_required_struct_field", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L153", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L931", "weight": 1.0, - "source": "validator_test_rules_test_empty_file_contents_dict_is_path_only_scan", - "target": "validator_rules_check_unresolved_placeholder" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_missing_required_field_with_required_ids", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L181", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L968", "weight": 1.0, - "source": "validator_test_rules_test_windows_illegal_char_in_segment_fires", - "target": "validator_rules_check_illegal_filesystem_character" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_missing_required_field_required_ids_not_a_list", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L193", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L998", "weight": 1.0, - "source": "validator_test_rules_test_nul_byte_in_name_fires", - "target": "validator_rules_check_illegal_filesystem_character" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_content_scan_skips_test_runs_marker_file", + "target": "validator_test_engine_audit_write_creation_json" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L203", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L88", "weight": 1.0, - "source": "validator_test_rules_test_low_ascii_control_char_fires", - "target": "validator_rules_check_illegal_filesystem_character" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_rationale_88", + "target": "validator_test_engine_audit_write_creation_json" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L211", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L175", "weight": 1.0, - "source": "validator_test_rules_test_trailing_dot_fires", - "target": "validator_rules_check_illegal_filesystem_character" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_clean_tree_returns_empty_list", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L219", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L240", "weight": 1.0, - "source": "validator_test_rules_test_trailing_space_fires", - "target": "validator_rules_check_illegal_filesystem_character" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_clean_project_name_has_no_unsafe_finding", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L238", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L376", "weight": 1.0, - "source": "validator_test_rules_test_normal_names_pass", - "target": "validator_rules_check_illegal_filesystem_character" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_respects_content_scan_max_mib_cap", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L246", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L400", "weight": 1.0, - "source": "validator_test_rules_test_findings_have_hard_tier", - "target": "validator_rules_check_illegal_filesystem_character" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_respects_extensions_allowlist", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L277", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L419", "weight": 1.0, - "source": "validator_test_rules_test_reserved_name_fires", - "target": "validator_rules_check_reserved_filesystem_name" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_detects_binary_files_via_null_byte_sniff", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L298", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L438", "weight": 1.0, - "source": "validator_test_rules_test_non_reserved_name_passes", - "target": "validator_rules_check_reserved_filesystem_name" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_scans_text_file_content_when_within_limits", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L321", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L476", "weight": 1.0, - "source": "validator_test_rules_test_unsafe_project_name_fires", - "target": "validator_rules_check_unsafe_project_name" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_query_problems_is_alias_for_audit", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L341", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L593", "weight": 1.0, - "source": "validator_test_rules_test_safe_project_name_passes", - "target": "validator_rules_check_unsafe_project_name" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_skips_cache_directory_contents", + "target": "validator_test_engine_audit_make_clean_tree" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L350", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L646", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_rules_rationale_350", - "target": "validator_test_rules_test_experimental_with_run_prefix_under_runs_parent_passes" + "source": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_file_name", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L351", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L837", "weight": 1.0, - "source": "validator_test_rules_test_experimental_with_run_prefix_under_runs_parent_passes", - "target": "validator_rules_check_mode_prefix_mismatch" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_deeply_nested_other_subfolder", + "target": "validator_test_engine_audit_make_clean_tree" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L360", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L859", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_rules_rationale_360", - "target": "validator_test_rules_test_experimental_with_run_prefix_at_project_level_fires" + "source": "validator_test_engine_audit_test_audit_creation_json_unreadable", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L362", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L878", "weight": 1.0, - "source": "validator_test_rules_test_experimental_with_run_prefix_at_project_level_fires", - "target": "validator_rules_check_mode_prefix_mismatch" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_creation_json_malformed_raw_decode", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L373", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L910", "weight": 1.0, - "source": "validator_test_rules_test_experimental_with_test_run_prefix_fires", - "target": "validator_rules_check_mode_prefix_mismatch" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_readme_fields_json_decode_failure", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L383", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1026", "weight": 1.0, - "source": "validator_test_rules_test_experimental_under_test_runs_parent_fires", - "target": "validator_rules_check_mode_prefix_mismatch" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_content_scan_eligibility_returns_false_on_stat_failure", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L392", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L1053", "weight": 1.0, - "source": "validator_test_rules_test_test_with_test_run_prefix_under_test_runs_passes", - "target": "validator_rules_check_mode_prefix_mismatch" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_read_text_for_scan_handles_oserror", + "target": "validator_test_engine_audit_make_clean_tree" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L401", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L106", "weight": 1.0, - "source": "validator_test_rules_test_test_with_run_prefix_fires", - "target": "validator_rules_check_mode_prefix_mismatch" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_rationale_106", + "target": "validator_test_engine_audit_make_clean_tree" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L410", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L176", "weight": 1.0, - "source": "validator_test_rules_test_test_with_test_run_prefix_but_wrong_parent_fires", - "target": "validator_rules_check_mode_prefix_mismatch" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_clean_tree_returns_empty_list", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L419", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L193", "weight": 1.0, - "source": "validator_test_rules_test_run_kind_none_returns_no_findings", - "target": "validator_rules_check_mode_prefix_mismatch" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L433", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L211", "weight": 1.0, - "source": "validator_test_rules_test_project_without_creation_json_fires", - "target": "validator_rules_check_orphan" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L440", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L230", "weight": 1.0, - "source": "validator_test_rules_test_run_without_creation_json_fires", - "target": "validator_rules_check_orphan" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L446", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L241", "weight": 1.0, - "source": "validator_test_rules_test_equipment_without_creation_json_does_not_fire", - "target": "validator_rules_check_orphan" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_clean_project_name_has_no_unsafe_finding", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L451", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L258", "weight": 1.0, - "source": "validator_test_rules_test_project_with_creation_json_passes", - "target": "validator_rules_check_orphan" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L456", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L283", "weight": 1.0, - "source": "validator_test_rules_test_run_with_creation_json_passes", - "target": "validator_rules_check_orphan" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L466", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L315", "weight": 1.0, - "source": "validator_test_rules_test_missing_id_fires", - "target": "validator_rules_check_missing_required_field" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L480", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L338", "weight": 1.0, - "source": "validator_test_rules_test_empty_string_value_fires", - "target": "validator_rules_check_missing_required_field" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L493", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L367", "weight": 1.0, - "source": "validator_test_rules_test_present_id_with_non_empty_value_passes", - "target": "validator_rules_check_missing_required_field" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L505", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L383", "weight": 1.0, - "source": "validator_test_rules_test_field_present_in_template_fields_layer_passes", - "target": "validator_rules_check_missing_required_field" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_respects_content_scan_max_mib_cap", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L517", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L404", "weight": 1.0, - "source": "validator_test_rules_test_none_readme_fields_treats_all_required_as_missing", - "target": "validator_rules_check_missing_required_field" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_respects_extensions_allowlist", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L525", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L426", "weight": 1.0, - "source": "validator_test_rules_test_value_explicit_none_fires", - "target": "validator_rules_check_missing_required_field" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_detects_binary_files_via_null_byte_sniff", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L543", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L442", "weight": 1.0, - "source": "validator_test_rules_test_well_formed_front_matter_passes", - "target": "validator_rules_check_malformed_yaml_front_matter" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_scans_text_file_content_when_within_limits", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L548", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L464", "weight": 1.0, - "source": "validator_test_rules_test_unterminated_front_matter_fires", - "target": "validator_rules_check_malformed_yaml_front_matter" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_findings_are_sorted_by_tier_then_rule_then_offending_path", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L557", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L481", "weight": 1.0, - "source": "validator_test_rules_test_malformed_yaml_in_block_fires", - "target": "validator_rules_check_malformed_yaml_front_matter" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_query_problems_is_alias_for_audit", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L564", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L542", "weight": 1.0, - "source": "validator_test_rules_test_no_front_matter_passes", - "target": "validator_rules_check_malformed_yaml_front_matter" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_scope_project_path_walks_one_subtree", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L568", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L586", "weight": 1.0, - "source": "validator_test_rules_test_empty_content_passes", - "target": "validator_rules_check_malformed_yaml_front_matter" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_scope_unknown_equipment_id_returns_empty", + "target": "validator_test_engine_audit_make_validator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_rules.py", - "source_location": "L585", + "confidence": "EXTRACTED", + "source_file": "tests/unit/validator/test_engine_audit.py", + "source_location": "L599", "weight": 1.0, - "source": "validator_test_rules_test_front_matter_with_nested_yaml_passes", - "target": "validator_rules_check_malformed_yaml_front_matter" + "confidence_score": 1.0, + "source": "validator_test_engine_audit_test_audit_skips_cache_directory_contents", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L46", + "source_location": "L637", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L87", + "source_location": "L650", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_write_creation_json" + "source": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_file_name", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L96", + "source_location": "L673", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L140", + "source_location": "L689", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", + "source": "validator_test_engine_audit_test_audit_returns_list_of_finding_dataclass_instances", "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L164", + "source_location": "L734", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_by_rule" + "source": "validator_test_engine_audit_test_audit_findings_carry_full_section_11_8_shape", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L173", + "source_location": "L762", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_clean_tree_returns_empty_list" + "source": "validator_test_engine_audit_test_audit_unknown_scope_kind_raises_value_error", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L181", + "source_location": "L798", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan" + "source": "validator_test_engine_audit_test_audit_handles_unreadable_directory", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L202", + "source_location": "L811", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan" + "source": "validator_test_engine_audit_test_audit_other_level_subfolder_under_project", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L219", + "source_location": "L828", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding" + "source": "validator_test_engine_audit_test_audit_other_under_test_runs_unknown_leaf", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L238", + "source_location": "L843", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_clean_project_name_has_no_unsafe_finding" + "source": "validator_test_engine_audit_test_audit_deeply_nested_other_subfolder", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L246", + "source_location": "L870", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind" + "source": "validator_test_engine_audit_test_audit_creation_json_unreadable", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L268", + "source_location": "L882", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name" + "source": "validator_test_engine_audit_test_audit_creation_json_malformed_raw_decode", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L291", + "source_location": "L900", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden" + "source": "validator_test_engine_audit_test_audit_creation_json_missing_required_struct_field", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L324", + "source_location": "L914", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run" + "source": "validator_test_engine_audit_test_audit_readme_fields_json_decode_failure", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L348", + "source_location": "L949", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run" + "source": "validator_test_engine_audit_test_audit_missing_required_field_with_required_ids", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L374", + "source_location": "L985", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_respects_content_scan_max_mib_cap" + "source": "validator_test_engine_audit_test_audit_missing_required_field_required_ids_not_a_list", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L398", + "source_location": "L1009", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_respects_extensions_allowlist" + "source": "validator_test_engine_audit_test_audit_content_scan_skips_test_runs_marker_file", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L417", + "source_location": "L1038", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_detects_binary_files_via_null_byte_sniff" + "source": "validator_test_engine_audit_test_audit_content_scan_eligibility_returns_false_on_stat_failure", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L436", + "source_location": "L1065", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_scans_text_file_content_when_within_limits" + "source": "validator_test_engine_audit_test_audit_read_text_for_scan_handles_oserror", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L452", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_findings_are_sorted_by_tier_then_rule_then_offending_path" + "source": "validator_test_engine_audit_rationale_148", + "target": "validator_test_engine_audit_make_validator" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L474", + "source_location": "L149", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_query_problems_is_alias_for_audit" + "source": "validator_test_engine_audit_make_validator", + "target": "config_models_validatorconfig" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L487", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_scope_equipment_id_resolves_to_configured_root" + "source": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan", + "target": "validator_test_engine_audit_by_rule" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L524", + "source_location": "L213", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_scope_project_path_walks_one_subtree" + "source": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan", + "target": "validator_test_engine_audit_by_rule" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L549", + "source_location": "L232", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_scope_all_walks_every_configured_equipment" + "source": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding", + "target": "validator_test_engine_audit_by_rule" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L584", + "source_location": "L243", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_scope_unknown_equipment_id_returns_empty" + "source": "validator_test_engine_audit_test_audit_clean_project_name_has_no_unsafe_finding", + "target": "validator_test_engine_audit_by_rule" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L591", + "source_location": "L260", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_skips_cache_directory_contents" + "source": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind", + "target": "validator_test_engine_audit_by_rule" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L607", + "source_location": "L285", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active" + "source": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name", + "target": "validator_test_engine_audit_by_rule" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L644", + "source_location": "L317", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_file_name" + "source": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden", + "target": "validator_test_engine_audit_by_rule" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L660", + "source_location": "L340", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged" + "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run", + "target": "validator_test_engine_audit_by_rule" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L680", + "source_location": "L369", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_returns_list_of_finding_dataclass_instances" + "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run", + "target": "validator_test_engine_audit_by_rule" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L695", + "source_location": "L639", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_includes_staging_root_when_orchestrator_on" + "source": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active", + "target": "validator_test_engine_audit_by_rule" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L722", + "source_location": "L675", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_findings_carry_full_section_11_8_shape" + "source": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged", + "target": "validator_test_engine_audit_by_rule" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L760", + "source_location": "L174", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_unknown_scope_kind_raises_value_error" + "source": "validator_test_engine_audit_rationale_174", + "target": "validator_test_engine_audit_test_audit_clean_tree_returns_empty_list" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L767", + "source_location": "L182", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_root_does_not_exist_returns_empty" + "source": "validator_test_engine_audit_rationale_182", + "target": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L775", + "source_location": "L203", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_root_is_a_file_returns_empty" + "source": "validator_test_engine_audit_rationale_203", + "target": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L783", + "source_location": "L220", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_handles_unreadable_directory" + "source": "validator_test_engine_audit_rationale_220", + "target": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L803", + "source_location": "L239", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_other_level_subfolder_under_project" + "source": "validator_test_engine_audit_rationale_239", + "target": "validator_test_engine_audit_test_audit_clean_project_name_has_no_unsafe_finding" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L819", + "source_location": "L247", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_other_under_test_runs_unknown_leaf" + "source": "validator_test_engine_audit_rationale_247", + "target": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L835", + "source_location": "L269", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_deeply_nested_other_subfolder" + "source": "validator_test_engine_audit_rationale_269", + "target": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L854", + "source_location": "L294", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_creation_json_unreadable" + "source": "validator_test_engine_audit_rationale_294", + "target": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L876", + "source_location": "L327", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_creation_json_malformed_raw_decode" + "source": "validator_test_engine_audit_rationale_327", + "target": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L888", + "source_location": "L351", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_creation_json_missing_required_struct_field" + "source": "validator_test_engine_audit_rationale_351", + "target": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L908", + "source_location": "L375", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_readme_fields_json_decode_failure" + "source": "validator_test_engine_audit_rationale_375", + "target": "validator_test_engine_audit_test_audit_respects_content_scan_max_mib_cap" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L920", + "source_location": "L399", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_missing_required_field_with_required_ids" + "source": "validator_test_engine_audit_rationale_399", + "target": "validator_test_engine_audit_test_audit_respects_extensions_allowlist" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L956", + "source_location": "L418", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_missing_required_field_required_ids_not_a_list" + "source": "validator_test_engine_audit_rationale_418", + "target": "validator_test_engine_audit_test_audit_detects_binary_files_via_null_byte_sniff" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L991", + "source_location": "L437", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_content_scan_skips_test_runs_marker_file" + "source": "validator_test_engine_audit_rationale_437", + "target": "validator_test_engine_audit_test_audit_scans_text_file_content_when_within_limits" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1021", + "source_location": "L455", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_content_scan_eligibility_returns_false_on_stat_failure" + "source": "validator_test_engine_audit_rationale_455", + "target": "validator_test_engine_audit_test_audit_findings_are_sorted_by_tier_then_rule_then_offending_path" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1048", + "source_location": "L475", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_audit_read_text_for_scan_handles_oserror" + "source": "validator_test_engine_audit_rationale_475", + "target": "validator_test_engine_audit_test_query_problems_is_alias_for_audit" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1075", + "source_location": "L488", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_classify_level_value_error_returns_other" + "source": "validator_test_engine_audit_rationale_488", + "target": "validator_test_engine_audit_test_audit_scope_equipment_id_resolves_to_configured_root" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1089", + "source_location": "L525", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_finding_sort_unknown_tier_sorts_after_committed_tiers" + "source": "validator_test_engine_audit_rationale_525", + "target": "validator_test_engine_audit_test_audit_scope_project_path_walks_one_subtree" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1113", + "source_location": "L550", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_level_for_orphan_returns_none_for_unmapped_levels" + "source": "validator_test_engine_audit_rationale_550", + "target": "validator_test_engine_audit_test_audit_scope_all_walks_every_configured_equipment" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1122", + "source_location": "L585", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_validator_from_config_builds_engine" + "source": "validator_test_engine_audit_rationale_585", + "target": "validator_test_engine_audit_test_audit_scope_unknown_equipment_id_returns_empty" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1140", + "source_location": "L592", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_validator_from_config_orchestrator_disabled" + "source": "validator_test_engine_audit_rationale_592", + "target": "validator_test_engine_audit_test_audit_skips_cache_directory_contents" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1154", + "source_location": "L608", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_validator_from_config_no_orchestrator_attr" + "source": "validator_test_engine_audit_rationale_608", + "target": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1165", + "source_location": "L645", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_classify_level_unrelated_dir_returns_other" + "source": "validator_test_engine_audit_rationale_645", + "target": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_file_name" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1175", + "source_location": "L661", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_compute_run_path_unrelated_other_returns_input" + "source": "validator_test_engine_audit_rationale_661", + "target": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1187", + "source_location": "L681", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_validator_test_engine_audit_py", - "target": "validator_test_engine_audit_test_compute_run_path_root_other_returns_root" + "source": "validator_test_engine_audit_rationale_681", + "target": "validator_test_engine_audit_test_audit_returns_list_of_finding_dataclass_instances" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1", + "source_location": "L696", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_1", - "target": "tests_unit_validator_test_engine_audit_py" + "source": "validator_test_engine_audit_rationale_696", + "target": "validator_test_engine_audit_test_audit_includes_staging_root_when_orchestrator_on" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L187", + "source_location": "L726", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_187", - "target": "tests_unit_validator_test_engine_audit_py" + "source": "validator_test_engine_audit_rationale_726", + "target": "validator_test_engine_audit_test_audit_findings_carry_full_section_11_8_shape" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L121", + "source_location": "L761", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_make_clean_tree", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_761", + "target": "validator_test_engine_audit_test_audit_unknown_scope_kind_raises_value_error" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L190", + "source_location": "L768", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_768", + "target": "validator_test_engine_audit_test_audit_root_does_not_exist_returns_empty" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L208", + "source_location": "L776", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_776", + "target": "validator_test_engine_audit_test_audit_root_is_a_file_returns_empty" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L227", + "source_location": "L784", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_784", + "target": "validator_test_engine_audit_test_audit_handles_unreadable_directory" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L252", + "source_location": "L804", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_804", + "target": "validator_test_engine_audit_test_audit_other_level_subfolder_under_project" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L277", + "source_location": "L820", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_820", + "target": "validator_test_engine_audit_test_audit_other_under_test_runs_unknown_leaf" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L309", + "source_location": "L836", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_836", + "target": "validator_test_engine_audit_test_audit_deeply_nested_other_subfolder" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L332", + "source_location": "L858", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_858", + "target": "validator_test_engine_audit_test_audit_creation_json_unreadable" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L361", + "source_location": "L877", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_877", + "target": "validator_test_engine_audit_test_audit_creation_json_malformed_raw_decode" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L462", + "source_location": "L889", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_findings_are_sorted_by_tier_then_rule_then_offending_path", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_889", + "target": "validator_test_engine_audit_test_audit_creation_json_missing_required_struct_field" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L479", + "source_location": "L909", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_query_problems_is_alias_for_audit", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_909", + "target": "validator_test_engine_audit_test_audit_readme_fields_json_decode_failure" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L495", + "source_location": "L921", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_scope_equipment_id_resolves_to_configured_root", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_921", + "target": "validator_test_engine_audit_test_audit_missing_required_field_with_required_ids" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L531", + "source_location": "L957", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_scope_project_path_walks_one_subtree", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_957", + "target": "validator_test_engine_audit_test_audit_missing_required_field_required_ids_not_a_list" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L557", + "source_location": "L992", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_scope_all_walks_every_configured_equipment", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_992", + "target": "validator_test_engine_audit_test_audit_content_scan_skips_test_runs_marker_file" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L631", + "source_location": "L1025", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_1025", + "target": "validator_test_engine_audit_test_audit_content_scan_eligibility_returns_false_on_stat_failure" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L667", + "source_location": "L1052", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_1052", + "target": "validator_test_engine_audit_test_audit_read_text_for_scan_handles_oserror" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L686", + "source_location": "L1076", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_returns_list_of_finding_dataclass_instances", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_1076", + "target": "validator_test_engine_audit_test_classify_level_value_error_returns_other" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L702", + "source_location": "L1090", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_includes_staging_root_when_orchestrator_on", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_1090", + "target": "validator_test_engine_audit_test_finding_sort_unknown_tier_sorts_after_committed_tiers" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L731", + "source_location": "L1114", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_findings_carry_full_section_11_8_shape", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_1114", + "target": "validator_test_engine_audit_test_level_for_orphan_returns_none_for_unmapped_levels" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L809", + "source_location": "L1117", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_other_level_subfolder_under_project", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_test_level_for_orphan_returns_none_for_unmapped_levels", + "target": "validator_engine_level_for_orphan" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L826", + "source_location": "L1123", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_other_under_test_runs_unknown_leaf", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_1123", + "target": "validator_test_engine_audit_test_validator_from_config_builds_engine" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L898", + "source_location": "L1132", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_creation_json_missing_required_struct_field", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_test_validator_from_config_builds_engine", + "target": "config_models_validatorconfig" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L927", + "source_location": "L1141", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_missing_required_field_with_required_ids", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_1141", + "target": "validator_test_engine_audit_test_validator_from_config_orchestrator_disabled" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L964", + "source_location": "L1155", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_missing_required_field_required_ids_not_a_list", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_1155", + "target": "validator_test_engine_audit_test_validator_from_config_no_orchestrator_attr" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L998", + "source_location": "L1166", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_content_scan_skips_test_runs_marker_file", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_1166", + "target": "validator_test_engine_audit_test_classify_level_unrelated_dir_returns_other" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L56", + "source_location": "L1176", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_56", - "target": "validator_test_engine_audit_build_creation_json_dict" + "source": "validator_test_engine_audit_rationale_1176", + "target": "validator_test_engine_audit_test_compute_run_path_unrelated_other_returns_input" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L119", + "source_location": "L1188", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_make_clean_tree", - "target": "validator_test_engine_audit_write_creation_json" + "source": "validator_test_engine_audit_rationale_1188", + "target": "validator_test_engine_audit_test_compute_run_path_root_other_returns_root" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L188", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_with_all_tags_matches_spec_example" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L208", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_with_run_id_includes_run_tag" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L227", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L70", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_omits_unset_tags" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L252", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_partial_tags_skipped_individually" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L277", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L102", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_level_is_padded_to_five_chars" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L309", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L115", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_timestamp_is_zero_padded_iso_with_z" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L332", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_naive_datetime_treated_as_utc" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L361", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_aware_non_utc_datetime_converts_to_utc" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L462", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_findings_are_sorted_by_tier_then_rule_then_offending_path", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_short_message_unchanged" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L479", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_query_problems_is_alias_for_audit", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_truncates_long_messages_with_marker" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L493", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L165", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_scope_equipment_id_resolves_to_configured_root", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_truncation_preserves_prefix_and_tags" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L531", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_scope_project_path_walks_one_subtree", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_truncation_at_exact_boundary" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L555", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L199", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_scope_all_walks_every_configured_equipment", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_append_log_line_creates_parent_cache_dir" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L631", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_append_log_line_writes_single_line_with_newline" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L667", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L215", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_append_log_line_appends_to_existing_file" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L686", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L225", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_returns_list_of_finding_dataclass_instances", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_append_log_line_concurrent_writes_do_not_interleave" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L702", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L255", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_includes_staging_root_when_orchestrator_on", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_append_log_line_idempotent_directory_creation" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L731", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L268", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_findings_carry_full_section_11_8_shape", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_truncation_prefix_alone_too_big_emits_marker_only" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L809", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L286", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_other_level_subfolder_under_project", - "target": "validator_test_engine_audit_write_creation_json" + "source": "tests_unit_cache_test_log_writer_py", + "target": "cache_test_log_writer_test_format_log_line_truncation_prefix_alone_exhausts_budget" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L826", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_other_under_test_runs_unknown_leaf", - "target": "validator_test_engine_audit_write_creation_json" + "source": "cache_test_log_writer_rationale_1", + "target": "tests_unit_cache_test_log_writer_py" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L898", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_creation_json_missing_required_struct_field", - "target": "validator_test_engine_audit_write_creation_json" + "source": "cache_test_log_writer_rationale_34", + "target": "cache_test_log_writer_test_format_log_line_with_all_tags_matches_spec_example" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L931", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L35", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_missing_required_field_with_required_ids", - "target": "validator_test_engine_audit_write_creation_json" + "source": "cache_test_log_writer_test_format_log_line_with_all_tags_matches_spec_example", + "target": "cache_log_writer_format_log_line" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L968", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_missing_required_field_required_ids_not_a_list", - "target": "validator_test_engine_audit_write_creation_json" + "source": "cache_test_log_writer_rationale_53", + "target": "cache_test_log_writer_test_format_log_line_with_run_id_includes_run_tag" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L998", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L54", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_content_scan_skips_test_runs_marker_file", - "target": "validator_test_engine_audit_write_creation_json" + "source": "cache_test_log_writer_test_format_log_line_with_run_id_includes_run_tag", + "target": "cache_log_writer_format_log_line" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L88", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_88", - "target": "validator_test_engine_audit_write_creation_json" + "source": "cache_test_log_writer_rationale_71", + "target": "cache_test_log_writer_test_format_log_line_omits_unset_tags" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L175", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L72", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_clean_tree_returns_empty_list", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_test_format_log_line_omits_unset_tags", + "target": "cache_log_writer_format_log_line" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L240", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_clean_project_name_has_no_unsafe_finding", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_rationale_87", + "target": "cache_test_log_writer_test_format_log_line_partial_tags_skipped_individually" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L376", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L88", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_respects_content_scan_max_mib_cap", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_test_format_log_line_partial_tags_skipped_individually", + "target": "cache_log_writer_format_log_line" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L400", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L103", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_respects_extensions_allowlist", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_rationale_103", + "target": "cache_test_log_writer_test_format_log_line_level_is_padded_to_five_chars" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L104", + "weight": 1.0, + "source": "cache_test_log_writer_test_format_log_line_level_is_padded_to_five_chars", + "target": "cache_log_writer_format_log_line" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L419", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L116", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_detects_binary_files_via_null_byte_sniff", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_rationale_116", + "target": "cache_test_log_writer_test_format_log_line_timestamp_is_zero_padded_iso_with_z" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L118", + "weight": 1.0, + "source": "cache_test_log_writer_test_format_log_line_timestamp_is_zero_padded_iso_with_z", + "target": "cache_log_writer_format_log_line" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L438", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L124", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_scans_text_file_content_when_within_limits", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_rationale_124", + "target": "cache_test_log_writer_test_format_log_line_naive_datetime_treated_as_utc" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L126", + "weight": 1.0, + "source": "cache_test_log_writer_test_format_log_line_naive_datetime_treated_as_utc", + "target": "cache_log_writer_format_log_line" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L476", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_query_problems_is_alias_for_audit", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_rationale_131", + "target": "cache_test_log_writer_test_format_log_line_aware_non_utc_datetime_converts_to_utc" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L138", + "weight": 1.0, + "source": "cache_test_log_writer_test_format_log_line_aware_non_utc_datetime_converts_to_utc", + "target": "cache_log_writer_format_log_line" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L593", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L143", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_skips_cache_directory_contents", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_rationale_143", + "target": "cache_test_log_writer_test_format_log_line_short_message_unchanged" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L144", + "weight": 1.0, + "source": "cache_test_log_writer_test_format_log_line_short_message_unchanged", + "target": "cache_log_writer_format_log_line" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L646", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L153", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_file_name", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_rationale_153", + "target": "cache_test_log_writer_test_format_log_line_truncates_long_messages_with_marker" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L155", + "weight": 1.0, + "source": "cache_test_log_writer_test_format_log_line_truncates_long_messages_with_marker", + "target": "cache_log_writer_format_log_line" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L837", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_deeply_nested_other_subfolder", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_rationale_166", + "target": "cache_test_log_writer_test_format_log_line_truncation_preserves_prefix_and_tags" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L167", + "weight": 1.0, + "source": "cache_test_log_writer_test_format_log_line_truncation_preserves_prefix_and_tags", + "target": "cache_log_writer_format_log_line" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L859", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L180", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_creation_json_unreadable", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_rationale_180", + "target": "cache_test_log_writer_test_format_log_line_truncation_at_exact_boundary" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L182", + "weight": 1.0, + "source": "cache_test_log_writer_test_format_log_line_truncation_at_exact_boundary", + "target": "cache_log_writer_format_log_line" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L878", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L200", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_creation_json_malformed_raw_decode", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_rationale_200", + "target": "cache_test_log_writer_test_append_log_line_creates_parent_cache_dir" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L910", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L203", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_readme_fields_json_decode_failure", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_test_append_log_line_creates_parent_cache_dir", + "target": "cache_log_writer_append_log_line" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L210", + "weight": 1.0, + "source": "cache_test_log_writer_test_append_log_line_writes_single_line_with_newline", + "target": "cache_log_writer_append_log_line" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1026", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L216", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_content_scan_eligibility_returns_false_on_stat_failure", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_rationale_216", + "target": "cache_test_log_writer_test_append_log_line_appends_to_existing_file" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1053", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L218", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_read_text_for_scan_handles_oserror", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_test_append_log_line_appends_to_existing_file", + "target": "cache_log_writer_append_log_line" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L106", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L226", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_106", - "target": "validator_test_engine_audit_make_clean_tree" + "source": "cache_test_log_writer_rationale_226", + "target": "cache_test_log_writer_test_append_log_line_concurrent_writes_do_not_interleave" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L176", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L256", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_clean_tree_returns_empty_list", - "target": "validator_test_engine_audit_make_validator" + "source": "cache_test_log_writer_rationale_256", + "target": "cache_test_log_writer_test_append_log_line_idempotent_directory_creation" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L258", + "weight": 1.0, + "source": "cache_test_log_writer_test_append_log_line_idempotent_directory_creation", + "target": "cache_log_writer_append_log_line" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L193", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L271", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan", - "target": "validator_test_engine_audit_make_validator" + "source": "cache_test_log_writer_rationale_271", + "target": "cache_test_log_writer_test_format_log_line_truncation_prefix_alone_too_big_emits_marker_only" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L211", + "source_file": "tests/unit/cache/test_log_writer.py", + "source_location": "L289", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan", - "target": "validator_test_engine_audit_make_validator" + "source": "cache_test_log_writer_rationale_289", + "target": "cache_test_log_writer_test_format_log_line_truncation_prefix_alone_exhausts_budget" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L230", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_build_minimal_payload" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L241", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_clean_project_name_has_no_unsafe_finding", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_writer" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L258", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_creation_path" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L283", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_write_creation_emits_valid_current_version_file" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L315", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_write_creation_pins_schema_version_to_writer_default" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L338", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_update_creation_atomic_mutates_target_field" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L367", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L133", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_update_creation_atomic_preserves_unknown_top_level_fields" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L383", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_respects_content_scan_max_mib_cap", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_update_creation_atomic_appends_validation_override" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L404", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L178", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_respects_extensions_allowlist", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_update_creation_atomic_serializes_concurrent_calls" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L426", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L219", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_detects_binary_files_via_null_byte_sniff", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_read_creation_snapshot_returns_typed_struct" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L442", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L229", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_scans_text_file_content_when_within_limits", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_read_creation_snapshot_supports_concurrent_readers" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L464", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L247", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_findings_are_sorted_by_tier_then_rule_then_offending_path", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_reading_2_0_file_raises_schema_major_mismatch" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L481", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L260", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_query_problems_is_alias_for_audit", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_reading_malformed_schema_version_raises_schema_major_mismatch" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L542", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L273", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_scope_project_path_walks_one_subtree", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_reading_1_0_file_applies_documented_defaults" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L586", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L312", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_scope_unknown_equipment_id_returns_empty", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_reading_1_7_file_backfills_lims_project_subfields" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L599", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L345", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_skips_cache_directory_contents", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_writer_bumps_schema_version_on_mutation_of_old_minor" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L637", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L382", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_writing_always_emits_current_schema_version" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L650", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L397", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_file_name", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_select_active_overrides_returns_empty_for_empty_input" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L673", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L401", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_select_active_overrides_keeps_unrevoked_unexpired_entries" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L689", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L418", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_returns_list_of_finding_dataclass_instances", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_select_active_overrides_drops_revoked_entry" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L734", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L443", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_findings_carry_full_section_11_8_shape", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_select_active_overrides_drops_expired_entry" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L762", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L473", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_unknown_scope_kind_raises_value_error", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_select_active_overrides_uses_explicit_now_for_determinism" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L798", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L493", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_handles_unreadable_directory", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L811", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L519", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_other_level_subfolder_under_project", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_select_active_overrides_treats_malformed_expires_at_as_expired" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L828", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L539", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_other_under_test_runs_unknown_leaf", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_round_trip_preserves_plugins_applied_with_isolation" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L843", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L566", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_deeply_nested_other_subfolder", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_reading_file_with_missing_required_field_raises_validation_error" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L870", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L579", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_creation_json_unreadable", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_select_active_overrides_skips_tombstone_with_null_revokes_target" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L882", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L609", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_creation_json_malformed_raw_decode", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_select_active_overrides_naive_expires_at_is_treated_as_utc" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L900", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L629", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_creation_json_missing_required_struct_field", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_reading_file_missing_schema_version_raises_schema_major_mismatch" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L914", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L640", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_readme_fields_json_decode_failure", - "target": "validator_test_engine_audit_make_validator" + "source": "tests_unit_cache_test_creation_writer_py", + "target": "cache_test_creation_writer_test_update_creation_atomic_backfills_missing_override_id" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L949", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_missing_required_field_with_required_ids", - "target": "validator_test_engine_audit_make_validator" + "source": "cache_test_creation_writer_rationale_1", + "target": "tests_unit_cache_test_creation_writer_py" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L985", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_missing_required_field_required_ids_not_a_list", - "target": "validator_test_engine_audit_make_validator" + "source": "cache_test_creation_writer_test_write_creation_emits_valid_current_version_file", + "target": "cache_test_creation_writer_build_minimal_payload" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1009", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_content_scan_skips_test_runs_marker_file", - "target": "validator_test_engine_audit_make_validator" + "source": "cache_test_creation_writer_test_write_creation_pins_schema_version_to_writer_default", + "target": "cache_test_creation_writer_build_minimal_payload" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1038", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_content_scan_eligibility_returns_false_on_stat_failure", - "target": "validator_test_engine_audit_make_validator" + "source": "cache_test_creation_writer_test_update_creation_atomic_mutates_target_field", + "target": "cache_test_creation_writer_build_minimal_payload" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1065", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L137", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_read_text_for_scan_handles_oserror", - "target": "validator_test_engine_audit_make_validator" + "source": "cache_test_creation_writer_test_update_creation_atomic_preserves_unknown_top_level_fields", + "target": "cache_test_creation_writer_build_minimal_payload" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L148", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L155", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_148", - "target": "validator_test_engine_audit_make_validator" + "source": "cache_test_creation_writer_test_update_creation_atomic_appends_validation_override", + "target": "cache_test_creation_writer_build_minimal_payload" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L149", + "confidence": "EXTRACTED", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L187", "weight": 1.0, - "source": "validator_test_engine_audit_make_validator", - "target": "config_models_validatorconfig" + "confidence_score": 1.0, + "source": "cache_test_creation_writer_test_update_creation_atomic_serializes_concurrent_calls", + "target": "cache_test_creation_writer_build_minimal_payload" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L195", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L222", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan", - "target": "validator_test_engine_audit_by_rule" + "source": "cache_test_creation_writer_test_read_creation_snapshot_returns_typed_struct", + "target": "cache_test_creation_writer_build_minimal_payload" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L213", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L233", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan", - "target": "validator_test_engine_audit_by_rule" + "source": "cache_test_creation_writer_test_read_creation_snapshot_supports_concurrent_readers", + "target": "cache_test_creation_writer_build_minimal_payload" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L232", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L250", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding", - "target": "validator_test_engine_audit_by_rule" + "source": "cache_test_creation_writer_test_reading_2_0_file_raises_schema_major_mismatch", + "target": "cache_test_creation_writer_build_minimal_payload" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L243", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L265", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_clean_project_name_has_no_unsafe_finding", - "target": "validator_test_engine_audit_by_rule" + "source": "cache_test_creation_writer_test_reading_malformed_schema_version_raises_schema_major_mismatch", + "target": "cache_test_creation_writer_build_minimal_payload" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L260", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L386", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind", - "target": "validator_test_engine_audit_by_rule" + "source": "cache_test_creation_writer_test_writing_always_emits_current_schema_version", + "target": "cache_test_creation_writer_build_minimal_payload" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L285", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L542", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name", - "target": "validator_test_engine_audit_by_rule" + "source": "cache_test_creation_writer_test_round_trip_preserves_plugins_applied_with_isolation", + "target": "cache_test_creation_writer_build_minimal_payload" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L317", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L645", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden", - "target": "validator_test_engine_audit_by_rule" + "source": "cache_test_creation_writer_test_update_creation_atomic_backfills_missing_override_id", + "target": "cache_test_creation_writer_build_minimal_payload" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L340", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L55", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run", - "target": "validator_test_engine_audit_by_rule" + "source": "cache_test_creation_writer_build_minimal_payload", + "target": "api_schemas_limsprojectblock" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L369", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run", - "target": "validator_test_engine_audit_by_rule" + "source": "cache_test_creation_writer_build_minimal_payload", + "target": "api_schemas_templateblock" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L639", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L67", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active", - "target": "validator_test_engine_audit_by_rule" + "source": "cache_test_creation_writer_build_minimal_payload", + "target": "api_schemas_pathsblock" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L675", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L70", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged", - "target": "validator_test_engine_audit_by_rule" + "source": "cache_test_creation_writer_build_minimal_payload", + "target": "api_schemas_creationjson" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L174", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L75", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_174", - "target": "validator_test_engine_audit_test_audit_clean_tree_returns_empty_list" + "source": "cache_test_creation_writer_writer", + "target": "cache_creation_writer_creationwriter" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L182", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_182", - "target": "validator_test_engine_audit_test_audit_project_missing_creation_json_returns_orphan" + "source": "cache_test_creation_writer_rationale_104", + "target": "cache_test_creation_writer_test_write_creation_pins_schema_version_to_writer_default" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L203", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L136", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_203", - "target": "validator_test_engine_audit_test_audit_run_missing_creation_json_returns_orphan" + "source": "cache_test_creation_writer_rationale_136", + "target": "cache_test_creation_writer_test_update_creation_atomic_preserves_unknown_top_level_fields" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L220", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L181", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_220", - "target": "validator_test_engine_audit_test_audit_unsafe_project_name_returns_soft_finding" + "source": "cache_test_creation_writer_rationale_181", + "target": "cache_test_creation_writer_test_update_creation_atomic_serializes_concurrent_calls" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L239", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L232", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_239", - "target": "validator_test_engine_audit_test_audit_clean_project_name_has_no_unsafe_finding" + "source": "cache_test_creation_writer_rationale_232", + "target": "cache_test_creation_writer_test_read_creation_snapshot_supports_concurrent_readers" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L247", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L263", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_247", - "target": "validator_test_engine_audit_test_audit_mode_prefix_mismatch_run_with_test_kind" + "source": "cache_test_creation_writer_rationale_263", + "target": "cache_test_creation_writer_test_reading_malformed_schema_version_raises_schema_major_mismatch" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L269", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L276", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_269", - "target": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_directory_name" + "source": "cache_test_creation_writer_rationale_276", + "target": "cache_test_creation_writer_test_reading_1_0_file_applies_documented_defaults" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L294", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L315", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_294", - "target": "validator_test_engine_audit_test_audit_override_active_flag_set_when_problem_class_overridden" + "source": "cache_test_creation_writer_rationale_315", + "target": "cache_test_creation_writer_test_reading_1_7_file_backfills_lims_project_subfields" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L327", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L348", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_327", - "target": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_synced_run" + "source": "cache_test_creation_writer_rationale_348", + "target": "cache_test_creation_writer_test_writer_bumps_schema_version_on_mutation_of_old_minor" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L351", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L385", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_351", - "target": "validator_test_engine_audit_test_audit_synced_under_prior_policy_flag_for_hard_finding_on_cleaned_run" + "source": "cache_test_creation_writer_rationale_385", + "target": "cache_test_creation_writer_test_writing_always_emits_current_schema_version" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L375", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L398", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_375", - "target": "validator_test_engine_audit_test_audit_respects_content_scan_max_mib_cap" + "source": "cache_test_creation_writer_test_select_active_overrides_returns_empty_for_empty_input", + "target": "cache_creation_writer_select_active_overrides" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L399", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L403", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_399", - "target": "validator_test_engine_audit_test_audit_respects_extensions_allowlist" + "source": "cache_test_creation_writer_test_select_active_overrides_keeps_unrevoked_unexpired_entries", + "target": "api_schemas_override_entry_to_dict" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L418", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L404", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_418", - "target": "validator_test_engine_audit_test_audit_detects_binary_files_via_null_byte_sniff" + "source": "cache_test_creation_writer_test_select_active_overrides_keeps_unrevoked_unexpired_entries", + "target": "api_schemas_overrideentry" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L437", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L413", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_437", - "target": "validator_test_engine_audit_test_audit_scans_text_file_content_when_within_limits" + "source": "cache_test_creation_writer_test_select_active_overrides_keeps_unrevoked_unexpired_entries", + "target": "cache_creation_writer_select_active_overrides" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L455", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L420", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_455", - "target": "validator_test_engine_audit_test_audit_findings_are_sorted_by_tier_then_rule_then_offending_path" + "source": "cache_test_creation_writer_test_select_active_overrides_drops_revoked_entry", + "target": "api_schemas_override_entry_to_dict" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L475", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L421", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_475", - "target": "validator_test_engine_audit_test_query_problems_is_alias_for_audit" + "source": "cache_test_creation_writer_test_select_active_overrides_drops_revoked_entry", + "target": "api_schemas_overrideentry" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L488", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L429", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_488", - "target": "validator_test_engine_audit_test_audit_scope_equipment_id_resolves_to_configured_root" + "source": "cache_test_creation_writer_test_select_active_overrides_drops_revoked_entry", + "target": "api_schemas_tombstone_entry_to_dict" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L525", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L439", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_525", - "target": "validator_test_engine_audit_test_audit_scope_project_path_walks_one_subtree" + "source": "cache_test_creation_writer_test_select_active_overrides_drops_revoked_entry", + "target": "cache_creation_writer_select_active_overrides" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L550", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L447", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_550", - "target": "validator_test_engine_audit_test_audit_scope_all_walks_every_configured_equipment" + "source": "cache_test_creation_writer_test_select_active_overrides_drops_expired_entry", + "target": "api_schemas_override_entry_to_dict" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L585", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L448", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_585", - "target": "validator_test_engine_audit_test_audit_scope_unknown_equipment_id_returns_empty" + "source": "cache_test_creation_writer_test_select_active_overrides_drops_expired_entry", + "target": "api_schemas_overrideentry" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L592", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L468", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_592", - "target": "validator_test_engine_audit_test_audit_skips_cache_directory_contents" + "source": "cache_test_creation_writer_test_select_active_overrides_drops_expired_entry", + "target": "cache_creation_writer_select_active_overrides" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L608", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L474", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_608", - "target": "validator_test_engine_audit_test_audit_revoked_override_does_not_set_override_active" + "source": "cache_test_creation_writer_rationale_474", + "target": "cache_test_creation_writer_test_select_active_overrides_uses_explicit_now_for_determinism" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L645", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L477", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_645", - "target": "validator_test_engine_audit_test_audit_unresolved_placeholder_in_file_name" + "source": "cache_test_creation_writer_test_select_active_overrides_uses_explicit_now_for_determinism", + "target": "api_schemas_override_entry_to_dict" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L661", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L478", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_661", - "target": "validator_test_engine_audit_test_audit_test_run_with_experimental_kind_flagged" + "source": "cache_test_creation_writer_test_select_active_overrides_uses_explicit_now_for_determinism", + "target": "api_schemas_overrideentry" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L681", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L489", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_681", - "target": "validator_test_engine_audit_test_audit_returns_list_of_finding_dataclass_instances" + "source": "cache_test_creation_writer_test_select_active_overrides_uses_explicit_now_for_determinism", + "target": "cache_creation_writer_select_active_overrides" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L696", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L494", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_696", - "target": "validator_test_engine_audit_test_audit_includes_staging_root_when_orchestrator_on" + "source": "cache_test_creation_writer_rationale_494", + "target": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L726", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L496", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_726", - "target": "validator_test_engine_audit_test_audit_findings_carry_full_section_11_8_shape" + "source": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id", + "target": "api_schemas_tombstone_entry_to_dict" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L761", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L505", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_761", - "target": "validator_test_engine_audit_test_audit_unknown_scope_kind_raises_value_error" + "source": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id", + "target": "api_schemas_override_entry_to_dict" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L768", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L506", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_768", - "target": "validator_test_engine_audit_test_audit_root_does_not_exist_returns_empty" + "source": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id", + "target": "api_schemas_overrideentry" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L776", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L515", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_776", - "target": "validator_test_engine_audit_test_audit_root_is_a_file_returns_empty" + "source": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id", + "target": "cache_creation_writer_select_active_overrides" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L784", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L520", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_784", - "target": "validator_test_engine_audit_test_audit_handles_unreadable_directory" + "source": "cache_test_creation_writer_rationale_520", + "target": "cache_test_creation_writer_test_select_active_overrides_treats_malformed_expires_at_as_expired" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L804", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L530", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_804", - "target": "validator_test_engine_audit_test_audit_other_level_subfolder_under_project" + "source": "cache_test_creation_writer_test_select_active_overrides_treats_malformed_expires_at_as_expired", + "target": "cache_creation_writer_select_active_overrides" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L820", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L544", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_820", - "target": "validator_test_engine_audit_test_audit_other_under_test_runs_unknown_leaf" + "source": "cache_test_creation_writer_test_round_trip_preserves_plugins_applied_with_isolation", + "target": "api_schemas_pluginapplied" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L836", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L549", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_836", - "target": "validator_test_engine_audit_test_audit_deeply_nested_other_subfolder" + "source": "cache_test_creation_writer_test_round_trip_preserves_plugins_applied_with_isolation", + "target": "api_schemas_pluginisolation" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L858", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L580", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_858", - "target": "validator_test_engine_audit_test_audit_creation_json_unreadable" + "source": "cache_test_creation_writer_rationale_580", + "target": "cache_test_creation_writer_test_select_active_overrides_skips_tombstone_with_null_revokes_target" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L877", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L595", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_877", - "target": "validator_test_engine_audit_test_audit_creation_json_malformed_raw_decode" + "source": "cache_test_creation_writer_test_select_active_overrides_skips_tombstone_with_null_revokes_target", + "target": "api_schemas_override_entry_to_dict" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L889", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L596", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_889", - "target": "validator_test_engine_audit_test_audit_creation_json_missing_required_struct_field" + "source": "cache_test_creation_writer_test_select_active_overrides_skips_tombstone_with_null_revokes_target", + "target": "api_schemas_overrideentry" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L909", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L605", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_909", - "target": "validator_test_engine_audit_test_audit_readme_fields_json_decode_failure" + "source": "cache_test_creation_writer_test_select_active_overrides_skips_tombstone_with_null_revokes_target", + "target": "cache_creation_writer_select_active_overrides" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L921", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L610", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_921", - "target": "validator_test_engine_audit_test_audit_missing_required_field_with_required_ids" + "source": "cache_test_creation_writer_rationale_610", + "target": "cache_test_creation_writer_test_select_active_overrides_naive_expires_at_is_treated_as_utc" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L957", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L614", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_957", - "target": "validator_test_engine_audit_test_audit_missing_required_field_required_ids_not_a_list" + "source": "cache_test_creation_writer_test_select_active_overrides_naive_expires_at_is_treated_as_utc", + "target": "api_schemas_override_entry_to_dict" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L992", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L615", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_992", - "target": "validator_test_engine_audit_test_audit_content_scan_skips_test_runs_marker_file" + "source": "cache_test_creation_writer_test_select_active_overrides_naive_expires_at_is_treated_as_utc", + "target": "api_schemas_overrideentry" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1025", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L624", "weight": 1.0, - "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_1025", - "target": "validator_test_engine_audit_test_audit_content_scan_eligibility_returns_false_on_stat_failure" + "source": "cache_test_creation_writer_test_select_active_overrides_naive_expires_at_is_treated_as_utc", + "target": "cache_creation_writer_select_active_overrides" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1052", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L632", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_1052", - "target": "validator_test_engine_audit_test_audit_read_text_for_scan_handles_oserror" + "source": "cache_test_creation_writer_rationale_632", + "target": "cache_test_creation_writer_test_reading_file_missing_schema_version_raises_schema_major_mismatch" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1076", + "source_file": "tests/unit/cache/test_creation_writer.py", + "source_location": "L643", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_1076", - "target": "validator_test_engine_audit_test_classify_level_value_error_returns_other" + "source": "cache_test_creation_writer_rationale_643", + "target": "cache_test_creation_writer_test_update_creation_atomic_backfills_missing_override_id" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1090", + "source_file": "tests/unit/cache/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_1090", - "target": "validator_test_engine_audit_test_finding_sort_unknown_tier_sorts_after_committed_tiers" + "source": "cache_init_rationale_1", + "target": "tests_unit_cache_init_py" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1114", + "source_file": "src/exlab_wizard/cache/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_1114", - "target": "validator_test_engine_audit_test_level_for_orphan_returns_none_for_unmapped_levels" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1117", - "weight": 1.0, - "source": "validator_test_engine_audit_test_level_for_orphan_returns_none_for_unmapped_levels", - "target": "validator_engine_level_for_orphan" + "source": "cache_init_rationale_1", + "target": "src_exlab_wizard_cache_init_py" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1123", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_1123", - "target": "validator_test_engine_audit_test_validator_from_config_builds_engine" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_make_equipment_payload" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1132", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L62", "weight": 1.0, - "source": "validator_test_engine_audit_test_validator_from_config_builds_engine", - "target": "config_models_validatorconfig" + "confidence_score": 1.0, + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_make_test_runs_payload" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1141", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_1141", - "target": "validator_test_engine_audit_test_validator_from_config_orchestrator_disabled" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_write_equipment_produces_valid_v1_file" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1155", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_1155", - "target": "validator_test_engine_audit_test_validator_from_config_no_orchestrator_attr" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_write_equipment_creates_parent_cache_dir" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1166", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L114", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_1166", - "target": "validator_test_engine_audit_test_classify_level_unrelated_dir_returns_other" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_write_equipment_preserves_first_seen_at_on_rewrite" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1176", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_1176", - "target": "validator_test_engine_audit_test_compute_run_path_unrelated_other_returns_input" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_write_equipment_updates_last_modified_at_on_rewrite" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/validator/test_engine_audit.py", - "source_location": "L1188", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L146", "weight": 1.0, "confidence_score": 1.0, - "source": "validator_test_engine_audit_rationale_1188", - "target": "validator_test_engine_audit_test_compute_run_path_root_other_returns_root" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_read_equipment_round_trips" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L33", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L163", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_with_all_tags_matches_spec_example" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_read_equipment_raises_when_file_missing" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L52", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_with_run_id_includes_run_tag" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_write_equipment_corrupt_existing_file_recovers" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L70", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L193", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_omits_unset_tags" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_write_test_runs_marker_creates_v1_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L86", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L206", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_partial_tags_skipped_individually" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_write_test_runs_marker_creates_parent_dir" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L102", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L215", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_level_is_padded_to_five_chars" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_write_test_runs_marker_is_idempotent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L115", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L239", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_timestamp_is_zero_padded_iso_with_z" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_write_test_runs_marker_concurrent_first_writes_safe" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L123", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L266", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_naive_datetime_treated_as_utc" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_read_test_runs_marker_round_trips" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L130", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L282", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_aware_non_utc_datetime_converts_to_utc" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_require_schema_major_raises_on_none_version" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L142", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L291", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_short_message_unchanged" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_require_schema_major_raises_on_empty_version" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L152", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L300", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_truncates_long_messages_with_marker" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_require_schema_major_raises_on_garbage_version" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L165", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L309", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_truncation_preserves_prefix_and_tags" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_require_schema_major_passes_on_same_major" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L179", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L319", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_truncation_at_exact_boundary" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_read_equipment_skips_check_for_malformed_json" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L199", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L332", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_append_log_line_creates_parent_cache_dir" + "source": "tests_unit_cache_test_equipment_py", + "target": "cache_test_equipment_test_read_equipment_skips_check_when_schema_version_missing" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L208", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_append_log_line_writes_single_line_with_newline" + "source": "cache_test_equipment_rationale_1", + "target": "tests_unit_cache_test_equipment_py" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L215", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_append_log_line_appends_to_existing_file" + "source": "cache_test_equipment_test_write_equipment_produces_valid_v1_file", + "target": "cache_test_equipment_make_equipment_payload" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L225", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_append_log_line_concurrent_writes_do_not_interleave" + "source": "cache_test_equipment_test_write_equipment_creates_parent_cache_dir", + "target": "cache_test_equipment_make_equipment_payload" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L255", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_append_log_line_idempotent_directory_creation" + "source": "cache_test_equipment_test_write_equipment_preserves_first_seen_at_on_rewrite", + "target": "cache_test_equipment_make_equipment_payload" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L268", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_truncation_prefix_alone_too_big_emits_marker_only" + "source": "cache_test_equipment_test_write_equipment_updates_last_modified_at_on_rewrite", + "target": "cache_test_equipment_make_equipment_payload" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L286", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L150", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_log_writer_py", - "target": "cache_test_log_writer_test_format_log_line_truncation_prefix_alone_exhausts_budget" + "source": "cache_test_equipment_test_read_equipment_round_trips", + "target": "cache_test_equipment_make_equipment_payload" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L1", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L181", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_1", - "target": "tests_unit_cache_test_log_writer_py" + "source": "cache_test_equipment_test_write_equipment_corrupt_existing_file_recovers", + "target": "cache_test_equipment_make_equipment_payload" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L34", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_34", - "target": "cache_test_log_writer_test_format_log_line_with_all_tags_matches_spec_example" + "source": "cache_test_equipment_rationale_44", + "target": "cache_test_equipment_make_equipment_payload" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L35", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L51", "weight": 1.0, - "source": "cache_test_log_writer_test_format_log_line_with_all_tags_matches_spec_example", - "target": "cache_log_writer_format_log_line" + "source": "cache_test_equipment_make_equipment_payload", + "target": "api_schemas_equipmentjson" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L53", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L196", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_53", - "target": "cache_test_log_writer_test_format_log_line_with_run_id_includes_run_tag" + "source": "cache_test_equipment_test_write_test_runs_marker_creates_v1_file", + "target": "cache_test_equipment_make_test_runs_payload" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L54", + "confidence": "EXTRACTED", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L210", "weight": 1.0, - "source": "cache_test_log_writer_test_format_log_line_with_run_id_includes_run_tag", - "target": "cache_log_writer_format_log_line" + "confidence_score": 1.0, + "source": "cache_test_equipment_test_write_test_runs_marker_creates_parent_dir", + "target": "cache_test_equipment_make_test_runs_payload" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L71", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L224", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_71", - "target": "cache_test_log_writer_test_format_log_line_omits_unset_tags" + "source": "cache_test_equipment_test_write_test_runs_marker_is_idempotent", + "target": "cache_test_equipment_make_test_runs_payload" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L72", + "confidence": "EXTRACTED", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L249", "weight": 1.0, - "source": "cache_test_log_writer_test_format_log_line_omits_unset_tags", - "target": "cache_log_writer_format_log_line" + "confidence_score": 1.0, + "source": "cache_test_equipment_test_write_test_runs_marker_concurrent_first_writes_safe", + "target": "cache_test_equipment_make_test_runs_payload" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L270", + "weight": 1.0, + "confidence_score": 1.0, + "source": "cache_test_equipment_test_read_test_runs_marker_round_trips", + "target": "cache_test_equipment_make_test_runs_payload" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L87", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L84", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_87", - "target": "cache_test_log_writer_test_format_log_line_partial_tags_skipped_individually" + "source": "cache_test_equipment_rationale_84", + "target": "cache_test_equipment_test_write_equipment_produces_valid_v1_file" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L88", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L85", "weight": 1.0, - "source": "cache_test_log_writer_test_format_log_line_partial_tags_skipped_individually", - "target": "cache_log_writer_format_log_line" + "source": "cache_test_equipment_test_write_equipment_produces_valid_v1_file", + "target": "cache_equipment_equipmentcachewriter" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L103", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_103", - "target": "cache_test_log_writer_test_format_log_line_level_is_padded_to_five_chars" + "source": "cache_test_equipment_rationale_105", + "target": "cache_test_equipment_test_write_equipment_creates_parent_cache_dir" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L104", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L106", "weight": 1.0, - "source": "cache_test_log_writer_test_format_log_line_level_is_padded_to_five_chars", - "target": "cache_log_writer_format_log_line" + "source": "cache_test_equipment_test_write_equipment_creates_parent_cache_dir", + "target": "cache_equipment_equipmentcachewriter" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L116", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L115", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_116", - "target": "cache_test_log_writer_test_format_log_line_timestamp_is_zero_padded_iso_with_z" + "source": "cache_test_equipment_rationale_115", + "target": "cache_test_equipment_test_write_equipment_preserves_first_seen_at_on_rewrite" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L118", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L116", "weight": 1.0, - "source": "cache_test_log_writer_test_format_log_line_timestamp_is_zero_padded_iso_with_z", - "target": "cache_log_writer_format_log_line" + "source": "cache_test_equipment_test_write_equipment_preserves_first_seen_at_on_rewrite", + "target": "cache_equipment_equipmentcachewriter" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L124", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L132", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_124", - "target": "cache_test_log_writer_test_format_log_line_naive_datetime_treated_as_utc" + "source": "cache_test_equipment_rationale_132", + "target": "cache_test_equipment_test_write_equipment_updates_last_modified_at_on_rewrite" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L126", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L133", "weight": 1.0, - "source": "cache_test_log_writer_test_format_log_line_naive_datetime_treated_as_utc", - "target": "cache_log_writer_format_log_line" + "source": "cache_test_equipment_test_write_equipment_updates_last_modified_at_on_rewrite", + "target": "cache_equipment_equipmentcachewriter" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L131", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L147", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_131", - "target": "cache_test_log_writer_test_format_log_line_aware_non_utc_datetime_converts_to_utc" + "source": "cache_test_equipment_rationale_147", + "target": "cache_test_equipment_test_read_equipment_round_trips" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L138", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L148", "weight": 1.0, - "source": "cache_test_log_writer_test_format_log_line_aware_non_utc_datetime_converts_to_utc", - "target": "cache_log_writer_format_log_line" + "source": "cache_test_equipment_test_read_equipment_round_trips", + "target": "cache_equipment_equipmentcachewriter" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L164", + "weight": 1.0, + "source": "cache_test_equipment_test_read_equipment_raises_when_file_missing", + "target": "cache_equipment_equipmentcachewriter" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L143", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L172", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_143", - "target": "cache_test_log_writer_test_format_log_line_short_message_unchanged" + "source": "cache_test_equipment_rationale_172", + "target": "cache_test_equipment_test_write_equipment_corrupt_existing_file_recovers" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L144", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L178", "weight": 1.0, - "source": "cache_test_log_writer_test_format_log_line_short_message_unchanged", - "target": "cache_log_writer_format_log_line" + "source": "cache_test_equipment_test_write_equipment_corrupt_existing_file_recovers", + "target": "cache_equipment_equipmentcachewriter" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L153", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L194", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_153", - "target": "cache_test_log_writer_test_format_log_line_truncates_long_messages_with_marker" + "source": "cache_test_equipment_test_write_test_runs_marker_creates_v1_file", + "target": "cache_equipment_equipmentcachewriter" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L155", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L207", "weight": 1.0, - "source": "cache_test_log_writer_test_format_log_line_truncates_long_messages_with_marker", - "target": "cache_log_writer_format_log_line" + "source": "cache_test_equipment_test_write_test_runs_marker_creates_parent_dir", + "target": "cache_equipment_equipmentcachewriter" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L166", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L216", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_166", - "target": "cache_test_log_writer_test_format_log_line_truncation_preserves_prefix_and_tags" + "source": "cache_test_equipment_rationale_216", + "target": "cache_test_equipment_test_write_test_runs_marker_is_idempotent" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L167", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L222", "weight": 1.0, - "source": "cache_test_log_writer_test_format_log_line_truncation_preserves_prefix_and_tags", - "target": "cache_log_writer_format_log_line" + "source": "cache_test_equipment_test_write_test_runs_marker_is_idempotent", + "target": "cache_equipment_equipmentcachewriter" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L180", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L240", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_180", - "target": "cache_test_log_writer_test_format_log_line_truncation_at_exact_boundary" + "source": "cache_test_equipment_rationale_240", + "target": "cache_test_equipment_test_write_test_runs_marker_concurrent_first_writes_safe" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L182", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L246", "weight": 1.0, - "source": "cache_test_log_writer_test_format_log_line_truncation_at_exact_boundary", - "target": "cache_log_writer_format_log_line" + "source": "cache_test_equipment_test_write_test_runs_marker_concurrent_first_writes_safe", + "target": "cache_equipment_equipmentcachewriter" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L200", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L267", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_200", - "target": "cache_test_log_writer_test_append_log_line_creates_parent_cache_dir" + "source": "cache_test_equipment_rationale_267", + "target": "cache_test_equipment_test_read_test_runs_marker_round_trips" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L203", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L268", "weight": 1.0, - "source": "cache_test_log_writer_test_append_log_line_creates_parent_cache_dir", - "target": "cache_log_writer_append_log_line" + "source": "cache_test_equipment_test_read_test_runs_marker_round_trips", + "target": "cache_equipment_equipmentcachewriter" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L283", + "weight": 1.0, + "confidence_score": 1.0, + "source": "cache_test_equipment_rationale_283", + "target": "cache_test_equipment_test_require_schema_major_raises_on_none_version" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L210", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L288", "weight": 1.0, - "source": "cache_test_log_writer_test_append_log_line_writes_single_line_with_newline", - "target": "cache_log_writer_append_log_line" + "source": "cache_test_equipment_test_require_schema_major_raises_on_none_version", + "target": "io_json_files_require_schema_major" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L216", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L292", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_216", - "target": "cache_test_log_writer_test_append_log_line_appends_to_existing_file" + "source": "cache_test_equipment_rationale_292", + "target": "cache_test_equipment_test_require_schema_major_raises_on_empty_version" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L218", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L297", "weight": 1.0, - "source": "cache_test_log_writer_test_append_log_line_appends_to_existing_file", - "target": "cache_log_writer_append_log_line" + "source": "cache_test_equipment_test_require_schema_major_raises_on_empty_version", + "target": "io_json_files_require_schema_major" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L226", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L301", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_226", - "target": "cache_test_log_writer_test_append_log_line_concurrent_writes_do_not_interleave" + "source": "cache_test_equipment_rationale_301", + "target": "cache_test_equipment_test_require_schema_major_raises_on_garbage_version" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L306", + "weight": 1.0, + "source": "cache_test_equipment_test_require_schema_major_raises_on_garbage_version", + "target": "io_json_files_require_schema_major" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L256", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L310", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_256", - "target": "cache_test_log_writer_test_append_log_line_idempotent_directory_creation" + "source": "cache_test_equipment_rationale_310", + "target": "cache_test_equipment_test_require_schema_major_passes_on_same_major" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L258", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L314", "weight": 1.0, - "source": "cache_test_log_writer_test_append_log_line_idempotent_directory_creation", - "target": "cache_log_writer_append_log_line" + "source": "cache_test_equipment_test_require_schema_major_passes_on_same_major", + "target": "io_json_files_require_schema_major" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L271", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L320", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_271", - "target": "cache_test_log_writer_test_format_log_line_truncation_prefix_alone_too_big_emits_marker_only" + "source": "cache_test_equipment_rationale_320", + "target": "cache_test_equipment_test_read_equipment_skips_check_for_malformed_json" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L322", + "weight": 1.0, + "source": "cache_test_equipment_test_read_equipment_skips_check_for_malformed_json", + "target": "cache_equipment_equipmentcachewriter" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_log_writer.py", - "source_location": "L289", + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L335", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_log_writer_rationale_289", - "target": "cache_test_log_writer_test_format_log_line_truncation_prefix_alone_exhausts_budget" + "source": "cache_test_equipment_rationale_335", + "target": "cache_test_equipment_test_read_equipment_skips_check_when_schema_version_missing" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L48", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_equipment.py", + "source_location": "L337", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "cache_test_equipment_test_read_equipment_skips_check_when_schema_version_missing", + "target": "cache_equipment_equipmentcachewriter" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L74", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_writer" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_state_path" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L79", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_creation_path" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_read_when_absent_returns_empty_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L89", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_write_creation_emits_valid_current_version_file" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_upsert_file_creates_a_record" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L101", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_write_creation_pins_schema_version_to_writer_default" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_upsert_file_updates_existing_record" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L117", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_update_creation_atomic_mutates_target_field" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_upsert_file_preserves_keep_local" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L133", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_update_creation_atomic_preserves_unknown_top_level_fields" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_set_keep_local_creates_record_if_absent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L152", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_update_creation_atomic_appends_validation_override" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_set_keep_local_toggles_and_preserves_sync_fields" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L178", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_update_creation_atomic_serializes_concurrent_calls" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_mark_cleared_sets_cleared_at" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L219", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L163", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_read_creation_snapshot_returns_typed_struct" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_mark_cleared_on_absent_file_creates_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L229", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L172", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_read_creation_snapshot_supports_concurrent_readers" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_mutators_create_missing_exlab_wizard_dir" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L247", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L203", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_reading_2_0_file_raises_schema_major_mismatch" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_rollup_state_syncing_when_empty" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L260", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_reading_malformed_schema_version_raises_schema_major_mismatch" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_rollup_state_syncing_when_some_unverified" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L273", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L219", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_reading_1_0_file_applies_documented_defaults" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_rollup_state_synced_when_all_verified" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L312", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L230", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_reading_1_7_file_backfills_lims_project_subfields" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_rollup_state_cleared_takes_precedence_over_unverified" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L345", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L244", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_writer_bumps_schema_version_on_mutation_of_old_minor" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_sync_state_json_round_trips_through_msgspec" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L382", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L272", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_writing_always_emits_current_schema_version" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_read_raises_on_schema_major_mismatch" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L397", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L302", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_select_active_overrides_returns_empty_for_empty_input" + "source": "tests_unit_cache_test_sync_state_writer_py", + "target": "cache_test_sync_state_writer_test_concurrent_upserts_on_distinct_files_both_survive" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L401", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_select_active_overrides_keeps_unrevoked_unexpired_entries" + "source": "cache_test_sync_state_writer_rationale_1", + "target": "tests_unit_cache_test_sync_state_writer_py" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L418", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_select_active_overrides_drops_revoked_entry" + "source": "cache_test_sync_state_writer_test_read_when_absent_returns_empty_state", + "target": "cache_test_sync_state_writer_state_path" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L443", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L62", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_select_active_overrides_drops_expired_entry" + "source": "cache_test_sync_state_writer_test_upsert_file_creates_a_record", + "target": "cache_test_sync_state_writer_state_path" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L473", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_select_active_overrides_uses_explicit_now_for_determinism" + "source": "cache_test_sync_state_writer_test_mark_cleared_on_absent_file_creates_state", + "target": "cache_test_sync_state_writer_state_path" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L493", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L192", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id" + "source": "cache_test_sync_state_writer_test_mutators_create_missing_exlab_wizard_dir", + "target": "cache_test_sync_state_writer_state_path" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L519", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L278", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_select_active_overrides_treats_malformed_expires_at_as_expired" + "source": "cache_test_sync_state_writer_test_read_raises_on_schema_major_mismatch", + "target": "cache_test_sync_state_writer_state_path" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L539", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L26", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_round_trip_preserves_plugins_applied_with_isolation" + "source": "cache_test_sync_state_writer_state_path", + "target": "exlab_wizard_paths_cache_dir" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L566", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L35", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_reading_file_with_missing_required_field_raises_validation_error" + "source": "cache_test_sync_state_writer_test_read_when_absent_returns_empty_state", + "target": "cache_sync_state_writer_syncstatewriter" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L579", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L53", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_select_active_overrides_skips_tombstone_with_null_revokes_target" + "source": "cache_test_sync_state_writer_test_upsert_file_creates_a_record", + "target": "cache_sync_state_writer_syncstatewriter" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L609", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L73", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_select_active_overrides_naive_expires_at_is_treated_as_utc" + "source": "cache_test_sync_state_writer_test_upsert_file_updates_existing_record", + "target": "cache_sync_state_writer_syncstatewriter" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L629", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L91", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_reading_file_missing_schema_version_raises_schema_major_mismatch" + "source": "cache_test_sync_state_writer_test_upsert_file_preserves_keep_local", + "target": "cache_sync_state_writer_syncstatewriter" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L640", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L113", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_creation_writer_py", - "target": "cache_test_creation_writer_test_update_creation_atomic_backfills_missing_override_id" + "source": "cache_test_sync_state_writer_test_set_keep_local_creates_record_if_absent", + "target": "cache_sync_state_writer_syncstatewriter" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L124", + "weight": 1.0, + "source": "cache_test_sync_state_writer_test_set_keep_local_toggles_and_preserves_sync_fields", + "target": "cache_sync_state_writer_syncstatewriter" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L149", + "weight": 1.0, + "source": "cache_test_sync_state_writer_test_mark_cleared_sets_cleared_at", + "target": "cache_sync_state_writer_syncstatewriter" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L164", + "weight": 1.0, + "source": "cache_test_sync_state_writer_test_mark_cleared_on_absent_file_creates_state", + "target": "cache_sync_state_writer_syncstatewriter" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L1", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L173", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_1", - "target": "tests_unit_cache_test_creation_writer_py" + "source": "cache_test_sync_state_writer_rationale_173", + "target": "cache_test_sync_state_writer_test_mutators_create_missing_exlab_wizard_dir" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L179", + "weight": 1.0, + "source": "cache_test_sync_state_writer_test_mutators_create_missing_exlab_wizard_dir", + "target": "cache_sync_state_writer_syncstatewriter" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L204", + "weight": 1.0, + "source": "cache_test_sync_state_writer_test_rollup_state_syncing_when_empty", + "target": "cache_sync_state_schema_syncstatejson" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L209", + "weight": 1.0, + "source": "cache_test_sync_state_writer_test_rollup_state_syncing_when_some_unverified", + "target": "cache_sync_state_schema_syncstatejson" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L92", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L212", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_write_creation_emits_valid_current_version_file", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "cache_test_sync_state_writer_test_rollup_state_syncing_when_some_unverified", + "target": "cache_sync_state_schema_filesyncrecord" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L105", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L220", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_write_creation_pins_schema_version_to_writer_default", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "cache_test_sync_state_writer_test_rollup_state_synced_when_all_verified", + "target": "cache_sync_state_schema_syncstatejson" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L120", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L223", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_update_creation_atomic_mutates_target_field", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "cache_test_sync_state_writer_test_rollup_state_synced_when_all_verified", + "target": "cache_sync_state_schema_filesyncrecord" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L137", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L231", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_update_creation_atomic_preserves_unknown_top_level_fields", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "cache_test_sync_state_writer_test_rollup_state_cleared_takes_precedence_over_unverified", + "target": "cache_sync_state_schema_syncstatejson" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L155", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L234", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_update_creation_atomic_appends_validation_override", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "cache_test_sync_state_writer_test_rollup_state_cleared_takes_precedence_over_unverified", + "target": "cache_sync_state_schema_filesyncrecord" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L187", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L245", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_update_creation_atomic_serializes_concurrent_calls", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "cache_test_sync_state_writer_test_sync_state_json_round_trips_through_msgspec", + "target": "cache_sync_state_schema_syncstatejson" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L249", + "weight": 1.0, + "source": "cache_test_sync_state_writer_test_sync_state_json_round_trips_through_msgspec", + "target": "cache_sync_state_schema_filesyncrecord" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L222", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L273", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_read_creation_snapshot_returns_typed_struct", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "cache_test_sync_state_writer_rationale_273", + "target": "cache_test_sync_state_writer_test_read_raises_on_schema_major_mismatch" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L290", + "weight": 1.0, + "source": "cache_test_sync_state_writer_test_read_raises_on_schema_major_mismatch", + "target": "cache_sync_state_writer_syncstatewriter" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L233", + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L303", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_read_creation_snapshot_supports_concurrent_readers", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "cache_test_sync_state_writer_rationale_303", + "target": "cache_test_sync_state_writer_test_concurrent_upserts_on_distinct_files_both_survive" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/cache/test_sync_state_writer.py", + "source_location": "L308", + "weight": 1.0, + "source": "cache_test_sync_state_writer_test_concurrent_upserts_on_distinct_files_both_survive", + "target": "cache_sync_state_writer_syncstatewriter" + }, + { + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L250", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_reading_2_0_file_raises_schema_major_mismatch", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_load_config_complete_yaml" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L265", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_reading_malformed_schema_version_raises_schema_major_mismatch", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_load_config_missing_file_raises" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L386", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_writing_always_emits_current_schema_version", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_load_config_invalid_yaml_raises" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L542", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_round_trip_preserves_plugins_applied_with_isolation", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_load_config_top_level_not_mapping_raises" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L645", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_test_update_creation_atomic_backfills_missing_override_id", - "target": "cache_test_creation_writer_build_minimal_payload" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_load_config_validation_error_raises_config_error" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L55", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L132", "weight": 1.0, - "source": "cache_test_creation_writer_build_minimal_payload", - "target": "api_schemas_limsprojectblock" + "confidence_score": 1.0, + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_load_config_from_text_empty_returns_empty_config" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L60", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L141", "weight": 1.0, - "source": "cache_test_creation_writer_build_minimal_payload", - "target": "api_schemas_templateblock" + "confidence_score": 1.0, + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_load_config_unreadable_path_raises_config_error" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L67", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L163", "weight": 1.0, - "source": "cache_test_creation_writer_build_minimal_payload", - "target": "api_schemas_pathsblock" + "confidence_score": 1.0, + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_save_config_atomic" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L70", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L175", "weight": 1.0, - "source": "cache_test_creation_writer_build_minimal_payload", - "target": "api_schemas_creationjson" + "confidence_score": 1.0, + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_save_config_preserves_comments_round_trip" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L75", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L189", "weight": 1.0, - "source": "cache_test_creation_writer_writer", - "target": "cache_creation_writer_creationwriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_save_config_preserves_key_order" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L104", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L205", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_104", - "target": "cache_test_creation_writer_test_write_creation_pins_schema_version_to_writer_default" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_save_config_creates_parent_dirs" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L136", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L215", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_136", - "target": "cache_test_creation_writer_test_update_creation_atomic_preserves_unknown_top_level_fields" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_save_config_without_original_text_writes_fresh" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L181", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L234", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_181", - "target": "cache_test_creation_writer_test_update_creation_atomic_serializes_concurrent_calls" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_dump_config_round_trip" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L232", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L306", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_232", - "target": "cache_test_creation_writer_test_read_creation_snapshot_supports_concurrent_readers" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_test_mode_unset_leaves_equipment_ids_unchanged" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L263", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L313", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_263", - "target": "cache_test_creation_writer_test_reading_malformed_schema_version_raises_schema_major_mismatch" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_test_mode_enabled_prefixes_every_equipment_id" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L276", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L326", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_276", - "target": "cache_test_creation_writer_test_reading_1_0_file_applies_documented_defaults" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_test_mode_is_idempotent_on_already_prefixed_ids" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L315", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L358", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_315", - "target": "cache_test_creation_writer_test_reading_1_7_file_backfills_lims_project_subfields" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_test_mode_preserves_unique_id_invariant" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L348", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L374", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_348", - "target": "cache_test_creation_writer_test_writer_bumps_schema_version_on_mutation_of_old_minor" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_test_mode_truthy_values_trigger_prefix" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L385", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L386", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_385", - "target": "cache_test_creation_writer_test_writing_always_emits_current_schema_version" + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_test_mode_falsy_values_do_not_trigger_prefix" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L398", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L395", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_returns_empty_for_empty_input", - "target": "cache_creation_writer_select_active_overrides" + "confidence_score": 1.0, + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_test_mode_unset_via_delenv_does_not_trigger_prefix" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L403", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L404", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_keeps_unrevoked_unexpired_entries", - "target": "api_schemas_override_entry_to_dict" + "confidence_score": 1.0, + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_apply_test_mode_prefix_helper_is_a_pure_function" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L404", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L389", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_keeps_unrevoked_unexpired_entries", - "target": "api_schemas_overrideentry" + "confidence_score": 1.0, + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_loader_round_trips_nas_block" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L413", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L423", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_keeps_unrevoked_unexpired_entries", - "target": "cache_creation_writer_select_active_overrides" + "confidence_score": 1.0, + "source": "tests_unit_config_test_loader_py", + "target": "config_test_loader_test_load_config_uses_ruamel_round_trip" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L420", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L1", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_drops_revoked_entry", - "target": "api_schemas_override_entry_to_dict" + "confidence_score": 1.0, + "source": "config_test_loader_rationale_1", + "target": "tests_unit_config_test_loader_py" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L421", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L47", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_drops_revoked_entry", - "target": "api_schemas_overrideentry" + "source": "config_test_loader_test_load_config_complete_yaml", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L429", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L86", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_drops_revoked_entry", - "target": "api_schemas_tombstone_entry_to_dict" + "source": "config_test_loader_test_load_config_missing_file_raises", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L439", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L96", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_drops_revoked_entry", - "target": "cache_creation_writer_select_active_overrides" + "source": "config_test_loader_test_load_config_invalid_yaml_raises", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L447", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L104", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_drops_expired_entry", - "target": "api_schemas_override_entry_to_dict" + "source": "config_test_loader_test_load_config_top_level_not_mapping_raises", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L448", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L127", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_drops_expired_entry", - "target": "api_schemas_overrideentry" + "source": "config_test_loader_test_load_config_validation_error_raises_config_error", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L468", - "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_drops_expired_entry", - "target": "cache_creation_writer_select_active_overrides" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L474", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L135", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_474", - "target": "cache_test_creation_writer_test_select_active_overrides_uses_explicit_now_for_determinism" + "source": "config_test_loader_test_load_config_from_text_empty_returns_empty_config", + "target": "config_loader_load_config_from_text" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L477", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L149", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_uses_explicit_now_for_determinism", - "target": "api_schemas_override_entry_to_dict" + "source": "config_test_loader_test_load_config_unreadable_path_raises_config_error", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L478", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L164", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_uses_explicit_now_for_determinism", - "target": "api_schemas_overrideentry" + "source": "config_test_loader_test_save_config_atomic", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L489", - "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_uses_explicit_now_for_determinism", - "target": "cache_creation_writer_select_active_overrides" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L494", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L167", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_494", - "target": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id" + "source": "config_test_loader_test_save_config_atomic", + "target": "config_loader_save_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L496", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L178", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id", - "target": "api_schemas_tombstone_entry_to_dict" + "source": "config_test_loader_test_save_config_preserves_comments_round_trip", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L505", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L181", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id", - "target": "api_schemas_override_entry_to_dict" + "source": "config_test_loader_test_save_config_preserves_comments_round_trip", + "target": "config_loader_save_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L506", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L192", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id", - "target": "api_schemas_overrideentry" + "source": "config_test_loader_test_save_config_preserves_key_order", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L515", - "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_ignores_tombstone_for_unknown_id", - "target": "cache_creation_writer_select_active_overrides" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L520", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L195", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_520", - "target": "cache_test_creation_writer_test_select_active_overrides_treats_malformed_expires_at_as_expired" + "source": "config_test_loader_test_save_config_preserves_key_order", + "target": "config_loader_save_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L530", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L206", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_treats_malformed_expires_at_as_expired", - "target": "cache_creation_writer_select_active_overrides" + "source": "config_test_loader_test_save_config_creates_parent_dirs", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L544", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L209", "weight": 1.0, - "source": "cache_test_creation_writer_test_round_trip_preserves_plugins_applied_with_isolation", - "target": "api_schemas_pluginapplied" + "source": "config_test_loader_test_save_config_creates_parent_dirs", + "target": "config_loader_save_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L549", - "weight": 1.0, - "source": "cache_test_creation_writer_test_round_trip_preserves_plugins_applied_with_isolation", - "target": "api_schemas_pluginisolation" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L580", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L216", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_580", - "target": "cache_test_creation_writer_test_select_active_overrides_skips_tombstone_with_null_revokes_target" + "source": "config_test_loader_test_save_config_without_original_text_writes_fresh", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L595", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L219", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_skips_tombstone_with_null_revokes_target", - "target": "api_schemas_override_entry_to_dict" + "source": "config_test_loader_test_save_config_without_original_text_writes_fresh", + "target": "config_loader_save_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L596", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L264", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_skips_tombstone_with_null_revokes_target", - "target": "api_schemas_overrideentry" + "source": "config_test_loader_test_dump_config_round_trip", + "target": "config_loader_dump_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L605", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L265", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_skips_tombstone_with_null_revokes_target", - "target": "cache_creation_writer_select_active_overrides" + "source": "config_test_loader_test_dump_config_round_trip", + "target": "config_loader_load_config_from_text" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L610", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L283", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_610", - "target": "cache_test_creation_writer_test_select_active_overrides_naive_expires_at_is_treated_as_utc" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L614", - "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_naive_expires_at_is_treated_as_utc", - "target": "api_schemas_override_entry_to_dict" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L615", - "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_naive_expires_at_is_treated_as_utc", - "target": "api_schemas_overrideentry" + "source": "config_test_loader_rationale_283", + "target": "config_test_loader_test_test_mode_unset_leaves_equipment_ids_unchanged" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L624", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L309", "weight": 1.0, - "source": "cache_test_creation_writer_test_select_active_overrides_naive_expires_at_is_treated_as_utc", - "target": "cache_creation_writer_select_active_overrides" + "source": "config_test_loader_test_test_mode_unset_leaves_equipment_ids_unchanged", + "target": "config_loader_load_config_from_text" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L632", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L307", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_632", - "target": "cache_test_creation_writer_test_reading_file_missing_schema_version_raises_schema_major_mismatch" + "source": "config_test_loader_rationale_307", + "target": "config_test_loader_test_test_mode_unset_leaves_equipment_ids_unchanged" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_creation_writer.py", - "source_location": "L643", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L290", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_creation_writer_rationale_643", - "target": "cache_test_creation_writer_test_update_creation_atomic_backfills_missing_override_id" + "source": "config_test_loader_rationale_290", + "target": "config_test_loader_test_test_mode_enabled_prefixes_every_equipment_id" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/__init__.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L316", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_init_rationale_1", - "target": "tests_unit_cache_init_py" + "source": "config_test_loader_test_test_mode_enabled_prefixes_every_equipment_id", + "target": "config_loader_load_config_from_text" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/cache/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L314", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_init_rationale_1", - "target": "src_exlab_wizard_cache_init_py" + "source": "config_test_loader_rationale_314", + "target": "config_test_loader_test_test_mode_enabled_prefixes_every_equipment_id" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L35", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L305", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_make_equipment_payload" + "source": "config_test_loader_rationale_305", + "target": "config_test_loader_test_test_mode_is_idempotent_on_already_prefixed_ids" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L62", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L352", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_make_test_runs_payload" + "source": "config_test_loader_test_test_mode_is_idempotent_on_already_prefixed_ids", + "target": "config_loader_load_config_from_text" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L83", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L329", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_write_equipment_produces_valid_v1_file" + "source": "config_test_loader_rationale_329", + "target": "config_test_loader_test_test_mode_is_idempotent_on_already_prefixed_ids" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L104", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L325", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_write_equipment_creates_parent_cache_dir" + "source": "config_test_loader_rationale_325", + "target": "config_test_loader_test_test_mode_preserves_unique_id_invariant" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L114", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L361", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_write_equipment_preserves_first_seen_at_on_rewrite" + "source": "config_test_loader_test_test_mode_preserves_unique_id_invariant", + "target": "config_loader_load_config_from_text" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L131", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L359", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_write_equipment_updates_last_modified_at_on_rewrite" + "source": "config_test_loader_rationale_359", + "target": "config_test_loader_test_test_mode_preserves_unique_id_invariant" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L146", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L343", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_read_equipment_round_trips" + "source": "config_test_loader_rationale_343", + "target": "config_test_loader_test_test_mode_truthy_values_trigger_prefix" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L163", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L379", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_read_equipment_raises_when_file_missing" + "source": "config_test_loader_test_test_mode_truthy_values_trigger_prefix", + "target": "config_loader_load_config_from_text" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L171", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L377", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_write_equipment_corrupt_existing_file_recovers" + "source": "config_test_loader_rationale_377", + "target": "config_test_loader_test_test_mode_truthy_values_trigger_prefix" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L193", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L355", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_write_test_runs_marker_creates_v1_file" + "source": "config_test_loader_rationale_355", + "target": "config_test_loader_test_test_mode_falsy_values_do_not_trigger_prefix" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L206", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L391", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_write_test_runs_marker_creates_parent_dir" + "source": "config_test_loader_test_test_mode_falsy_values_do_not_trigger_prefix", + "target": "config_loader_load_config_from_text" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L215", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L389", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_write_test_runs_marker_is_idempotent" + "source": "config_test_loader_rationale_389", + "target": "config_test_loader_test_test_mode_falsy_values_do_not_trigger_prefix" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L239", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L364", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_write_test_runs_marker_concurrent_first_writes_safe" + "source": "config_test_loader_rationale_364", + "target": "config_test_loader_test_test_mode_unset_via_delenv_does_not_trigger_prefix" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L266", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L400", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_read_test_runs_marker_round_trips" + "source": "config_test_loader_test_test_mode_unset_via_delenv_does_not_trigger_prefix", + "target": "config_loader_load_config_from_text" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L282", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L398", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_require_schema_major_raises_on_none_version" + "source": "config_test_loader_rationale_398", + "target": "config_test_loader_test_test_mode_unset_via_delenv_does_not_trigger_prefix" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L291", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L373", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_require_schema_major_raises_on_empty_version" + "source": "config_test_loader_rationale_373", + "target": "config_test_loader_test_apply_test_mode_prefix_helper_is_a_pure_function" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L300", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L413", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_require_schema_major_raises_on_garbage_version" + "source": "config_test_loader_test_apply_test_mode_prefix_helper_is_a_pure_function", + "target": "config_loader_load_config_from_text" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L309", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L414", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_require_schema_major_passes_on_same_major" + "source": "config_test_loader_test_apply_test_mode_prefix_helper_is_a_pure_function", + "target": "config_loader_apply_test_mode_prefix" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L319", + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L407", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_read_equipment_skips_check_for_malformed_json" + "source": "config_test_loader_rationale_407", + "target": "config_test_loader_test_apply_test_mode_prefix_helper_is_a_pure_function" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L332", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L403", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_cache_test_equipment_py", - "target": "cache_test_equipment_test_read_equipment_skips_check_when_schema_version_missing" + "source": "config_test_loader_test_loader_round_trips_nas_block", + "target": "config_loader_load_config" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L406", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_1", - "target": "tests_unit_cache_test_equipment_py" + "source": "config_test_loader_test_loader_round_trips_nas_block", + "target": "config_loader_save_config" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L87", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L430", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_equipment_test_write_equipment_produces_valid_v1_file", - "target": "cache_test_equipment_make_equipment_payload" + "source": "config_test_loader_test_load_config_uses_ruamel_round_trip", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L109", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/config/test_loader.py", + "source_location": "L433", "weight": 1.0, - "confidence_score": 1.0, - "source": "cache_test_equipment_test_write_equipment_creates_parent_cache_dir", - "target": "cache_test_equipment_make_equipment_payload" + "source": "config_test_loader_test_load_config_uses_ruamel_round_trip", + "target": "config_loader_save_config" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L118", + "source_file": "tests/unit/config/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_test_write_equipment_preserves_first_seen_at_on_rewrite", - "target": "cache_test_equipment_make_equipment_payload" + "source": "config_init_rationale_1", + "target": "tests_unit_config_init_py" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L135", + "source_file": "src/exlab_wizard/config/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_test_write_equipment_updates_last_modified_at_on_rewrite", - "target": "cache_test_equipment_make_equipment_payload" + "source": "config_init_rationale_1", + "target": "src_exlab_wizard_config_init_py" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L150", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L69", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_test_read_equipment_round_trips", - "target": "cache_test_equipment_make_equipment_payload" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_equipment_dict" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L181", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L84", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_test_write_equipment_corrupt_existing_file_recovers", - "target": "cache_test_equipment_make_equipment_payload" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_full_config_dict" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L44", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_44", - "target": "cache_test_equipment_make_equipment_payload" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_paths_config_defaults_are_empty_strings" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L51", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L215", "weight": 1.0, - "source": "cache_test_equipment_make_equipment_payload", - "target": "api_schemas_equipmentjson" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_paths_config_rejects_unknown_keys" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L196", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L225", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_test_write_test_runs_marker_creates_v1_file", - "target": "cache_test_equipment_make_test_runs_payload" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_lims_config_defaults" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L210", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L233", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_test_write_test_runs_marker_creates_parent_dir", - "target": "cache_test_equipment_make_test_runs_payload" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_lims_config_rejects_negative_cache_ttl_hours" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L224", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L238", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_test_write_test_runs_marker_is_idempotent", - "target": "cache_test_equipment_make_test_runs_payload" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_lims_config_zero_cache_ttl_is_allowed" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", + "source_file": "tests/unit/config/test_models.py", "source_location": "L249", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_test_write_test_runs_marker_concurrent_first_writes_safe", - "target": "cache_test_equipment_make_test_runs_payload" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_readme_default_field_minimal_string_field" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L270", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L256", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_test_read_test_runs_marker_round_trips", - "target": "cache_test_equipment_make_test_runs_payload" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_readme_default_field_id_must_match_template_question_id_pattern" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L84", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L261", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_84", - "target": "cache_test_equipment_test_write_equipment_produces_valid_v1_file" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_readme_default_field_id_rejects_leading_digit" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L85", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L266", "weight": 1.0, - "source": "cache_test_equipment_test_write_equipment_produces_valid_v1_file", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_readme_default_field_label_must_be_non_empty" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L105", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L271", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_105", - "target": "cache_test_equipment_test_write_equipment_creates_parent_cache_dir" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_readme_default_field_rejects_unknown_type" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L106", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L276", "weight": 1.0, - "source": "cache_test_equipment_test_write_equipment_creates_parent_cache_dir", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_readme_choice_field_requires_options" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L115", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L282", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_115", - "target": "cache_test_equipment_test_write_equipment_preserves_first_seen_at_on_rewrite" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_readme_choice_field_rejects_empty_options_list" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L116", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L287", "weight": 1.0, - "source": "cache_test_equipment_test_write_equipment_preserves_first_seen_at_on_rewrite", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_readme_choice_field_accepts_non_empty_options" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L132", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L292", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_132", - "target": "cache_test_equipment_test_write_equipment_updates_last_modified_at_on_rewrite" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_readme_non_choice_field_does_not_require_options" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L133", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L304", "weight": 1.0, - "source": "cache_test_equipment_test_write_equipment_updates_last_modified_at_on_rewrite", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_readme_config_default_is_empty_list" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L147", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L314", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_147", - "target": "cache_test_equipment_test_read_equipment_round_trips" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_bandwidth_window_happy_path" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L148", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L321", "weight": 1.0, - "source": "cache_test_equipment_test_read_equipment_round_trips", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_bandwidth_window_rejects_empty_days_list" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L164", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L326", "weight": 1.0, - "source": "cache_test_equipment_test_read_equipment_raises_when_file_missing", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_bandwidth_window_rejects_invalid_day" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L172", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L331", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_172", - "target": "cache_test_equipment_test_write_equipment_corrupt_existing_file_recovers" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_bandwidth_window_from_must_be_before_to" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L178", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L336", "weight": 1.0, - "source": "cache_test_equipment_test_write_equipment_corrupt_existing_file_recovers", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_bandwidth_window_equal_from_and_to_is_invalid" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L194", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L342", "weight": 1.0, - "source": "cache_test_equipment_test_write_test_runs_marker_creates_v1_file", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_bandwidth_window_rejects_non_hhmm_time" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L207", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L347", "weight": 1.0, - "source": "cache_test_equipment_test_write_test_runs_marker_creates_parent_dir", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_bandwidth_window_rejects_invalid_hour" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L216", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L352", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_216", - "target": "cache_test_equipment_test_write_test_runs_marker_is_idempotent" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_bandwidth_window_rejects_invalid_minute" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L222", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L362", "weight": 1.0, - "source": "cache_test_equipment_test_write_test_runs_marker_is_idempotent", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_bandwidth_config_defaults" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L240", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L368", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_240", - "target": "cache_test_equipment_test_write_test_runs_marker_concurrent_first_writes_safe" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_bandwidth_config_rejects_zero_upload_mbps" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L246", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L373", "weight": 1.0, - "source": "cache_test_equipment_test_write_test_runs_marker_concurrent_first_writes_safe", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_bandwidth_config_rejects_negative_upload_mbps" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L267", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L378", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_267", - "target": "cache_test_equipment_test_read_test_runs_marker_round_trips" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_bandwidth_config_accepts_positive_upload_mbps" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L268", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L535", "weight": 1.0, - "source": "cache_test_equipment_test_read_test_runs_marker_round_trips", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_id_regex_accepts_canonical_form" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L283", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L540", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_283", - "target": "cache_test_equipment_test_require_schema_major_raises_on_none_version" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_id_rejects_lowercase" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L288", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L545", "weight": 1.0, - "source": "cache_test_equipment_test_require_schema_major_raises_on_none_version", - "target": "io_json_files_require_schema_major" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_id_rejects_hyphen" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L292", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L550", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_292", - "target": "cache_test_equipment_test_require_schema_major_raises_on_empty_version" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_id_rejects_leading_digit" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L297", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L555", "weight": 1.0, - "source": "cache_test_equipment_test_require_schema_major_raises_on_empty_version", - "target": "io_json_files_require_schema_major" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_id_rejects_too_long" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L301", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L561", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_301", - "target": "cache_test_equipment_test_require_schema_major_raises_on_garbage_version" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_id_accepts_max_length" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L306", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L567", "weight": 1.0, - "source": "cache_test_equipment_test_require_schema_major_raises_on_garbage_version", - "target": "io_json_files_require_schema_major" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_config_rejects_removed_completeness_fields" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L310", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L578", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_310", - "target": "cache_test_equipment_test_require_schema_major_passes_on_same_major" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_label_must_be_non_empty" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L314", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L585", "weight": 1.0, - "source": "cache_test_equipment_test_require_schema_major_passes_on_same_major", - "target": "io_json_files_require_schema_major" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_local_root_must_be_non_empty" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L320", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L592", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_320", - "target": "cache_test_equipment_test_read_equipment_skips_check_for_malformed_json" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_nas_root_must_be_non_empty" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L322", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L416", "weight": 1.0, - "source": "cache_test_equipment_test_read_equipment_skips_check_for_malformed_json", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_rejects_removed_orchestrator_staging_transport" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L335", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L617", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_equipment_rationale_335", - "target": "cache_test_equipment_test_read_equipment_skips_check_when_schema_version_missing" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_mode_defaults_to_nas_when_absent" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_equipment.py", - "source_location": "L337", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L440", "weight": 1.0, - "source": "cache_test_equipment_test_read_equipment_skips_check_when_schema_version_missing", - "target": "cache_equipment_equipmentcachewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_nas_mode_equipment_needs_no_transport_block" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L25", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L456", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_state_path" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_nas_mode_equipment_rejects_stray_transport_block" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L34", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L471", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_read_when_absent_returns_empty_state" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_mode_stage_needs_no_per_equipment_block" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L52", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L481", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_upsert_file_creates_a_record" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_mode_stage_rejects_stray_transport_block" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L72", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L670", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_upsert_file_updates_existing_record" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_mode_serializes_to_string" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L90", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L678", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_upsert_file_preserves_keep_local" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_mode_rejects_unknown_value" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L112", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L685", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_set_keep_local_creates_record_if_absent" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_mode_stage_round_trip_via_dict" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L123", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L704", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_set_keep_local_toggles_and_preserves_sync_fields" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_nas_cleanup_defaults" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L148", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L712", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_mark_cleared_sets_cleared_at" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_nas_cleanup_min_verify_passes_at_least_one" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L163", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L717", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_mark_cleared_on_absent_file_creates_state" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_nas_cleanup_min_age_hours_non_negative" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L172", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L727", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_mutators_create_missing_exlab_wizard_dir" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_logging_level_normalized_to_uppercase" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L203", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L732", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_rollup_state_syncing_when_empty" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_logging_level_rejects_unknown" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L208", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L737", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_rollup_state_syncing_when_some_unverified" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_logging_level_accepts_all_canonical_values" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L219", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L743", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_rollup_state_synced_when_all_verified" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_logging_level_strips_whitespace_and_normalizes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L230", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L748", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_rollup_state_cleared_takes_precedence_over_unverified" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_logging_level_rejects_non_string" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L244", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L758", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_sync_state_json_round_trips_through_msgspec" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_logging_level_rejects_non_string_directly" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L272", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L766", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_read_raises_on_schema_major_mismatch" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_logging_central_log_max_mb_at_least_one" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L302", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L771", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_cache_test_sync_state_writer_py", - "target": "cache_test_sync_state_writer_test_concurrent_upserts_on_distinct_files_both_survive" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_logging_central_log_keep_at_least_one" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L1", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L781", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_sync_state_writer_rationale_1", - "target": "tests_unit_cache_test_sync_state_writer_py" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_operators_config_defaults_to_empty_allowlist" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L44", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L786", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_sync_state_writer_test_read_when_absent_returns_empty_state", - "target": "cache_test_sync_state_writer_state_path" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_operators_config_accepts_arbitrary_strings" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L62", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L796", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_sync_state_writer_test_upsert_file_creates_a_record", - "target": "cache_test_sync_state_writer_state_path" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_validator_config_defaults" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L169", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L803", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_sync_state_writer_test_mark_cleared_on_absent_file_creates_state", - "target": "cache_test_sync_state_writer_state_path" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_validator_content_scan_max_mib_at_least_one" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L192", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L808", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_sync_state_writer_test_mutators_create_missing_exlab_wizard_dir", - "target": "cache_test_sync_state_writer_state_path" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_validator_extensions_must_start_with_dot" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L278", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L813", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_sync_state_writer_test_read_raises_on_schema_major_mismatch", - "target": "cache_test_sync_state_writer_state_path" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_validator_extensions_rejects_dotless_among_others" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L26", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L823", "weight": 1.0, - "source": "cache_test_sync_state_writer_state_path", - "target": "exlab_wizard_paths_cache_dir" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_plugins_config_default_allow_network_false" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L35", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L833", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_read_when_absent_returns_empty_state", - "target": "cache_sync_state_writer_syncstatewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_config_defaults" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L53", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L842", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_upsert_file_creates_a_record", - "target": "cache_sync_state_writer_syncstatewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_config_retry_attempts_non_negative" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L73", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L847", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_upsert_file_updates_existing_record", - "target": "cache_sync_state_writer_syncstatewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_config_quiescence_minutes_at_least_one" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L91", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L852", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_upsert_file_preserves_keep_local", - "target": "cache_sync_state_writer_syncstatewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_config_poll_interval_seconds_at_least_one" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L113", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L857", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_set_keep_local_creates_record_if_absent", - "target": "cache_sync_state_writer_syncstatewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_config_accepts_custom_quiescence_settings" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L124", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L868", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_set_keep_local_toggles_and_preserves_sync_fields", - "target": "cache_sync_state_writer_syncstatewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_config_ignore_globs_default_is_independent_per_instance" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L149", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L881", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_mark_cleared_sets_cleared_at", - "target": "cache_sync_state_writer_syncstatewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_orchestrator_staging_cleanup_defaults" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L164", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L887", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_mark_cleared_on_absent_file_creates_state", - "target": "cache_sync_state_writer_syncstatewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_orchestrator_staging_cleanup_scheduled_requires_positive_hours" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L173", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L893", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_sync_state_writer_rationale_173", - "target": "cache_test_sync_state_writer_test_mutators_create_missing_exlab_wizard_dir" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_orchestrator_staging_cleanup_rejects_unknown_mode" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L179", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L903", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_mutators_create_missing_exlab_wizard_dir", - "target": "cache_sync_state_writer_syncstatewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_orchestrator_config_defaults" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L204", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L733", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_rollup_state_syncing_when_empty", - "target": "cache_sync_state_schema_syncstatejson" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_orchestrator_config_staging_remote_validates_with_perf_defaults" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L209", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L744", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_rollup_state_syncing_when_some_unverified", - "target": "cache_sync_state_schema_syncstatejson" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_stage_mode_equipment_validates_without_staging_block" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L212", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L918", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_rollup_state_syncing_when_some_unverified", - "target": "cache_sync_state_schema_filesyncrecord" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_config_fully_default_is_valid" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L220", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L928", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_rollup_state_synced_when_all_verified", - "target": "cache_sync_state_schema_syncstatejson" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_unique_equipment_ids_required" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L223", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L940", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_rollup_state_synced_when_all_verified", - "target": "cache_sync_state_schema_filesyncrecord" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_distinct_equipment_ids_accepted" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L231", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L954", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_rollup_state_cleared_takes_precedence_over_unverified", - "target": "cache_sync_state_schema_syncstatejson" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_orchestrator_legacy_enabled_field_rejected" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L234", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L970", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_rollup_state_cleared_takes_precedence_over_unverified", - "target": "cache_sync_state_schema_filesyncrecord" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_orchestrator_label_and_staging_root_load_independently" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L245", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L985", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_sync_state_json_round_trips_through_msgspec", - "target": "cache_sync_state_schema_syncstatejson" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_orchestrator_with_both_fields_is_valid" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L249", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L999", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_sync_state_json_round_trips_through_msgspec", - "target": "cache_sync_state_schema_filesyncrecord" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_config_rejects_unknown_top_level_key" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L273", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L1009", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_sync_state_writer_rationale_273", - "target": "cache_test_sync_state_writer_test_read_raises_on_schema_major_mismatch" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_full_config_round_trip_via_dict" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L290", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L1030", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_read_raises_on_schema_major_mismatch", - "target": "cache_sync_state_writer_syncstatewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_round_trip_preserves_bandwidth_alias_for_from" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L303", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L1044", "weight": 1.0, "confidence_score": 1.0, - "source": "cache_test_sync_state_writer_rationale_303", - "target": "cache_test_sync_state_writer_test_concurrent_upserts_on_distinct_files_both_survive" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_config_with_equipment_appended_seeds_from_none" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/cache/test_sync_state_writer.py", - "source_location": "L308", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L1052", "weight": 1.0, - "source": "cache_test_sync_state_writer_test_concurrent_upserts_on_distinct_files_both_survive", - "target": "cache_sync_state_writer_syncstatewriter" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_config_with_equipment_appended_preserves_existing_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L46", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L1069", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_load_config_complete_yaml" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_config_with_equipment_appended_rejects_duplicate_id" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L83", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L919", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_load_config_missing_file_raises" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_nas_config_defaults" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L91", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L930", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_load_config_invalid_yaml_raises" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_nas_config_rejects_nonpositive_perf" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L100", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L937", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_load_config_top_level_not_mapping_raises" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_config_has_default_nas_block" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L108", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_load_config_validation_error_raises_config_error" + "source": "config_test_models_rationale_1", + "target": "tests_unit_config_test_models_py" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L132", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_load_config_from_text_empty_returns_empty_config" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_sftp_transport_dict" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L141", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_load_config_unreadable_path_raises_config_error" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_smb_transport_dict" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L163", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L388", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_save_config_atomic" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sftp_transport_minimal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L175", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L395", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_save_config_preserves_comments_round_trip" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sftp_transport_rejects_missing_host" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L189", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L402", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_save_config_preserves_key_order" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sftp_transport_rejects_empty_user" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L205", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L409", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_save_config_creates_parent_dirs" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sftp_transport_rejects_empty_remote_path" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L215", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L416", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_save_config_without_original_text_writes_fresh" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sftp_transport_rejects_out_of_range_port" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L234", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L423", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_dump_config_round_trip" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sftp_transport_rejects_wrong_type_tag" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L306", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L435", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_test_mode_unset_leaves_equipment_ids_unchanged" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_smb_transport_minimal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L313", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L443", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_test_mode_enabled_prefixes_every_equipment_id" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_smb_transport_accepts_optional_domain_and_subpath" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L326", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L452", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_test_mode_is_idempotent_on_already_prefixed_ids" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_smb_transport_rejects_missing_share" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L358", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L464", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_test_mode_preserves_unique_id_invariant" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_requires_keyring_password_true_for_sftp_and_smb" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L374", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L471", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_test_mode_truthy_values_trigger_prefix" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_requires_keyring_password_false_for_none" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L386", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L480", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_test_mode_falsy_values_do_not_trigger_prefix" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_transport_discriminates_on_type_sftp" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L395", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L485", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_test_mode_unset_via_delenv_does_not_trigger_prefix" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_transport_discriminates_on_type_smb" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L404", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L495", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_apply_test_mode_prefix_helper_is_a_pure_function" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_transport_rejects_unknown_type" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L389", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L507", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_loader_round_trips_nas_block" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_orchestrator_staging_transport_smb_mount" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L423", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L514", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_loader_py", - "target": "config_test_loader_test_load_config_uses_ruamel_round_trip" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_orchestrator_staging_transport_file_transfer" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L1", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L521", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_1", - "target": "tests_unit_config_test_loader_py" + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_orchestrator_staging_transport_rejects_unknown_type" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L47", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L599", "weight": 1.0, - "source": "config_test_loader_test_load_config_complete_yaml", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_equipment_orchestrator_staging_transport_optional" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L86", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L609", "weight": 1.0, - "source": "config_test_loader_test_load_config_missing_file_raises", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_orch_staging_transport_dict" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L96", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L622", "weight": 1.0, - "source": "config_test_loader_test_load_config_invalid_yaml_raises", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_mode_nas_requires_transport_block" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L104", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L631", "weight": 1.0, - "source": "config_test_loader_test_load_config_top_level_not_mapping_raises", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_mode_nas_forbids_orchestrator_staging_transport" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L127", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L640", "weight": 1.0, - "source": "config_test_loader_test_load_config_validation_error_raises_config_error", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_mode_stage_requires_orchestrator_staging_transport" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L135", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L649", "weight": 1.0, - "source": "config_test_loader_test_load_config_from_text_empty_returns_empty_config", - "target": "config_loader_load_config_from_text" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_mode_stage_forbids_transport_block" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L149", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L659", "weight": 1.0, - "source": "config_test_loader_test_load_config_unreadable_path_raises_config_error", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "tests_unit_config_test_models_py", + "target": "config_test_models_test_sync_mode_stage_with_only_orchestrator_transport_is_valid" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L164", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L536", "weight": 1.0, - "source": "config_test_loader_test_save_config_atomic", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_id_regex_accepts_canonical_form", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L167", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L542", "weight": 1.0, - "source": "config_test_loader_test_save_config_atomic", - "target": "config_loader_save_config" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_id_rejects_lowercase", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L178", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L547", "weight": 1.0, - "source": "config_test_loader_test_save_config_preserves_comments_round_trip", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_id_rejects_hyphen", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L181", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L552", "weight": 1.0, - "source": "config_test_loader_test_save_config_preserves_comments_round_trip", - "target": "config_loader_save_config" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_id_rejects_leading_digit", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L192", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L558", "weight": 1.0, - "source": "config_test_loader_test_save_config_preserves_key_order", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_id_rejects_too_long", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L195", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L563", "weight": 1.0, - "source": "config_test_loader_test_save_config_preserves_key_order", - "target": "config_loader_save_config" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_id_accepts_max_length", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L206", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L571", "weight": 1.0, - "source": "config_test_loader_test_save_config_creates_parent_dirs", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_config_rejects_removed_completeness_fields", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L209", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L579", "weight": 1.0, - "source": "config_test_loader_test_save_config_creates_parent_dirs", - "target": "config_loader_save_config" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_label_must_be_non_empty", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L216", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L586", "weight": 1.0, - "source": "config_test_loader_test_save_config_without_original_text_writes_fresh", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_local_root_must_be_non_empty", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L219", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L593", "weight": 1.0, - "source": "config_test_loader_test_save_config_without_original_text_writes_fresh", - "target": "config_loader_save_config" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_nas_root_must_be_non_empty", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L264", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L419", "weight": 1.0, - "source": "config_test_loader_test_dump_config_round_trip", - "target": "config_loader_dump_config" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_rejects_removed_orchestrator_staging_transport", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L265", - "weight": 1.0, - "source": "config_test_loader_test_dump_config_round_trip", - "target": "config_loader_load_config_from_text" - }, - { - "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L283", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L618", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_283", - "target": "config_test_loader_test_test_mode_unset_leaves_equipment_ids_unchanged" + "source": "config_test_models_test_sync_mode_defaults_to_nas_when_absent", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L309", - "weight": 1.0, - "source": "config_test_loader_test_test_mode_unset_leaves_equipment_ids_unchanged", - "target": "config_loader_load_config_from_text" - }, - { - "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L307", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L458", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_307", - "target": "config_test_loader_test_test_mode_unset_leaves_equipment_ids_unchanged" + "source": "config_test_models_test_nas_mode_equipment_rejects_stray_transport_block", + "target": "config_test_models_equipment_dict" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L290", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L475", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_290", - "target": "config_test_loader_test_test_mode_enabled_prefixes_every_equipment_id" + "source": "config_test_models_test_sync_mode_stage_needs_no_per_equipment_block", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L316", - "weight": 1.0, - "source": "config_test_loader_test_test_mode_enabled_prefixes_every_equipment_id", - "target": "config_loader_load_config_from_text" - }, - { - "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L314", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L482", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_314", - "target": "config_test_loader_test_test_mode_enabled_prefixes_every_equipment_id" + "source": "config_test_models_test_sync_mode_stage_rejects_stray_transport_block", + "target": "config_test_models_equipment_dict" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L305", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L671", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_305", - "target": "config_test_loader_test_test_mode_is_idempotent_on_already_prefixed_ids" + "source": "config_test_models_test_sync_mode_serializes_to_string", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L352", - "weight": 1.0, - "source": "config_test_loader_test_test_mode_is_idempotent_on_already_prefixed_ids", - "target": "config_loader_load_config_from_text" - }, - { - "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L329", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L679", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_329", - "target": "config_test_loader_test_test_mode_is_idempotent_on_already_prefixed_ids" + "source": "config_test_models_test_sync_mode_rejects_unknown_value", + "target": "config_test_models_equipment_dict" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L325", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L687", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_325", - "target": "config_test_loader_test_test_mode_preserves_unique_id_invariant" + "source": "config_test_models_test_sync_mode_stage_round_trip_via_dict", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L361", - "weight": 1.0, - "source": "config_test_loader_test_test_mode_preserves_unique_id_invariant", - "target": "config_loader_load_config_from_text" - }, - { - "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L359", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L931", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_359", - "target": "config_test_loader_test_test_mode_preserves_unique_id_invariant" + "source": "config_test_models_test_unique_equipment_ids_required", + "target": "config_test_models_equipment_dict" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L343", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L943", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_343", - "target": "config_test_loader_test_test_mode_truthy_values_trigger_prefix" + "source": "config_test_models_test_distinct_equipment_ids_accepted", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L379", - "weight": 1.0, - "source": "config_test_loader_test_test_mode_truthy_values_trigger_prefix", - "target": "config_loader_load_config_from_text" - }, - { - "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L377", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L1046", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_377", - "target": "config_test_loader_test_test_mode_truthy_values_trigger_prefix" + "source": "config_test_models_test_config_with_equipment_appended_seeds_from_none", + "target": "config_test_models_equipment_dict" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L355", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L1054", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_355", - "target": "config_test_loader_test_test_mode_falsy_values_do_not_trigger_prefix" + "source": "config_test_models_test_config_with_equipment_appended_preserves_existing_state", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L391", - "weight": 1.0, - "source": "config_test_loader_test_test_mode_falsy_values_do_not_trigger_prefix", - "target": "config_loader_load_config_from_text" - }, - { - "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L389", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L1071", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_389", - "target": "config_test_loader_test_test_mode_falsy_values_do_not_trigger_prefix" + "source": "config_test_models_test_config_with_equipment_appended_rejects_duplicate_id", + "target": "config_test_models_equipment_dict" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L364", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_364", - "target": "config_test_loader_test_test_mode_unset_via_delenv_does_not_trigger_prefix" + "source": "config_test_models_rationale_50", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L400", - "weight": 1.0, - "source": "config_test_loader_test_test_mode_unset_via_delenv_does_not_trigger_prefix", - "target": "config_loader_load_config_from_text" - }, - { - "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L398", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_398", - "target": "config_test_loader_test_test_mode_unset_via_delenv_does_not_trigger_prefix" + "source": "config_test_models_equipment_dict", + "target": "config_test_models_sftp_transport_dict" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L373", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L481", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_373", - "target": "config_test_loader_test_apply_test_mode_prefix_helper_is_a_pure_function" + "source": "config_test_models_test_equipment_transport_discriminates_on_type_sftp", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L413", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L487", "weight": 1.0, - "source": "config_test_loader_test_apply_test_mode_prefix_helper_is_a_pure_function", - "target": "config_loader_load_config_from_text" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_transport_discriminates_on_type_smb", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L414", - "weight": 1.0, - "source": "config_test_loader_test_apply_test_mode_prefix_helper_is_a_pure_function", - "target": "config_loader_apply_test_mode_prefix" - }, - { - "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L407", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L496", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_loader_rationale_407", - "target": "config_test_loader_test_apply_test_mode_prefix_helper_is_a_pure_function" + "source": "config_test_models_test_equipment_transport_rejects_unknown_type", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L403", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L600", "weight": 1.0, - "source": "config_test_loader_test_loader_round_trips_nas_block", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "config_test_models_test_equipment_orchestrator_staging_transport_optional", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L406", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L623", "weight": 1.0, - "source": "config_test_loader_test_loader_round_trips_nas_block", - "target": "config_loader_save_config" + "confidence_score": 1.0, + "source": "config_test_models_test_sync_mode_nas_requires_transport_block", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L430", + "confidence": "EXTRACTED", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L632", "weight": 1.0, - "source": "config_test_loader_test_load_config_uses_ruamel_round_trip", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "config_test_models_test_sync_mode_nas_forbids_orchestrator_staging_transport", + "target": "config_test_models_equipment_dict" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_loader.py", - "source_location": "L433", - "weight": 1.0, - "source": "config_test_loader_test_load_config_uses_ruamel_round_trip", - "target": "config_loader_save_config" - }, - { - "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L641", "weight": 1.0, "confidence_score": 1.0, - "source": "config_init_rationale_1", - "target": "tests_unit_config_init_py" + "source": "config_test_models_test_sync_mode_stage_requires_orchestrator_staging_transport", + "target": "config_test_models_equipment_dict" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/config/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/config/test_models.py", + "source_location": "L650", "weight": 1.0, "confidence_score": 1.0, - "source": "config_init_rationale_1", - "target": "src_exlab_wizard_config_init_py" + "source": "config_test_models_test_sync_mode_stage_forbids_transport_block", + "target": "config_test_models_equipment_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L69", + "source_location": "L660", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", + "source": "config_test_models_test_sync_mode_stage_with_only_orchestrator_transport_is_valid", "target": "config_test_models_equipment_dict" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L84", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_full_config_dict" + "source": "config_test_models_rationale_74", + "target": "config_test_models_equipment_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L208", + "source_location": "L1018", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_paths_config_defaults_are_empty_strings" + "source": "config_test_models_test_full_config_round_trip_via_dict", + "target": "config_test_models_full_config_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L215", + "source_location": "L1031", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_paths_config_rejects_unknown_keys" + "source": "config_test_models_test_round_trip_preserves_bandwidth_alias_for_from", + "target": "config_test_models_full_config_dict" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L225", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_lims_config_defaults" + "source": "config_test_models_rationale_60", + "target": "config_test_models_full_config_dict" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L233", + "source_location": "L85", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_lims_config_rejects_negative_cache_ttl_hours" + "source": "config_test_models_rationale_85", + "target": "config_test_models_full_config_dict" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L238", + "source_location": "L209", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_lims_config_zero_cache_ttl_is_allowed" + "source": "config_test_models_test_paths_config_defaults_are_empty_strings", + "target": "config_models_pathsconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L249", + "source_location": "L217", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_readme_default_field_minimal_string_field" + "source": "config_test_models_test_paths_config_rejects_unknown_keys", + "target": "config_models_pathsconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L256", + "source_location": "L226", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_readme_default_field_id_must_match_template_question_id_pattern" + "source": "config_test_models_test_lims_config_defaults", + "target": "config_models_limsconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L261", + "source_location": "L235", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_readme_default_field_id_rejects_leading_digit" + "source": "config_test_models_test_lims_config_rejects_negative_cache_ttl_hours", + "target": "config_models_limsconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L266", + "source_location": "L240", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_readme_default_field_label_must_be_non_empty" + "source": "config_test_models_test_lims_config_zero_cache_ttl_is_allowed", + "target": "config_models_limsconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L271", + "source_location": "L250", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_readme_default_field_rejects_unknown_type" + "source": "config_test_models_test_readme_default_field_minimal_string_field", + "target": "config_models_readmedefaultfield" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L276", + "source_location": "L258", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_readme_choice_field_requires_options" + "source": "config_test_models_test_readme_default_field_id_must_match_template_question_id_pattern", + "target": "config_models_readmedefaultfield" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L282", + "source_location": "L263", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_readme_choice_field_rejects_empty_options_list" + "source": "config_test_models_test_readme_default_field_id_rejects_leading_digit", + "target": "config_models_readmedefaultfield" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L287", + "source_location": "L268", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_readme_choice_field_accepts_non_empty_options" + "source": "config_test_models_test_readme_default_field_label_must_be_non_empty", + "target": "config_models_readmedefaultfield" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L292", + "source_location": "L273", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_readme_non_choice_field_does_not_require_options" + "source": "config_test_models_test_readme_default_field_rejects_unknown_type", + "target": "config_models_readmedefaultfield" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L304", + "source_location": "L278", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_readme_config_default_is_empty_list" + "source": "config_test_models_test_readme_choice_field_requires_options", + "target": "config_models_readmedefaultfield" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L314", + "source_location": "L284", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_bandwidth_window_happy_path" + "source": "config_test_models_test_readme_choice_field_rejects_empty_options_list", + "target": "config_models_readmedefaultfield" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L321", + "source_location": "L288", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_bandwidth_window_rejects_empty_days_list" + "source": "config_test_models_test_readme_choice_field_accepts_non_empty_options", + "target": "config_models_readmedefaultfield" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L326", + "source_location": "L294", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_bandwidth_window_rejects_invalid_day" + "source": "config_test_models_test_readme_non_choice_field_does_not_require_options", + "target": "config_models_readmedefaultfield" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L331", + "source_location": "L305", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_bandwidth_window_from_must_be_before_to" + "source": "config_test_models_test_readme_config_default_is_empty_list", + "target": "config_models_readmeconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L336", + "source_location": "L363", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_bandwidth_window_equal_from_and_to_is_invalid" + "source": "config_test_models_test_bandwidth_config_defaults", + "target": "config_models_bandwidthconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L342", + "source_location": "L370", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_bandwidth_window_rejects_non_hhmm_time" + "source": "config_test_models_test_bandwidth_config_rejects_zero_upload_mbps", + "target": "config_models_bandwidthconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L347", + "source_location": "L375", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_bandwidth_window_rejects_invalid_hour" + "source": "config_test_models_test_bandwidth_config_rejects_negative_upload_mbps", + "target": "config_models_bandwidthconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L352", + "source_location": "L379", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_bandwidth_window_rejects_invalid_minute" + "source": "config_test_models_test_bandwidth_config_accepts_positive_upload_mbps", + "target": "config_models_bandwidthconfig" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L362", + "source_location": "L385", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_bandwidth_config_defaults" + "source": "config_test_models_rationale_385", + "target": "config_test_models_test_equipment_config_rejects_removed_completeness_fields" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L368", + "source_location": "L568", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_bandwidth_config_rejects_zero_upload_mbps" + "source": "config_test_models_rationale_568", + "target": "config_test_models_test_equipment_config_rejects_removed_completeness_fields" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L373", + "source_location": "L417", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_bandwidth_config_rejects_negative_upload_mbps" + "source": "config_test_models_rationale_417", + "target": "config_test_models_test_equipment_rejects_removed_orchestrator_staging_transport" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L378", + "source_location": "L441", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_bandwidth_config_accepts_positive_upload_mbps" + "source": "config_test_models_rationale_441", + "target": "config_test_models_test_nas_mode_equipment_needs_no_transport_block" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L535", + "source_location": "L446", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_id_regex_accepts_canonical_form" + "source": "config_test_models_test_nas_mode_equipment_needs_no_transport_block", + "target": "config_models_equipmentconfig" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L540", + "source_location": "L457", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_id_rejects_lowercase" + "source": "config_test_models_rationale_457", + "target": "config_test_models_test_nas_mode_equipment_rejects_stray_transport_block" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L545", + "source_location": "L472", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_id_rejects_hyphen" + "source": "config_test_models_rationale_472", + "target": "config_test_models_test_sync_mode_stage_needs_no_per_equipment_block" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L550", + "source_location": "L507", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_id_rejects_leading_digit" + "source": "config_test_models_rationale_507", + "target": "config_test_models_test_sync_mode_stage_round_trip_via_dict" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L555", + "source_location": "L690", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_id_rejects_too_long" + "source": "config_test_models_test_sync_mode_stage_round_trip_via_dict", + "target": "config_test_models_orch_staging_transport_dict" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L561", + "source_location": "L686", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_id_accepts_max_length" + "source": "config_test_models_rationale_686", + "target": "config_test_models_test_sync_mode_stage_round_trip_via_dict" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L567", + "source_location": "L705", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_config_rejects_removed_completeness_fields" + "source": "config_test_models_test_nas_cleanup_defaults", + "target": "config_models_nascleanupconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L578", + "source_location": "L714", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_label_must_be_non_empty" + "source": "config_test_models_test_nas_cleanup_min_verify_passes_at_least_one", + "target": "config_models_nascleanupconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L585", + "source_location": "L719", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_local_root_must_be_non_empty" + "source": "config_test_models_test_nas_cleanup_min_age_hours_non_negative", + "target": "config_models_nascleanupconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L592", + "source_location": "L728", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_nas_root_must_be_non_empty" + "source": "config_test_models_test_logging_level_normalized_to_uppercase", + "target": "config_models_loggingconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L416", + "source_location": "L734", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_rejects_removed_orchestrator_staging_transport" + "source": "config_test_models_test_logging_level_rejects_unknown", + "target": "config_models_loggingconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L617", + "source_location": "L739", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_mode_defaults_to_nas_when_absent" + "source": "config_test_models_test_logging_level_accepts_all_canonical_values", + "target": "config_models_loggingconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L440", + "source_location": "L744", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_nas_mode_equipment_needs_no_transport_block" + "source": "config_test_models_test_logging_level_strips_whitespace_and_normalizes", + "target": "config_models_loggingconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L456", + "source_location": "L762", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_nas_mode_equipment_rejects_stray_transport_block" + "source": "config_test_models_test_logging_level_rejects_non_string_directly", + "target": "config_models_loggingconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L471", + "source_location": "L768", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_mode_stage_needs_no_per_equipment_block" + "source": "config_test_models_test_logging_central_log_max_mb_at_least_one", + "target": "config_models_loggingconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L481", + "source_location": "L773", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_mode_stage_rejects_stray_transport_block" + "source": "config_test_models_test_logging_central_log_keep_at_least_one", + "target": "config_models_loggingconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L670", + "source_location": "L782", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_mode_serializes_to_string" + "source": "config_test_models_test_operators_config_defaults_to_empty_allowlist", + "target": "config_models_operatorsconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L678", + "source_location": "L787", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_mode_rejects_unknown_value" + "source": "config_test_models_test_operators_config_accepts_arbitrary_strings", + "target": "config_models_operatorsconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L685", + "source_location": "L797", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_mode_stage_round_trip_via_dict" + "source": "config_test_models_test_validator_config_defaults", + "target": "config_models_validatorconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L704", + "source_location": "L805", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_nas_cleanup_defaults" + "source": "config_test_models_test_validator_content_scan_max_mib_at_least_one", + "target": "config_models_validatorconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L712", + "source_location": "L810", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_nas_cleanup_min_verify_passes_at_least_one" + "source": "config_test_models_test_validator_extensions_must_start_with_dot", + "target": "config_models_validatorconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L717", + "source_location": "L815", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_nas_cleanup_min_age_hours_non_negative" + "source": "config_test_models_test_validator_extensions_rejects_dotless_among_others", + "target": "config_models_validatorconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L727", + "source_location": "L824", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_logging_level_normalized_to_uppercase" + "source": "config_test_models_test_plugins_config_default_allow_network_false", + "target": "config_models_pluginsconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L732", + "source_location": "L834", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_logging_level_rejects_unknown" + "source": "config_test_models_test_sync_config_defaults", + "target": "config_models_syncconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L737", + "source_location": "L844", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_logging_level_accepts_all_canonical_values" + "source": "config_test_models_test_sync_config_retry_attempts_non_negative", + "target": "config_models_syncconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L743", + "source_location": "L849", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_logging_level_strips_whitespace_and_normalizes" + "source": "config_test_models_test_sync_config_quiescence_minutes_at_least_one", + "target": "config_models_syncconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L748", + "source_location": "L854", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_logging_level_rejects_non_string" + "source": "config_test_models_test_sync_config_poll_interval_seconds_at_least_one", + "target": "config_models_syncconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L758", + "source_location": "L858", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_logging_level_rejects_non_string_directly" + "source": "config_test_models_test_sync_config_accepts_custom_quiescence_settings", + "target": "config_models_syncconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L766", + "source_location": "L870", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_logging_central_log_max_mb_at_least_one" + "source": "config_test_models_test_sync_config_ignore_globs_default_is_independent_per_instance", + "target": "config_models_syncconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L771", + "source_location": "L882", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_logging_central_log_keep_at_least_one" + "source": "config_test_models_test_orchestrator_staging_cleanup_defaults", + "target": "config_models_orchestratorstagingcleanup" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L781", + "source_location": "L890", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_operators_config_defaults_to_empty_allowlist" + "source": "config_test_models_test_orchestrator_staging_cleanup_scheduled_requires_positive_hours", + "target": "config_models_orchestratorstagingcleanup" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L786", + "source_location": "L895", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_operators_config_accepts_arbitrary_strings" + "source": "config_test_models_test_orchestrator_staging_cleanup_rejects_unknown_mode", + "target": "config_models_orchestratorstagingcleanup" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L796", + "source_location": "L722", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_validator_config_defaults" + "source": "config_test_models_rationale_722", + "target": "config_test_models_test_orchestrator_config_defaults" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L803", + "source_location": "L907", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_validator_content_scan_max_mib_at_least_one" + "source": "config_test_models_test_orchestrator_config_defaults", + "target": "config_models_orchestratorconfig" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L808", + "source_location": "L904", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_validator_extensions_must_start_with_dot" + "source": "config_test_models_rationale_904", + "target": "config_test_models_test_orchestrator_config_defaults" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L813", + "source_location": "L734", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_validator_extensions_rejects_dotless_among_others" + "source": "config_test_models_rationale_734", + "target": "config_test_models_test_orchestrator_config_staging_remote_validates_with_perf_defaults" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L823", + "source_location": "L737", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_plugins_config_default_allow_network_false" + "source": "config_test_models_test_orchestrator_config_staging_remote_validates_with_perf_defaults", + "target": "config_models_orchestratorconfig" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L833", + "source_location": "L745", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_config_defaults" + "source": "config_test_models_rationale_745", + "target": "config_test_models_test_stage_mode_equipment_validates_without_staging_block" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L842", + "source_location": "L747", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_config_retry_attempts_non_negative" + "source": "config_test_models_test_stage_mode_equipment_validates_without_staging_block", + "target": "config_models_equipmentconfig" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L847", + "source_location": "L946", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_config_quiescence_minutes_at_least_one" + "source": "config_test_models_test_distinct_equipment_ids_accepted", + "target": "config_test_models_smb_transport_dict" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L852", + "source_location": "L796", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_config_poll_interval_seconds_at_least_one" + "source": "config_test_models_rationale_796", + "target": "config_test_models_test_orchestrator_legacy_enabled_field_rejected" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L857", + "source_location": "L955", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_config_accepts_custom_quiescence_settings" + "source": "config_test_models_rationale_955", + "target": "config_test_models_test_orchestrator_legacy_enabled_field_rejected" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L868", + "source_location": "L812", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_config_ignore_globs_default_is_independent_per_instance" + "source": "config_test_models_rationale_812", + "target": "config_test_models_test_orchestrator_label_and_staging_root_load_independently" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L881", + "source_location": "L971", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_orchestrator_staging_cleanup_defaults" + "source": "config_test_models_rationale_971", + "target": "config_test_models_test_orchestrator_label_and_staging_root_load_independently" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L887", + "source_location": "L851", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_orchestrator_staging_cleanup_scheduled_requires_positive_hours" + "source": "config_test_models_rationale_851", + "target": "config_test_models_test_full_config_round_trip_via_dict" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L893", + "source_location": "L1010", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_orchestrator_staging_cleanup_rejects_unknown_mode" + "source": "config_test_models_rationale_1010", + "target": "config_test_models_test_full_config_round_trip_via_dict" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L903", + "source_location": "L886", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_orchestrator_config_defaults" + "source": "config_test_models_rationale_886", + "target": "config_test_models_test_config_with_equipment_appended_seeds_from_none" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L733", + "source_location": "L1047", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_orchestrator_config_staging_remote_validates_with_perf_defaults" + "source": "config_test_models_test_config_with_equipment_appended_seeds_from_none", + "target": "config_models_config_with_equipment_appended" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L744", + "source_location": "L1045", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_stage_mode_equipment_validates_without_staging_block" + "source": "config_test_models_rationale_1045", + "target": "config_test_models_test_config_with_equipment_appended_seeds_from_none" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L918", + "source_location": "L894", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_config_fully_default_is_valid" + "source": "config_test_models_rationale_894", + "target": "config_test_models_test_config_with_equipment_appended_preserves_existing_state" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L928", + "source_location": "L1055", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_unique_equipment_ids_required" + "source": "config_test_models_test_config_with_equipment_appended_preserves_existing_state", + "target": "config_models_loggingconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L940", + "source_location": "L1062", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_distinct_equipment_ids_accepted" + "source": "config_test_models_test_config_with_equipment_appended_preserves_existing_state", + "target": "config_models_config_with_equipment_appended" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L954", + "source_location": "L1059", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_orchestrator_legacy_enabled_field_rejected" + "source": "config_test_models_test_config_with_equipment_appended_preserves_existing_state", + "target": "config_test_models_smb_transport_dict" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L970", + "source_location": "L1053", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_orchestrator_label_and_staging_root_load_independently" + "source": "config_test_models_rationale_1053", + "target": "config_test_models_test_config_with_equipment_appended_preserves_existing_state" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L985", + "source_location": "L906", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_orchestrator_with_both_fields_is_valid" + "source": "config_test_models_rationale_906", + "target": "config_test_models_test_config_with_equipment_appended_rejects_duplicate_id" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L999", + "source_location": "L1075", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_config_rejects_unknown_top_level_key" + "source": "config_test_models_test_config_with_equipment_appended_rejects_duplicate_id", + "target": "config_models_config_with_equipment_appended" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L1009", + "source_location": "L1070", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_full_config_round_trip_via_dict" + "source": "config_test_models_rationale_1070", + "target": "config_test_models_test_config_with_equipment_appended_rejects_duplicate_id" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L1030", + "source_location": "L920", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_round_trip_preserves_bandwidth_alias_for_from" + "source": "config_test_models_test_nas_config_defaults", + "target": "config_models_nasconfig" }, { - "relation": "contains", - "confidence": "EXTRACTED", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, "source_file": "tests/unit/config/test_models.py", - "source_location": "L1044", + "source_location": "L932", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_config_with_equipment_appended_seeds_from_none" + "source": "config_test_models_test_nas_config_rejects_nonpositive_perf", + "target": "config_models_rcloneperf" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/unit/config/test_models.py", - "source_location": "L1052", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_config_with_equipment_appended_preserves_existing_state" + "source": "config_test_models_rationale_60", + "target": "config_test_models_smb_transport_dict" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1069", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_config_with_equipment_appended_rejects_duplicate_id" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_write_plugin" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L919", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_nas_config_defaults" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_loads_a_valid_plugin" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L930", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_nas_config_rejects_nonpositive_perf" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_loaded_record_carries_isolation_block" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L937", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_config_has_default_nas_block" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_required_and_optional_variables_round_trip" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L140", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_1", - "target": "tests_unit_config_test_models_py" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_rejects_plugin_directory_without_manifest" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L48", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_sftp_transport_dict" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_rejects_plugin_with_malformed_yaml" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L59", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L164", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_smb_transport_dict" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_rejects_plugin_missing_required_field" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L388", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L174", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sftp_transport_minimal" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_rejects_plugin_with_unsupported_api_version" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L395", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L184", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sftp_transport_rejects_missing_host" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_rejects_plugin_with_invalid_name" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L402", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L202", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sftp_transport_rejects_empty_user" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_rejects_plugin_with_timeout_above_cap" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L409", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L211", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sftp_transport_rejects_empty_remote_path" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_rejects_plugin_with_memory_above_cap" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L416", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L220", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sftp_transport_rejects_out_of_range_port" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_rejects_supported_extensions_when_not_a_list_of_strings" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L423", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L238", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sftp_transport_rejects_wrong_type_tag" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_rejects_network_plugin_when_allow_network_false" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L435", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L247", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_smb_transport_minimal" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_loads_network_plugin_when_allow_network_true" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L443", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L263", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_smb_transport_accepts_optional_domain_and_subpath" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_lab_dir_wins_on_name_collision" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L452", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L278", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_smb_transport_rejects_missing_share" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_bundled_only_when_no_lab_collision" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L464", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L292", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_requires_keyring_password_true_for_sftp_and_smb" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_lab_only_plugins_are_loaded_too" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L471", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L311", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_requires_keyring_password_false_for_none" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_reload_replaces_previous_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L480", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L326", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_transport_discriminates_on_type_sftp" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_reload_returns_registry_report_dataclass" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L485", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L340", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_transport_discriminates_on_type_smb" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_get_returns_none_for_unknown_plugin" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L495", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L346", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_transport_rejects_unknown_type" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_list_all_returns_records_sorted_by_name" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L507", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L357", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_orchestrator_staging_transport_smb_mount" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_list_all_returns_record_instances" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L514", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L372", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_orchestrator_staging_transport_file_transfer" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_candidates_for_matches_by_extension" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L521", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L392", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_orchestrator_staging_transport_rejects_unknown_type" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_candidates_for_excludes_plugins_with_zero_matches" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L599", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L402", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_equipment_orchestrator_staging_transport_optional" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_candidates_for_returns_pluginplan_instances" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L609", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L414", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_orch_staging_transport_dict" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_candidates_for_supports_multi_extension_plugin" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L622", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L430", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_mode_nas_requires_transport_block" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_registry_with_no_dirs_loads_nothing" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L631", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L438", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_mode_nas_forbids_orchestrator_staging_transport" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_registry_skips_files_in_root" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L640", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L450", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_mode_stage_requires_orchestrator_staging_transport" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_registry_handles_nonexistent_dir" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L649", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L465", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_mode_stage_forbids_transport_block" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_registry_accepts_isolation_at_cap_boundary" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L659", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L473", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_config_test_models_py", - "target": "config_test_models_test_sync_mode_stage_with_only_orchestrator_transport_is_valid" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_pluginplan_dataclass_shape" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L536", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L484", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_id_regex_accepts_canonical_form", - "target": "config_test_models_equipment_dict" + "source": "tests_unit_plugins_test_registry_py", + "target": "plugins_test_registry_test_pluginrecord_dataclass_shape" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L542", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_id_rejects_lowercase", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_rationale_1", + "target": "tests_unit_plugins_test_registry_py" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L547", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_id_rejects_hyphen", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_loads_a_valid_plugin", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L552", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_id_rejects_leading_digit", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_loaded_record_carries_isolation_block", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L558", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_id_rejects_too_long", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_required_and_optional_variables_round_trip", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L563", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_id_accepts_max_length", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_rejects_plugin_missing_required_field", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L571", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L176", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_config_rejects_removed_completeness_fields", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_rejects_plugin_with_unsupported_api_version", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L579", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L204", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_label_must_be_non_empty", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_rejects_plugin_with_timeout_above_cap", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L586", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L213", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_local_root_must_be_non_empty", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_rejects_plugin_with_memory_above_cap", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L593", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L240", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_nas_root_must_be_non_empty", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_rejects_network_plugin_when_allow_network_false", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L419", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L249", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_rejects_removed_orchestrator_staging_transport", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_loads_network_plugin_when_allow_network_true", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L618", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L266", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_sync_mode_defaults_to_nas_when_absent", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_lab_dir_wins_on_name_collision", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L458", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L282", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_nas_mode_equipment_rejects_stray_transport_block", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_bundled_only_when_no_lab_collision", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L475", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L296", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_sync_mode_stage_needs_no_per_equipment_block", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_lab_only_plugins_are_loaded_too", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L482", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L313", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_sync_mode_stage_rejects_stray_transport_block", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_reload_replaces_previous_state", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L671", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L328", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_sync_mode_serializes_to_string", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_reload_returns_registry_report_dataclass", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L679", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L348", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_sync_mode_rejects_unknown_value", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_list_all_returns_records_sorted_by_name", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L687", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L359", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_sync_mode_stage_round_trip_via_dict", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_list_all_returns_record_instances", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L931", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L374", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_unique_equipment_ids_required", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_candidates_for_matches_by_extension", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L943", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L394", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_distinct_equipment_ids_accepted", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_candidates_for_excludes_plugins_with_zero_matches", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1046", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L404", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_config_with_equipment_appended_seeds_from_none", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_candidates_for_returns_pluginplan_instances", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1054", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L416", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_config_with_equipment_appended_preserves_existing_state", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_candidates_for_supports_multi_extension_plugin", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1071", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L443", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_config_with_equipment_appended_rejects_duplicate_id", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_registry_skips_files_in_root", + "target": "plugins_test_registry_write_plugin" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L50", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L467", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_50", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_registry_accepts_isolation_at_cap_boundary", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L80", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L476", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_equipment_dict", - "target": "config_test_models_sftp_transport_dict" + "source": "plugins_test_registry_test_pluginplan_dataclass_shape", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L481", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L486", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_transport_discriminates_on_type_sftp", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_pluginrecord_dataclass_shape", + "target": "plugins_test_registry_write_plugin" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L487", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_equipment_transport_discriminates_on_type_smb", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_rationale_50", + "target": "plugins_test_registry_write_plugin" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L496", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L92", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_test_equipment_transport_rejects_unknown_type", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_loads_a_valid_plugin", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L600", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L109", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_test_equipment_orchestrator_staging_transport_optional", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_loaded_record_carries_isolation_block", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L623", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L126", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_test_sync_mode_nas_requires_transport_block", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_required_and_optional_variables_round_trip", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L632", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L144", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_test_sync_mode_nas_forbids_orchestrator_staging_transport", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_rejects_plugin_directory_without_manifest", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L641", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L157", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_test_sync_mode_stage_requires_orchestrator_staging_transport", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_rejects_plugin_with_malformed_yaml", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L650", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L167", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_test_sync_mode_stage_forbids_transport_block", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_rejects_plugin_missing_required_field", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L660", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L177", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_test_sync_mode_stage_with_only_orchestrator_transport_is_valid", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_rejects_plugin_with_unsupported_api_version", + "target": "plugins_registry_pluginregistry" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L74", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L196", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_rationale_74", - "target": "config_test_models_equipment_dict" + "source": "plugins_test_registry_test_rejects_plugin_with_invalid_name", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1018", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L205", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_test_full_config_round_trip_via_dict", - "target": "config_test_models_full_config_dict" + "source": "plugins_test_registry_test_rejects_plugin_with_timeout_above_cap", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1031", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L214", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_test_round_trip_preserves_bandwidth_alias_for_from", - "target": "config_test_models_full_config_dict" + "source": "plugins_test_registry_test_rejects_plugin_with_memory_above_cap", + "target": "plugins_registry_pluginregistry" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L60", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L228", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_rationale_60", - "target": "config_test_models_full_config_dict" + "source": "plugins_test_registry_test_rejects_supported_extensions_when_not_a_list_of_strings", + "target": "plugins_registry_pluginregistry" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L85", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L241", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_rationale_85", - "target": "config_test_models_full_config_dict" + "source": "plugins_test_registry_test_rejects_network_plugin_when_allow_network_false", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L209", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L250", "weight": 1.0, - "source": "config_test_models_test_paths_config_defaults_are_empty_strings", - "target": "config_models_pathsconfig" + "source": "plugins_test_registry_test_loads_network_plugin_when_allow_network_true", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L217", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L269", "weight": 1.0, - "source": "config_test_models_test_paths_config_rejects_unknown_keys", - "target": "config_models_pathsconfig" + "source": "plugins_test_registry_test_lab_dir_wins_on_name_collision", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L226", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L284", "weight": 1.0, - "source": "config_test_models_test_lims_config_defaults", - "target": "config_models_limsconfig" + "source": "plugins_test_registry_test_bundled_only_when_no_lab_collision", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L235", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L298", "weight": 1.0, - "source": "config_test_models_test_lims_config_rejects_negative_cache_ttl_hours", - "target": "config_models_limsconfig" + "source": "plugins_test_registry_test_lab_only_plugins_are_loaded_too", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L240", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L314", "weight": 1.0, - "source": "config_test_models_test_lims_config_zero_cache_ttl_is_allowed", - "target": "config_models_limsconfig" + "source": "plugins_test_registry_test_reload_replaces_previous_state", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L250", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L329", "weight": 1.0, - "source": "config_test_models_test_readme_default_field_minimal_string_field", - "target": "config_models_readmedefaultfield" + "source": "plugins_test_registry_test_reload_returns_registry_report_dataclass", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L258", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L341", "weight": 1.0, - "source": "config_test_models_test_readme_default_field_id_must_match_template_question_id_pattern", - "target": "config_models_readmedefaultfield" + "source": "plugins_test_registry_test_get_returns_none_for_unknown_plugin", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L263", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L351", "weight": 1.0, - "source": "config_test_models_test_readme_default_field_id_rejects_leading_digit", - "target": "config_models_readmedefaultfield" + "source": "plugins_test_registry_test_list_all_returns_records_sorted_by_name", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L268", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L360", "weight": 1.0, - "source": "config_test_models_test_readme_default_field_label_must_be_non_empty", - "target": "config_models_readmedefaultfield" + "source": "plugins_test_registry_test_list_all_returns_record_instances", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L273", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L376", "weight": 1.0, - "source": "config_test_models_test_readme_default_field_rejects_unknown_type", - "target": "config_models_readmedefaultfield" + "source": "plugins_test_registry_test_candidates_for_matches_by_extension", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L278", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L395", "weight": 1.0, - "source": "config_test_models_test_readme_choice_field_requires_options", - "target": "config_models_readmedefaultfield" + "source": "plugins_test_registry_test_candidates_for_excludes_plugins_with_zero_matches", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L284", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L405", "weight": 1.0, - "source": "config_test_models_test_readme_choice_field_rejects_empty_options_list", - "target": "config_models_readmedefaultfield" + "source": "plugins_test_registry_test_candidates_for_returns_pluginplan_instances", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L288", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L417", "weight": 1.0, - "source": "config_test_models_test_readme_choice_field_accepts_non_empty_options", - "target": "config_models_readmedefaultfield" + "source": "plugins_test_registry_test_candidates_for_supports_multi_extension_plugin", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L294", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L431", "weight": 1.0, - "source": "config_test_models_test_readme_non_choice_field_does_not_require_options", - "target": "config_models_readmedefaultfield" + "source": "plugins_test_registry_test_registry_with_no_dirs_loads_nothing", + "target": "plugins_registry_pluginregistry" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L439", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plugins_test_registry_rationale_439", + "target": "plugins_test_registry_test_registry_skips_files_in_root" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L305", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L445", "weight": 1.0, - "source": "config_test_models_test_readme_config_default_is_empty_list", - "target": "config_models_readmeconfig" + "source": "plugins_test_registry_test_registry_skips_files_in_root", + "target": "plugins_registry_pluginregistry" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L451", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plugins_test_registry_rationale_451", + "target": "plugins_test_registry_test_registry_handles_nonexistent_dir" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L363", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L452", "weight": 1.0, - "source": "config_test_models_test_bandwidth_config_defaults", - "target": "config_models_bandwidthconfig" + "source": "plugins_test_registry_test_registry_handles_nonexistent_dir", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L370", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L468", "weight": 1.0, - "source": "config_test_models_test_bandwidth_config_rejects_zero_upload_mbps", - "target": "config_models_bandwidthconfig" + "source": "plugins_test_registry_test_registry_accepts_isolation_at_cap_boundary", + "target": "plugins_registry_pluginregistry" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L474", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plugins_test_registry_rationale_474", + "target": "plugins_test_registry_test_pluginplan_dataclass_shape" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L375", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L477", "weight": 1.0, - "source": "config_test_models_test_bandwidth_config_rejects_negative_upload_mbps", - "target": "config_models_bandwidthconfig" + "source": "plugins_test_registry_test_pluginplan_dataclass_shape", + "target": "plugins_registry_pluginregistry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L379", + "source_file": "tests/unit/plugins/test_registry.py", + "source_location": "L487", "weight": 1.0, - "source": "config_test_models_test_bandwidth_config_accepts_positive_upload_mbps", - "target": "config_models_bandwidthconfig" + "source": "plugins_test_registry_test_pluginrecord_dataclass_shape", + "target": "plugins_registry_pluginregistry" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L385", + "source_file": "tests/unit/plugins/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_385", - "target": "config_test_models_test_equipment_config_rejects_removed_completeness_fields" + "source": "plugins_init_rationale_1", + "target": "tests_unit_plugins_init_py" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L568", + "source_file": "tests/integration/plugins/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_568", - "target": "config_test_models_test_equipment_config_rejects_removed_completeness_fields" + "source": "plugins_init_rationale_1", + "target": "tests_integration_plugins_init_py" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L417", + "source_file": "tests/fixtures/plugins/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_417", - "target": "config_test_models_test_equipment_rejects_removed_orchestrator_staging_transport" + "source": "plugins_init_rationale_1", + "target": "tests_fixtures_plugins_init_py" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L441", + "source_file": "src/exlab_wizard/plugins/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_441", - "target": "config_test_models_test_nas_mode_equipment_needs_no_transport_block" + "source": "plugins_init_rationale_1", + "target": "src_exlab_wizard_plugins_init_py" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L446", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L34", "weight": 1.0, - "source": "config_test_models_test_nas_mode_equipment_needs_no_transport_block", - "target": "config_models_equipmentconfig" + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_minimalplugin" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L457", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_457", - "target": "config_test_models_test_nas_mode_equipment_rejects_stray_transport_block" + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_make_ctx" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L472", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_472", - "target": "config_test_models_test_sync_mode_stage_needs_no_per_equipment_block" + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_plugin_abc_cannot_be_instantiated_directly" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L507", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_507", - "target": "config_test_models_test_sync_mode_stage_round_trip_via_dict" + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_plugin_subclass_missing_can_handle_is_abstract" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L690", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_sync_mode_stage_round_trip_via_dict", - "target": "config_test_models_orch_staging_transport_dict" + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_plugin_subclass_missing_transform_is_abstract" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L102", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_minimal_plugin_can_be_instantiated" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L113", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_default_validate_variables_returns_empty_when_no_required" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L118", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_default_validate_variables_reports_missing_required" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L128", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_default_validate_variables_reports_empty_string_as_missing" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L140", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_default_validate_variables_lists_all_missing" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L154", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_pre_transform_all_default_is_noop" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L160", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_post_transform_all_default_is_noop" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L166", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_on_plugin_failure_default_is_noop" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L173", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_describe_changes_default_returns_single_modify_change" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L189", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_filechange_is_frozen_dataclass" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L195", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_filechange_default_detail_is_empty_dict" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L200", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_filechange_accepts_detail_payload" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L215", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_plugincontext_is_frozen_dataclass" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L221", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_plugincontext_carries_full_session_metadata" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L244", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_pluginerror_reexport_is_canonical_class" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L249", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_plugininputrequired_reexport_is_canonical_class" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L253", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_plugininputrequired_carries_fields_and_reason" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L266", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_plugin_api_version_defaults_to_one" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L271", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_plugin_required_variables_default_is_empty_list" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L275", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_base_py", + "target": "plugins_test_base_test_plugin_optional_variables_default_is_empty_list" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L686", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_686", - "target": "config_test_models_test_sync_mode_stage_round_trip_via_dict" + "source": "plugins_test_base_rationale_1", + "target": "tests_unit_plugins_test_base_py" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L705", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L34", "weight": 1.0, - "source": "config_test_models_test_nas_cleanup_defaults", - "target": "config_models_nascleanupconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_minimalplugin", + "target": "plugin" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L42", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plugins_test_base_minimalplugin", + "target": "plugins_test_base_minimalplugin_can_handle" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L45", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plugins_test_base_minimalplugin", + "target": "plugins_test_base_minimalplugin_transform" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L714", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L104", "weight": 1.0, - "source": "config_test_models_test_nas_cleanup_min_verify_passes_at_least_one", - "target": "config_models_nascleanupconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_minimal_plugin_can_be_instantiated", + "target": "plugins_test_base_minimalplugin" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L719", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L114", "weight": 1.0, - "source": "config_test_models_test_nas_cleanup_min_age_hours_non_negative", - "target": "config_models_nascleanupconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_default_validate_variables_returns_empty_when_no_required", + "target": "plugins_test_base_minimalplugin" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L728", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L155", "weight": 1.0, - "source": "config_test_models_test_logging_level_normalized_to_uppercase", - "target": "config_models_loggingconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_pre_transform_all_default_is_noop", + "target": "plugins_test_base_minimalplugin" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L734", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L161", "weight": 1.0, - "source": "config_test_models_test_logging_level_rejects_unknown", - "target": "config_models_loggingconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_post_transform_all_default_is_noop", + "target": "plugins_test_base_minimalplugin" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L739", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L167", "weight": 1.0, - "source": "config_test_models_test_logging_level_accepts_all_canonical_values", - "target": "config_models_loggingconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_on_plugin_failure_default_is_noop", + "target": "plugins_test_base_minimalplugin" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L744", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L174", "weight": 1.0, - "source": "config_test_models_test_logging_level_strips_whitespace_and_normalizes", - "target": "config_models_loggingconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_describe_changes_default_returns_single_modify_change", + "target": "plugins_test_base_minimalplugin" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plugins_test_base_rationale_35", + "target": "plugins_test_base_minimalplugin" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L18", + "weight": 0.8, + "confidence_score": 0.5, + "source": "plugins_test_base_minimalplugin", + "target": "exlab_wizard_errors_pluginerror" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L19", + "weight": 0.8, + "confidence_score": 0.5, + "source": "plugins_test_base_minimalplugin", + "target": "exlab_wizard_errors_plugininputrequired" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L20", + "weight": 0.8, + "confidence_score": 0.5, + "source": "plugins_test_base_minimalplugin", + "target": "plugins_base_filechange" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L20", + "weight": 0.8, + "confidence_score": 0.5, + "source": "plugins_test_base_minimalplugin", + "target": "plugins_base_plugin" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L20", + "weight": 0.8, + "confidence_score": 0.5, + "source": "plugins_test_base_minimalplugin", + "target": "plugins_base_plugincontext" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L27", + "weight": 0.8, + "confidence_score": 0.5, + "source": "plugins_test_base_minimalplugin", + "target": "plugins_logger_hostpluginlogger" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L762", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L73", "weight": 1.0, - "source": "config_test_models_test_logging_level_rejects_non_string_directly", - "target": "config_models_loggingconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_plugin_abc_cannot_be_instantiated_directly", + "target": "plugin" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "tests/fixtures/plugins/hello_plugin/plugin.py", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "hello_plugin_plugin_helloplugin", + "target": "plugin" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "tests/fixtures/plugins/_failures/error_plugin/plugin.py", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "error_plugin_plugin_errorplugin", + "target": "plugin" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "tests/fixtures/plugins/_failures/policy_violation_plugin/plugin.py", + "source_location": "L18", + "weight": 1.0, + "confidence_score": 1.0, + "source": "policy_violation_plugin_plugin_policyviolationplugin", + "target": "plugin" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "tests/fixtures/plugins/_failures/input_required_plugin/plugin.py", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "input_required_plugin_plugin_inputrequiredplugin", + "target": "plugin" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L768", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "tests/fixtures/plugins/_failures/crash_plugin/plugin.py", + "source_location": "L18", "weight": 1.0, - "source": "config_test_models_test_logging_central_log_max_mb_at_least_one", - "target": "config_models_loggingconfig" + "confidence_score": 1.0, + "source": "crash_plugin_plugin_crashplugin", + "target": "plugin" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L773", + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "tests/fixtures/plugins/_failures/timeout_plugin/plugin.py", + "source_location": "L19", "weight": 1.0, - "source": "config_test_models_test_logging_central_log_keep_at_least_one", - "target": "config_models_loggingconfig" + "confidence_score": 1.0, + "source": "timeout_plugin_plugin_timeoutplugin", + "target": "plugin" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L782", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L156", "weight": 1.0, - "source": "config_test_models_test_operators_config_defaults_to_empty_allowlist", - "target": "config_models_operatorsconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_pre_transform_all_default_is_noop", + "target": "plugins_test_base_make_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L787", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L162", "weight": 1.0, - "source": "config_test_models_test_operators_config_accepts_arbitrary_strings", - "target": "config_models_operatorsconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_post_transform_all_default_is_noop", + "target": "plugins_test_base_make_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L797", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L168", "weight": 1.0, - "source": "config_test_models_test_validator_config_defaults", - "target": "config_models_validatorconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_on_plugin_failure_default_is_noop", + "target": "plugins_test_base_make_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L805", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L175", "weight": 1.0, - "source": "config_test_models_test_validator_content_scan_max_mib_at_least_one", - "target": "config_models_validatorconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_describe_changes_default_returns_single_modify_change", + "target": "plugins_test_base_make_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L810", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L216", "weight": 1.0, - "source": "config_test_models_test_validator_extensions_must_start_with_dot", - "target": "config_models_validatorconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_plugincontext_is_frozen_dataclass", + "target": "plugins_test_base_make_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L815", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L222", "weight": 1.0, - "source": "config_test_models_test_validator_extensions_rejects_dotless_among_others", - "target": "config_models_validatorconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_test_plugincontext_carries_full_session_metadata", + "target": "plugins_test_base_make_ctx" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L824", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L60", "weight": 1.0, - "source": "config_test_models_test_plugins_config_default_allow_network_false", - "target": "config_models_pluginsconfig" + "source": "plugins_test_base_make_ctx", + "target": "plugins_logger_hostpluginlogger" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L834", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L63", "weight": 1.0, - "source": "config_test_models_test_sync_config_defaults", - "target": "config_models_syncconfig" + "source": "plugins_test_base_make_ctx", + "target": "plugins_base_plugincontext" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L844", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L103", "weight": 1.0, - "source": "config_test_models_test_sync_config_retry_attempts_non_negative", - "target": "config_models_syncconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_rationale_103", + "target": "plugins_test_base_test_minimal_plugin_can_be_instantiated" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L849", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L129", "weight": 1.0, - "source": "config_test_models_test_sync_config_quiescence_minutes_at_least_one", - "target": "config_models_syncconfig" + "confidence_score": 1.0, + "source": "plugins_test_base_rationale_129", + "target": "plugins_test_base_test_default_validate_variables_reports_empty_string_as_missing" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L854", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L190", "weight": 1.0, - "source": "config_test_models_test_sync_config_poll_interval_seconds_at_least_one", - "target": "config_models_syncconfig" + "source": "plugins_test_base_test_filechange_is_frozen_dataclass", + "target": "plugins_base_filechange" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L858", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L196", "weight": 1.0, - "source": "config_test_models_test_sync_config_accepts_custom_quiescence_settings", - "target": "config_models_syncconfig" + "source": "plugins_test_base_test_filechange_default_detail_is_empty_dict", + "target": "plugins_base_filechange" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L870", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L201", "weight": 1.0, - "source": "config_test_models_test_sync_config_ignore_globs_default_is_independent_per_instance", - "target": "config_models_syncconfig" + "source": "plugins_test_base_test_filechange_accepts_detail_payload", + "target": "plugins_base_filechange" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L882", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L245", "weight": 1.0, - "source": "config_test_models_test_orchestrator_staging_cleanup_defaults", - "target": "config_models_orchestratorstagingcleanup" + "confidence_score": 1.0, + "source": "plugins_test_base_rationale_245", + "target": "plugins_test_base_test_pluginerror_reexport_is_canonical_class" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L890", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L254", "weight": 1.0, - "source": "config_test_models_test_orchestrator_staging_cleanup_scheduled_requires_positive_hours", - "target": "config_models_orchestratorstagingcleanup" + "confidence_score": 1.0, + "source": "plugins_test_base_rationale_254", + "target": "plugins_test_base_test_plugininputrequired_carries_fields_and_reason" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L895", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L256", "weight": 1.0, - "source": "config_test_models_test_orchestrator_staging_cleanup_rejects_unknown_mode", - "target": "config_models_orchestratorstagingcleanup" + "source": "plugins_test_base_test_plugininputrequired_carries_fields_and_reason", + "target": "exlab_wizard_errors_plugininputrequired" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L722", + "source_file": "tests/unit/plugins/test_base.py", + "source_location": "L267", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_722", - "target": "config_test_models_test_orchestrator_config_defaults" + "source": "plugins_test_base_rationale_267", + "target": "plugins_test_base_test_plugin_api_version_defaults_to_one" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L907", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L33", "weight": 1.0, - "source": "config_test_models_test_orchestrator_config_defaults", - "target": "config_models_orchestratorconfig" + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_host_plugin_logger_forwards_info_to_stdlib_logger" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L904", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_904", - "target": "config_test_models_test_orchestrator_config_defaults" + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_host_plugin_logger_forwards_debug" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L734", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_734", - "target": "config_test_models_test_orchestrator_config_staging_remote_validates_with_perf_defaults" + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_host_plugin_logger_forwards_warning" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L737", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L58", "weight": 1.0, - "source": "config_test_models_test_orchestrator_config_staging_remote_validates_with_perf_defaults", - "target": "config_models_orchestratorconfig" + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_host_plugin_logger_forwards_error" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L745", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_745", - "target": "config_test_models_test_stage_mode_equipment_validates_without_staging_block" + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_host_plugin_logger_passes_structured_fields_via_extra" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L747", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L77", "weight": 1.0, - "source": "config_test_models_test_stage_mode_equipment_validates_without_staging_block", - "target": "config_models_equipmentconfig" + "confidence_score": 1.0, + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_host_plugin_logger_uses_default_logger_name_when_unspecified" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L946", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_test_distinct_equipment_ids_accepted", - "target": "config_test_models_smb_transport_dict" + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_worker_plugin_logger_emits_json_frame_to_stream" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L796", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_796", - "target": "config_test_models_test_orchestrator_legacy_enabled_field_rejected" + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_worker_plugin_logger_each_level_emits_correct_level_string" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L955", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_955", - "target": "config_test_models_test_orchestrator_legacy_enabled_field_rejected" + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_worker_plugin_logger_emits_one_frame_per_call" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L812", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_812", - "target": "config_test_models_test_orchestrator_label_and_staging_root_load_independently" + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_worker_plugin_logger_emits_empty_context_when_no_fields" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L971", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L137", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_971", - "target": "config_test_models_test_orchestrator_label_and_staging_root_load_independently" + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_worker_plugin_logger_default_stream_is_stderr" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L851", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L153", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_851", - "target": "config_test_models_test_full_config_round_trip_via_dict" + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_plugin_log_frame_fields_are_pinned" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1010", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_1010", - "target": "config_test_models_test_full_config_round_trip_via_dict" + "source": "tests_unit_plugins_test_logger_py", + "target": "plugins_test_logger_test_plugin_log_frame_default_context_is_empty_dict" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L886", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_886", - "target": "config_test_models_test_config_with_equipment_appended_seeds_from_none" + "source": "plugins_test_logger_rationale_1", + "target": "tests_unit_plugins_test_logger_py" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1047", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L36", "weight": 1.0, - "source": "config_test_models_test_config_with_equipment_appended_seeds_from_none", - "target": "config_models_config_with_equipment_appended" + "source": "plugins_test_logger_test_host_plugin_logger_forwards_info_to_stdlib_logger", + "target": "plugins_logger_hostpluginlogger" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1045", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L45", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_rationale_1045", - "target": "config_test_models_test_config_with_equipment_appended_seeds_from_none" + "source": "plugins_test_logger_test_host_plugin_logger_forwards_debug", + "target": "plugins_logger_hostpluginlogger" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L52", + "weight": 1.0, + "source": "plugins_test_logger_test_host_plugin_logger_forwards_warning", + "target": "plugins_logger_hostpluginlogger" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L59", + "weight": 1.0, + "source": "plugins_test_logger_test_host_plugin_logger_forwards_error", + "target": "plugins_logger_hostpluginlogger" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L894", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_894", - "target": "config_test_models_test_config_with_equipment_appended_preserves_existing_state" + "source": "plugins_test_logger_rationale_68", + "target": "plugins_test_logger_test_host_plugin_logger_passes_structured_fields_via_extra" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1055", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L69", "weight": 1.0, - "source": "config_test_models_test_config_with_equipment_appended_preserves_existing_state", - "target": "config_models_loggingconfig" + "source": "plugins_test_logger_test_host_plugin_logger_passes_structured_fields_via_extra", + "target": "plugins_logger_hostpluginlogger" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L80", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plugins_test_logger_rationale_80", + "target": "plugins_test_logger_test_host_plugin_logger_uses_default_logger_name_when_unspecified" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1062", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L81", "weight": 1.0, - "source": "config_test_models_test_config_with_equipment_appended_preserves_existing_state", - "target": "config_models_config_with_equipment_appended" + "source": "plugins_test_logger_test_host_plugin_logger_uses_default_logger_name_when_unspecified", + "target": "plugins_logger_hostpluginlogger" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1059", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L96", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_test_config_with_equipment_appended_preserves_existing_state", - "target": "config_test_models_smb_transport_dict" + "source": "plugins_test_logger_test_worker_plugin_logger_emits_json_frame_to_stream", + "target": "plugins_logger_workerpluginlogger" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1053", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L108", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_rationale_1053", - "target": "config_test_models_test_config_with_equipment_appended_preserves_existing_state" + "source": "plugins_test_logger_test_worker_plugin_logger_each_level_emits_correct_level_string", + "target": "plugins_logger_workerpluginlogger" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L906", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L121", "weight": 1.0, - "confidence_score": 1.0, - "source": "config_test_models_rationale_906", - "target": "config_test_models_test_config_with_equipment_appended_rejects_duplicate_id" + "source": "plugins_test_logger_test_worker_plugin_logger_emits_one_frame_per_call", + "target": "plugins_logger_workerpluginlogger" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1075", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L131", "weight": 1.0, - "source": "config_test_models_test_config_with_equipment_appended_rejects_duplicate_id", - "target": "config_models_config_with_equipment_appended" + "source": "plugins_test_logger_test_worker_plugin_logger_emits_empty_context_when_no_fields", + "target": "plugins_logger_workerpluginlogger" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L1070", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_1070", - "target": "config_test_models_test_config_with_equipment_appended_rejects_duplicate_id" + "source": "plugins_test_logger_rationale_138", + "target": "plugins_test_logger_test_worker_plugin_logger_default_stream_is_stderr" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L920", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L141", "weight": 1.0, - "source": "config_test_models_test_nas_config_defaults", - "target": "config_models_nasconfig" + "source": "plugins_test_logger_test_worker_plugin_logger_default_stream_is_stderr", + "target": "plugins_logger_workerpluginlogger" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/config/test_models.py", - "source_location": "L932", + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L154", "weight": 1.0, - "source": "config_test_models_test_nas_config_rejects_nonpositive_perf", - "target": "config_models_rcloneperf" + "source": "plugins_test_logger_test_plugin_log_frame_fields_are_pinned", + "target": "plugins_logger_pluginlogframe" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/plugins/test_logger.py", + "source_location": "L161", + "weight": 1.0, + "source": "plugins_test_logger_test_plugin_log_frame_default_context_is_empty_dict", + "target": "plugins_logger_pluginlogframe" + }, + { + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/config/test_models.py", - "source_location": "L60", + "source_file": "tests/unit/constants/test_schema_versions.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "config_test_models_rationale_60", - "target": "config_test_models_smb_transport_dict" + "source": "tests_unit_constants_test_schema_versions_py", + "target": "constants_test_schema_versions_test_creation_json_version_is_pinned" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L35", + "source_file": "tests/unit/constants/test_schema_versions.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_schema_versions_py", + "target": "constants_test_schema_versions_test_readme_fields_json_version_is_pinned" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L89", + "source_file": "tests/unit/constants/test_schema_versions.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_loads_a_valid_plugin" + "source": "tests_unit_constants_test_schema_versions_py", + "target": "constants_test_schema_versions_test_sync_state_json_version_is_pinned" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L106", + "source_file": "tests/unit/constants/test_schema_versions.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_loaded_record_carries_isolation_block" + "source": "tests_unit_constants_test_schema_versions_py", + "target": "constants_test_schema_versions_test_equipment_json_version_is_pinned" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L118", + "source_file": "tests/unit/constants/test_schema_versions.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_required_and_optional_variables_round_trip" + "source": "tests_unit_constants_test_schema_versions_py", + "target": "constants_test_schema_versions_test_test_runs_json_version_is_pinned" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L140", + "source_file": "tests/unit/constants/test_schema_versions.py", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_rejects_plugin_directory_without_manifest" + "source": "tests_unit_constants_test_schema_versions_py", + "target": "constants_test_schema_versions_test_offline_catalogue_version_is_pinned" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L152", + "source_file": "tests/unit/constants/test_schema_versions.py", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_rejects_plugin_with_malformed_yaml" + "source": "tests_unit_constants_test_schema_versions_py", + "target": "constants_test_schema_versions_test_readme_front_matter_schema_version_is_pinned" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L164", + "source_file": "tests/unit/constants/test_schema_versions.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_rejects_plugin_missing_required_field" + "source": "tests_unit_constants_test_schema_versions_py", + "target": "constants_test_schema_versions_test_all_schema_versions_are_strings" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L174", + "source_file": "tests/unit/constants/test_schema_versions.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_rejects_plugin_with_unsupported_api_version" + "source": "tests_unit_constants_test_schema_versions_py", + "target": "constants_test_schema_versions_test_schema_versions_re_exported_from_package" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_schema_versions.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "constants_test_schema_versions_rationale_1", + "target": "tests_unit_constants_test_schema_versions_py" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L184", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_rejects_plugin_with_invalid_name" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_equipment_id_regex_literal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L202", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_rejects_plugin_with_timeout_above_cap" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_equipment_id_pattern_is_compiled" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L211", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_rejects_plugin_with_memory_above_cap" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_equipment_id_pattern_accepts_valid_ids" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L220", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_rejects_supported_extensions_when_not_a_list_of_strings" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_equipment_id_pattern_rejects_invalid_ids" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L238", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_rejects_network_plugin_when_allow_network_false" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_equipment_id_max_length" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L247", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_loads_network_plugin_when_allow_network_true" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_placeholder_angle_bracket_regex_literal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L263", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L70", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_lab_dir_wins_on_name_collision" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_placeholder_angle_bracket_pattern_finds_tokens" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L278", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_bundled_only_when_no_lab_collision" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_placeholder_angle_bracket_pattern_ignores_non_tokens" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L292", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_lab_only_plugins_are_loaded_too" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_placeholder_jinja_var_regex_literal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L311", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_reload_replaces_previous_state" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_placeholder_jinja_var_pattern_finds_markers" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L326", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_reload_returns_registry_report_dataclass" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_placeholder_jinja_var_pattern_ignores_plain_text" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L340", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_get_returns_none_for_unknown_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_placeholder_jinja_block_regex_literal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L346", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L102", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_list_all_returns_records_sorted_by_name" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_placeholder_jinja_block_pattern_finds_blocks" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L357", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_list_all_returns_record_instances" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_placeholder_jinja_block_pattern_ignores_unrelated_content" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L372", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_candidates_for_matches_by_extension" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_project_short_id_regex_literal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L392", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L121", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_candidates_for_excludes_plugins_with_zero_matches" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_project_short_id_pattern_accepts" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L402", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L126", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_candidates_for_returns_pluginplan_instances" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_project_short_id_pattern_rejects" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L414", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L137", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_candidates_for_supports_multi_extension_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_template_question_id_regex_literal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L430", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L141", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_registry_with_no_dirs_loads_nothing" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_template_question_id_pattern_accepts" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L438", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L146", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_registry_skips_files_in_root" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_template_question_id_pattern_rejects" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L450", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L156", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_registry_handles_nonexistent_dir" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_plugin_name_regex_literal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L465", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_registry_accepts_isolation_at_cap_boundary" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_plugin_name_pattern_accepts" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L473", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L165", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_pluginplan_dataclass_shape" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_plugin_name_pattern_rejects" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L484", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L175", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_registry_py", - "target": "plugins_test_registry_test_pluginrecord_dataclass_shape" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_run_date_strftime_literal" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L1", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L181", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_rationale_1", - "target": "tests_unit_plugins_test_registry_py" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_run_date_strftime_round_trip" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L91", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L193", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_loads_a_valid_plugin", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_run_dir_prefix_literal" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L108", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L197", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_loaded_record_carries_isolation_block", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_test_run_dir_prefix_literal" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L120", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L201", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_required_and_optional_variables_round_trip", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_test_runs_dir_name_literal" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L166", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L210", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_rejects_plugin_missing_required_field", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_windows_reserved_names_membership" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L176", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L220", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_rejects_plugin_with_unsupported_api_version", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_windows_reserved_names_is_frozenset" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L204", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L224", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_rejects_plugin_with_timeout_above_cap", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_windows_reserved_names_size" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L213", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L229", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_rejects_plugin_with_memory_above_cap", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_windows_reserved_names_are_uppercase" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L240", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L236", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_rejects_network_plugin_when_allow_network_false", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_windows_reserved_names_case_insensitive_check" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L249", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L248", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_loads_network_plugin_when_allow_network_true", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_windows_illegal_chars_literal" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L266", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L253", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_lab_dir_wins_on_name_collision", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_windows_illegal_chars_membership" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L282", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L258", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_bundled_only_when_no_lab_collision", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_windows_illegal_chars_excludes_safe" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L296", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L268", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_lab_only_plugins_are_loaded_too", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_patterns_py", + "target": "constants_test_patterns_test_patterns_re_exported_from_package" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L313", + "source_file": "tests/unit/constants/test_patterns.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_reload_replaces_previous_state", - "target": "plugins_test_registry_write_plugin" + "source": "constants_test_patterns_rationale_1", + "target": "tests_unit_constants_test_patterns_py" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L328", + "source_file": "tests/unit/constants/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_reload_returns_registry_report_dataclass", - "target": "plugins_test_registry_write_plugin" + "source": "constants_init_rationale_1", + "target": "tests_unit_constants_init_py" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L348", + "source_file": "src/exlab_wizard/constants/__init__.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "constants_init_rationale_1", + "target": "src_exlab_wizard_constants_init_py" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enum_literal_alignment.py", + "source_location": "L67", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enum_literal_alignment_py", + "target": "constants_test_enum_literal_alignment_test_enum_values_match_expected_literal_set" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enum_literal_alignment.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "constants_test_enum_literal_alignment_rationale_1", + "target": "tests_unit_constants_test_enum_literal_alignment_py" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L15", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_run_kind_values" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_list_all_returns_records_sorted_by_name", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_run_kind_is_str" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L359", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_list_all_returns_record_instances", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_sync_status_values" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L374", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_candidates_for_matches_by_extension", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_tier_values" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L394", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_candidates_for_excludes_plugins_with_zero_matches", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_problem_class_values" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L404", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_candidates_for_returns_pluginplan_instances", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_finding_kind_values" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L416", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_candidates_for_supports_multi_extension_plugin", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_template_type_values" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L443", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L102", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_registry_skips_files_in_root", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_run_scope_values" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L467", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L111", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_registry_accepts_isolation_at_cap_boundary", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_lims_project_status_values_pascal_case" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L476", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L126", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_pluginplan_dataclass_shape", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_lims_project_source_values" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L486", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L139", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_test_pluginrecord_dataclass_shape", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_ingest_state_enum_is_removed" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L50", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_rationale_50", - "target": "plugins_test_registry_write_plugin" + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_run_sync_state_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L92", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L151", "weight": 1.0, - "source": "plugins_test_registry_test_loads_a_valid_plugin", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_setup_state_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L109", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L173", "weight": 1.0, - "source": "plugins_test_registry_test_loaded_record_carries_isolation_block", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_nas_remote_setup_members_exist" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L126", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L180", "weight": 1.0, - "source": "plugins_test_registry_test_required_and_optional_variables_round_trip", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_transport_type_enum_removed" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L144", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L181", "weight": 1.0, - "source": "plugins_test_registry_test_rejects_plugin_directory_without_manifest", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_completeness_signal_enum_removed" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L157", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L186", "weight": 1.0, - "source": "plugins_test_registry_test_rejects_plugin_with_malformed_yaml", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_staging_cleanup_mode_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L167", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L194", "weight": 1.0, - "source": "plugins_test_registry_test_rejects_plugin_missing_required_field", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_plugin_status_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L177", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L211", "weight": 1.0, - "source": "plugins_test_registry_test_rejects_plugin_with_unsupported_api_version", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_creation_level_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L196", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L227", "weight": 1.0, - "source": "plugins_test_registry_test_rejects_plugin_with_invalid_name", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_field_type_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L205", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L238", "weight": 1.0, - "source": "plugins_test_registry_test_rejects_plugin_with_timeout_above_cap", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_bandwidth_day_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L214", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L246", "weight": 1.0, - "source": "plugins_test_registry_test_rejects_plugin_with_memory_above_cap", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_session_kind_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L228", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L254", "weight": 1.0, - "source": "plugins_test_registry_test_rejects_supported_extensions_when_not_a_list_of_strings", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_next_action_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L241", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L262", "weight": 1.0, - "source": "plugins_test_registry_test_rejects_network_plugin_when_allow_network_false", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_audit_scope_kind_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L250", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L271", "weight": 1.0, - "source": "plugins_test_registry_test_loads_network_plugin_when_allow_network_true", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_directory_level_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L269", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L279", "weight": 1.0, - "source": "plugins_test_registry_test_lab_dir_wins_on_name_collision", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_platform_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L284", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L287", "weight": 1.0, - "source": "plugins_test_registry_test_bundled_only_when_no_lab_collision", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_setup_next_action_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L298", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L295", "weight": 1.0, - "source": "plugins_test_registry_test_lab_only_plugins_are_loaded_too", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_sync_handle_state_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L314", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L303", "weight": 1.0, - "source": "plugins_test_registry_test_reload_replaces_previous_state", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_plugin_source_root_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L329", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L311", "weight": 1.0, - "source": "plugins_test_registry_test_reload_returns_registry_report_dataclass", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_tree_project_status_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L341", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L319", "weight": 1.0, - "source": "plugins_test_registry_test_get_returns_none_for_unknown_plugin", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_enums_re_exported_from_package" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L351", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L1", "weight": 1.0, - "source": "plugins_test_registry_test_list_all_returns_records_sorted_by_name", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "constants_test_enums_rationale_1", + "target": "tests_unit_constants_test_enums_py" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L360", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L173", "weight": 1.0, - "source": "plugins_test_registry_test_list_all_returns_record_instances", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_transport_type_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L376", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_enums.py", + "source_location": "L219", "weight": 1.0, - "source": "plugins_test_registry_test_candidates_for_matches_by_extension", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_enums_py", + "target": "constants_test_enums_test_orchestrator_transport_type_values" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L395", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_keyring.py", + "source_location": "L13", "weight": 1.0, - "source": "plugins_test_registry_test_candidates_for_excludes_plugins_with_zero_matches", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_keyring_py", + "target": "constants_test_keyring_test_keyring_service_literal" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L405", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_keyring.py", + "source_location": "L18", "weight": 1.0, - "source": "plugins_test_registry_test_candidates_for_returns_pluginplan_instances", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_keyring_py", + "target": "constants_test_keyring_test_keyring_username_lims_literal" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L417", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_keyring.py", + "source_location": "L23", "weight": 1.0, - "source": "plugins_test_registry_test_candidates_for_supports_multi_extension_plugin", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_keyring_py", + "target": "constants_test_keyring_test_nas_keyring_username_removed" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L431", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_keyring.py", + "source_location": "L46", "weight": 1.0, - "source": "plugins_test_registry_test_registry_with_no_dirs_loads_nothing", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_keyring_py", + "target": "constants_test_keyring_test_keyring_re_exported_from_package" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L439", + "source_file": "tests/unit/constants/test_keyring.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_rationale_439", - "target": "plugins_test_registry_test_registry_skips_files_in_root" + "source": "constants_test_keyring_rationale_1", + "target": "tests_unit_constants_test_keyring_py" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L445", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_keyring.py", + "source_location": "L23", "weight": 1.0, - "source": "plugins_test_registry_test_registry_skips_files_in_root", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_keyring_py", + "target": "constants_test_keyring_test_keyring_username_nas_template_literal" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L451", + "source_file": "tests/unit/constants/test_keyring.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_rationale_451", - "target": "plugins_test_registry_test_registry_handles_nonexistent_dir" + "source": "tests_unit_constants_test_keyring_py", + "target": "constants_test_keyring_test_keyring_nas_username_formats_template" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L452", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_keyring.py", + "source_location": "L33", "weight": 1.0, - "source": "plugins_test_registry_test_registry_handles_nonexistent_dir", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_keyring_py", + "target": "constants_test_keyring_test_keyring_nas_username_handles_various_ids" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L468", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L12", "weight": 1.0, - "source": "plugins_test_registry_test_registry_accepts_isolation_at_cap_boundary", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_plugin_timeout_max_seconds" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L474", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_registry_rationale_474", - "target": "plugins_test_registry_test_pluginplan_dataclass_shape" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_plugin_memory_max_mb" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L477", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L22", "weight": 1.0, - "source": "plugins_test_registry_test_pluginplan_dataclass_shape", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_plugin_validation_cpu_seconds" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_registry.py", - "source_location": "L487", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L27", "weight": 1.0, - "source": "plugins_test_registry_test_pluginrecord_dataclass_shape", - "target": "plugins_registry_pluginregistry" + "confidence_score": 1.0, + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_plugin_validation_memory_mb" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_init_rationale_1", - "target": "tests_unit_plugins_init_py" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_plugin_validation_wall_seconds" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/integration/plugins/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_init_rationale_1", - "target": "tests_integration_plugins_init_py" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_plugin_rlimit_nofile" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/fixtures/plugins/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_init_rationale_1", - "target": "tests_fixtures_plugins_init_py" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_plugin_ipc_frame_cap_bytes_is_one_mib" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/plugins/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_init_rationale_1", - "target": "src_exlab_wizard_plugins_init_py" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_plugin_api_version" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L34", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_minimalplugin" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_plugin_supported_api_versions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L49", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L62", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_make_ctx" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_plugin_forbidden_path_prefixes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L71", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_plugin_abc_cannot_be_instantiated_directly" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_label_max_length" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L76", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L77", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_plugin_subclass_missing_can_handle_is_abstract" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_objective_max_length" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L89", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_plugin_subclass_missing_transform_is_abstract" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_validator_binary_detect_bytes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L102", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_minimal_plugin_can_be_instantiated" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_log_line_max_bytes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L113", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_default_validate_variables_returns_empty_when_no_required" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_session_gc_after_seconds" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L118", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L97", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_default_validate_variables_reports_missing_required" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_audit_refresh_seconds" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L128", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L102", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_default_validate_variables_reports_empty_string_as_missing" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_quit_drain_timeout_seconds" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L140", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L107", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_default_validate_variables_lists_all_missing" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_sigterm_drain_timeout_seconds" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L154", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_pre_transform_all_default_is_noop" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_tray_status_refresh_seconds" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L160", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_post_transform_all_default_is_noop" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_worker_timeout_grace_seconds" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L166", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_on_plugin_failure_default_is_noop" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_window_default_size" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L173", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_describe_changes_default_returns_single_modify_change" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_notification_coalesce_seconds" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L189", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L133", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_filechange_is_frozen_dataclass" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_disk_space_preflight_mib" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L195", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_filechange_default_detail_is_empty_dict" + "source": "tests_unit_constants_test_limits_py", + "target": "constants_test_limits_test_limits_re_exported_from_package" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L200", + "source_file": "tests/unit/constants/test_limits.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_filechange_accepts_detail_payload" + "source": "constants_test_limits_rationale_1", + "target": "tests_unit_constants_test_limits_py" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L215", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L12", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_plugincontext_is_frozen_dataclass" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_cache_dir_name" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L221", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_plugincontext_carries_full_session_metadata" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_creation_json_name" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L244", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_pluginerror_reexport_is_canonical_class" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_readme_fields_json_name" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L249", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_plugininputrequired_reexport_is_canonical_class" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_equipment_json_name" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L253", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_plugininputrequired_carries_fields_and_reason" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_sync_state_filename" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L266", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_plugin_api_version_defaults_to_one" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_test_runs_json_name" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L271", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_plugin_required_variables_default_is_empty_list" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_answers_file_name" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L275", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_base_py", - "target": "plugins_test_base_test_plugin_optional_variables_default_is_empty_list" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_log_file_template" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L1", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_rationale_1", - "target": "tests_unit_plugins_test_base_py" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_log_file_template_formats" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L34", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_minimalplugin", - "target": "plugin" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_readme_file_name" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L42", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_minimalplugin", - "target": "plugins_test_base_minimalplugin_can_handle" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_copier_manifest_name" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L45", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_minimalplugin", - "target": "plugins_test_base_minimalplugin_transform" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_plugin_manifest_name" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L104", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L73", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_test_minimal_plugin_can_be_instantiated", - "target": "plugins_test_base_minimalplugin" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_server_state_file" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L114", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L78", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_test_default_validate_variables_returns_empty_when_no_required", - "target": "plugins_test_base_minimalplugin" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_lims_cache_db_name" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L155", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_test_pre_transform_all_default_is_noop", - "target": "plugins_test_base_minimalplugin" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_sync_queue_db_name" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L161", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_test_post_transform_all_default_is_noop", - "target": "plugins_test_base_minimalplugin" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_central_log_file" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L167", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_test_on_plugin_failure_default_is_noop", - "target": "plugins_test_base_minimalplugin" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_secrets_file" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L174", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_test_describe_changes_default_returns_single_modify_change", - "target": "plugins_test_base_minimalplugin" + "source": "tests_unit_constants_test_filenames_py", + "target": "constants_test_filenames_test_filenames_re_exported_from_package" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L35", + "source_file": "tests/unit/constants/test_filenames.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_rationale_35", - "target": "plugins_test_base_minimalplugin" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L18", - "weight": 0.8, - "confidence_score": 0.5, - "source": "plugins_test_base_minimalplugin", - "target": "exlab_wizard_errors_pluginerror" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L19", - "weight": 0.8, - "confidence_score": 0.5, - "source": "plugins_test_base_minimalplugin", - "target": "exlab_wizard_errors_plugininputrequired" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L20", - "weight": 0.8, - "confidence_score": 0.5, - "source": "plugins_test_base_minimalplugin", - "target": "plugins_base_filechange" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L20", - "weight": 0.8, - "confidence_score": 0.5, - "source": "plugins_test_base_minimalplugin", - "target": "plugins_base_plugin" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L20", - "weight": 0.8, - "confidence_score": 0.5, - "source": "plugins_test_base_minimalplugin", - "target": "plugins_base_plugincontext" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L27", - "weight": 0.8, - "confidence_score": 0.5, - "source": "plugins_test_base_minimalplugin", - "target": "plugins_logger_hostpluginlogger" + "source": "constants_test_filenames_rationale_1", + "target": "tests_unit_constants_test_filenames_py" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L73", + "source_file": "tests/unit/io/test_yaml_files.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_test_plugin_abc_cannot_be_instantiated_directly", - "target": "plugin" + "source": "tests_unit_io_test_yaml_files_py", + "target": "io_test_yaml_files_test_load_yaml_manifest_returns_dict" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/fixtures/plugins/hello_plugin/plugin.py", - "source_location": "L20", + "source_file": "tests/unit/io/test_yaml_files.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "hello_plugin_plugin_helloplugin", - "target": "plugin" + "source": "tests_unit_io_test_yaml_files_py", + "target": "io_test_yaml_files_test_load_yaml_manifest_empty_file_returns_empty_dict" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/fixtures/plugins/_failures/error_plugin/plugin.py", - "source_location": "L17", + "source_file": "tests/unit/io/test_yaml_files.py", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "error_plugin_plugin_errorplugin", - "target": "plugin" + "source": "tests_unit_io_test_yaml_files_py", + "target": "io_test_yaml_files_test_load_yaml_manifest_non_dict_returns_empty_dict" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/fixtures/plugins/_failures/policy_violation_plugin/plugin.py", - "source_location": "L18", + "source_file": "tests/unit/io/test_yaml_files.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "policy_violation_plugin_plugin_policyviolationplugin", - "target": "plugin" + "source": "tests_unit_io_test_yaml_files_py", + "target": "io_test_yaml_files_test_load_yaml_manifest_propagates_yaml_error" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/fixtures/plugins/_failures/input_required_plugin/plugin.py", - "source_location": "L20", + "source_file": "tests/unit/io/test_yaml_files.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "input_required_plugin_plugin_inputrequiredplugin", - "target": "plugin" + "source": "tests_unit_io_test_yaml_files_py", + "target": "io_test_yaml_files_test_load_yaml_manifest_missing_file_raises" }, { - "relation": "inherits", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/fixtures/plugins/_failures/crash_plugin/plugin.py", - "source_location": "L18", + "source_file": "tests/unit/io/test_yaml_files.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "crash_plugin_plugin_crashplugin", - "target": "plugin" + "source": "io_test_yaml_files_rationale_1", + "target": "tests_unit_io_test_yaml_files_py" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "tests/fixtures/plugins/_failures/timeout_plugin/plugin.py", - "source_location": "L19", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/io/test_yaml_files.py", + "source_location": "L16", "weight": 1.0, - "confidence_score": 1.0, - "source": "timeout_plugin_plugin_timeoutplugin", - "target": "plugin" + "source": "io_test_yaml_files_test_load_yaml_manifest_returns_dict", + "target": "io_yaml_files_load_yaml_manifest" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/io/test_yaml_files.py", + "source_location": "L22", + "weight": 1.0, + "source": "io_test_yaml_files_test_load_yaml_manifest_empty_file_returns_empty_dict", + "target": "io_yaml_files_load_yaml_manifest" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L156", + "source_file": "tests/unit/io/test_yaml_files.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_test_pre_transform_all_default_is_noop", - "target": "plugins_test_base_make_ctx" + "source": "io_test_yaml_files_rationale_26", + "target": "io_test_yaml_files_test_load_yaml_manifest_non_dict_returns_empty_dict" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L162", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/io/test_yaml_files.py", + "source_location": "L29", "weight": 1.0, - "confidence_score": 1.0, - "source": "plugins_test_base_test_post_transform_all_default_is_noop", - "target": "plugins_test_base_make_ctx" + "source": "io_test_yaml_files_test_load_yaml_manifest_non_dict_returns_empty_dict", + "target": "io_yaml_files_load_yaml_manifest" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L168", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/io/test_yaml_files.py", + "source_location": "L36", "weight": 1.0, - "confidence_score": 1.0, - "source": "plugins_test_base_test_on_plugin_failure_default_is_noop", - "target": "plugins_test_base_make_ctx" + "source": "io_test_yaml_files_test_load_yaml_manifest_propagates_yaml_error", + "target": "io_yaml_files_load_yaml_manifest" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/io/test_yaml_files.py", + "source_location": "L41", + "weight": 1.0, + "source": "io_test_yaml_files_test_load_yaml_manifest_missing_file_raises", + "target": "io_yaml_files_load_yaml_manifest" + }, + { + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L175", + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_test_describe_changes_default_returns_single_modify_change", - "target": "plugins_test_base_make_ctx" + "source": "tests_unit_io_test_atomic_write_py", + "target": "io_test_atomic_write_test_atomic_write_creates_file" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L216", + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_test_plugincontext_is_frozen_dataclass", - "target": "plugins_test_base_make_ctx" + "source": "tests_unit_io_test_atomic_write_py", + "target": "io_test_atomic_write_test_atomic_write_overwrites_existing" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L222", + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_test_plugincontext_carries_full_session_metadata", - "target": "plugins_test_base_make_ctx" + "source": "tests_unit_io_test_atomic_write_py", + "target": "io_test_atomic_write_test_atomic_write_leaves_no_temp_file_on_success" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L60", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L33", "weight": 1.0, - "source": "plugins_test_base_make_ctx", - "target": "plugins_logger_hostpluginlogger" + "confidence_score": 1.0, + "source": "tests_unit_io_test_atomic_write_py", + "target": "io_test_atomic_write_test_atomic_write_cleans_up_temp_on_replace_failure" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L63", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L48", "weight": 1.0, - "source": "plugins_test_base_make_ctx", - "target": "plugins_base_plugincontext" + "confidence_score": 1.0, + "source": "tests_unit_io_test_atomic_write_py", + "target": "io_test_atomic_write_test_atomic_write_skip_fsync" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L103", + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_rationale_103", - "target": "plugins_test_base_test_minimal_plugin_can_be_instantiated" + "source": "tests_unit_io_test_atomic_write_py", + "target": "io_test_atomic_write_test_atomic_write_calls_fsync_by_default" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L129", + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_rationale_129", - "target": "plugins_test_base_test_default_validate_variables_reports_empty_string_as_missing" + "source": "io_test_atomic_write_rationale_1", + "target": "tests_unit_io_test_atomic_write_py" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L190", + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L15", "weight": 1.0, - "source": "plugins_test_base_test_filechange_is_frozen_dataclass", - "target": "plugins_base_filechange" + "source": "io_test_atomic_write_test_atomic_write_creates_file", + "target": "io_atomic_write_atomic_write_bytes" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L196", + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L22", "weight": 1.0, - "source": "plugins_test_base_test_filechange_default_detail_is_empty_dict", - "target": "plugins_base_filechange" + "source": "io_test_atomic_write_test_atomic_write_overwrites_existing", + "target": "io_atomic_write_atomic_write_bytes" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L201", + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L28", "weight": 1.0, - "source": "plugins_test_base_test_filechange_accepts_detail_payload", - "target": "plugins_base_filechange" + "source": "io_test_atomic_write_test_atomic_write_leaves_no_temp_file_on_success", + "target": "io_atomic_write_atomic_write_bytes" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L245", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L41", "weight": 1.0, - "confidence_score": 1.0, - "source": "plugins_test_base_rationale_245", - "target": "plugins_test_base_test_pluginerror_reexport_is_canonical_class" + "source": "io_test_atomic_write_test_atomic_write_cleans_up_temp_on_replace_failure", + "target": "io_atomic_write_atomic_write_bytes" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L254", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L51", "weight": 1.0, - "confidence_score": 1.0, - "source": "plugins_test_base_rationale_254", - "target": "plugins_test_base_test_plugininputrequired_carries_fields_and_reason" + "source": "io_test_atomic_write_test_atomic_write_skip_fsync", + "target": "io_atomic_write_atomic_write_bytes" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L256", + "source_file": "tests/unit/io/test_atomic_write.py", + "source_location": "L59", "weight": 1.0, - "source": "plugins_test_base_test_plugininputrequired_carries_fields_and_reason", - "target": "exlab_wizard_errors_plugininputrequired" + "source": "io_test_atomic_write_test_atomic_write_calls_fsync_by_default", + "target": "io_atomic_write_atomic_write_bytes" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_base.py", - "source_location": "L267", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_base_rationale_267", - "target": "plugins_test_base_test_plugin_api_version_defaults_to_one" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_dummy" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L33", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_host_plugin_logger_forwards_info_to_stdlib_logger" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_require_schema_major_accepts_matching_major" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L44", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_host_plugin_logger_forwards_debug" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_require_schema_major_rejects_different_major" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L51", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_host_plugin_logger_forwards_warning" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_require_schema_major_rejects_empty" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L58", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_host_plugin_logger_forwards_error" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_require_schema_major_rejects_none" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L65", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_host_plugin_logger_passes_structured_fields_via_extra" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_require_schema_major_rejects_unparseable" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L77", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_host_plugin_logger_uses_default_logger_name_when_unspecified" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_read_msgspec_json_decodes_to_struct" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L94", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_worker_plugin_logger_emits_json_frame_to_stream" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_read_msgspec_json_with_matching_major" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L106", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L64", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_worker_plugin_logger_each_level_emits_correct_level_string" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_read_msgspec_json_rejects_wrong_major" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L119", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_worker_plugin_logger_emits_one_frame_per_call" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_read_msgspec_json_passes_through_malformed" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L129", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_worker_plugin_logger_emits_empty_context_when_no_fields" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_read_msgspec_json_raw_returns_dict" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L137", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_worker_plugin_logger_default_stream_is_stderr" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_read_msgspec_json_raw_with_matching_major" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L153", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_plugin_log_frame_fields_are_pinned" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_read_msgspec_json_raw_rejects_wrong_major" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L160", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_plugins_test_logger_py", - "target": "plugins_test_logger_test_plugin_log_frame_default_context_is_empty_dict" + "source": "tests_unit_io_test_json_files_py", + "target": "io_test_json_files_test_read_msgspec_json_raw_skips_check_when_version_missing" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", + "source_file": "tests/unit/io/test_json_files.py", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plugins_test_logger_rationale_1", - "target": "tests_unit_plugins_test_logger_py" + "source": "io_test_json_files_rationale_1", + "target": "tests_unit_io_test_json_files_py" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "io_test_json_files_dummy", + "target": "exlab_wizard_errors_schemamajormismatcherror" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L36", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L24", "weight": 1.0, - "source": "plugins_test_logger_test_host_plugin_logger_forwards_info_to_stdlib_logger", - "target": "plugins_logger_hostpluginlogger" + "source": "io_test_json_files_test_require_schema_major_accepts_matching_major", + "target": "io_json_files_require_schema_major" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L45", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L29", "weight": 1.0, - "source": "plugins_test_logger_test_host_plugin_logger_forwards_debug", - "target": "plugins_logger_hostpluginlogger" + "source": "io_test_json_files_test_require_schema_major_rejects_different_major", + "target": "io_json_files_require_schema_major" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L52", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L36", "weight": 1.0, - "source": "plugins_test_logger_test_host_plugin_logger_forwards_warning", - "target": "plugins_logger_hostpluginlogger" + "source": "io_test_json_files_test_require_schema_major_rejects_empty", + "target": "io_json_files_require_schema_major" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L59", - "weight": 1.0, - "source": "plugins_test_logger_test_host_plugin_logger_forwards_error", - "target": "plugins_logger_hostpluginlogger" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L68", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L41", "weight": 1.0, - "confidence_score": 1.0, - "source": "plugins_test_logger_rationale_68", - "target": "plugins_test_logger_test_host_plugin_logger_passes_structured_fields_via_extra" + "source": "io_test_json_files_test_require_schema_major_rejects_none", + "target": "io_json_files_require_schema_major" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L69", - "weight": 1.0, - "source": "plugins_test_logger_test_host_plugin_logger_passes_structured_fields_via_extra", - "target": "plugins_logger_hostpluginlogger" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L80", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L46", "weight": 1.0, - "confidence_score": 1.0, - "source": "plugins_test_logger_rationale_80", - "target": "plugins_test_logger_test_host_plugin_logger_uses_default_logger_name_when_unspecified" + "source": "io_test_json_files_test_require_schema_major_rejects_unparseable", + "target": "io_json_files_require_schema_major" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L81", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L52", "weight": 1.0, - "source": "plugins_test_logger_test_host_plugin_logger_uses_default_logger_name_when_unspecified", - "target": "plugins_logger_hostpluginlogger" + "source": "io_test_json_files_test_read_msgspec_json_decodes_to_struct", + "target": "io_json_files_read_msgspec_json" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L96", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L60", "weight": 1.0, - "source": "plugins_test_logger_test_worker_plugin_logger_emits_json_frame_to_stream", - "target": "plugins_logger_workerpluginlogger" + "source": "io_test_json_files_test_read_msgspec_json_with_matching_major", + "target": "io_json_files_read_msgspec_json" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L108", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L68", "weight": 1.0, - "source": "plugins_test_logger_test_worker_plugin_logger_each_level_emits_correct_level_string", - "target": "plugins_logger_workerpluginlogger" + "source": "io_test_json_files_test_read_msgspec_json_rejects_wrong_major", + "target": "io_json_files_read_msgspec_json" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L72", + "weight": 1.0, + "confidence_score": 1.0, + "source": "io_test_json_files_rationale_72", + "target": "io_test_json_files_test_read_msgspec_json_passes_through_malformed" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L121", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L76", "weight": 1.0, - "source": "plugins_test_logger_test_worker_plugin_logger_emits_one_frame_per_call", - "target": "plugins_logger_workerpluginlogger" + "source": "io_test_json_files_test_read_msgspec_json_passes_through_malformed", + "target": "io_json_files_read_msgspec_json" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L131", - "weight": 1.0, - "source": "plugins_test_logger_test_worker_plugin_logger_emits_empty_context_when_no_fields", - "target": "plugins_logger_workerpluginlogger" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L138", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L82", "weight": 1.0, - "confidence_score": 1.0, - "source": "plugins_test_logger_rationale_138", - "target": "plugins_test_logger_test_worker_plugin_logger_default_stream_is_stderr" + "source": "io_test_json_files_test_read_msgspec_json_raw_returns_dict", + "target": "io_json_files_read_msgspec_json_raw" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L141", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L89", "weight": 1.0, - "source": "plugins_test_logger_test_worker_plugin_logger_default_stream_is_stderr", - "target": "plugins_logger_workerpluginlogger" + "source": "io_test_json_files_test_read_msgspec_json_raw_with_matching_major", + "target": "io_json_files_read_msgspec_json_raw" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L154", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L97", "weight": 1.0, - "source": "plugins_test_logger_test_plugin_log_frame_fields_are_pinned", - "target": "plugins_logger_pluginlogframe" + "source": "io_test_json_files_test_read_msgspec_json_raw_rejects_wrong_major", + "target": "io_json_files_read_msgspec_json_raw" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L103", + "weight": 1.0, + "confidence_score": 1.0, + "source": "io_test_json_files_rationale_103", + "target": "io_test_json_files_test_read_msgspec_json_raw_skips_check_when_version_missing" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/plugins/test_logger.py", - "source_location": "L161", + "source_file": "tests/unit/io/test_json_files.py", + "source_location": "L107", "weight": 1.0, - "source": "plugins_test_logger_test_plugin_log_frame_default_context_is_empty_dict", - "target": "plugins_logger_pluginlogframe" + "source": "io_test_json_files_test_read_msgspec_json_raw_skips_check_when_version_missing", + "target": "io_json_files_read_msgspec_json_raw" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_schema_versions.py", - "source_location": "L13", + "source_file": "tests/unit/template/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_schema_versions_py", - "target": "constants_test_schema_versions_test_creation_json_version_is_pinned" + "source": "template_init_rationale_1", + "target": "tests_unit_template_init_py" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_schema_versions.py", - "source_location": "L18", + "source_file": "src/exlab_wizard/template/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_schema_versions_py", - "target": "constants_test_schema_versions_test_readme_fields_json_version_is_pinned" + "source": "template_init_rationale_1", + "target": "src_exlab_wizard_template_init_py" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_schema_versions.py", - "source_location": "L23", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_schema_versions_py", - "target": "constants_test_schema_versions_test_sync_state_json_version_is_pinned" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_core_readme_field_ids_pins_the_three_core_fields" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_schema_versions.py", - "source_location": "L28", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L70", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_schema_versions_py", - "target": "constants_test_schema_versions_test_equipment_json_version_is_pinned" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_project_basic_returns_resolved_template" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_schema_versions.py", - "source_location": "L33", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_schema_versions_py", - "target": "constants_test_schema_versions_test_test_runs_json_version_is_pinned" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_run_basic_experimental_sets_run_scope_experimental" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_schema_versions.py", - "source_location": "L38", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_schema_versions_py", - "target": "constants_test_schema_versions_test_offline_catalogue_version_is_pinned" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_run_basic_test_sets_run_scope_test" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_schema_versions.py", - "source_location": "L43", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_schema_versions_py", - "target": "constants_test_schema_versions_test_readme_front_matter_schema_version_is_pinned" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_run_basic_both_sets_run_scope_both" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_schema_versions.py", - "source_location": "L48", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L121", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_schema_versions_py", - "target": "constants_test_schema_versions_test_all_schema_versions_are_strings" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_missing_version_raises_template_load_error_mentioning_field" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_schema_versions.py", - "source_location": "L63", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_schema_versions_py", - "target": "constants_test_schema_versions_test_schema_versions_re_exported_from_package" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_redeclares_core_raises_core_field_redeclared_naming_offender" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_schema_versions.py", - "source_location": "L1", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_test_schema_versions_rationale_1", - "target": "tests_unit_constants_test_schema_versions_py" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_redeclares_core_is_also_caught_as_template_load_error" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L19", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L146", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_equipment_id_regex_literal" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_missing_copier_yml_raises_template_load_error" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L23", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L156", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_equipment_id_pattern_is_compiled" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_scope_mismatch_raises_template_load_error" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L28", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L165", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_equipment_id_pattern_accepts_valid_ids" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_run_template_missing_run_scope_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L41", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_equipment_id_pattern_rejects_invalid_ids" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_run_template_invalid_run_scope_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L56", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L198", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_equipment_id_max_length" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_with_tasks_does_not_raise" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L66", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_placeholder_angle_bracket_regex_literal" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_with_tasks_emits_warning_log" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L70", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L227", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_placeholder_angle_bracket_pattern_finds_tokens" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_render_project_basic_writes_readme" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L76", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L245", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_placeholder_angle_bracket_pattern_ignores_non_tokens" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_render_project_basic_files_written_lists_the_readme" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L83", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L263", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_placeholder_jinja_var_regex_literal" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_render_with_tasks_silently_ignores_tasks_and_writes_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L87", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L288", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_placeholder_jinja_var_pattern_finds_markers" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_render_into_dst_with_conflicting_files_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L93", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L322", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_placeholder_jinja_var_pattern_ignores_plain_text" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_render_calls_copier_run_copy_with_spec_kwargs" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L98", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L350", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_placeholder_jinja_block_regex_literal" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_unreadable_copier_yml_raises_template_load_error" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L102", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L371", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_placeholder_jinja_block_pattern_finds_blocks" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_malformed_yaml_raises_template_load_error" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L108", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L387", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_placeholder_jinja_block_pattern_ignores_unrelated_content" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_empty_copier_yml_treats_manifest_as_empty_and_rejects_missing_type" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L117", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L403", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_project_short_id_regex_literal" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_non_mapping_yaml_raises_template_load_error" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L121", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L421", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_project_short_id_pattern_accepts" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_missing_exlab_type_raises_template_load_error" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L126", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L436", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_project_short_id_pattern_rejects" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_invalid_exlab_type_value_raises_template_load_error" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L137", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L461", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_template_question_id_regex_literal" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_readme_fields_with_non_core_entries_passes_through" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L141", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L488", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_template_question_id_pattern_accepts" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_readme_block_not_a_mapping_yields_empty_extra_fields" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L146", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L505", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_template_question_id_pattern_rejects" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_readme_fields_not_a_list_yields_empty_extra_fields" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L156", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L532", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_plugin_name_regex_literal" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_non_string_description_falls_back_to_empty" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L160", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L548", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_plugin_name_pattern_accepts" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_plugin_order_preserved" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L165", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L567", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_plugin_name_pattern_rejects" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_resolve_non_list_plugin_order_falls_back_to_empty" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L175", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L587", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_run_date_strftime_literal" + "source": "tests_unit_template_test_copier_driver_py", + "target": "template_test_copier_driver_test_render_snapshots_existing_regular_file_at_dst" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L181", + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_run_date_strftime_round_trip" + "source": "template_test_copier_driver_rationale_1", + "target": "tests_unit_template_test_copier_driver_py" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L193", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L71", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_project_basic_returns_resolved_template", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L91", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_run_basic_experimental_sets_run_scope_experimental", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L101", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_run_basic_test_sets_run_scope_test", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L109", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_run_basic_both_sets_run_scope_both", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L124", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_missing_version_raises_template_load_error_mentioning_field", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L131", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_redeclares_core_raises_core_field_redeclared_naming_offender", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L141", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_redeclares_core_is_also_caught_as_template_load_error", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L148", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_missing_copier_yml_raises_template_load_error", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L158", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_scope_mismatch_raises_template_load_error", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L173", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_run_template_missing_run_scope_raises", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L187", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_run_template_invalid_run_scope_raises", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L200", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_with_tasks_does_not_raise", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L211", + "weight": 1.0, + "source": "template_test_copier_driver_test_resolve_with_tasks_emits_warning_log", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L228", + "weight": 1.0, + "source": "template_test_copier_driver_test_render_project_basic_writes_readme", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L248", + "weight": 1.0, + "source": "template_test_copier_driver_test_render_project_basic_files_written_lists_the_readme", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L272", + "weight": 1.0, + "source": "template_test_copier_driver_test_render_with_tasks_silently_ignores_tasks_and_writes_file", + "target": "template_copier_driver_templateengine" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L297", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_run_dir_prefix_literal" + "source": "template_test_copier_driver_test_render_into_dst_with_conflicting_files_raises", + "target": "template_copier_driver_templateengine" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L197", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L327", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_test_run_dir_prefix_literal" + "source": "template_test_copier_driver_test_render_calls_copier_run_copy_with_spec_kwargs", + "target": "template_copier_driver_templateengine" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L201", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L362", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_test_runs_dir_name_literal" + "source": "template_test_copier_driver_test_resolve_unreadable_copier_yml_raises_template_load_error", + "target": "template_copier_driver_templateengine" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L210", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L381", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_windows_reserved_names_membership" + "source": "template_test_copier_driver_test_resolve_malformed_yaml_raises_template_load_error", + "target": "template_copier_driver_templateengine" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L220", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L397", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_windows_reserved_names_is_frozenset" + "source": "template_test_copier_driver_test_resolve_empty_copier_yml_treats_manifest_as_empty_and_rejects_missing_type", + "target": "template_copier_driver_templateengine" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L224", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L415", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_windows_reserved_names_size" + "source": "template_test_copier_driver_test_resolve_non_mapping_yaml_raises_template_load_error", + "target": "template_copier_driver_templateengine" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L229", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L430", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_windows_reserved_names_are_uppercase" + "source": "template_test_copier_driver_test_resolve_missing_exlab_type_raises_template_load_error", + "target": "template_copier_driver_templateengine" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L236", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L448", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_windows_reserved_names_case_insensitive_check" + "source": "template_test_copier_driver_test_resolve_invalid_exlab_type_value_raises_template_load_error", + "target": "template_copier_driver_templateengine" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L248", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L481", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_windows_illegal_chars_literal" + "source": "template_test_copier_driver_test_resolve_readme_fields_with_non_core_entries_passes_through", + "target": "template_copier_driver_templateengine" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L253", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L500", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_windows_illegal_chars_membership" + "source": "template_test_copier_driver_test_resolve_readme_block_not_a_mapping_yields_empty_extra_fields", + "target": "template_copier_driver_templateengine" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L258", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L522", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_windows_illegal_chars_excludes_safe" + "source": "template_test_copier_driver_test_resolve_readme_fields_not_a_list_yields_empty_extra_fields", + "target": "template_copier_driver_templateengine" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L268", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L543", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_patterns_py", - "target": "constants_test_patterns_test_patterns_re_exported_from_package" + "source": "template_test_copier_driver_test_resolve_non_string_description_falls_back_to_empty", + "target": "template_copier_driver_templateengine" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_patterns.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L562", "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_test_patterns_rationale_1", - "target": "tests_unit_constants_test_patterns_py" + "source": "template_test_copier_driver_test_resolve_plugin_order_preserved", + "target": "template_copier_driver_templateengine" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/__init__.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L577", "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_init_rationale_1", - "target": "tests_unit_constants_init_py" + "source": "template_test_copier_driver_test_resolve_non_list_plugin_order_falls_back_to_empty", + "target": "template_copier_driver_templateengine" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/__init__.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/template/test_copier_driver.py", + "source_location": "L592", "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_init_rationale_1", - "target": "src_exlab_wizard_constants_init_py" + "source": "template_test_copier_driver_test_render_snapshots_existing_regular_file_at_dst", + "target": "template_copier_driver_templateengine" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enum_literal_alignment.py", - "source_location": "L67", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enum_literal_alignment_py", - "target": "constants_test_enum_literal_alignment_test_enum_values_match_expected_literal_set" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_utc_now_iso_format" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enum_literal_alignment.py", - "source_location": "L1", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_test_enum_literal_alignment_rationale_1", - "target": "tests_unit_constants_test_enum_literal_alignment_py" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_dt_to_iso_naive_assumed_utc" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L15", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_run_kind_values" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_dt_to_iso_utc_aware" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L23", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_run_kind_is_str" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_dt_to_iso_non_utc_zone_converts" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L30", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_sync_status_values" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_parse_utc_iso_z_form" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", + "source_file": "tests/unit/utils/test_time.py", "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_tier_values" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_parse_utc_iso_offset_form" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L55", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_problem_class_values" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_parse_utc_iso_naive_input_tagged_utc" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L80", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_finding_kind_values" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_parse_utc_iso_round_trip_with_now" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L93", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_template_type_values" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_parse_utc_iso_raises_on_garbage" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L102", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_run_scope_values" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_parse_utc_iso_or_none_handles_none" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L111", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_lims_project_status_values_pascal_case" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_parse_utc_iso_or_none_handles_empty" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L126", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_lims_project_source_values" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_parse_utc_iso_or_none_handles_malformed" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L139", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_ingest_state_enum_is_removed" + "source": "tests_unit_utils_test_time_py", + "target": "utils_test_time_test_parse_utc_iso_or_none_returns_datetime_for_valid" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L145", + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_run_sync_state_values" + "source": "utils_test_time_rationale_1", + "target": "tests_unit_utils_test_time_py" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L151", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L21", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_setup_state_values" + "source": "utils_test_time_test_utc_now_iso_format", + "target": "utils_time_utc_now_iso" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L173", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L27", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_nas_remote_setup_members_exist" + "source": "utils_test_time_test_dt_to_iso_naive_assumed_utc", + "target": "utils_time_dt_to_iso" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L180", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L32", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_transport_type_enum_removed" + "source": "utils_test_time_test_dt_to_iso_utc_aware", + "target": "utils_time_dt_to_iso" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L181", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L39", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_completeness_signal_enum_removed" + "source": "utils_test_time_test_dt_to_iso_non_utc_zone_converts", + "target": "utils_time_dt_to_iso" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L186", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L43", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_staging_cleanup_mode_values" + "source": "utils_test_time_test_parse_utc_iso_z_form", + "target": "utils_time_parse_utc_iso" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L194", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L48", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_plugin_status_values" + "source": "utils_test_time_test_parse_utc_iso_offset_form", + "target": "utils_time_parse_utc_iso" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L211", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L53", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_creation_level_values" + "source": "utils_test_time_test_parse_utc_iso_naive_input_tagged_utc", + "target": "utils_time_parse_utc_iso" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L227", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L58", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_field_type_values" + "source": "utils_test_time_test_parse_utc_iso_round_trip_with_now", + "target": "utils_time_utc_now_iso" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L238", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L59", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_bandwidth_day_values" + "source": "utils_test_time_test_parse_utc_iso_round_trip_with_now", + "target": "utils_time_parse_utc_iso" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L246", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_session_kind_values" + "source": "utils_test_time_test_parse_utc_iso_round_trip_with_now", + "target": "utils_time_dt_to_iso" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L254", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L65", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_next_action_values" + "source": "utils_test_time_test_parse_utc_iso_raises_on_garbage", + "target": "utils_time_parse_utc_iso" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L262", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L69", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_audit_scope_kind_values" + "source": "utils_test_time_test_parse_utc_iso_or_none_handles_none", + "target": "utils_time_parse_utc_iso_or_none" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L271", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L73", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_directory_level_values" + "source": "utils_test_time_test_parse_utc_iso_or_none_handles_empty", + "target": "utils_time_parse_utc_iso_or_none" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L279", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L77", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_platform_values" + "source": "utils_test_time_test_parse_utc_iso_or_none_handles_malformed", + "target": "utils_time_parse_utc_iso_or_none" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_time.py", + "source_location": "L81", + "weight": 1.0, + "source": "utils_test_time_test_parse_utc_iso_or_none_returns_datetime_for_valid", + "target": "utils_time_parse_utc_iso_or_none" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L287", + "source_file": "tests/unit/utils/test_state.py", + "source_location": "L12", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_setup_next_action_values" + "source": "tests_unit_utils_test_state_py", + "target": "utils_test_state_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L295", + "source_file": "tests/unit/utils/test_state.py", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_sync_handle_state_values" + "source": "tests_unit_utils_test_state_py", + "target": "utils_test_state_test_allowed_transition_returns_none" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L303", + "source_file": "tests/unit/utils/test_state.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_plugin_source_root_values" + "source": "tests_unit_utils_test_state_py", + "target": "utils_test_state_test_disallowed_transition_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L311", + "source_file": "tests/unit/utils/test_state.py", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_tree_project_status_values" + "source": "tests_unit_utils_test_state_py", + "target": "utils_test_state_test_terminal_transition_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L319", + "source_file": "tests/unit/utils/test_state.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_enums_re_exported_from_package" + "source": "tests_unit_utils_test_state_py", + "target": "utils_test_state_test_unknown_source_raises" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", + "source_file": "tests/unit/utils/test_state.py", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_test_enums_rationale_1", - "target": "tests_unit_constants_test_enums_py" + "source": "utils_test_state_rationale_1", + "target": "tests_unit_utils_test_state_py" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L173", + "source_file": "tests/unit/utils/test_state.py", + "source_location": "L12", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_transport_type_values" + "source": "utils_test_state_state", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_enums.py", - "source_location": "L219", + "source_file": "src/exlab_wizard/ui/notifications.py", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_enums_py", - "target": "constants_test_enums_test_orchestrator_transport_type_values" + "source": "ui_notifications_severity", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_keyring.py", - "source_location": "L13", + "source_file": "src/exlab_wizard/ui/notifications.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_keyring_py", - "target": "constants_test_keyring_test_keyring_service_literal" + "source": "ui_notifications_bannerid", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_keyring.py", - "source_location": "L18", + "source_file": "src/exlab_wizard/ui/notifications.py", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_keyring_py", - "target": "constants_test_keyring_test_keyring_username_lims_literal" + "source": "ui_notifications_containerid", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_keyring.py", - "source_location": "L23", + "source_file": "src/exlab_wizard/ui/keyboard.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_keyring_py", - "target": "constants_test_keyring_test_nas_keyring_username_removed" + "source": "ui_keyboard_shortcut", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_keyring.py", - "source_location": "L46", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_keyring_py", - "target": "constants_test_keyring_test_keyring_re_exported_from_package" + "source": "constants_enums_runkind", + "target": "strenum" }, { - "relation": "rationale_for", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_keyring.py", - "source_location": "L1", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_test_keyring_rationale_1", - "target": "tests_unit_constants_test_keyring_py" + "source": "constants_enums_syncstatus", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_keyring.py", - "source_location": "L23", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_keyring_py", - "target": "constants_test_keyring_test_keyring_username_nas_template_literal" + "source": "constants_enums_tier", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_keyring.py", - "source_location": "L28", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_keyring_py", - "target": "constants_test_keyring_test_keyring_nas_username_formats_template" + "source": "constants_enums_problemclass", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_keyring.py", - "source_location": "L33", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_keyring_py", - "target": "constants_test_keyring_test_keyring_nas_username_handles_various_ids" + "source": "constants_enums_findingkind", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L12", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_plugin_timeout_max_seconds" + "source": "constants_enums_templatetype", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L17", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L84", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_plugin_memory_max_mb" + "source": "constants_enums_runscope", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L22", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_plugin_validation_cpu_seconds" + "source": "constants_enums_limsprojectstatus", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L27", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_plugin_validation_memory_mb" + "source": "constants_enums_limsprojectsource", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L32", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_plugin_validation_wall_seconds" + "source": "constants_enums_runsyncstate", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L37", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L137", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_plugin_rlimit_nofile" + "source": "constants_enums_setupstate", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L42", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L173", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_plugin_ipc_frame_cap_bytes_is_one_mib" + "source": "constants_enums_syncmode", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L48", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L187", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_plugin_api_version" + "source": "constants_enums_stagingcleanupmode", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L54", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L194", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_plugin_supported_api_versions" + "source": "constants_enums_pluginstatus", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L62", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L204", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_plugin_forbidden_path_prefixes" + "source": "constants_enums_creationlevel", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L72", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L225", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_label_max_length" + "source": "constants_enums_fieldtype", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L77", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L235", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_objective_max_length" + "source": "constants_enums_bandwidthday", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L82", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L247", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_validator_binary_detect_bytes" + "source": "constants_enums_sessionkind", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L87", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L259", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_log_line_max_bytes" + "source": "constants_enums_nextaction", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L92", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L266", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_session_gc_after_seconds" + "source": "constants_enums_auditscopekind", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L97", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L279", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_audit_refresh_seconds" + "source": "constants_enums_directorylevel", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L102", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L296", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_quit_drain_timeout_seconds" + "source": "constants_enums_platform", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L107", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L304", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_sigterm_drain_timeout_seconds" + "source": "constants_enums_setupnextaction", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L112", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L318", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_tray_status_refresh_seconds" + "source": "constants_enums_synchandlestate", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L117", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L330", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_worker_timeout_grace_seconds" + "source": "constants_enums_pluginsourceroot", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L122", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L337", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_window_default_size" + "source": "constants_enums_treeprojectstatus", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L128", + "source_file": "src/exlab_wizard/controller/state_machine.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_notification_coalesce_seconds" + "source": "controller_state_machine_sessionstate", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L133", + "source_file": "src/exlab_wizard/controller/state_machine.py", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_disk_space_preflight_mib" + "source": "controller_state_machine_phase", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L138", + "source_file": "src/exlab_wizard/sync/queue.py", + "source_location": "L69", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_limits_py", - "target": "constants_test_limits_test_limits_re_exported_from_package" + "source": "sync_queue_syncjobstate", + "target": "strenum" }, { - "relation": "rationale_for", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_limits.py", - "source_location": "L1", + "source_file": "src/exlab_wizard/sync/transports/__init__.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_test_limits_rationale_1", - "target": "tests_unit_constants_test_limits_py" + "source": "transports_init_transporterrorkind", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L12", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_cache_dir_name" + "source": "constants_enums_transporttype", + "target": "strenum" }, { - "relation": "contains", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L17", + "source_file": "src/exlab_wizard/constants/enums.py", + "source_location": "L214", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_creation_json_name" + "source": "constants_enums_orchestratortransporttype", + "target": "strenum" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L22", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_state.py", + "source_location": "L26", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_readme_fields_json_name" + "source": "utils_test_state_test_allowed_transition_returns_none", + "target": "utils_state_assert_forward_transition" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_state.py", + "source_location": "L31", + "weight": 1.0, + "source": "utils_test_state_test_disallowed_transition_raises", + "target": "utils_state_assert_forward_transition" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_state.py", + "source_location": "L36", + "weight": 1.0, + "source": "utils_test_state_test_terminal_transition_raises", + "target": "utils_state_assert_forward_transition" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/utils/test_state.py", + "source_location": "L44", + "weight": 1.0, + "source": "utils_test_state_test_unknown_source_raises", + "target": "utils_state_assert_forward_transition" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L27", + "source_file": "tests/unit/tray/test_storage_secret.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_equipment_json_name" + "source": "tests_unit_tray_test_storage_secret_py", + "target": "tray_test_storage_secret_test_generates_secret_on_first_call" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L32", + "source_file": "tests/unit/tray/test_storage_secret.py", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_sync_state_filename" + "source": "tests_unit_tray_test_storage_secret_py", + "target": "tray_test_storage_secret_test_idempotent_across_calls" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L37", + "source_file": "tests/unit/tray/test_storage_secret.py", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_test_runs_json_name" + "source": "tests_unit_tray_test_storage_secret_py", + "target": "tray_test_storage_secret_test_secret_file_mode_is_0600" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L42", + "source_file": "tests/unit/tray/test_storage_secret.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_answers_file_name" + "source": "tests_unit_tray_test_storage_secret_py", + "target": "tray_test_storage_secret_test_regenerates_on_empty_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L47", + "source_file": "tests/unit/tray/test_storage_secret.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_log_file_template" + "source": "tests_unit_tray_test_storage_secret_py", + "target": "tray_test_storage_secret_test_regenerates_on_whitespace_only_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L52", + "source_file": "tests/unit/tray/test_storage_secret.py", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_log_file_template_formats" + "source": "tests_unit_tray_test_storage_secret_py", + "target": "tray_test_storage_secret_test_creates_state_dir_if_missing" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L58", + "source_file": "tests/unit/tray/test_storage_secret.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_readme_file_name" + "source": "tray_test_storage_secret_rationale_1", + "target": "tests_unit_tray_test_storage_secret_py" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_storage_secret.py", + "source_location": "L24", + "weight": 1.0, + "source": "tray_test_storage_secret_test_generates_secret_on_first_call", + "target": "tray_storage_secret_load_or_create_storage_secret" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_storage_secret.py", + "source_location": "L32", + "weight": 1.0, + "source": "tray_test_storage_secret_test_idempotent_across_calls", + "target": "tray_storage_secret_load_or_create_storage_secret" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_storage_secret.py", + "source_location": "L39", + "weight": 1.0, + "source": "tray_test_storage_secret_test_secret_file_mode_is_0600", + "target": "tray_storage_secret_load_or_create_storage_secret" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_storage_secret.py", + "source_location": "L48", + "weight": 1.0, + "source": "tray_test_storage_secret_test_regenerates_on_empty_file", + "target": "tray_storage_secret_load_or_create_storage_secret" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_storage_secret.py", + "source_location": "L56", + "weight": 1.0, + "source": "tray_test_storage_secret_test_regenerates_on_whitespace_only_file", + "target": "tray_storage_secret_load_or_create_storage_secret" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_storage_secret.py", "source_location": "L63", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_copier_manifest_name" + "source": "tray_test_storage_secret_test_creates_state_dir_if_missing", + "target": "tray_storage_secret_load_or_create_storage_secret" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L68", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_plugin_manifest_name" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_inmemorykeyring" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L73", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_server_state_file" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_swap_keyring" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L78", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_lims_cache_db_name" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_test_build_production_dependencies_exposes_keyring_store" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L83", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_sync_queue_db_name" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L88", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_central_log_file" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L93", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L137", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_secrets_file" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L98", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_constants_test_filenames_py", - "target": "constants_test_filenames_test_filenames_re_exported_from_package" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_nas_config_with_two_equipment" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/constants/test_filenames.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L170", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_test_filenames_rationale_1", - "target": "tests_unit_constants_test_filenames_py" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_nas_config_with_remote" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_yaml_files.py", - "source_location": "L13", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L178", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_yaml_files_py", - "target": "io_test_yaml_files_test_load_yaml_manifest_returns_dict" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_stubabout" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_yaml_files.py", - "source_location": "L19", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_yaml_files_py", - "target": "io_test_yaml_files_test_load_yaml_manifest_empty_file_returns_empty_dict" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_test_make_equipment_probe_targets_nas_remote_not_keyring" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_yaml_files.py", - "source_location": "L25", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L217", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_yaml_files_py", - "target": "io_test_yaml_files_test_load_yaml_manifest_non_dict_returns_empty_dict" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_test_make_equipment_probe_short_circuits_without_remote" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_yaml_files.py", - "source_location": "L32", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L231", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_yaml_files_py", - "target": "io_test_yaml_files_test_load_yaml_manifest_propagates_yaml_error" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_test_make_equipment_probe_surfaces_about_failure" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_yaml_files.py", - "source_location": "L39", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L258", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_yaml_files_py", - "target": "io_test_yaml_files_test_load_yaml_manifest_missing_file_raises" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_test_nas_remote_available_reflects_listremotes" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_yaml_files.py", + "source_file": "tests/unit/tray/test_dependencies.py", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "io_test_yaml_files_rationale_1", - "target": "tests_unit_io_test_yaml_files_py" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_yaml_files.py", - "source_location": "L16", - "weight": 1.0, - "source": "io_test_yaml_files_test_load_yaml_manifest_returns_dict", - "target": "io_yaml_files_load_yaml_manifest" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_yaml_files.py", - "source_location": "L22", - "weight": 1.0, - "source": "io_test_yaml_files_test_load_yaml_manifest_empty_file_returns_empty_dict", - "target": "io_yaml_files_load_yaml_manifest" + "source": "tray_test_dependencies_rationale_1", + "target": "tests_unit_tray_test_dependencies_py" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_yaml_files.py", - "source_location": "L26", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L194", "weight": 1.0, "confidence_score": 1.0, - "source": "io_test_yaml_files_rationale_26", - "target": "io_test_yaml_files_test_load_yaml_manifest_non_dict_returns_empty_dict" + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_test_check_nas_passwords_present_returns_only_populated_ids" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_yaml_files.py", - "source_location": "L29", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L208", "weight": 1.0, - "source": "io_test_yaml_files_test_load_yaml_manifest_non_dict_returns_empty_dict", - "target": "io_yaml_files_load_yaml_manifest" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_test_check_nas_passwords_present_handles_none_store_and_config" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_yaml_files.py", - "source_location": "L36", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L214", "weight": 1.0, - "source": "io_test_yaml_files_test_load_yaml_manifest_propagates_yaml_error", - "target": "io_yaml_files_load_yaml_manifest" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_test_make_equipment_probe_short_circuits_when_password_missing" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_yaml_files.py", - "source_location": "L41", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L237", "weight": 1.0, - "source": "io_test_yaml_files_test_load_yaml_manifest_missing_file_raises", - "target": "io_yaml_files_load_yaml_manifest" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_dependencies_py", + "target": "tray_test_dependencies_test_make_equipment_probe_targets_remote_root_with_colon" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L13", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_atomic_write_py", - "target": "io_test_atomic_write_test_atomic_write_creates_file" + "source": "tray_test_dependencies_inmemorykeyring", + "target": "tray_test_dependencies_inmemorykeyring_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L19", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_atomic_write_py", - "target": "io_test_atomic_write_test_atomic_write_overwrites_existing" + "source": "tray_test_dependencies_inmemorykeyring", + "target": "tray_test_dependencies_inmemorykeyring_get_password" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L26", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_atomic_write_py", - "target": "io_test_atomic_write_test_atomic_write_leaves_no_temp_file_on_success" + "source": "tray_test_dependencies_inmemorykeyring", + "target": "tray_test_dependencies_inmemorykeyring_set_password" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L33", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_atomic_write_py", - "target": "io_test_atomic_write_test_atomic_write_cleans_up_temp_on_replace_failure" + "source": "tray_test_dependencies_inmemorykeyring", + "target": "tray_test_dependencies_inmemorykeyring_delete_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L48", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_atomic_write_py", - "target": "io_test_atomic_write_test_atomic_write_skip_fsync" + "source": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored", + "target": "tray_test_dependencies_inmemorykeyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L56", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_atomic_write_py", - "target": "io_test_atomic_write_test_atomic_write_calls_fsync_by_default" + "source": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username", + "target": "tray_test_dependencies_inmemorykeyring" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "io_test_atomic_write_rationale_1", - "target": "tests_unit_io_test_atomic_write_py" + "source": "tray_test_dependencies_rationale_40", + "target": "tray_test_dependencies_inmemorykeyring" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L15", - "weight": 1.0, - "source": "io_test_atomic_write_test_atomic_write_creates_file", - "target": "io_atomic_write_atomic_write_bytes" + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_inmemorykeyring", + "target": "config_models_config" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L22", - "weight": 1.0, - "source": "io_test_atomic_write_test_atomic_write_overwrites_existing", - "target": "io_atomic_write_atomic_write_bytes" + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_inmemorykeyring", + "target": "config_models_equipmentconfig" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L28", - "weight": 1.0, - "source": "io_test_atomic_write_test_atomic_write_leaves_no_temp_file_on_success", - "target": "io_atomic_write_atomic_write_bytes" + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_inmemorykeyring", + "target": "config_models_pathsconfig" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L41", - "weight": 1.0, - "source": "io_test_atomic_write_test_atomic_write_cleans_up_temp_on_replace_failure", - "target": "io_atomic_write_atomic_write_bytes" + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L32", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_inmemorykeyring", + "target": "lims_keyring_store_keyringstore" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L51", - "weight": 1.0, - "source": "io_test_atomic_write_test_atomic_write_skip_fsync", - "target": "io_atomic_write_atomic_write_bytes" + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L33", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_inmemorykeyring", + "target": "sync_nas_client_nassyncclient" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_atomic_write.py", - "source_location": "L59", - "weight": 1.0, - "source": "io_test_atomic_write_test_atomic_write_calls_fsync_by_default", - "target": "io_atomic_write_atomic_write_bytes" + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L172", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_inmemorykeyring", + "target": "config_models_nasconfig" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L18", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L197", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_dummy" + "source": "tray_test_dependencies_test_check_nas_passwords_present_returns_only_populated_ids", + "target": "tray_test_dependencies_inmemorykeyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L23", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L220", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_require_schema_major_accepts_matching_major" + "source": "tray_test_dependencies_test_make_equipment_probe_short_circuits_when_password_missing", + "target": "tray_test_dependencies_inmemorykeyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L27", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L260", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_require_schema_major_rejects_different_major" + "source": "tray_test_dependencies_test_make_equipment_probe_targets_remote_root_with_colon", + "target": "tray_test_dependencies_inmemorykeyring" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L34", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_require_schema_major_rejects_empty" + "source": "tray_test_dependencies_rationale_45", + "target": "tray_test_dependencies_inmemorykeyring" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_inmemorykeyring", + "target": "config_models_bandwidthconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_inmemorykeyring", + "target": "config_models_rclonesftptransport" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L39", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_require_schema_major_rejects_none" + "source": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored", + "target": "tray_test_dependencies_inmemorykeyring_set_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L44", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_require_schema_major_rejects_unparseable" + "source": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username", + "target": "tray_test_dependencies_inmemorykeyring_set_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L49", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L200", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_read_msgspec_json_decodes_to_struct" + "source": "tray_test_dependencies_test_check_nas_passwords_present_returns_only_populated_ids", + "target": "tray_test_dependencies_inmemorykeyring_set_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L57", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L263", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_read_msgspec_json_with_matching_major" + "source": "tray_test_dependencies_test_make_equipment_probe_targets_remote_root_with_colon", + "target": "tray_test_dependencies_inmemorykeyring_set_password" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L64", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_read_msgspec_json_rejects_wrong_major" + "source": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored", + "target": "tray_test_dependencies_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L71", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_read_msgspec_json_passes_through_malformed" + "source": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username", + "target": "tray_test_dependencies_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L79", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L197", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_read_msgspec_json_raw_returns_dict" + "source": "tray_test_dependencies_test_check_nas_passwords_present_returns_only_populated_ids", + "target": "tray_test_dependencies_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L86", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L220", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_read_msgspec_json_raw_with_matching_major" + "source": "tray_test_dependencies_test_make_equipment_probe_short_circuits_when_password_missing", + "target": "tray_test_dependencies_swap_keyring" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L93", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L260", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_read_msgspec_json_raw_rejects_wrong_major" + "source": "tray_test_dependencies_test_make_equipment_probe_targets_remote_root_with_colon", + "target": "tray_test_dependencies_swap_keyring" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L100", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_io_test_json_files_py", - "target": "io_test_json_files_test_read_msgspec_json_raw_skips_check_when_version_missing" + "source": "tray_test_dependencies_rationale_68", + "target": "tray_test_dependencies_test_build_production_dependencies_exposes_keyring_store" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L75", + "weight": 1.0, + "source": "tray_test_dependencies_test_build_production_dependencies_exposes_keyring_store", + "target": "tray_dependencies_build_production_dependencies" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L73", "weight": 1.0, "confidence_score": 1.0, - "source": "io_test_json_files_rationale_1", - "target": "tests_unit_io_test_json_files_py" + "source": "tray_test_dependencies_rationale_73", + "target": "tray_test_dependencies_test_build_production_dependencies_exposes_keyring_store" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "io_test_json_files_dummy", - "target": "exlab_wizard_errors_schemamajormismatcherror" + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L78", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_dependencies_rationale_78", + "target": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L24", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L93", "weight": 1.0, - "source": "io_test_json_files_test_require_schema_major_accepts_matching_major", - "target": "io_json_files_require_schema_major" + "source": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client", + "target": "config_models_pathsconfig" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L29", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L95", "weight": 1.0, - "source": "io_test_json_files_test_require_schema_major_rejects_different_major", - "target": "io_json_files_require_schema_major" + "source": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client", + "target": "config_models_equipmentconfig" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L36", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L113", "weight": 1.0, - "source": "io_test_json_files_test_require_schema_major_rejects_empty", - "target": "io_json_files_require_schema_major" + "source": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client", + "target": "tray_dependencies_build_production_dependencies" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L41", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L83", "weight": 1.0, - "source": "io_test_json_files_test_require_schema_major_rejects_none", - "target": "io_json_files_require_schema_major" + "confidence_score": 1.0, + "source": "tray_test_dependencies_rationale_83", + "target": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L46", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L101", "weight": 1.0, - "source": "io_test_json_files_test_require_schema_major_rejects_unparseable", - "target": "io_json_files_require_schema_major" + "source": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client", + "target": "config_models_rclonesftptransport" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L52", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L106", "weight": 1.0, - "source": "io_test_json_files_test_read_msgspec_json_decodes_to_struct", - "target": "io_json_files_read_msgspec_json" + "source": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client", + "target": "config_models_bandwidthconfig" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L109", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_dependencies_rationale_109", + "target": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L60", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L129", "weight": 1.0, - "source": "io_test_json_files_test_read_msgspec_json_with_matching_major", - "target": "io_json_files_read_msgspec_json" + "source": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored", + "target": "lims_keyring_store_keyringstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L68", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L134", "weight": 1.0, - "source": "io_test_json_files_test_read_msgspec_json_rejects_wrong_major", - "target": "io_json_files_read_msgspec_json" + "source": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored", + "target": "tray_dependencies_check_keyring_present" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L72", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L121", "weight": 1.0, "confidence_score": 1.0, - "source": "io_test_json_files_rationale_72", - "target": "io_test_json_files_test_read_msgspec_json_passes_through_malformed" + "source": "tray_test_dependencies_rationale_121", + "target": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L128", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_dependencies_rationale_128", + "target": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L76", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L143", "weight": 1.0, - "source": "io_test_json_files_test_read_msgspec_json_passes_through_malformed", - "target": "io_json_files_read_msgspec_json" + "source": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username", + "target": "lims_keyring_store_keyringstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L82", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L149", "weight": 1.0, - "source": "io_test_json_files_test_read_msgspec_json_raw_returns_dict", - "target": "io_json_files_read_msgspec_json_raw" + "source": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username", + "target": "tray_dependencies_build_lims_client" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L140", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_dependencies_rationale_140", + "target": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L89", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L174", "weight": 1.0, - "source": "io_test_json_files_test_read_msgspec_json_raw_with_matching_major", - "target": "io_json_files_read_msgspec_json_raw" + "confidence_score": 1.0, + "source": "tray_test_dependencies_nas_config_with_remote", + "target": "tray_test_dependencies_nas_config_with_two_equipment" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L97", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L222", "weight": 1.0, - "source": "io_test_json_files_test_read_msgspec_json_raw_rejects_wrong_major", - "target": "io_json_files_read_msgspec_json_raw" + "confidence_score": 1.0, + "source": "tray_test_dependencies_test_make_equipment_probe_short_circuits_without_remote", + "target": "tray_test_dependencies_nas_config_with_two_equipment" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L103", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "io_test_json_files_rationale_103", - "target": "io_test_json_files_test_read_msgspec_json_raw_skips_check_when_version_missing" + "source": "tray_test_dependencies_rationale_148", + "target": "tray_test_dependencies_nas_config_with_two_equipment" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/io/test_json_files.py", - "source_location": "L107", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L162", "weight": 1.0, - "source": "io_test_json_files_test_read_msgspec_json_raw_skips_check_when_version_missing", - "target": "io_json_files_read_msgspec_json_raw" + "source": "tray_test_dependencies_nas_config_with_two_equipment", + "target": "config_models_pathsconfig" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L164", + "weight": 1.0, + "source": "tray_test_dependencies_nas_config_with_two_equipment", + "target": "config_models_equipmentconfig" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L201", "weight": 1.0, "confidence_score": 1.0, - "source": "template_init_rationale_1", - "target": "tests_unit_template_init_py" + "source": "tray_test_dependencies_test_check_nas_passwords_present_returns_only_populated_ids", + "target": "tray_test_dependencies_nas_config_with_two_equipment" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/template/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L209", "weight": 1.0, "confidence_score": 1.0, - "source": "template_init_rationale_1", - "target": "src_exlab_wizard_template_init_py" + "source": "tray_test_dependencies_test_check_nas_passwords_present_handles_none_store_and_config", + "target": "tray_test_dependencies_nas_config_with_two_equipment" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L59", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L222", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_core_readme_field_ids_pins_the_three_core_fields" + "source": "tray_test_dependencies_test_make_equipment_probe_short_circuits_when_password_missing", + "target": "tray_test_dependencies_nas_config_with_two_equipment" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L70", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L262", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_project_basic_returns_resolved_template" + "source": "tray_test_dependencies_test_make_equipment_probe_targets_remote_root_with_colon", + "target": "tray_test_dependencies_nas_config_with_two_equipment" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L90", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_run_basic_experimental_sets_run_scope_experimental" + "source": "tray_test_dependencies_rationale_160", + "target": "tray_test_dependencies_nas_config_with_two_equipment" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L170", + "weight": 1.0, + "source": "tray_test_dependencies_nas_config_with_two_equipment", + "target": "config_models_rclonesftptransport" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L100", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_run_basic_test_sets_run_scope_test" + "source": "tray_test_dependencies_test_make_equipment_probe_targets_nas_remote_not_keyring", + "target": "tray_test_dependencies_nas_config_with_remote" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L108", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L249", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_run_basic_both_sets_run_scope_both" + "source": "tray_test_dependencies_test_make_equipment_probe_surfaces_about_failure", + "target": "tray_test_dependencies_nas_config_with_remote" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L121", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L274", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_missing_version_raises_template_load_error_mentioning_field" + "source": "tray_test_dependencies_test_nas_remote_available_reflects_listremotes", + "target": "tray_test_dependencies_nas_config_with_remote" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L130", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_redeclares_core_raises_core_field_redeclared_naming_offender" + "source": "tray_test_dependencies_rationale_171", + "target": "tray_test_dependencies_nas_config_with_remote" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L175", + "weight": 1.0, + "source": "tray_test_dependencies_nas_config_with_remote", + "target": "config_models_nasconfig" + }, + { + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L138", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_redeclares_core_is_also_caught_as_template_load_error" + "source": "tray_test_dependencies_stubabout", + "target": "tray_test_dependencies_stubabout_init" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_stubabout", + "target": "config_models_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_stubabout", + "target": "config_models_equipmentconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_stubabout", + "target": "config_models_pathsconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L28", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_stubabout", + "target": "lims_keyring_store_keyringstore" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L29", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_stubabout", + "target": "sync_nas_client_nassyncclient" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L146", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_missing_copier_yml_raises_template_load_error" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L172", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_dependencies_stubabout", + "target": "config_models_nasconfig" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L156", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L188", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_scope_mismatch_raises_template_load_error" + "source": "tray_test_dependencies_rationale_188", + "target": "tray_test_dependencies_test_make_equipment_probe_targets_nas_remote_not_keyring" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L165", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L205", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_run_template_missing_run_scope_raises" + "source": "tray_test_dependencies_test_make_equipment_probe_targets_nas_remote_not_keyring", + "target": "tray_dependencies_build_production_dependencies" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L179", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L210", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_run_template_invalid_run_scope_raises" + "source": "tray_test_dependencies_test_make_equipment_probe_targets_nas_remote_not_keyring", + "target": "tray_dependencies_make_equipment_probe" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L198", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L218", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_with_tasks_does_not_raise" + "source": "tray_test_dependencies_rationale_218", + "target": "tray_test_dependencies_test_make_equipment_probe_short_circuits_without_remote" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L208", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L221", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_with_tasks_emits_warning_log" + "source": "tray_test_dependencies_test_make_equipment_probe_short_circuits_without_remote", + "target": "tray_dependencies_build_production_dependencies" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L227", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L224", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_render_project_basic_writes_readme" + "source": "tray_test_dependencies_test_make_equipment_probe_short_circuits_without_remote", + "target": "tray_dependencies_make_equipment_probe" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L245", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L234", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_render_project_basic_files_written_lists_the_readme" + "source": "tray_test_dependencies_rationale_234", + "target": "tray_test_dependencies_test_make_equipment_probe_surfaces_about_failure" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L263", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L248", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_render_with_tasks_silently_ignores_tasks_and_writes_file" + "source": "tray_test_dependencies_test_make_equipment_probe_surfaces_about_failure", + "target": "tray_dependencies_build_production_dependencies" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L288", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L251", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_render_into_dst_with_conflicting_files_raises" + "source": "tray_test_dependencies_test_make_equipment_probe_surfaces_about_failure", + "target": "tray_dependencies_make_equipment_probe" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L322", + "source_file": "tests/unit/tray/test_dependencies.py", + "source_location": "L261", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_render_calls_copier_run_copy_with_spec_kwargs" + "source": "tray_test_dependencies_rationale_261", + "target": "tray_test_dependencies_test_nas_remote_available_reflects_listremotes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L350", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_unreadable_copier_yml_raises_template_load_error" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_fakemenu" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L371", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_malformed_yaml_raises_template_load_error" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_fakemenuitem" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L387", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_empty_copier_yml_treats_manifest_as_empty_and_rejects_missing_type" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_fakeicon" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L403", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_non_mapping_yaml_raises_template_load_error" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_fakepystray" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L421", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_missing_exlab_type_raises_template_load_error" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_test_build_icon_returns_icon_object" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L436", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_invalid_exlab_type_value_raises_template_load_error" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_test_open_menu_item_invokes_callback" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L461", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L85", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_readme_fields_with_non_core_entries_passes_through" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_test_quit_menu_item_invokes_callback" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L488", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L99", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_readme_block_not_a_mapping_yields_empty_extra_fields" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_test_status_label_callable" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L505", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_readme_fields_not_a_list_yields_empty_extra_fields" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_test_callback_exception_is_swallowed" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L532", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_non_string_description_falls_back_to_empty" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_test_default_icon_image_returns_pillow_image" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L548", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L133", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_plugin_order_preserved" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_test_lazy_pystray_import" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L567", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_resolve_non_list_plugin_order_falls_back_to_empty" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_test_separator_present" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L587", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_template_test_copier_driver_py", - "target": "template_test_copier_driver_test_render_snapshots_existing_regular_file_at_dst" + "source": "tests_unit_tray_test_icon_py", + "target": "tray_test_icon_test_import_pystray_returns_module" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/template/test_copier_driver.py", + "source_file": "tests/unit/tray/test_icon.py", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "template_test_copier_driver_rationale_1", - "target": "tests_unit_template_test_copier_driver_py" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L71", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_project_basic_returns_resolved_template", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L91", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_run_basic_experimental_sets_run_scope_experimental", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L101", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_run_basic_test_sets_run_scope_test", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L109", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_run_basic_both_sets_run_scope_both", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L124", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_missing_version_raises_template_load_error_mentioning_field", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L131", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_redeclares_core_raises_core_field_redeclared_naming_offender", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L141", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_redeclares_core_is_also_caught_as_template_load_error", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L148", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_missing_copier_yml_raises_template_load_error", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L158", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_scope_mismatch_raises_template_load_error", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L173", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_run_template_missing_run_scope_raises", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L187", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_run_template_invalid_run_scope_raises", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L200", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_with_tasks_does_not_raise", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L211", - "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_with_tasks_emits_warning_log", - "target": "template_copier_driver_templateengine" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L228", - "weight": 1.0, - "source": "template_test_copier_driver_test_render_project_basic_writes_readme", - "target": "template_copier_driver_templateengine" + "source": "tray_test_icon_rationale_1", + "target": "tests_unit_tray_test_icon_py" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L248", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L21", "weight": 1.0, - "source": "template_test_copier_driver_test_render_project_basic_files_written_lists_the_readme", - "target": "template_copier_driver_templateengine" + "confidence_score": 1.0, + "source": "tray_test_icon_fakemenu", + "target": "tray_test_icon_fakemenu_init" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L272", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L26", "weight": 1.0, - "source": "template_test_copier_driver_test_render_with_tasks_silently_ignores_tasks_and_writes_file", - "target": "template_copier_driver_templateengine" + "confidence_score": 1.0, + "source": "tray_test_icon_fakemenuitem", + "target": "tray_test_icon_fakemenuitem_init" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L297", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L41", "weight": 1.0, - "source": "template_test_copier_driver_test_render_into_dst_with_conflicting_files_raises", - "target": "template_copier_driver_templateengine" + "confidence_score": 1.0, + "source": "tray_test_icon_fakeicon", + "target": "tray_test_icon_fakeicon_init" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L327", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L57", "weight": 1.0, - "source": "template_test_copier_driver_test_render_calls_copier_run_copy_with_spec_kwargs", - "target": "template_copier_driver_templateengine" + "source": "tray_test_icon_test_build_icon_returns_icon_object", + "target": "tray_icon_build_icon" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L362", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L73", "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_unreadable_copier_yml_raises_template_load_error", - "target": "template_copier_driver_templateengine" + "source": "tray_test_icon_test_open_menu_item_invokes_callback", + "target": "tray_icon_build_icon" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L381", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L87", "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_malformed_yaml_raises_template_load_error", - "target": "template_copier_driver_templateengine" + "source": "tray_test_icon_test_quit_menu_item_invokes_callback", + "target": "tray_icon_build_icon" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L397", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L100", "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_empty_copier_yml_treats_manifest_as_empty_and_rejects_missing_type", - "target": "template_copier_driver_templateengine" + "source": "tray_test_icon_test_status_label_callable", + "target": "tray_icon_build_icon" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L415", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L116", "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_non_mapping_yaml_raises_template_load_error", - "target": "template_copier_driver_templateengine" + "source": "tray_test_icon_test_callback_exception_is_swallowed", + "target": "tray_icon_build_icon" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L430", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L128", "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_missing_exlab_type_raises_template_load_error", - "target": "template_copier_driver_templateengine" + "source": "tray_test_icon_test_default_icon_image_returns_pillow_image", + "target": "tray_icon_default_icon_image" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L448", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L134", "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_invalid_exlab_type_value_raises_template_load_error", - "target": "template_copier_driver_templateengine" + "confidence_score": 1.0, + "source": "tray_test_icon_rationale_134", + "target": "tray_test_icon_test_lazy_pystray_import" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L481", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L140", "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_readme_fields_with_non_core_entries_passes_through", - "target": "template_copier_driver_templateengine" + "source": "tray_test_icon_test_lazy_pystray_import", + "target": "tray_icon_build_icon" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L500", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L149", "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_readme_block_not_a_mapping_yields_empty_extra_fields", - "target": "template_copier_driver_templateengine" + "source": "tray_test_icon_test_separator_present", + "target": "tray_icon_build_icon" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L522", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L159", "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_readme_fields_not_a_list_yields_empty_extra_fields", - "target": "template_copier_driver_templateengine" + "confidence_score": 1.0, + "source": "tray_test_icon_rationale_159", + "target": "tray_test_icon_test_import_pystray_returns_module" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L543", + "source_file": "tests/unit/tray/test_icon.py", + "source_location": "L166", "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_non_string_description_falls_back_to_empty", - "target": "template_copier_driver_templateengine" + "source": "tray_test_icon_test_import_pystray_returns_module", + "target": "tray_icon_import_pystray" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L562", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L40", "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_plugin_order_preserved", - "target": "template_copier_driver_templateengine" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_stub_configure_logging" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L577", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L54", "weight": 1.0, - "source": "template_test_copier_driver_test_resolve_non_list_plugin_order_falls_back_to_empty", - "target": "template_copier_driver_templateengine" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_equipment" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/template/test_copier_driver.py", - "source_location": "L592", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L70", "weight": 1.0, - "source": "template_test_copier_driver_test_render_snapshots_existing_regular_file_at_dst", - "target": "template_copier_driver_templateengine" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_config" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L20", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_utc_now_iso_format" + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_recordingcomponent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L25", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_dt_to_iso_naive_assumed_utc" + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_recordingvalidator" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L30", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_dt_to_iso_utc_aware" + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_asyncstub" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L35", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_dt_to_iso_non_utc_zone_converts" + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_running_deps" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L42", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L136", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_parse_utc_iso_z_form" + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_test_reconfigures_existing_components_in_place" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L47", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L150", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_parse_utc_iso_offset_form" + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_test_skips_logging_reconfigure_when_unchanged" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L52", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L156", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_parse_utc_iso_naive_input_tagged_utc" + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_test_component_failure_is_isolated" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L57", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L182", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_parse_utc_iso_round_trip_with_now" + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_test_rebuilds_lims_only_on_endpoint_change" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L63", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L201", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_parse_utc_iso_raises_on_garbage" + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_test_rebuilds_plugin_host_only_on_dir_change" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L68", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L226", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_parse_utc_iso_or_none_handles_none" + "source": "tests_unit_tray_test_live_reload_py", + "target": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L72", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_parse_utc_iso_or_none_handles_empty" + "source": "tray_test_live_reload_rationale_1", + "target": "tests_unit_tray_test_live_reload_py" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L76", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_parse_utc_iso_or_none_handles_malformed" + "source": "tray_test_live_reload_rationale_39", + "target": "tray_test_live_reload_stub_configure_logging" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L80", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_time_py", - "target": "utils_test_time_test_parse_utc_iso_or_none_returns_datetime_for_valid" + "source": "tray_test_live_reload_rationale_41", + "target": "tray_test_live_reload_stub_configure_logging" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_test_time_rationale_1", - "target": "tests_unit_utils_test_time_py" + "source": "tray_test_live_reload_config", + "target": "tray_test_live_reload_equipment" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L21", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L138", "weight": 1.0, - "source": "utils_test_time_test_utc_now_iso_format", - "target": "utils_time_utc_now_iso" + "confidence_score": 1.0, + "source": "tray_test_live_reload_test_reconfigures_existing_components_in_place", + "target": "tray_test_live_reload_equipment" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L27", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L166", "weight": 1.0, - "source": "utils_test_time_test_dt_to_iso_naive_assumed_utc", - "target": "utils_time_dt_to_iso" + "confidence_score": 1.0, + "source": "tray_test_live_reload_test_component_failure_is_isolated", + "target": "tray_test_live_reload_equipment" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L32", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L55", "weight": 1.0, - "source": "utils_test_time_test_dt_to_iso_utc_aware", - "target": "utils_time_dt_to_iso" + "source": "tray_test_live_reload_equipment", + "target": "config_models_equipmentconfig" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L39", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L60", "weight": 1.0, - "source": "utils_test_time_test_dt_to_iso_non_utc_zone_converts", - "target": "utils_time_dt_to_iso" + "source": "tray_test_live_reload_equipment", + "target": "config_models_rclonesftptransport" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L43", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L65", "weight": 1.0, - "source": "utils_test_time_test_parse_utc_iso_z_form", - "target": "utils_time_parse_utc_iso" + "source": "tray_test_live_reload_equipment", + "target": "config_models_bandwidthconfig" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L48", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L123", "weight": 1.0, - "source": "utils_test_time_test_parse_utc_iso_offset_form", - "target": "utils_time_parse_utc_iso" + "confidence_score": 1.0, + "source": "tray_test_live_reload_running_deps", + "target": "tray_test_live_reload_config" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L53", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L138", "weight": 1.0, - "source": "utils_test_time_test_parse_utc_iso_naive_input_tagged_utc", - "target": "utils_time_parse_utc_iso" + "confidence_score": 1.0, + "source": "tray_test_live_reload_test_reconfigures_existing_components_in_place", + "target": "tray_test_live_reload_config" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L58", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L152", "weight": 1.0, - "source": "utils_test_time_test_parse_utc_iso_round_trip_with_now", - "target": "utils_time_utc_now_iso" + "confidence_score": 1.0, + "source": "tray_test_live_reload_test_skips_logging_reconfigure_when_unchanged", + "target": "tray_test_live_reload_config" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L59", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L166", "weight": 1.0, - "source": "utils_test_time_test_parse_utc_iso_round_trip_with_now", - "target": "utils_time_parse_utc_iso" + "confidence_score": 1.0, + "source": "tray_test_live_reload_test_component_failure_is_isolated", + "target": "tray_test_live_reload_config" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L60", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L186", "weight": 1.0, - "source": "utils_test_time_test_parse_utc_iso_round_trip_with_now", - "target": "utils_time_dt_to_iso" + "confidence_score": 1.0, + "source": "tray_test_live_reload_test_rebuilds_lims_only_on_endpoint_change", + "target": "tray_test_live_reload_config" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L65", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L205", "weight": 1.0, - "source": "utils_test_time_test_parse_utc_iso_raises_on_garbage", - "target": "utils_time_parse_utc_iso" + "confidence_score": 1.0, + "source": "tray_test_live_reload_test_rebuilds_plugin_host_only_on_dir_change", + "target": "tray_test_live_reload_config" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L69", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L242", "weight": 1.0, - "source": "utils_test_time_test_parse_utc_iso_or_none_handles_none", - "target": "utils_time_parse_utc_iso_or_none" + "confidence_score": 1.0, + "source": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install", + "target": "tray_test_live_reload_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L73", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L79", "weight": 1.0, - "source": "utils_test_time_test_parse_utc_iso_or_none_handles_empty", - "target": "utils_time_parse_utc_iso_or_none" + "source": "tray_test_live_reload_config", + "target": "config_models_pathsconfig" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", - "source_location": "L77", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L80", "weight": 1.0, - "source": "utils_test_time_test_parse_utc_iso_or_none_handles_malformed", - "target": "utils_time_parse_utc_iso_or_none" + "source": "tray_test_live_reload_config", + "target": "config_models_limsconfig" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_time.py", + "source_file": "tests/unit/tray/test_live_reload.py", "source_location": "L81", "weight": 1.0, - "source": "utils_test_time_test_parse_utc_iso_or_none_returns_datetime_for_valid", - "target": "utils_time_parse_utc_iso_or_none" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_state.py", - "source_location": "L12", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_utils_test_state_py", - "target": "utils_test_state_state" + "source": "tray_test_live_reload_config", + "target": "config_models_loggingconfig" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_state.py", - "source_location": "L25", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_state_py", - "target": "utils_test_state_test_allowed_transition_returns_none" + "source": "tray_test_live_reload_recordingcomponent", + "target": "tray_test_live_reload_recordingcomponent_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_state.py", - "source_location": "L29", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_state_py", - "target": "utils_test_state_test_disallowed_transition_raises" + "source": "tray_test_live_reload_recordingcomponent", + "target": "tray_test_live_reload_recordingcomponent_apply_config" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_state.py", - "source_location": "L34", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L125", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_state_py", - "target": "utils_test_state_test_terminal_transition_raises" + "source": "tray_test_live_reload_running_deps", + "target": "tray_test_live_reload_recordingcomponent" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_state.py", - "source_location": "L39", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L78", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_utils_test_state_py", - "target": "utils_test_state_test_unknown_source_raises" + "source": "tray_test_live_reload_rationale_78", + "target": "tray_test_live_reload_recordingcomponent" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_state.py", - "source_location": "L1", - "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_test_state_rationale_1", - "target": "tests_unit_utils_test_state_py" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L21", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingcomponent", + "target": "api_app_appdependencies" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "tests/unit/utils/test_state.py", - "source_location": "L12", - "weight": 1.0, - "confidence_score": 1.0, - "source": "utils_test_state_state", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingcomponent", + "target": "config_models_config" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/notifications.py", - "source_location": "L35", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_notifications_severity", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingcomponent", + "target": "config_models_equipmentconfig" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/notifications.py", - "source_location": "L44", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_notifications_bannerid", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingcomponent", + "target": "config_models_limsconfig" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/notifications.py", - "source_location": "L58", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_notifications_containerid", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingcomponent", + "target": "config_models_loggingconfig" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/keyboard.py", - "source_location": "L24", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_keyboard_shortcut", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingcomponent", + "target": "config_models_pathsconfig" }, { - "relation": "inherits", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L14", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_enums_runkind", - "target": "strenum" + "source": "tray_test_live_reload_rationale_87", + "target": "tray_test_live_reload_recordingcomponent" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L24", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_syncstatus", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingcomponent", + "target": "config_models_bandwidthconfig" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L41", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_tier", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingcomponent", + "target": "config_models_rclonesftptransport" }, { - "relation": "inherits", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L48", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L99", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_enums_problemclass", - "target": "strenum" + "source": "tray_test_live_reload_recordingvalidator", + "target": "tray_test_live_reload_recordingvalidator_init" }, { - "relation": "inherits", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L65", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L102", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_enums_findingkind", - "target": "strenum" + "source": "tray_test_live_reload_recordingvalidator", + "target": "tray_test_live_reload_recordingvalidator_reconfigure" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L76", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L124", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_enums_templatetype", - "target": "strenum" + "source": "tray_test_live_reload_running_deps", + "target": "tray_test_live_reload_recordingvalidator" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L84", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_runscope", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L21", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingvalidator", + "target": "api_app_appdependencies" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L95", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_limsprojectstatus", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingvalidator", + "target": "config_models_config" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L109", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_limsprojectsource", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingvalidator", + "target": "config_models_equipmentconfig" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L117", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_runsyncstate", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingvalidator", + "target": "config_models_limsconfig" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L137", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_setupstate", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingvalidator", + "target": "config_models_loggingconfig" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L173", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_syncmode", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingvalidator", + "target": "config_models_pathsconfig" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L187", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_stagingcleanupmode", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingvalidator", + "target": "config_models_bandwidthconfig" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L194", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_pluginstatus", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_recordingvalidator", + "target": "config_models_rclonesftptransport" }, { - "relation": "inherits", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L204", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_enums_creationlevel", - "target": "strenum" + "source": "tray_test_live_reload_asyncstub", + "target": "tray_test_live_reload_asyncstub_init" }, { - "relation": "inherits", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L225", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L116", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_enums_fieldtype", - "target": "strenum" + "source": "tray_test_live_reload_asyncstub", + "target": "tray_test_live_reload_asyncstub_start" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L235", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L231", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_enums_bandwidthday", - "target": "strenum" + "source": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install", + "target": "tray_test_live_reload_asyncstub" }, { - "relation": "inherits", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L247", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_enums_sessionkind", - "target": "strenum" + "source": "tray_test_live_reload_rationale_98", + "target": "tray_test_live_reload_asyncstub" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L259", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_nextaction", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L21", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_asyncstub", + "target": "api_app_appdependencies" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L266", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_auditscopekind", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_asyncstub", + "target": "config_models_config" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L279", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_directorylevel", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_asyncstub", + "target": "config_models_equipmentconfig" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L296", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_platform", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_asyncstub", + "target": "config_models_limsconfig" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L304", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_setupnextaction", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_asyncstub", + "target": "config_models_loggingconfig" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L318", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_synchandlestate", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_asyncstub", + "target": "config_models_pathsconfig" }, { - "relation": "inherits", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L330", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L107", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_enums_pluginsourceroot", - "target": "strenum" + "source": "tray_test_live_reload_rationale_107", + "target": "tray_test_live_reload_asyncstub" }, { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L337", - "weight": 1.0, - "confidence_score": 1.0, - "source": "constants_enums_treeprojectstatus", - "target": "strenum" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_asyncstub", + "target": "config_models_bandwidthconfig" }, { - "relation": "inherits", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_live_reload_asyncstub", + "target": "config_models_rclonesftptransport" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/controller/state_machine.py", - "source_location": "L45", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L137", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_state_machine_sessionstate", - "target": "strenum" + "source": "tray_test_live_reload_test_reconfigures_existing_components_in_place", + "target": "tray_test_live_reload_running_deps" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/controller/state_machine.py", - "source_location": "L66", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L151", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_state_machine_phase", - "target": "strenum" + "source": "tray_test_live_reload_test_skips_logging_reconfigure_when_unchanged", + "target": "tray_test_live_reload_running_deps" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/sync/queue.py", - "source_location": "L69", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L164", "weight": 1.0, "confidence_score": 1.0, - "source": "sync_queue_syncjobstate", - "target": "strenum" + "source": "tray_test_live_reload_test_component_failure_is_isolated", + "target": "tray_test_live_reload_running_deps" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/sync/transports/__init__.py", - "source_location": "L21", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "transports_init_transporterrorkind", - "target": "strenum" + "source": "tray_test_live_reload_test_rebuilds_lims_only_on_endpoint_change", + "target": "tray_test_live_reload_running_deps" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L159", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L204", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_enums_transporttype", - "target": "strenum" + "source": "tray_test_live_reload_test_rebuilds_plugin_host_only_on_dir_change", + "target": "tray_test_live_reload_running_deps" }, { - "relation": "inherits", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/constants/enums.py", - "source_location": "L214", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "constants_enums_orchestratortransporttype", - "target": "strenum" + "source": "tray_test_live_reload_rationale_112", + "target": "tray_test_live_reload_running_deps" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_state.py", - "source_location": "L26", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L122", "weight": 1.0, - "source": "utils_test_state_test_allowed_transition_returns_none", - "target": "utils_state_assert_forward_transition" + "source": "tray_test_live_reload_running_deps", + "target": "api_app_appdependencies" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_state.py", - "source_location": "L31", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L121", "weight": 1.0, - "source": "utils_test_state_test_disallowed_transition_raises", - "target": "utils_state_assert_forward_transition" + "confidence_score": 1.0, + "source": "tray_test_live_reload_rationale_121", + "target": "tray_test_live_reload_running_deps" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_state.py", - "source_location": "L36", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L140", "weight": 1.0, - "source": "utils_test_state_test_terminal_transition_raises", - "target": "utils_state_assert_forward_transition" + "source": "tray_test_live_reload_test_reconfigures_existing_components_in_place", + "target": "tray_dependencies_apply_live_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/utils/test_state.py", - "source_location": "L44", - "weight": 1.0, - "source": "utils_test_state_test_unknown_source_raises", - "target": "utils_state_assert_forward_transition" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L23", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_storage_secret_py", - "target": "tray_test_storage_secret_test_generates_secret_on_first_call" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L31", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_storage_secret_py", - "target": "tray_test_storage_secret_test_idempotent_across_calls" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L38", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_storage_secret_py", - "target": "tray_test_storage_secret_test_secret_file_mode_is_0600" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L45", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L152", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_storage_secret_py", - "target": "tray_test_storage_secret_test_regenerates_on_empty_file" + "source": "tray_test_live_reload_test_skips_logging_reconfigure_when_unchanged", + "target": "tray_dependencies_apply_live_config" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L53", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_storage_secret_py", - "target": "tray_test_storage_secret_test_regenerates_on_whitespace_only_file" + "source": "tray_test_live_reload_rationale_148", + "target": "tray_test_live_reload_test_component_failure_is_isolated" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L61", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L168", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_storage_secret_py", - "target": "tray_test_storage_secret_test_creates_state_dir_if_missing" + "source": "tray_test_live_reload_test_component_failure_is_isolated", + "target": "tray_dependencies_apply_live_config" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L157", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_storage_secret_rationale_1", - "target": "tests_unit_tray_test_storage_secret_py" + "source": "tray_test_live_reload_rationale_157", + "target": "tray_test_live_reload_test_component_failure_is_isolated" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L24", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L191", "weight": 1.0, - "source": "tray_test_storage_secret_test_generates_secret_on_first_call", - "target": "tray_storage_secret_load_or_create_storage_secret" + "source": "tray_test_live_reload_test_rebuilds_lims_only_on_endpoint_change", + "target": "tray_dependencies_apply_live_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L32", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L209", "weight": 1.0, - "source": "tray_test_storage_secret_test_idempotent_across_calls", - "target": "tray_storage_secret_load_or_create_storage_secret" + "source": "tray_test_live_reload_test_rebuilds_plugin_host_only_on_dir_change", + "target": "tray_dependencies_apply_live_config" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L39", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L220", "weight": 1.0, - "source": "tray_test_storage_secret_test_secret_file_mode_is_0600", - "target": "tray_storage_secret_load_or_create_storage_secret" + "confidence_score": 1.0, + "source": "tray_test_live_reload_rationale_220", + "target": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L48", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L240", "weight": 1.0, - "source": "tray_test_storage_secret_test_regenerates_on_empty_file", - "target": "tray_storage_secret_load_or_create_storage_secret" + "source": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install", + "target": "api_app_appdependencies" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L56", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L244", "weight": 1.0, - "source": "tray_test_storage_secret_test_regenerates_on_whitespace_only_file", - "target": "tray_storage_secret_load_or_create_storage_secret" + "source": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install", + "target": "tray_dependencies_apply_live_config" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_storage_secret.py", - "source_location": "L63", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_live_reload.py", + "source_location": "L229", "weight": 1.0, - "source": "tray_test_storage_secret_test_creates_state_dir_if_missing", - "target": "tray_storage_secret_load_or_create_storage_secret" + "confidence_score": 1.0, + "source": "tray_test_live_reload_rationale_229", + "target": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L44", + "source_file": "tests/unit/tray/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_inmemorykeyring" + "source": "tray_init_rationale_1", + "target": "tests_unit_tray_init_py" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L63", + "source_file": "src/exlab_wizard/tray/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_swap_keyring" + "source": "tray_init_rationale_1", + "target": "src_exlab_wizard_tray_init_py" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L72", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_test_build_production_dependencies_exposes_keyring_store" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_stubstore" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L80", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_stubsync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L120", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_format_status_idle" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L137", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_format_status_sync_jobs" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L159", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_nas_config_with_two_equipment" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_format_status_single_job_uses_singular" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L170", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_nas_config_with_remote" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_format_status_input_required_singular" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L178", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_stubabout" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_format_status_input_required_plural" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L185", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_test_make_equipment_probe_targets_nas_remote_not_keyring" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_format_status_combines_sync_and_input_required" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L217", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_test_make_equipment_probe_short_circuits_without_remote" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_snapshot_status_with_none_components" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L231", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_test_make_equipment_probe_surfaces_about_failure" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_snapshot_status_reads_components" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L258", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L75", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_test_nas_remote_available_reflects_listremotes" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_snapshot_status_callable_attributes" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L84", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_1", - "target": "tests_unit_tray_test_dependencies_py" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_ticker_invokes_callback_on_first_tick" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L194", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L97", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_test_check_nas_passwords_present_returns_only_populated_ids" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_ticker_does_not_invoke_callback_when_label_unchanged" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L208", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_test_check_nas_passwords_present_handles_none_store_and_config" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_ticker_start_and_stop_idempotent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L214", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_test_make_equipment_probe_short_circuits_when_password_missing" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_ticker_callback_exception_is_swallowed" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L237", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_dependencies_py", - "target": "tray_test_dependencies_test_make_equipment_probe_targets_remote_root_with_colon" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_ticker_thread_runs" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L49", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L149", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_inmemorykeyring", - "target": "tray_test_dependencies_inmemorykeyring_init" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_default_refresh_matches_spec" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L52", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_inmemorykeyring", - "target": "tray_test_dependencies_inmemorykeyring_get_password" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_safe_int_handles_callable_that_raises" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L55", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L164", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_inmemorykeyring", - "target": "tray_test_dependencies_inmemorykeyring_set_password" + "source": "tests_unit_tray_test_status_py", + "target": "tray_test_status_test_safe_int_handles_non_numeric" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L58", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_inmemorykeyring", - "target": "tray_test_dependencies_inmemorykeyring_delete_password" + "source": "tray_test_status_rationale_1", + "target": "tests_unit_tray_test_status_py" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L128", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored", - "target": "tray_test_dependencies_inmemorykeyring" + "source": "tray_test_status_stubstore", + "target": "tray_test_status_stubstore_init" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L142", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username", - "target": "tray_test_dependencies_inmemorykeyring" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L40", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_40", - "target": "tray_test_dependencies_inmemorykeyring" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L23", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_dependencies_inmemorykeyring", - "target": "config_models_config" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L23", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_dependencies_inmemorykeyring", - "target": "config_models_equipmentconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L23", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_dependencies_inmemorykeyring", - "target": "config_models_pathsconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L32", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_dependencies_inmemorykeyring", - "target": "lims_keyring_store_keyringstore" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L33", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_dependencies_inmemorykeyring", - "target": "sync_nas_client_nassyncclient" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L172", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_dependencies_inmemorykeyring", - "target": "config_models_nasconfig" + "source": "tray_test_status_test_snapshot_status_reads_components", + "target": "tray_test_status_stubstore" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L197", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_check_nas_passwords_present_returns_only_populated_ids", - "target": "tray_test_dependencies_inmemorykeyring" + "source": "tray_test_status_test_ticker_invokes_callback_on_first_tick", + "target": "tray_test_status_stubstore" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L220", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_short_circuits_when_password_missing", - "target": "tray_test_dependencies_inmemorykeyring" + "source": "tray_test_status_test_ticker_does_not_invoke_callback_when_label_unchanged", + "target": "tray_test_status_stubstore" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L260", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_targets_remote_root_with_colon", - "target": "tray_test_dependencies_inmemorykeyring" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L45", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L137", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_45", - "target": "tray_test_dependencies_inmemorykeyring" + "source": "tray_test_status_test_ticker_thread_runs", + "target": "tray_test_status_stubstore" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L23", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L8", "weight": 0.8, "confidence_score": 0.5, - "source": "tray_test_dependencies_inmemorykeyring", - "target": "config_models_bandwidthconfig" + "source": "tray_test_status_stubstore", + "target": "tray_status_statussnapshot" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L23", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L8", "weight": 0.8, "confidence_score": 0.5, - "source": "tray_test_dependencies_inmemorykeyring", - "target": "config_models_rclonesftptransport" + "source": "tray_test_status_stubstore", + "target": "tray_status_statusticker" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L130", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored", - "target": "tray_test_dependencies_inmemorykeyring_set_password" + "source": "tray_test_status_stubsync", + "target": "tray_test_status_stubsync_init" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L144", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username", - "target": "tray_test_dependencies_inmemorykeyring_set_password" + "source": "tray_test_status_test_snapshot_status_reads_components", + "target": "tray_test_status_stubsync" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L200", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_check_nas_passwords_present_returns_only_populated_ids", - "target": "tray_test_dependencies_inmemorykeyring_set_password" + "source": "tray_test_status_test_ticker_invokes_callback_on_first_tick", + "target": "tray_test_status_stubsync" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L263", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_targets_remote_root_with_colon", - "target": "tray_test_dependencies_inmemorykeyring_set_password" + "source": "tray_test_status_test_ticker_does_not_invoke_callback_when_label_unchanged", + "target": "tray_test_status_stubsync" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_status_stubsync", + "target": "tray_status_statussnapshot" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_status_stubsync", + "target": "tray_status_statusticker" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L128", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L29", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored", - "target": "tray_test_dependencies_swap_keyring" + "source": "tray_test_status_test_format_status_idle", + "target": "tray_status_statussnapshot" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L142", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username", - "target": "tray_test_dependencies_swap_keyring" + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L30", + "weight": 1.0, + "source": "tray_test_status_test_format_status_idle", + "target": "tray_status_format_status" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L197", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L34", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_test_check_nas_passwords_present_returns_only_populated_ids", - "target": "tray_test_dependencies_swap_keyring" + "source": "tray_test_status_test_format_status_sync_jobs", + "target": "tray_status_statussnapshot" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L220", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L35", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_short_circuits_when_password_missing", - "target": "tray_test_dependencies_swap_keyring" + "source": "tray_test_status_test_format_status_sync_jobs", + "target": "tray_status_format_status" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L260", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L39", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_targets_remote_root_with_colon", - "target": "tray_test_dependencies_swap_keyring" + "source": "tray_test_status_test_format_status_single_job_uses_singular", + "target": "tray_status_statussnapshot" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L68", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_68", - "target": "tray_test_dependencies_test_build_production_dependencies_exposes_keyring_store" + "source": "tray_test_status_test_format_status_single_job_uses_singular", + "target": "tray_status_format_status" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L75", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L44", "weight": 1.0, - "source": "tray_test_dependencies_test_build_production_dependencies_exposes_keyring_store", - "target": "tray_dependencies_build_production_dependencies" + "source": "tray_test_status_test_format_status_input_required_singular", + "target": "tray_status_statussnapshot" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L73", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L45", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_73", - "target": "tray_test_dependencies_test_build_production_dependencies_exposes_keyring_store" + "source": "tray_test_status_test_format_status_input_required_singular", + "target": "tray_status_format_status" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L78", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L49", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_78", - "target": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client" + "source": "tray_test_status_test_format_status_input_required_plural", + "target": "tray_status_statussnapshot" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L93", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L50", "weight": 1.0, - "source": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client", - "target": "config_models_pathsconfig" + "source": "tray_test_status_test_format_status_input_required_plural", + "target": "tray_status_format_status" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L95", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L54", "weight": 1.0, - "source": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client", - "target": "config_models_equipmentconfig" + "source": "tray_test_status_test_format_status_combines_sync_and_input_required", + "target": "tray_status_statussnapshot" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L113", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L55", "weight": 1.0, - "source": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client", - "target": "tray_dependencies_build_production_dependencies" + "source": "tray_test_status_test_format_status_combines_sync_and_input_required", + "target": "tray_status_format_status" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L83", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L59", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_83", - "target": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client" + "source": "tray_test_status_test_snapshot_status_with_none_components", + "target": "tray_status_snapshot_status" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L101", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L66", "weight": 1.0, - "source": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client", - "target": "config_models_rclonesftptransport" + "source": "tray_test_status_test_snapshot_status_reads_components", + "target": "tray_status_snapshot_status" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L106", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L80", "weight": 1.0, - "source": "tray_test_dependencies_test_build_production_dependencies_nas_sync_is_a_client", - "target": "config_models_bandwidthconfig" + "source": "tray_test_status_test_snapshot_status_callable_attributes", + "target": "tray_status_snapshot_status" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L109", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L86", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_109", - "target": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored" + "source": "tray_test_status_test_ticker_invokes_callback_on_first_tick", + "target": "tray_status_statusticker" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L129", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L99", "weight": 1.0, - "source": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored", - "target": "lims_keyring_store_keyringstore" + "source": "tray_test_status_test_ticker_does_not_invoke_callback_when_label_unchanged", + "target": "tray_status_statusticker" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L134", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L110", "weight": 1.0, - "source": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored", - "target": "tray_dependencies_check_keyring_present" + "source": "tray_test_status_test_ticker_start_and_stop_idempotent", + "target": "tray_status_statusticker" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_status.py", "source_location": "L121", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_121", - "target": "tray_test_dependencies_test_check_keyring_present_true_when_lims_password_stored" + "source": "tray_test_status_test_ticker_callback_exception_is_swallowed", + "target": "tray_status_statusticker" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", + "source_file": "tests/unit/tray/test_status.py", "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_128", - "target": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username" + "source": "tray_test_status_rationale_128", + "target": "tray_test_status_test_ticker_thread_runs" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L143", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L136", "weight": 1.0, - "source": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username", - "target": "lims_keyring_store_keyringstore" + "source": "tray_test_status_test_ticker_thread_runs", + "target": "tray_status_statusticker" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L149", + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L161", "weight": 1.0, - "source": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username", - "target": "tray_dependencies_build_lims_client" + "source": "tray_test_status_test_safe_int_handles_callable_that_raises", + "target": "tray_status_safe_int" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_status.py", + "source_location": "L170", + "weight": 1.0, + "source": "tray_test_status_test_safe_int_handles_non_numeric", + "target": "tray_status_safe_int" + }, + { + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L140", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_140", - "target": "tray_test_dependencies_test_lims_client_password_provider_reads_keyring_under_lims_username" + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_fakeuvicornserver" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L174", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_nas_config_with_remote", - "target": "tray_test_dependencies_nas_config_with_two_equipment" + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_make_runner" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L222", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_short_circuits_without_remote", - "target": "tray_test_dependencies_nas_config_with_two_equipment" + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_pick_free_port_returns_bindable_port" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L148", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_148", - "target": "tray_test_dependencies_nas_config_with_two_equipment" + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_start_writes_server_json_atomically" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L162", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L89", "weight": 1.0, - "source": "tray_test_dependencies_nas_config_with_two_equipment", - "target": "config_models_pathsconfig" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_stop_deletes_state_file" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L164", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L98", "weight": 1.0, - "source": "tray_test_dependencies_nas_config_with_two_equipment", - "target": "config_models_equipmentconfig" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_double_start_raises" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L201", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_check_nas_passwords_present_returns_only_populated_ids", - "target": "tray_test_dependencies_nas_config_with_two_equipment" + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_port_property_before_start_raises" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L209", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L114", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_check_nas_passwords_present_handles_none_store_and_config", - "target": "tray_test_dependencies_nas_config_with_two_equipment" + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_port_property_after_start" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L222", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_short_circuits_when_password_missing", - "target": "tray_test_dependencies_nas_config_with_two_equipment" + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_state_file_property_returns_expected_path" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L262", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_targets_remote_root_with_colon", - "target": "tray_test_dependencies_nas_config_with_two_equipment" + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_stop_is_idempotent" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L160", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_160", - "target": "tray_test_dependencies_nas_config_with_two_equipment" + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_start_creates_state_dir_if_missing" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L170", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L145", "weight": 1.0, - "source": "tray_test_dependencies_nas_config_with_two_equipment", - "target": "config_models_rclonesftptransport" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_is_running_tracks_thread_lifecycle" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L208", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L157", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_targets_nas_remote_not_keyring", - "target": "tray_test_dependencies_nas_config_with_remote" + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_real_uvicorn_resolves_lazily" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L249", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L170", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_surfaces_about_failure", - "target": "tray_test_dependencies_nas_config_with_remote" + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_delete_state_file_handles_missing" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L274", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L176", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_test_nas_remote_available_reflects_listremotes", - "target": "tray_test_dependencies_nas_config_with_remote" + "source": "tests_unit_tray_test_server_runner_py", + "target": "tray_test_server_runner_test_stop_handles_attribute_error_on_should_exit" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L171", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_171", - "target": "tray_test_dependencies_nas_config_with_remote" + "source": "tray_test_server_runner_rationale_1", + "target": "tests_unit_tray_test_server_runner_py" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L175", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L24", "weight": 1.0, - "source": "tray_test_dependencies_nas_config_with_remote", - "target": "config_models_nasconfig" + "confidence_score": 1.0, + "source": "tray_test_server_runner_fakeuvicornserver", + "target": "tray_test_server_runner_fakeuvicornserver_init" }, { "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L179", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_stubabout", - "target": "tray_test_dependencies_stubabout_init" + "source": "tray_test_server_runner_fakeuvicornserver", + "target": "tray_test_server_runner_fakeuvicornserver_run" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_dependencies_stubabout", - "target": "config_models_config" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_server_runner_make_runner", + "target": "tray_test_server_runner_fakeuvicornserver" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_dependencies_stubabout", - "target": "config_models_equipmentconfig" + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_server_runner_rationale_22", + "target": "tray_test_server_runner_fakeuvicornserver" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L22", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "tray_test_dependencies_stubabout", - "target": "config_models_pathsconfig" + "source": "tray_test_server_runner_fakeuvicornserver", + "target": "tray_server_runner_serverrunner" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L28", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_dependencies_stubabout", - "target": "lims_keyring_store_keyringstore" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L73", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_server_runner_test_start_writes_server_json_atomically", + "target": "tray_test_server_runner_make_runner" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L29", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_dependencies_stubabout", - "target": "sync_nas_client_nassyncclient" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L90", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_server_runner_test_stop_deletes_state_file", + "target": "tray_test_server_runner_make_runner" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L172", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_dependencies_stubabout", - "target": "config_models_nasconfig" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L99", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_server_runner_test_double_start_raises", + "target": "tray_test_server_runner_make_runner" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L188", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_188", - "target": "tray_test_dependencies_test_make_equipment_probe_targets_nas_remote_not_keyring" + "source": "tray_test_server_runner_test_port_property_before_start_raises", + "target": "tray_test_server_runner_make_runner" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L205", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L115", "weight": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_targets_nas_remote_not_keyring", - "target": "tray_dependencies_build_production_dependencies" + "confidence_score": 1.0, + "source": "tray_test_server_runner_test_port_property_after_start", + "target": "tray_test_server_runner_make_runner" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L210", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L124", "weight": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_targets_nas_remote_not_keyring", - "target": "tray_dependencies_make_equipment_probe" + "confidence_score": 1.0, + "source": "tray_test_server_runner_test_state_file_property_returns_expected_path", + "target": "tray_test_server_runner_make_runner" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L218", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_218", - "target": "tray_test_dependencies_test_make_equipment_probe_short_circuits_without_remote" + "source": "tray_test_server_runner_test_stop_is_idempotent", + "target": "tray_test_server_runner_make_runner" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L137", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_server_runner_test_start_creates_state_dir_if_missing", + "target": "tray_test_server_runner_make_runner" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L146", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_server_runner_test_is_running_tracks_thread_lifecycle", + "target": "tray_test_server_runner_make_runner" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L178", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_server_runner_test_stop_handles_attribute_error_on_should_exit", + "target": "tray_test_server_runner_make_runner" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L221", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L55", "weight": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_short_circuits_without_remote", - "target": "tray_dependencies_build_production_dependencies" + "source": "tray_test_server_runner_make_runner", + "target": "tray_server_runner_serverrunner" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L224", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L61", "weight": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_short_circuits_without_remote", - "target": "tray_dependencies_make_equipment_probe" + "source": "tray_test_server_runner_test_pick_free_port_returns_bindable_port", + "target": "tray_server_runner_pick_free_port" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L234", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_234", - "target": "tray_test_dependencies_test_make_equipment_probe_surfaces_about_failure" + "source": "tray_test_server_runner_rationale_158", + "target": "tray_test_server_runner_test_real_uvicorn_resolves_lazily" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L248", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L164", "weight": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_surfaces_about_failure", - "target": "tray_dependencies_build_production_dependencies" + "source": "tray_test_server_runner_test_real_uvicorn_resolves_lazily", + "target": "tray_server_runner_serverrunner" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L251", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L171", "weight": 1.0, - "source": "tray_test_dependencies_test_make_equipment_probe_surfaces_about_failure", - "target": "tray_dependencies_make_equipment_probe" + "source": "tray_test_server_runner_test_delete_state_file_handles_missing", + "target": "tray_server_runner_serverrunner" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_dependencies.py", - "source_location": "L261", + "source_file": "tests/unit/tray/test_server_runner.py", + "source_location": "L177", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_dependencies_rationale_261", - "target": "tray_test_dependencies_test_nas_remote_available_reflects_listremotes" + "source": "tray_test_server_runner_rationale_177", + "target": "tray_test_server_runner_test_stop_handles_attribute_error_on_should_exit" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L18", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_fakemenu" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_notify_calls_injected_callable" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L25", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_fakemenuitem" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_notify_swallows_notifier_exceptions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L40", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_fakeicon" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_bus_emits_after_coalescing_window" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L48", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_fakepystray" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_bus_suppresses_when_window_foregrounded" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L54", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_test_build_icon_returns_icon_object" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_bus_separate_kinds_separate_buckets" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L71", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_test_open_menu_item_invokes_callback" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_bus_cancel_all_drops_pending" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L85", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L102", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_test_quit_menu_item_invokes_callback" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_bus_emits_singleton_message_unchanged" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L99", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L114", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_test_status_label_callable" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_coalescing_window_constant_matches_spec" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L112", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_test_callback_exception_is_swallowed" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_coalesced_message_plugin_input_required_plural" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L127", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_test_default_icon_image_returns_pillow_image" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_coalesced_message_plugin_input_required_singular" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L133", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L126", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_test_lazy_pystray_import" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_coalesced_message_sync_failed_plural" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L148", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_test_separator_present" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_coalesced_message_sync_failed_singular" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L158", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_icon_py", - "target": "tray_test_icon_test_import_pystray_returns_module" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_coalesced_message_unknown_kind" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_icon_rationale_1", - "target": "tests_unit_tray_test_icon_py" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_bus_timer_fires_after_window" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L21", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L153", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_icon_fakemenu", - "target": "tray_test_icon_fakemenu_init" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_default_notifier_returns_callable" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L26", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L161", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_icon_fakemenuitem", - "target": "tray_test_icon_fakemenuitem_init" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_noop_notifier_swallows_arbitrary_kwargs" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L41", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L168", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_icon_fakeicon", - "target": "tray_test_icon_fakeicon_init" + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_notify_uses_default_notifier_when_none" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L180", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_tray_test_notifications_py", + "target": "tray_test_notifications_test_flush_with_already_drained_bucket" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_notifications_rationale_1", + "target": "tests_unit_tray_test_notifications_py" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L57", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L25", "weight": 1.0, - "source": "tray_test_icon_test_build_icon_returns_icon_object", - "target": "tray_icon_build_icon" + "source": "tray_test_notifications_test_notify_calls_injected_callable", + "target": "tray_notifications_notify" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L73", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L34", "weight": 1.0, - "source": "tray_test_icon_test_open_menu_item_invokes_callback", - "target": "tray_icon_build_icon" + "source": "tray_test_notifications_test_notify_swallows_notifier_exceptions", + "target": "tray_notifications_notify" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L87", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L43", "weight": 1.0, - "source": "tray_test_icon_test_quit_menu_item_invokes_callback", - "target": "tray_icon_build_icon" + "source": "tray_test_notifications_test_bus_emits_after_coalescing_window", + "target": "tray_notifications_notificationbus" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L100", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L65", "weight": 1.0, - "source": "tray_test_icon_test_status_label_callable", - "target": "tray_icon_build_icon" + "source": "tray_test_notifications_test_bus_suppresses_when_window_foregrounded", + "target": "tray_notifications_notificationbus" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L116", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L76", "weight": 1.0, - "source": "tray_test_icon_test_callback_exception_is_swallowed", - "target": "tray_icon_build_icon" + "source": "tray_test_notifications_test_bus_separate_kinds_separate_buckets", + "target": "tray_notifications_notificationbus" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L128", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L91", "weight": 1.0, - "source": "tray_test_icon_test_default_icon_image_returns_pillow_image", - "target": "tray_icon_default_icon_image" + "source": "tray_test_notifications_test_bus_cancel_all_drops_pending", + "target": "tray_notifications_notificationbus" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L104", + "weight": 1.0, + "source": "tray_test_notifications_test_bus_emits_singleton_message_unchanged", + "target": "tray_notifications_notificationbus" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L119", + "weight": 1.0, + "source": "tray_test_notifications_test_coalesced_message_plugin_input_required_plural", + "target": "tray_notifications_coalesced_message" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L123", + "weight": 1.0, + "source": "tray_test_notifications_test_coalesced_message_plugin_input_required_singular", + "target": "tray_notifications_coalesced_message" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L127", + "weight": 1.0, + "source": "tray_test_notifications_test_coalesced_message_sync_failed_plural", + "target": "tray_notifications_coalesced_message" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L131", + "weight": 1.0, + "source": "tray_test_notifications_test_coalesced_message_sync_failed_singular", + "target": "tray_notifications_coalesced_message" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L135", + "weight": 1.0, + "source": "tray_test_notifications_test_coalesced_message_unknown_kind", + "target": "tray_notifications_coalesced_message" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L134", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L139", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_icon_rationale_134", - "target": "tray_test_icon_test_lazy_pystray_import" + "source": "tray_test_notifications_rationale_139", + "target": "tray_test_notifications_test_bus_timer_fires_after_window" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L140", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L141", "weight": 1.0, - "source": "tray_test_icon_test_lazy_pystray_import", - "target": "tray_icon_build_icon" + "source": "tray_test_notifications_test_bus_timer_fires_after_window", + "target": "tray_notifications_notificationbus" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L154", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_notifications_rationale_154", + "target": "tray_test_notifications_test_default_notifier_returns_callable" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L157", + "weight": 1.0, + "source": "tray_test_notifications_test_default_notifier_returns_callable", + "target": "tray_notifications_default_notifier" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L162", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_notifications_rationale_162", + "target": "tray_test_notifications_test_noop_notifier_swallows_arbitrary_kwargs" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L165", + "weight": 1.0, + "source": "tray_test_notifications_test_noop_notifier_swallows_arbitrary_kwargs", + "target": "tray_notifications_noop_notifier" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L176", + "weight": 1.0, + "source": "tray_test_notifications_test_notify_uses_default_notifier_when_none", + "target": "tray_notifications_notify" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L181", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_notifications_rationale_181", + "target": "tray_test_notifications_test_flush_with_already_drained_bucket" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_notifications.py", + "source_location": "L183", + "weight": 1.0, + "source": "tray_test_notifications_test_flush_with_already_drained_bucket", + "target": "tray_notifications_notificationbus" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_stubserver" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L149", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L25", "weight": 1.0, - "source": "tray_test_icon_test_separator_present", - "target": "tray_icon_build_icon" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_stubwindow" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L159", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_icon_rationale_159", - "target": "tray_test_icon_test_import_pystray_returns_module" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_counted" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_icon.py", - "source_location": "L166", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L38", "weight": 1.0, - "source": "tray_test_icon_test_import_pystray_returns_module", - "target": "tray_icon_import_pystray" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_make_coordinator" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L40", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L64", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_stub_configure_logging" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_idle_predicate_short_circuits" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L54", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_equipment" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_busy_predicate_times_out_and_force_quits" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L70", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_config" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_busy_predicate_wait_resets_timer" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L86", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L111", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_recordingcomponent" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_sigterm_uses_short_timeout" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L98", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L137", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_recordingvalidator" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_quit_handles_missing_window_launcher" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L106", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_asyncstub" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_safe_count_handles_callable_attribute" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L120", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_running_deps" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_safe_count_handles_callable_that_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L136", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L168", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_test_reconfigures_existing_components_in_place" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_safe_count_handles_none_obj" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L150", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L172", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_test_skips_logging_reconfigure_when_unchanged" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_safe_count_handles_non_numeric" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L156", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_test_component_failure_is_isolated" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_force_quit_prompt_exception_defaults_to_force" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L182", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L192", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_test_rebuilds_lims_only_on_endpoint_change" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_default_timeout_constants_match_spec" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L201", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L199", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_test_rebuilds_plugin_host_only_on_dir_change" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_idle_predicate_returns_true_immediately" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L226", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_live_reload_py", - "target": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install" + "source": "tests_unit_tray_test_quit_coordinator_py", + "target": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", + "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_1", - "target": "tests_unit_tray_test_live_reload_py" + "source": "tray_test_quit_coordinator_rationale_1", + "target": "tests_unit_tray_test_quit_coordinator_py" }, { - "relation": "rationale_for", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L39", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_39", - "target": "tray_test_live_reload_stub_configure_logging" + "source": "tray_test_quit_coordinator_stubserver", + "target": "tray_test_quit_coordinator_stubserver_init" }, { - "relation": "rationale_for", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L41", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_41", - "target": "tray_test_live_reload_stub_configure_logging" + "source": "tray_test_quit_coordinator_stubserver", + "target": "tray_test_quit_coordinator_stubserver_stop" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L82", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_config", - "target": "tray_test_live_reload_equipment" + "source": "tray_test_quit_coordinator_make_coordinator", + "target": "tray_test_quit_coordinator_stubserver" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", + "source_file": "tests/unit/tray/test_quit_coordinator.py", "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_reconfigures_existing_components_in_place", - "target": "tray_test_live_reload_equipment" + "source": "tray_test_quit_coordinator_test_quit_handles_missing_window_launcher", + "target": "tray_test_quit_coordinator_stubserver" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L166", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L210", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_component_failure_is_isolated", - "target": "tray_test_live_reload_equipment" + "source": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true", + "target": "tray_test_quit_coordinator_stubserver" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L55", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_quit_coordinator_stubserver", + "target": "tray_quit_coordinator_quitcoordinator" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L26", "weight": 1.0, - "source": "tray_test_live_reload_equipment", - "target": "config_models_equipmentconfig" + "confidence_score": 1.0, + "source": "tray_test_quit_coordinator_stubwindow", + "target": "tray_test_quit_coordinator_stubwindow_init" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L60", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L29", "weight": 1.0, - "source": "tray_test_live_reload_equipment", - "target": "config_models_rclonesftptransport" + "confidence_score": 1.0, + "source": "tray_test_quit_coordinator_stubwindow", + "target": "tray_test_quit_coordinator_stubwindow_close" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L65", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L47", "weight": 1.0, - "source": "tray_test_live_reload_equipment", - "target": "config_models_bandwidthconfig" + "confidence_score": 1.0, + "source": "tray_test_quit_coordinator_make_coordinator", + "target": "tray_test_quit_coordinator_stubwindow" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L123", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L211", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_running_deps", - "target": "tray_test_live_reload_config" + "source": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true", + "target": "tray_test_quit_coordinator_stubwindow" }, { - "relation": "calls", - "context": "call", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_quit_coordinator_stubwindow", + "target": "tray_quit_coordinator_quitcoordinator" + }, + { + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L138", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_reconfigures_existing_components_in_place", - "target": "tray_test_live_reload_config" + "source": "tray_test_quit_coordinator_counted", + "target": "tray_test_quit_coordinator_counted_init" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L152", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_skips_logging_reconfigure_when_unchanged", - "target": "tray_test_live_reload_config" + "source": "tray_test_quit_coordinator_make_coordinator", + "target": "tray_test_quit_coordinator_counted" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L166", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_component_failure_is_isolated", - "target": "tray_test_live_reload_config" + "source": "tray_test_quit_coordinator_test_quit_handles_missing_window_launcher", + "target": "tray_test_quit_coordinator_counted" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L186", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L153", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_rebuilds_lims_only_on_endpoint_change", - "target": "tray_test_live_reload_config" + "source": "tray_test_quit_coordinator_test_safe_count_handles_callable_attribute", + "target": "tray_test_quit_coordinator_counted" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L205", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_rebuilds_plugin_host_only_on_dir_change", - "target": "tray_test_live_reload_config" + "source": "tray_test_quit_coordinator_test_safe_count_handles_callable_that_raises", + "target": "tray_test_quit_coordinator_counted" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L242", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L173", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install", - "target": "tray_test_live_reload_config" + "source": "tray_test_quit_coordinator_test_safe_count_handles_non_numeric", + "target": "tray_test_quit_coordinator_counted" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L79", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L224", "weight": 1.0, - "source": "tray_test_live_reload_config", - "target": "config_models_pathsconfig" + "confidence_score": 1.0, + "source": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true", + "target": "tray_test_quit_coordinator_counted" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_quit_coordinator_counted", + "target": "tray_quit_coordinator_quitcoordinator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L80", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L65", "weight": 1.0, - "source": "tray_test_live_reload_config", - "target": "config_models_limsconfig" + "confidence_score": 1.0, + "source": "tray_test_quit_coordinator_test_idle_predicate_short_circuits", + "target": "tray_test_quit_coordinator_make_coordinator" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L81", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L79", "weight": 1.0, - "source": "tray_test_live_reload_config", - "target": "config_models_loggingconfig" + "confidence_score": 1.0, + "source": "tray_test_quit_coordinator_test_busy_predicate_times_out_and_force_quits", + "target": "tray_test_quit_coordinator_make_coordinator" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L89", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_recordingcomponent", - "target": "tray_test_live_reload_recordingcomponent_init" + "source": "tray_test_quit_coordinator_test_busy_predicate_wait_resets_timer", + "target": "tray_test_quit_coordinator_make_coordinator" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L93", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_recordingcomponent", - "target": "tray_test_live_reload_recordingcomponent_apply_config" + "source": "tray_test_quit_coordinator_test_sigterm_uses_short_timeout", + "target": "tray_test_quit_coordinator_make_coordinator" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L125", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L183", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_running_deps", - "target": "tray_test_live_reload_recordingcomponent" + "source": "tray_test_quit_coordinator_test_force_quit_prompt_exception_defaults_to_force", + "target": "tray_test_quit_coordinator_make_coordinator" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L78", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L200", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_78", - "target": "tray_test_live_reload_recordingcomponent" + "source": "tray_test_quit_coordinator_test_idle_predicate_returns_true_immediately", + "target": "tray_test_quit_coordinator_make_coordinator" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L21", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingcomponent", - "target": "api_app_appdependencies" + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L50", + "weight": 1.0, + "source": "tray_test_quit_coordinator_make_coordinator", + "target": "tray_quit_coordinator_quitcoordinator" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingcomponent", - "target": "config_models_config" + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L139", + "weight": 1.0, + "source": "tray_test_quit_coordinator_test_quit_handles_missing_window_launcher", + "target": "tray_quit_coordinator_quitcoordinator" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingcomponent", - "target": "config_models_equipmentconfig" + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L155", + "weight": 1.0, + "source": "tray_test_quit_coordinator_test_safe_count_handles_callable_attribute", + "target": "tray_quit_coordinator_safe_count" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingcomponent", - "target": "config_models_limsconfig" + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L165", + "weight": 1.0, + "source": "tray_test_quit_coordinator_test_safe_count_handles_callable_that_raises", + "target": "tray_quit_coordinator_safe_count" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingcomponent", - "target": "config_models_loggingconfig" + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L169", + "weight": 1.0, + "source": "tray_test_quit_coordinator_test_safe_count_handles_none_obj", + "target": "tray_quit_coordinator_safe_count" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingcomponent", - "target": "config_models_pathsconfig" + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L175", + "weight": 1.0, + "source": "tray_test_quit_coordinator_test_safe_count_handles_non_numeric", + "target": "tray_quit_coordinator_safe_count" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L87", + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L209", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_87", - "target": "tray_test_live_reload_recordingcomponent" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingcomponent", - "target": "config_models_bandwidthconfig" + "source": "tray_test_quit_coordinator_rationale_209", + "target": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingcomponent", - "target": "config_models_rclonesftptransport" + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_quit_coordinator.py", + "source_location": "L225", + "weight": 1.0, + "source": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true", + "target": "tray_quit_coordinator_quitcoordinator" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L99", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_recordingvalidator", - "target": "tray_test_live_reload_recordingvalidator_init" + "source": "tests_unit_tray_test_window_launcher_py", + "target": "tray_test_window_launcher_python_window_argv" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L102", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_recordingvalidator", - "target": "tray_test_live_reload_recordingvalidator_reconfigure" + "source": "tests_unit_tray_test_window_launcher_py", + "target": "tray_test_window_launcher_test_open_spawns_subprocess" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L124", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_running_deps", - "target": "tray_test_live_reload_recordingvalidator" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L21", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingvalidator", - "target": "api_app_appdependencies" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingvalidator", - "target": "config_models_config" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingvalidator", - "target": "config_models_equipmentconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingvalidator", - "target": "config_models_limsconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingvalidator", - "target": "config_models_loggingconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingvalidator", - "target": "config_models_pathsconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingvalidator", - "target": "config_models_bandwidthconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_recordingvalidator", - "target": "config_models_rclonesftptransport" + "source": "tests_unit_tray_test_window_launcher_py", + "target": "tray_test_window_launcher_test_close_terminates_subprocess" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L113", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_asyncstub", - "target": "tray_test_live_reload_asyncstub_init" + "source": "tests_unit_tray_test_window_launcher_py", + "target": "tray_test_window_launcher_test_close_is_idempotent" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L116", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_asyncstub", - "target": "tray_test_live_reload_asyncstub_start" + "source": "tests_unit_tray_test_window_launcher_py", + "target": "tray_test_window_launcher_test_open_focuses_existing" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L231", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install", - "target": "tray_test_live_reload_asyncstub" + "source": "tests_unit_tray_test_window_launcher_py", + "target": "tray_test_window_launcher_test_resolve_window_executable_prefers_env_var" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L98", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_98", - "target": "tray_test_live_reload_asyncstub" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L21", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_asyncstub", - "target": "api_app_appdependencies" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_asyncstub", - "target": "config_models_config" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_asyncstub", - "target": "config_models_equipmentconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_asyncstub", - "target": "config_models_limsconfig" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_asyncstub", - "target": "config_models_loggingconfig" + "source": "tests_unit_tray_test_window_launcher_py", + "target": "tray_test_window_launcher_test_resolve_window_executable_uses_path" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_asyncstub", - "target": "config_models_pathsconfig" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L85", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_tray_test_window_launcher_py", + "target": "tray_test_window_launcher_test_resolve_window_executable_falls_back_to_module" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L107", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_107", - "target": "tray_test_live_reload_asyncstub" + "source": "tests_unit_tray_test_window_launcher_py", + "target": "tray_test_window_launcher_test_window_executable_override" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_asyncstub", - "target": "config_models_bandwidthconfig" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L103", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_tray_test_window_launcher_py", + "target": "tray_test_window_launcher_test_argv_falls_through_resolve_helper" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_live_reload_asyncstub", - "target": "config_models_rclonesftptransport" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L113", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_tray_test_window_launcher_py", + "target": "tray_test_window_launcher_test_pid_is_none_before_open" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L137", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_reconfigures_existing_components_in_place", - "target": "tray_test_live_reload_running_deps" + "source": "tests_unit_tray_test_window_launcher_py", + "target": "tray_test_window_launcher_test_close_kills_unresponsive_process" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L151", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_skips_logging_reconfigure_when_unchanged", - "target": "tray_test_live_reload_running_deps" + "source": "tray_test_window_launcher_rationale_1", + "target": "tests_unit_tray_test_window_launcher_py" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L164", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_component_failure_is_isolated", - "target": "tray_test_live_reload_running_deps" + "source": "tray_test_window_launcher_test_open_spawns_subprocess", + "target": "tray_test_window_launcher_python_window_argv" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L185", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_rebuilds_lims_only_on_endpoint_change", - "target": "tray_test_live_reload_running_deps" + "source": "tray_test_window_launcher_test_close_terminates_subprocess", + "target": "tray_test_window_launcher_python_window_argv" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L204", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L62", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_test_rebuilds_plugin_host_only_on_dir_change", - "target": "tray_test_live_reload_running_deps" + "source": "tray_test_window_launcher_test_open_focuses_existing", + "target": "tray_test_window_launcher_python_window_argv" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L112", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_112", - "target": "tray_test_live_reload_running_deps" + "source": "tray_test_window_launcher_rationale_19", + "target": "tray_test_window_launcher_python_window_argv" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L122", - "weight": 1.0, - "source": "tray_test_live_reload_running_deps", - "target": "api_app_appdependencies" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L121", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L30", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_121", - "target": "tray_test_live_reload_running_deps" + "source": "tray_test_window_launcher_test_open_spawns_subprocess", + "target": "tray_window_launcher_windowlauncher" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L140", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L43", "weight": 1.0, - "source": "tray_test_live_reload_test_reconfigures_existing_components_in_place", - "target": "tray_dependencies_apply_live_config" + "source": "tray_test_window_launcher_test_close_terminates_subprocess", + "target": "tray_window_launcher_windowlauncher" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L152", - "weight": 1.0, - "source": "tray_test_live_reload_test_skips_logging_reconfigure_when_unchanged", - "target": "tray_dependencies_apply_live_config" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L148", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L54", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_148", - "target": "tray_test_live_reload_test_component_failure_is_isolated" + "source": "tray_test_window_launcher_test_close_is_idempotent", + "target": "tray_window_launcher_windowlauncher" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L168", - "weight": 1.0, - "source": "tray_test_live_reload_test_component_failure_is_isolated", - "target": "tray_dependencies_apply_live_config" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L157", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L61", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_157", - "target": "tray_test_live_reload_test_component_failure_is_isolated" + "source": "tray_test_window_launcher_test_open_focuses_existing", + "target": "tray_window_launcher_windowlauncher" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L191", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L73", "weight": 1.0, - "source": "tray_test_live_reload_test_rebuilds_lims_only_on_endpoint_change", - "target": "tray_dependencies_apply_live_config" + "source": "tray_test_window_launcher_test_resolve_window_executable_prefers_env_var", + "target": "tray_window_launcher_resolve_window_executable" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L209", - "weight": 1.0, - "source": "tray_test_live_reload_test_rebuilds_plugin_host_only_on_dir_change", - "target": "tray_dependencies_apply_live_config" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L220", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L82", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_220", - "target": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install" + "source": "tray_test_window_launcher_test_resolve_window_executable_uses_path", + "target": "tray_window_launcher_resolve_window_executable" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L240", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L90", "weight": 1.0, - "source": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install", - "target": "api_app_appdependencies" + "source": "tray_test_window_launcher_test_resolve_window_executable_falls_back_to_module", + "target": "tray_window_launcher_resolve_window_executable" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L244", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L96", "weight": 1.0, - "source": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install", - "target": "tray_dependencies_apply_live_config" + "source": "tray_test_window_launcher_test_window_executable_override", + "target": "tray_window_launcher_windowlauncher" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_live_reload.py", - "source_location": "L229", + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_live_reload_rationale_229", - "target": "tray_test_live_reload_test_builds_and_starts_components_on_fresh_install" + "source": "tray_test_window_launcher_rationale_104", + "target": "tray_test_window_launcher_test_argv_falls_through_resolve_helper" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/__init__.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L105", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_init_rationale_1", - "target": "tests_unit_tray_init_py" + "source": "tray_test_window_launcher_test_argv_falls_through_resolve_helper", + "target": "tray_window_launcher_windowlauncher" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/tray/__init__.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L114", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_init_rationale_1", - "target": "src_exlab_wizard_tray_init_py" + "source": "tray_test_window_launcher_test_pid_is_none_before_open", + "target": "tray_window_launcher_windowlauncher" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L17", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_window_launcher.py", + "source_location": "L120", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_stubstore" + "source": "tray_test_window_launcher_test_close_kills_unresponsive_process", + "target": "tray_window_launcher_windowlauncher" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L23", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_stubsync" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_macos_register_writes_plist" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L28", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_format_status_idle" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_macos_unregister_removes_plist" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L33", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_format_status_sync_jobs" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_macos_register_is_idempotent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L38", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_format_status_single_job_uses_singular" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_linux_register_writes_systemd_and_desktop" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L43", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_format_status_input_required_singular" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_linux_unregister_removes_both_files" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L48", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_format_status_input_required_plural" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_linux_is_registered_when_only_desktop_present" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L53", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_format_status_combines_sync_and_input_required" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_fakekey" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L58", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_snapshot_status_with_none_components" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_fakewinreg" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L65", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L155", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_snapshot_status_reads_components" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_fake_winreg" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L75", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L161", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_snapshot_status_callable_attributes" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_windows_register_sets_run_value" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L84", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L173", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_ticker_invokes_callback_on_first_tick" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_windows_unregister_deletes_run_value" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L97", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_ticker_does_not_invoke_callback_when_label_unchanged" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_windows_unregister_when_value_missing_is_safe" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L109", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L193", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_ticker_start_and_stop_idempotent" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_windows_open_key_handles_filenotfound_on_query" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L117", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L211", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_ticker_callback_exception_is_swallowed" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_silently_unlink_tolerates_missing" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L127", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L223", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_ticker_thread_runs" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_env_var_root_overrides_constructor" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L149", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L238", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_default_refresh_matches_spec" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_executable_path_property" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L154", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L244", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_safe_int_handles_callable_that_raises" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_default_executable_falls_back_to_sys_executable" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L164", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L250", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_status_py", - "target": "tray_test_status_test_safe_int_handles_non_numeric" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_detect_platform_returns_known_value" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L255", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_status_rationale_1", - "target": "tests_unit_tray_test_status_py" + "source": "tests_unit_tray_test_autostart_py", + "target": "tray_test_autostart_test_detect_platform_dispatch" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L18", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_status_stubstore", - "target": "tray_test_status_stubstore_init" + "source": "tray_test_autostart_rationale_1", + "target": "tests_unit_tray_test_autostart_py" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L67", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L25", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_status_test_snapshot_status_reads_components", - "target": "tray_test_status_stubstore" + "source": "tray_test_autostart_test_macos_register_writes_plist", + "target": "tray_autostart_autostartmanager" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L87", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L41", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_status_test_ticker_invokes_callback_on_first_tick", - "target": "tray_test_status_stubstore" + "source": "tray_test_autostart_test_macos_unregister_removes_plist", + "target": "tray_autostart_autostartmanager" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L100", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L52", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_status_test_ticker_does_not_invoke_callback_when_label_unchanged", - "target": "tray_test_status_stubstore" + "source": "tray_test_autostart_test_macos_register_is_idempotent", + "target": "tray_autostart_autostartmanager" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L137", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L64", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_status_test_ticker_thread_runs", - "target": "tray_test_status_stubstore" + "source": "tray_test_autostart_test_linux_register_writes_systemd_and_desktop", + "target": "tray_autostart_autostartmanager" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_status_stubstore", - "target": "tray_status_statussnapshot" + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L81", + "weight": 1.0, + "source": "tray_test_autostart_test_linux_unregister_removes_both_files", + "target": "tray_autostart_autostartmanager" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_status_stubstore", - "target": "tray_status_statusticker" + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L88", + "weight": 1.0, + "source": "tray_test_autostart_test_linux_is_registered_when_only_desktop_present", + "target": "tray_autostart_autostartmanager" }, { "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L24", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_status_stubsync", - "target": "tray_test_status_stubsync_init" + "source": "tray_test_autostart_fakekey", + "target": "tray_test_autostart_fakekey_init" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L68", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_status_test_snapshot_status_reads_components", - "target": "tray_test_status_stubsync" + "source": "tray_test_autostart_fakekey", + "target": "tray_test_autostart_fakekey_enter" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L88", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_status_test_ticker_invokes_callback_on_first_tick", - "target": "tray_test_status_stubsync" + "source": "tray_test_autostart_fakekey", + "target": "tray_test_autostart_fakekey_exit" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L101", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_status_test_ticker_does_not_invoke_callback_when_label_unchanged", - "target": "tray_test_status_stubsync" + "source": "tray_test_autostart_fakewinreg_openkey", + "target": "tray_test_autostart_fakekey" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L8", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L10", "weight": 0.8, "confidence_score": 0.5, - "source": "tray_test_status_stubsync", - "target": "tray_status_statussnapshot" + "source": "tray_test_autostart_fakekey", + "target": "tray_autostart_autostartmanager" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_status_stubsync", - "target": "tray_status_statusticker" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L118", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_autostart_fakewinreg", + "target": "tray_test_autostart_fakewinreg_init" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L29", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L122", "weight": 1.0, - "source": "tray_test_status_test_format_status_idle", - "target": "tray_status_statussnapshot" + "confidence_score": 1.0, + "source": "tray_test_autostart_fakewinreg", + "target": "tray_test_autostart_fakewinreg_openkey" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L30", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L133", "weight": 1.0, - "source": "tray_test_status_test_format_status_idle", - "target": "tray_status_format_status" + "confidence_score": 1.0, + "source": "tray_test_autostart_fakewinreg", + "target": "tray_test_autostart_fakewinreg_setvalueex" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L34", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L145", "weight": 1.0, - "source": "tray_test_status_test_format_status_sync_jobs", - "target": "tray_status_statussnapshot" + "confidence_score": 1.0, + "source": "tray_test_autostart_fakewinreg", + "target": "tray_test_autostart_fakewinreg_queryvalueex" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L35", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L150", "weight": 1.0, - "source": "tray_test_status_test_format_status_sync_jobs", - "target": "tray_status_format_status" + "confidence_score": 1.0, + "source": "tray_test_autostart_fakewinreg", + "target": "tray_test_autostart_fakewinreg_deletevalue" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L39", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L156", "weight": 1.0, - "source": "tray_test_status_test_format_status_single_job_uses_singular", - "target": "tray_status_statussnapshot" + "confidence_score": 1.0, + "source": "tray_test_autostart_fake_winreg", + "target": "tray_test_autostart_fakewinreg" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L40", - "weight": 1.0, - "source": "tray_test_status_test_format_status_single_job_uses_singular", - "target": "tray_status_format_status" + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_autostart_fakewinreg", + "target": "tray_autostart_autostartmanager" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L44", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L162", "weight": 1.0, - "source": "tray_test_status_test_format_status_input_required_singular", - "target": "tray_status_statussnapshot" + "source": "tray_test_autostart_test_windows_register_sets_run_value", + "target": "tray_autostart_autostartmanager" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L45", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L174", "weight": 1.0, - "source": "tray_test_status_test_format_status_input_required_singular", - "target": "tray_status_format_status" + "source": "tray_test_autostart_test_windows_unregister_deletes_run_value", + "target": "tray_autostart_autostartmanager" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L49", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L189", "weight": 1.0, - "source": "tray_test_status_test_format_status_input_required_plural", - "target": "tray_status_statussnapshot" + "source": "tray_test_autostart_test_windows_unregister_when_value_missing_is_safe", + "target": "tray_autostart_autostartmanager" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L50", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L196", "weight": 1.0, - "source": "tray_test_status_test_format_status_input_required_plural", - "target": "tray_status_format_status" + "confidence_score": 1.0, + "source": "tray_test_autostart_rationale_196", + "target": "tray_test_autostart_test_windows_open_key_handles_filenotfound_on_query" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L54", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L205", "weight": 1.0, - "source": "tray_test_status_test_format_status_combines_sync_and_input_required", - "target": "tray_status_statussnapshot" + "source": "tray_test_autostart_test_windows_open_key_handles_filenotfound_on_query", + "target": "tray_autostart_autostartmanager" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L55", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L212", "weight": 1.0, - "source": "tray_test_status_test_format_status_combines_sync_and_input_required", - "target": "tray_status_format_status" + "confidence_score": 1.0, + "source": "tray_test_autostart_rationale_212", + "target": "tray_test_autostart_test_silently_unlink_tolerates_missing" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L59", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L215", "weight": 1.0, - "source": "tray_test_status_test_snapshot_status_with_none_components", - "target": "tray_status_snapshot_status" + "source": "tray_test_autostart_test_silently_unlink_tolerates_missing", + "target": "tray_autostart_silently_unlink" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L66", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L229", "weight": 1.0, - "source": "tray_test_status_test_snapshot_status_reads_components", - "target": "tray_status_snapshot_status" + "source": "tray_test_autostart_test_env_var_root_overrides_constructor", + "target": "tray_autostart_autostartmanager" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L80", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L239", "weight": 1.0, - "source": "tray_test_status_test_snapshot_status_callable_attributes", - "target": "tray_status_snapshot_status" + "source": "tray_test_autostart_test_executable_path_property", + "target": "tray_autostart_autostartmanager" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L86", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L245", "weight": 1.0, - "source": "tray_test_status_test_ticker_invokes_callback_on_first_tick", - "target": "tray_status_statusticker" + "source": "tray_test_autostart_test_default_executable_falls_back_to_sys_executable", + "target": "tray_autostart_autostartmanager" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L99", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L251", "weight": 1.0, - "source": "tray_test_status_test_ticker_does_not_invoke_callback_when_label_unchanged", - "target": "tray_status_statusticker" + "source": "tray_test_autostart_test_detect_platform_returns_known_value", + "target": "tray_autostart_detect_platform" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L110", + "source_file": "tests/unit/tray/test_autostart.py", + "source_location": "L257", "weight": 1.0, - "source": "tray_test_status_test_ticker_start_and_stop_idempotent", - "target": "tray_status_statusticker" + "source": "tray_test_autostart_test_detect_platform_dispatch", + "target": "tray_autostart_detect_platform" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L121", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L15", "weight": 1.0, - "source": "tray_test_status_test_ticker_callback_exception_is_swallowed", - "target": "tray_status_statusticker" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_stubserverrunner" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L128", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_status_rationale_128", - "target": "tray_test_status_test_ticker_thread_runs" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_stubwindowlauncher" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L136", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L42", "weight": 1.0, - "source": "tray_test_status_test_ticker_thread_runs", - "target": "tray_status_statusticker" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_stubquitcoordinator" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L161", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L51", "weight": 1.0, - "source": "tray_test_status_test_safe_int_handles_callable_that_raises", - "target": "tray_status_safe_int" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_stubstatusticker" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_status.py", - "source_location": "L170", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L68", "weight": 1.0, - "source": "tray_test_status_test_safe_int_handles_non_numeric", - "target": "tray_status_safe_int" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_stubbus" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L21", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_fakeuvicornserver" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_stubautostart" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L44", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_make_runner" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_make_tray" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L60", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_pick_free_port_returns_bindable_port" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_start_server_calls_runner" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L72", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_start_writes_server_json_atomically" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_open_window_delegates" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L89", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_stop_deletes_state_file" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_request_quit_runs_coordinator" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L98", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L110", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_double_start_raises" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_request_quit_calls_icon_stop_when_set" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L108", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_port_property_before_start_raises" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_request_quit_handles_icon_stop_error" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L114", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L126", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_port_property_after_start" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_shutdown_tears_components_down" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L123", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_state_file_property_returns_expected_path" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_run_wires_icon_and_invokes_run_loop" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L128", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_stop_is_idempotent" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_build_default_components" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L135", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L178", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_start_creates_state_dir_if_missing" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_main_uses_run_helper" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L145", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L201", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_is_running_tracks_thread_lifecycle" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_main_handles_keyboard_interrupt" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L157", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L218", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_real_uvicorn_resolves_lazily" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_run_returns_one_on_icon_failure" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L170", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L232", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_delete_state_file_handles_missing" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_request_quit_uses_running_loop_when_present" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L176", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L269", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_server_runner_py", - "target": "tray_test_server_runner_test_stop_handles_attribute_error_on_should_exit" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_build_default_app" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L302", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_rationale_1", - "target": "tests_unit_tray_test_server_runner_py" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_build_default_components_falls_back_to_default_app" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L24", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L314", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_fakeuvicornserver", - "target": "tray_test_server_runner_fakeuvicornserver_init" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_parse_argv_defaults_no_smoke" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L30", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L323", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_fakeuvicornserver", - "target": "tray_test_server_runner_fakeuvicornserver_run" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_parse_argv_smoke_flag" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L49", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L331", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_make_runner", - "target": "tray_test_server_runner_fakeuvicornserver" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_parse_argv_no_autostart_prompt_silently_accepted" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L22", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L339", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_rationale_22", - "target": "tray_test_server_runner_fakeuvicornserver" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_run_smoke_starts_server_and_stops_on_signal" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_server_runner_fakeuvicornserver", - "target": "tray_server_runner_serverrunner" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L376", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_main_smoke_dispatches_to_run_smoke" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L73", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L397", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_test_start_writes_server_json_atomically", - "target": "tray_test_server_runner_make_runner" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_parse_argv_version_flag" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L90", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L405", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_test_stop_deletes_state_file", - "target": "tray_test_server_runner_make_runner" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_main_version_prints_version_and_exits_zero" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L99", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L423", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_test_double_start_raises", - "target": "tray_test_server_runner_make_runner" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_parse_argv_defaults_no_test_flags" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L109", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L432", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_test_port_property_before_start_raises", - "target": "tray_test_server_runner_make_runner" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_parse_argv_test_flag" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L115", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L440", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_test_port_property_after_start", - "target": "tray_test_server_runner_make_runner" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_parse_argv_test_with_samples" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L124", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L448", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_test_state_file_property_returns_expected_path", - "target": "tray_test_server_runner_make_runner" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_parse_argv_samples_without_test_errors" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L129", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L462", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_test_stop_is_idempotent", - "target": "tray_test_server_runner_make_runner" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_mode_env" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L137", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L487", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_test_start_creates_state_dir_if_missing", - "target": "tray_test_server_runner_make_runner" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_main_test_flag_sets_env_and_bootstraps_config" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L146", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L524", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_test_is_running_tracks_thread_lifecycle", - "target": "tray_test_server_runner_make_runner" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_main_test_does_not_overwrite_existing_config" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L178", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L539", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_test_stop_handles_attribute_error_on_should_exit", - "target": "tray_test_server_runner_make_runner" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_main_test_with_samples_adds_equipment" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L55", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L562", "weight": 1.0, - "source": "tray_test_server_runner_make_runner", - "target": "tray_server_runner_serverrunner" + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_main_test_with_samples_repeat_boot_is_noop", + "confidence_score": 1.0 }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L61", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L555", "weight": 1.0, - "source": "tray_test_server_runner_test_pick_free_port_returns_bindable_port", - "target": "tray_server_runner_pick_free_port" + "confidence_score": 1.0, + "source": "tests_unit_tray_test_main_py", + "target": "tray_test_main_test_main_without_test_does_not_set_env" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L158", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_rationale_158", - "target": "tray_test_server_runner_test_real_uvicorn_resolves_lazily" + "source": "tray_test_main_rationale_1", + "target": "tests_unit_tray_test_main_py" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L164", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L16", "weight": 1.0, - "source": "tray_test_server_runner_test_real_uvicorn_resolves_lazily", - "target": "tray_server_runner_serverrunner" + "confidence_score": 1.0, + "source": "tray_test_main_stubserverrunner", + "target": "tray_test_main_stubserverrunner_init" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L171", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L22", "weight": 1.0, - "source": "tray_test_server_runner_test_delete_state_file_handles_missing", - "target": "tray_server_runner_serverrunner" + "confidence_score": 1.0, + "source": "tray_test_main_stubserverrunner", + "target": "tray_test_main_stubserverrunner_start" }, { - "relation": "rationale_for", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_server_runner.py", - "source_location": "L177", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_server_runner_rationale_177", - "target": "tray_test_server_runner_test_stop_handles_attribute_error_on_should_exit" + "source": "tray_test_main_stubserverrunner", + "target": "tray_test_main_stubserverrunner_stop" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L19", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_notify_calls_injected_callable" + "source": "tray_test_main_make_tray", + "target": "tray_test_main_stubserverrunner" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_main_stubserverrunner", + "target": "tray_main_trayapp" + }, + { + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L29", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_notify_swallows_notifier_exceptions" + "source": "tray_test_main_stubwindowlauncher", + "target": "tray_test_main_stubwindowlauncher_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L37", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_bus_emits_after_coalescing_window" + "source": "tray_test_main_stubwindowlauncher", + "target": "tray_test_main_stubwindowlauncher_open" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L63", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_bus_suppresses_when_window_foregrounded" + "source": "tray_test_main_stubwindowlauncher", + "target": "tray_test_main_stubwindowlauncher_close" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L74", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_bus_separate_kinds_separate_buckets" + "source": "tray_test_main_make_tray", + "target": "tray_test_main_stubwindowlauncher" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_main_stubwindowlauncher", + "target": "tray_main_trayapp" + }, + { + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L89", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_bus_cancel_all_drops_pending" + "source": "tray_test_main_stubquitcoordinator", + "target": "tray_test_main_stubquitcoordinator_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L102", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_bus_emits_singleton_message_unchanged" + "source": "tray_test_main_stubquitcoordinator", + "target": "tray_test_main_stubquitcoordinator_quit" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L84", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_main_make_tray", + "target": "tray_test_main_stubquitcoordinator" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_main_stubquitcoordinator", + "target": "tray_main_trayapp" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L114", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_coalescing_window_constant_matches_spec" + "source": "tray_test_main_stubstatusticker", + "target": "tray_test_main_stubstatusticker_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L118", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_coalesced_message_plugin_input_required_plural" + "source": "tray_test_main_stubstatusticker", + "target": "tray_test_main_stubstatusticker_start" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L122", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_coalesced_message_plugin_input_required_singular" + "source": "tray_test_main_stubstatusticker", + "target": "tray_test_main_stubstatusticker_stop" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L126", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_coalesced_message_sync_failed_plural" + "source": "tray_test_main_stubstatusticker", + "target": "tray_test_main_stubstatusticker_tick_once" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L130", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L85", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_coalesced_message_sync_failed_singular" + "source": "tray_test_main_make_tray", + "target": "tray_test_main_stubstatusticker" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L134", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_coalesced_message_unknown_kind" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_main_stubstatusticker", + "target": "tray_main_trayapp" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L138", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L69", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_bus_timer_fires_after_window" + "source": "tray_test_main_stubbus", + "target": "tray_test_main_stubbus_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L153", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_default_notifier_returns_callable" + "source": "tray_test_main_stubbus", + "target": "tray_test_main_stubbus_cancel_all" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L161", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_noop_notifier_swallows_arbitrary_kwargs" + "source": "tray_test_main_make_tray", + "target": "tray_test_main_stubbus" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L168", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_notify_uses_default_notifier_when_none" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_main_stubbus", + "target": "tray_main_trayapp" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L180", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_notifications_py", - "target": "tray_test_notifications_test_flush_with_already_drained_bucket" + "source": "tray_test_main_make_tray", + "target": "tray_test_main_stubautostart" }, { - "relation": "rationale_for", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_test_main_stubautostart", + "target": "tray_main_trayapp" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_notifications_rationale_1", - "target": "tests_unit_tray_test_notifications_py" + "source": "tray_test_main_test_start_server_calls_runner", + "target": "tray_test_main_make_tray" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L25", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L99", "weight": 1.0, - "source": "tray_test_notifications_test_notify_calls_injected_callable", - "target": "tray_notifications_notify" + "confidence_score": 1.0, + "source": "tray_test_main_test_open_window_delegates", + "target": "tray_test_main_make_tray" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L34", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L105", "weight": 1.0, - "source": "tray_test_notifications_test_notify_swallows_notifier_exceptions", - "target": "tray_notifications_notify" + "confidence_score": 1.0, + "source": "tray_test_main_test_request_quit_runs_coordinator", + "target": "tray_test_main_make_tray" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L43", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L111", "weight": 1.0, - "source": "tray_test_notifications_test_bus_emits_after_coalescing_window", - "target": "tray_notifications_notificationbus" + "confidence_score": 1.0, + "source": "tray_test_main_test_request_quit_calls_icon_stop_when_set", + "target": "tray_test_main_make_tray" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L65", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L119", "weight": 1.0, - "source": "tray_test_notifications_test_bus_suppresses_when_window_foregrounded", - "target": "tray_notifications_notificationbus" + "confidence_score": 1.0, + "source": "tray_test_main_test_request_quit_handles_icon_stop_error", + "target": "tray_test_main_make_tray" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L76", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L127", "weight": 1.0, - "source": "tray_test_notifications_test_bus_separate_kinds_separate_buckets", - "target": "tray_notifications_notificationbus" + "confidence_score": 1.0, + "source": "tray_test_main_test_shutdown_tears_components_down", + "target": "tray_test_main_make_tray" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L91", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L136", "weight": 1.0, - "source": "tray_test_notifications_test_bus_cancel_all_drops_pending", - "target": "tray_notifications_notificationbus" + "confidence_score": 1.0, + "source": "tray_test_main_test_run_wires_icon_and_invokes_run_loop", + "target": "tray_test_main_make_tray" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L104", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L207", "weight": 1.0, - "source": "tray_test_notifications_test_bus_emits_singleton_message_unchanged", - "target": "tray_notifications_notificationbus" + "confidence_score": 1.0, + "source": "tray_test_main_test_main_handles_keyboard_interrupt", + "target": "tray_test_main_make_tray" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L119", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L219", "weight": 1.0, - "source": "tray_test_notifications_test_coalesced_message_plugin_input_required_plural", - "target": "tray_notifications_coalesced_message" + "confidence_score": 1.0, + "source": "tray_test_main_test_run_returns_one_on_icon_failure", + "target": "tray_test_main_make_tray" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L123", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L244", "weight": 1.0, - "source": "tray_test_notifications_test_coalesced_message_plugin_input_required_singular", - "target": "tray_notifications_coalesced_message" + "confidence_score": 1.0, + "source": "tray_test_main_test_request_quit_uses_running_loop_when_present", + "target": "tray_test_main_make_tray" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L127", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L482", "weight": 1.0, - "source": "tray_test_notifications_test_coalesced_message_sync_failed_plural", - "target": "tray_notifications_coalesced_message" + "confidence_score": 1.0, + "source": "tray_test_main_test_mode_env", + "target": "tray_test_main_make_tray" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L131", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L81", "weight": 1.0, - "source": "tray_test_notifications_test_coalesced_message_sync_failed_singular", - "target": "tray_notifications_coalesced_message" + "source": "tray_test_main_make_tray", + "target": "tray_main_trayapp" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L135", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L171", "weight": 1.0, - "source": "tray_test_notifications_test_coalesced_message_unknown_kind", - "target": "tray_notifications_coalesced_message" + "source": "tray_test_main_test_build_default_components", + "target": "tray_main_build_default_components" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L139", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_notifications_rationale_139", - "target": "tray_test_notifications_test_bus_timer_fires_after_window" + "source": "tray_test_main_rationale_179", + "target": "tray_test_main_test_main_uses_run_helper" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L141", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L235", "weight": 1.0, - "source": "tray_test_notifications_test_bus_timer_fires_after_window", - "target": "tray_notifications_notificationbus" + "confidence_score": 1.0, + "source": "tray_test_main_rationale_235", + "target": "tray_test_main_test_request_quit_uses_running_loop_when_present" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L154", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L270", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_notifications_rationale_154", - "target": "tray_test_notifications_test_default_notifier_returns_callable" + "source": "tray_test_main_rationale_270", + "target": "tray_test_main_test_build_default_app" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L157", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L305", "weight": 1.0, - "source": "tray_test_notifications_test_default_notifier_returns_callable", - "target": "tray_notifications_default_notifier" + "confidence_score": 1.0, + "source": "tray_test_main_rationale_305", + "target": "tray_test_main_test_build_default_components_falls_back_to_default_app" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L162", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L315", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_notifications_rationale_162", - "target": "tray_test_notifications_test_noop_notifier_swallows_arbitrary_kwargs" + "source": "tray_test_main_rationale_315", + "target": "tray_test_main_test_parse_argv_defaults_no_smoke" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L165", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L318", "weight": 1.0, - "source": "tray_test_notifications_test_noop_notifier_swallows_arbitrary_kwargs", - "target": "tray_notifications_noop_notifier" + "source": "tray_test_main_test_parse_argv_defaults_no_smoke", + "target": "tray_main_parse_argv" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L324", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_test_main_rationale_324", + "target": "tray_test_main_test_parse_argv_smoke_flag" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L176", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L327", "weight": 1.0, - "source": "tray_test_notifications_test_notify_uses_default_notifier_when_none", - "target": "tray_notifications_notify" + "source": "tray_test_main_test_parse_argv_smoke_flag", + "target": "tray_main_parse_argv" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L181", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L332", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_notifications_rationale_181", - "target": "tray_test_notifications_test_flush_with_already_drained_bucket" + "source": "tray_test_main_rationale_332", + "target": "tray_test_main_test_parse_argv_no_autostart_prompt_silently_accepted" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_notifications.py", - "source_location": "L183", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L335", "weight": 1.0, - "source": "tray_test_notifications_test_flush_with_already_drained_bucket", - "target": "tray_notifications_notificationbus" + "source": "tray_test_main_test_parse_argv_no_autostart_prompt_silently_accepted", + "target": "tray_main_parse_argv" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L17", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L342", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_stubserver" + "source": "tray_test_main_rationale_342", + "target": "tray_test_main_test_run_smoke_starts_server_and_stops_on_signal" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L25", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L379", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_stubwindow" + "source": "tray_test_main_rationale_379", + "target": "tray_test_main_test_main_smoke_dispatches_to_run_smoke" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L33", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L398", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_counted" + "source": "tray_test_main_rationale_398", + "target": "tray_test_main_test_parse_argv_version_flag" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L38", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L401", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_make_coordinator" + "source": "tray_test_main_test_parse_argv_version_flag", + "target": "tray_main_parse_argv" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L64", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L408", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_idle_predicate_short_circuits" + "source": "tray_test_main_rationale_408", + "target": "tray_test_main_test_main_version_prints_version_and_exits_zero" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L72", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L424", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_busy_predicate_times_out_and_force_quits" + "source": "tray_test_main_rationale_424", + "target": "tray_test_main_test_parse_argv_defaults_no_test_flags" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L91", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L427", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_busy_predicate_wait_resets_timer" + "source": "tray_test_main_test_parse_argv_defaults_no_test_flags", + "target": "tray_main_parse_argv" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L111", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L435", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_sigterm_uses_short_timeout" + "source": "tray_test_main_test_parse_argv_test_flag", + "target": "tray_main_parse_argv" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L137", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L443", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_quit_handles_missing_window_launcher" + "source": "tray_test_main_test_parse_argv_test_with_samples", + "target": "tray_main_parse_argv" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L152", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L451", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_safe_count_handles_callable_attribute" + "source": "tray_test_main_rationale_451", + "target": "tray_test_main_test_parse_argv_samples_without_test_errors" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L158", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L455", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_safe_count_handles_callable_that_raises" + "source": "tray_test_main_test_parse_argv_samples_without_test_errors", + "target": "tray_main_parse_argv" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L168", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L463", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_safe_count_handles_none_obj" + "source": "tray_test_main_rationale_463", + "target": "tray_test_main_test_mode_env" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L172", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L488", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_safe_count_handles_non_numeric" + "source": "tray_test_main_rationale_488", + "target": "tray_test_main_test_main_test_flag_sets_env_and_bootstraps_config" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L179", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L508", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_force_quit_prompt_exception_defaults_to_force" + "source": "tray_test_main_test_main_test_flag_sets_env_and_bootstraps_config", + "target": "config_loader_load_config" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L192", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L525", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_default_timeout_constants_match_spec" + "source": "tray_test_main_rationale_525", + "target": "tray_test_main_test_main_test_does_not_overwrite_existing_config" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L199", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L546", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_idle_predicate_returns_true_immediately" + "source": "tray_test_main_test_main_test_with_samples_adds_equipment", + "target": "config_loader_load_config" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L208", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L563", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_quit_coordinator_py", - "target": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true" + "source": "tray_test_main_rationale_563", + "target": "tray_test_main_test_main_test_with_samples_repeat_boot_is_noop", + "confidence_score": 1.0 }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L1", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L580", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_rationale_1", - "target": "tests_unit_tray_test_quit_coordinator_py" + "source": "tray_test_main_rationale_580", + "target": "tray_test_main_test_main_without_test_does_not_set_env", + "confidence_score": 1.0 }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L18", + "source_file": "tests/unit/tray/test_main.py", + "source_location": "L556", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_stubserver", - "target": "tray_test_quit_coordinator_stubserver_init" + "source": "tray_test_main_rationale_556", + "target": "tray_test_main_test_main_without_test_does_not_set_env" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L21", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_stubserver", - "target": "tray_test_quit_coordinator_stubserver_stop" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_system_fields" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L46", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L73", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_make_coordinator", - "target": "tray_test_quit_coordinator_stubserver" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_ctx" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L138", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L99", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_quit_handles_missing_window_launcher", - "target": "tray_test_quit_coordinator_stubserver" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_generator" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L210", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true", - "target": "tray_test_quit_coordinator_stubserver" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_quit_coordinator_stubserver", - "target": "tray_quit_coordinator_quitcoordinator" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_generate_writes_both_files" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L26", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_stubwindow", - "target": "tray_test_quit_coordinator_stubwindow_init" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_readme_starts_with_yaml_front_matter" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L29", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_stubwindow", - "target": "tray_test_quit_coordinator_stubwindow_close" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_readme_body_includes_label_and_objective" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L47", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_make_coordinator", - "target": "tray_test_quit_coordinator_stubwindow" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_readme_fields_json_round_trips" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L211", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L192", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true", - "target": "tray_test_quit_coordinator_stubwindow" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_quit_coordinator_stubwindow", - "target": "tray_quit_coordinator_quitcoordinator" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_empty_core_field_rejected" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L34", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L201", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_counted", - "target": "tray_test_quit_coordinator_counted_init" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_label_over_max_length_rejected" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L48", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_make_coordinator", - "target": "tray_test_quit_coordinator_counted" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_objective_over_max_length_rejected" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L142", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L222", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_quit_handles_missing_window_launcher", - "target": "tray_test_quit_coordinator_counted" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_required_template_field_missing_raises" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L153", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L231", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_safe_count_handles_callable_attribute", - "target": "tray_test_quit_coordinator_counted" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_required_config_field_missing_raises" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L159", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L247", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_safe_count_handles_callable_that_raises", - "target": "tray_test_quit_coordinator_counted" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_duplicate_field_id_across_layers_raises" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L173", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L263", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_safe_count_handles_non_numeric", - "target": "tray_test_quit_coordinator_counted" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_custom_field_label_collides_with_template_id" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L224", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L281", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true", - "target": "tray_test_quit_coordinator_counted" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_quit_coordinator_counted", - "target": "tray_quit_coordinator_quitcoordinator" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_core_field_redeclared_in_template_raises" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L65", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L290", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_idle_predicate_short_circuits", - "target": "tray_test_quit_coordinator_make_coordinator" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_core_field_redeclared_in_config_raises" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L79", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L304", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_busy_predicate_times_out_and_force_quits", - "target": "tray_test_quit_coordinator_make_coordinator" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_project_level_system_run_is_none" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L98", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L313", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_busy_predicate_wait_resets_timer", - "target": "tray_test_quit_coordinator_make_coordinator" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_run_level_experimental_run_name" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L117", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L322", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_sigterm_uses_short_timeout", - "target": "tray_test_quit_coordinator_make_coordinator" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_run_level_test_run_name" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L183", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L336", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_force_quit_prompt_exception_defaults_to_force", - "target": "tray_test_quit_coordinator_make_coordinator" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_string_type_accepts_string_rejects_int" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L200", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L354", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_test_idle_predicate_returns_true_immediately", - "target": "tray_test_quit_coordinator_make_coordinator" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L50", - "weight": 1.0, - "source": "tray_test_quit_coordinator_make_coordinator", - "target": "tray_quit_coordinator_quitcoordinator" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L139", - "weight": 1.0, - "source": "tray_test_quit_coordinator_test_quit_handles_missing_window_launcher", - "target": "tray_quit_coordinator_quitcoordinator" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L155", - "weight": 1.0, - "source": "tray_test_quit_coordinator_test_safe_count_handles_callable_attribute", - "target": "tray_quit_coordinator_safe_count" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L165", - "weight": 1.0, - "source": "tray_test_quit_coordinator_test_safe_count_handles_callable_that_raises", - "target": "tray_quit_coordinator_safe_count" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L169", - "weight": 1.0, - "source": "tray_test_quit_coordinator_test_safe_count_handles_none_obj", - "target": "tray_quit_coordinator_safe_count" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L175", - "weight": 1.0, - "source": "tray_test_quit_coordinator_test_safe_count_handles_non_numeric", - "target": "tray_quit_coordinator_safe_count" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_text_type_accepts_multiline_rejects_list" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L209", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L370", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_quit_coordinator_rationale_209", - "target": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_choice_type_accepts_listed_rejects_other" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_quit_coordinator.py", - "source_location": "L225", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L386", "weight": 1.0, - "source": "tray_test_quit_coordinator_test_predicate_eventually_becomes_true", - "target": "tray_quit_coordinator_quitcoordinator" + "confidence_score": 1.0, + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_choice_without_options_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L18", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L396", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_window_launcher_py", - "target": "tray_test_window_launcher_python_window_argv" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_date_type_accepts_iso8601_rejects_garbage" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L29", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L419", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_window_launcher_py", - "target": "tray_test_window_launcher_test_open_spawns_subprocess" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_date_type_rejects_non_string" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L42", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L429", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_window_launcher_py", - "target": "tray_test_window_launcher_test_close_terminates_subprocess" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_boolean_type_accepts_bool_rejects_string" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L53", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L449", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_window_launcher_py", - "target": "tray_test_window_launcher_test_close_is_idempotent" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_unknown_field_type_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L60", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L459", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_window_launcher_py", - "target": "tray_test_window_launcher_test_open_focuses_existing" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_choice_type_rejects_non_string_value" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L71", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L476", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_window_launcher_py", - "target": "tray_test_window_launcher_test_resolve_window_executable_prefers_env_var" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_generate_is_idempotent_byte_identical" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L76", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L512", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_window_launcher_py", - "target": "tray_test_window_launcher_test_resolve_window_executable_uses_path" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_generated_at_uses_z_suffix" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L85", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L520", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_window_launcher_py", - "target": "tray_test_window_launcher_test_resolve_window_executable_falls_back_to_module" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_cache_dir_created_on_demand" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L95", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L529", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_window_launcher_py", - "target": "tray_test_window_launcher_test_window_executable_override" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_value_without_declaration_skips_typecheck" }, { "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L103", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L546", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_window_launcher_py", - "target": "tray_test_window_launcher_test_argv_falls_through_resolve_helper" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_optional_empty_field_is_skipped" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L113", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L556", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_window_launcher_py", - "target": "tray_test_window_launcher_test_pid_is_none_before_open" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_required_field_present_with_none_raises" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L119", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L569", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_window_launcher_py", - "target": "tray_test_window_launcher_test_close_kills_unresponsive_process" + "source": "tests_unit_readme_test_generator_py", + "target": "readme_test_generator_test_generated_at_uses_z_for_naive_datetime" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", + "source_file": "tests/unit/readme/test_generator.py", "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_window_launcher_rationale_1", - "target": "tests_unit_tray_test_window_launcher_py" + "source": "readme_test_generator_rationale_1", + "target": "tests_unit_readme_test_generator_py" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L31", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_window_launcher_test_open_spawns_subprocess", - "target": "tray_test_window_launcher_python_window_argv" + "source": "readme_test_generator_ctx", + "target": "readme_test_generator_system_fields" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L44", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L305", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_window_launcher_test_close_terminates_subprocess", - "target": "tray_test_window_launcher_python_window_argv" + "source": "readme_test_generator_test_project_level_system_run_is_none", + "target": "readme_test_generator_system_fields" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L62", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L314", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_window_launcher_test_open_focuses_existing", - "target": "tray_test_window_launcher_python_window_argv" + "source": "readme_test_generator_test_run_level_experimental_run_name", + "target": "readme_test_generator_system_fields" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L19", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L323", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_window_launcher_rationale_19", - "target": "tray_test_window_launcher_python_window_argv" + "source": "readme_test_generator_test_run_level_test_run_name", + "target": "readme_test_generator_system_fields" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L30", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L62", "weight": 1.0, - "source": "tray_test_window_launcher_test_open_spawns_subprocess", - "target": "tray_window_launcher_windowlauncher" + "source": "readme_test_generator_system_fields", + "target": "readme_generator_systemfields" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L43", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L110", "weight": 1.0, - "source": "tray_test_window_launcher_test_close_terminates_subprocess", - "target": "tray_window_launcher_windowlauncher" + "confidence_score": 1.0, + "source": "readme_test_generator_test_generate_writes_both_files", + "target": "readme_test_generator_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L54", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L121", "weight": 1.0, - "source": "tray_test_window_launcher_test_close_is_idempotent", - "target": "tray_window_launcher_windowlauncher" + "confidence_score": 1.0, + "source": "readme_test_generator_test_readme_starts_with_yaml_front_matter", + "target": "readme_test_generator_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L61", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L140", "weight": 1.0, - "source": "tray_test_window_launcher_test_open_focuses_existing", - "target": "tray_window_launcher_windowlauncher" + "confidence_score": 1.0, + "source": "readme_test_generator_test_readme_body_includes_label_and_objective", + "target": "readme_test_generator_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L73", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L151", "weight": 1.0, - "source": "tray_test_window_launcher_test_resolve_window_executable_prefers_env_var", - "target": "tray_window_launcher_resolve_window_executable" + "confidence_score": 1.0, + "source": "readme_test_generator_test_readme_fields_json_round_trips", + "target": "readme_test_generator_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L82", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L197", "weight": 1.0, - "source": "tray_test_window_launcher_test_resolve_window_executable_uses_path", - "target": "tray_window_launcher_resolve_window_executable" + "confidence_score": 1.0, + "source": "readme_test_generator_test_empty_core_field_rejected", + "target": "readme_test_generator_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L90", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L204", "weight": 1.0, - "source": "tray_test_window_launcher_test_resolve_window_executable_falls_back_to_module", - "target": "tray_window_launcher_resolve_window_executable" + "confidence_score": 1.0, + "source": "readme_test_generator_test_label_over_max_length_rejected", + "target": "readme_test_generator_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L96", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L213", "weight": 1.0, - "source": "tray_test_window_launcher_test_window_executable_override", - "target": "tray_window_launcher_windowlauncher" + "confidence_score": 1.0, + "source": "readme_test_generator_test_objective_over_max_length_rejected", + "target": "readme_test_generator_ctx" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L104", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L227", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_window_launcher_rationale_104", - "target": "tray_test_window_launcher_test_argv_falls_through_resolve_helper" + "source": "readme_test_generator_test_required_template_field_missing_raises", + "target": "readme_test_generator_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L105", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L237", "weight": 1.0, - "source": "tray_test_window_launcher_test_argv_falls_through_resolve_helper", - "target": "tray_window_launcher_windowlauncher" + "confidence_score": 1.0, + "source": "readme_test_generator_test_required_config_field_missing_raises", + "target": "readme_test_generator_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L114", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L255", "weight": 1.0, - "source": "tray_test_window_launcher_test_pid_is_none_before_open", - "target": "tray_window_launcher_windowlauncher" + "confidence_score": 1.0, + "source": "readme_test_generator_test_duplicate_field_id_across_layers_raises", + "target": "readme_test_generator_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_window_launcher.py", - "source_location": "L120", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L271", "weight": 1.0, - "source": "tray_test_window_launcher_test_close_kills_unresponsive_process", - "target": "tray_window_launcher_windowlauncher" + "confidence_score": 1.0, + "source": "readme_test_generator_test_custom_field_label_collides_with_template_id", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L24", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L286", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_macos_register_writes_plist" + "source": "readme_test_generator_test_core_field_redeclared_in_template_raises", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L40", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L295", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_macos_unregister_removes_plist" + "source": "readme_test_generator_test_core_field_redeclared_in_config_raises", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L51", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L306", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_macos_register_is_idempotent" + "source": "readme_test_generator_test_project_level_system_run_is_none", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L63", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L315", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_linux_register_writes_systemd_and_desktop" + "source": "readme_test_generator_test_run_level_experimental_run_name", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L80", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L324", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_linux_unregister_removes_both_files" + "source": "readme_test_generator_test_run_level_test_run_name", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L87", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L343", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_linux_is_registered_when_only_desktop_present" + "source": "readme_test_generator_test_string_type_accepts_string_rejects_int", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L100", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L360", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_fakekey" + "source": "readme_test_generator_test_text_type_accepts_multiline_rejects_list", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L112", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L376", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_fakewinreg" + "source": "readme_test_generator_test_choice_type_accepts_listed_rejects_other", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L155", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L391", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_fake_winreg" + "source": "readme_test_generator_test_choice_without_options_raises", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L161", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L402", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_windows_register_sets_run_value" + "source": "readme_test_generator_test_date_type_accepts_iso8601_rejects_garbage", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L173", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L424", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_windows_unregister_deletes_run_value" + "source": "readme_test_generator_test_date_type_rejects_non_string", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L185", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L435", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_windows_unregister_when_value_missing_is_safe" + "source": "readme_test_generator_test_boolean_type_accepts_bool_rejects_string", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L193", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L454", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_windows_open_key_handles_filenotfound_on_query" + "source": "readme_test_generator_test_unknown_field_type_raises", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L211", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L466", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_silently_unlink_tolerates_missing" + "source": "readme_test_generator_test_choice_type_rejects_non_string_value", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L223", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L480", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_env_var_root_overrides_constructor" + "source": "readme_test_generator_test_generate_is_idempotent_byte_identical", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L238", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L513", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_executable_path_property" + "source": "readme_test_generator_test_generated_at_uses_z_suffix", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L244", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L523", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_default_executable_falls_back_to_sys_executable" + "source": "readme_test_generator_test_cache_dir_created_on_demand", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L250", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L538", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_detect_platform_returns_known_value" + "source": "readme_test_generator_test_value_without_declaration_skips_typecheck", + "target": "readme_test_generator_ctx" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L255", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L551", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_autostart_py", - "target": "tray_test_autostart_test_detect_platform_dispatch" + "source": "readme_test_generator_test_optional_empty_field_is_skipped", + "target": "readme_test_generator_ctx" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L1", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L564", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_autostart_rationale_1", - "target": "tests_unit_tray_test_autostart_py" + "source": "readme_test_generator_test_required_field_present_with_none_raises", + "target": "readme_test_generator_ctx" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L25", + "confidence": "EXTRACTED", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L582", "weight": 1.0, - "source": "tray_test_autostart_test_macos_register_writes_plist", - "target": "tray_autostart_autostartmanager" + "confidence_score": 1.0, + "source": "readme_test_generator_test_generated_at_uses_z_for_naive_datetime", + "target": "readme_test_generator_ctx" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L41", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L86", "weight": 1.0, - "source": "tray_test_autostart_test_macos_unregister_removes_plist", - "target": "tray_autostart_autostartmanager" + "source": "readme_test_generator_ctx", + "target": "readme_generator_readmecontext" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L52", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L88", "weight": 1.0, - "source": "tray_test_autostart_test_macos_register_is_idempotent", - "target": "tray_autostart_autostartmanager" + "source": "readme_test_generator_ctx", + "target": "readme_generator_corefields" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L64", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L100", "weight": 1.0, - "source": "tray_test_autostart_test_linux_register_writes_systemd_and_desktop", - "target": "tray_autostart_autostartmanager" + "source": "readme_test_generator_generator", + "target": "readme_generator_readmegenerator" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L81", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L154", "weight": 1.0, - "source": "tray_test_autostart_test_linux_unregister_removes_both_files", - "target": "tray_autostart_autostartmanager" + "source": "readme_test_generator_test_readme_fields_json_round_trips", + "target": "readme_generator_customfield" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L88", - "weight": 1.0, - "source": "tray_test_autostart_test_linux_is_registered_when_only_desktop_present", - "target": "tray_autostart_autostartmanager" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L101", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_autostart_fakekey", - "target": "tray_test_autostart_fakekey_init" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L105", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_autostart_fakekey", - "target": "tray_test_autostart_fakekey_enter" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L108", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L156", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_autostart_fakekey", - "target": "tray_test_autostart_fakekey_exit" + "source": "readme_test_generator_test_readme_fields_json_round_trips", + "target": "readme_generator_templatefielddecl" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L131", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_autostart_fakewinreg_openkey", - "target": "tray_test_autostart_fakekey" - }, - { - "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_autostart_fakekey", - "target": "tray_autostart_autostartmanager" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L118", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_autostart_fakewinreg", - "target": "tray_test_autostart_fakewinreg_init" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L122", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_autostart_fakewinreg", - "target": "tray_test_autostart_fakewinreg_openkey" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L133", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_autostart_fakewinreg", - "target": "tray_test_autostart_fakewinreg_setvalueex" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L145", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_autostart_fakewinreg", - "target": "tray_test_autostart_fakewinreg_queryvalueex" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L150", + "confidence_score": 0.8, + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L225", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_autostart_fakewinreg", - "target": "tray_test_autostart_fakewinreg_deletevalue" + "source": "readme_test_generator_test_required_template_field_missing_raises", + "target": "readme_generator_templatefielddecl" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L156", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_autostart_fake_winreg", - "target": "tray_test_autostart_fakewinreg" - }, - { - "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_autostart_fakewinreg", - "target": "tray_autostart_autostartmanager" + "confidence_score": 0.8, + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L234", + "weight": 1.0, + "source": "readme_test_generator_test_required_config_field_missing_raises", + "target": "readme_generator_templatefielddecl" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L162", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L250", "weight": 1.0, - "source": "tray_test_autostart_test_windows_register_sets_run_value", - "target": "tray_autostart_autostartmanager" + "source": "readme_test_generator_test_duplicate_field_id_across_layers_raises", + "target": "readme_generator_templatefielddecl" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L174", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L266", "weight": 1.0, - "source": "tray_test_autostart_test_windows_unregister_deletes_run_value", - "target": "tray_autostart_autostartmanager" + "source": "readme_test_generator_test_custom_field_label_collides_with_template_id", + "target": "readme_generator_templatefielddecl" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L189", - "weight": 1.0, - "source": "tray_test_autostart_test_windows_unregister_when_value_missing_is_safe", - "target": "tray_autostart_autostartmanager" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L196", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L267", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_autostart_rationale_196", - "target": "tray_test_autostart_test_windows_open_key_handles_filenotfound_on_query" + "source": "readme_test_generator_test_custom_field_label_collides_with_template_id", + "target": "readme_generator_customfield" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L205", - "weight": 1.0, - "source": "tray_test_autostart_test_windows_open_key_handles_filenotfound_on_query", - "target": "tray_autostart_autostartmanager" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L212", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L284", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_autostart_rationale_212", - "target": "tray_test_autostart_test_silently_unlink_tolerates_missing" + "source": "readme_test_generator_test_core_field_redeclared_in_template_raises", + "target": "readme_generator_templatefielddecl" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L215", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L293", "weight": 1.0, - "source": "tray_test_autostart_test_silently_unlink_tolerates_missing", - "target": "tray_autostart_silently_unlink" + "source": "readme_test_generator_test_core_field_redeclared_in_config_raises", + "target": "readme_generator_templatefielddecl" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L229", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L339", "weight": 1.0, - "source": "tray_test_autostart_test_env_var_root_overrides_constructor", - "target": "tray_autostart_autostartmanager" + "source": "readme_test_generator_test_string_type_accepts_string_rejects_int", + "target": "readme_generator_templatefielddecl" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L239", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L357", "weight": 1.0, - "source": "tray_test_autostart_test_executable_path_property", - "target": "tray_autostart_autostartmanager" + "source": "readme_test_generator_test_text_type_accepts_multiline_rejects_list", + "target": "readme_generator_templatefielddecl" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L245", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L373", "weight": 1.0, - "source": "tray_test_autostart_test_default_executable_falls_back_to_sys_executable", - "target": "tray_autostart_autostartmanager" + "source": "readme_test_generator_test_choice_type_accepts_listed_rejects_other", + "target": "readme_generator_templatefielddecl" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L251", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L387", "weight": 1.0, - "source": "tray_test_autostart_test_detect_platform_returns_known_value", - "target": "tray_autostart_detect_platform" + "source": "readme_test_generator_test_choice_without_options_raises", + "target": "readme_generator_templatefielddecl" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_autostart.py", - "source_location": "L257", - "weight": 1.0, - "source": "tray_test_autostart_test_detect_platform_dispatch", - "target": "tray_autostart_detect_platform" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L15", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_stubserverrunner" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L30", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_stubwindowlauncher" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L42", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_stubquitcoordinator" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L51", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L399", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_stubstatusticker" + "source": "readme_test_generator_test_date_type_accepts_iso8601_rejects_garbage", + "target": "readme_generator_templatefielddecl" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L68", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L420", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_stubbus" + "source": "readme_test_generator_test_date_type_rejects_non_string", + "target": "readme_generator_templatefielddecl" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L76", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L432", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_stubautostart" + "source": "readme_test_generator_test_boolean_type_accepts_bool_rejects_string", + "target": "readme_generator_templatefielddecl" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L80", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L450", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_make_tray" + "source": "readme_test_generator_test_unknown_field_type_raises", + "target": "readme_generator_templatefielddecl" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L91", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L462", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_start_server_calls_runner" + "source": "readme_test_generator_test_choice_type_rejects_non_string_value", + "target": "readme_generator_templatefielddecl" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L98", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L479", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_open_window_delegates" + "source": "readme_test_generator_rationale_479", + "target": "readme_test_generator_test_generate_is_idempotent_byte_identical" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L104", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L483", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_request_quit_runs_coordinator" + "source": "readme_test_generator_test_generate_is_idempotent_byte_identical", + "target": "readme_generator_customfield" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L110", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L485", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_request_quit_calls_icon_stop_when_set" + "source": "readme_test_generator_test_generate_is_idempotent_byte_identical", + "target": "readme_generator_templatefielddecl" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L118", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L532", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_request_quit_handles_icon_stop_error" + "source": "readme_test_generator_rationale_532", + "target": "readme_test_generator_test_value_without_declaration_skips_typecheck" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L126", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L535", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_shutdown_tears_components_down" + "source": "readme_test_generator_test_value_without_declaration_skips_typecheck", + "target": "readme_generator_templatefielddecl" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L135", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L547", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_run_wires_icon_and_invokes_run_loop" + "source": "readme_test_generator_rationale_547", + "target": "readme_test_generator_test_optional_empty_field_is_skipped" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L166", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L548", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_build_default_components" + "source": "readme_test_generator_test_optional_empty_field_is_skipped", + "target": "readme_generator_templatefielddecl" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L178", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L559", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_main_uses_run_helper" + "source": "readme_test_generator_rationale_559", + "target": "readme_test_generator_test_required_field_present_with_none_raises" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L201", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L560", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_main_handles_keyboard_interrupt" + "source": "readme_test_generator_test_required_field_present_with_none_raises", + "target": "readme_generator_templatefielddecl" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L218", + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L572", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_run_returns_one_on_icon_failure" + "source": "readme_test_generator_rationale_572", + "target": "readme_test_generator_test_generated_at_uses_z_for_naive_datetime" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L232", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/readme/test_generator.py", + "source_location": "L573", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_request_quit_uses_running_loop_when_present" + "source": "readme_test_generator_test_generated_at_uses_z_for_naive_datetime", + "target": "readme_generator_systemfields" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L269", + "source_file": "tests/unit/readme/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_build_default_app" + "source": "readme_init_rationale_1", + "target": "tests_unit_readme_init_py" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L302", + "source_file": "src/exlab_wizard/readme/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_build_default_components_falls_back_to_default_app" + "source": "readme_init_rationale_1", + "target": "src_exlab_wizard_readme_init_py" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L314", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L72", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_parse_argv_defaults_no_smoke" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_config", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L323", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L92", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_parse_argv_smoke_flag" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_template_desc", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L331", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L103", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_parse_argv_no_autostart_prompt_silently_accepted" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_sample_type_default", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L339", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L119", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_run_smoke_starts_server_and_stops_on_signal" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_test_build_readme_context_partitions_readme_extra", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L376", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L155", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_main_smoke_dispatches_to_run_smoke" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_test_build_readme_context_system_and_level_for_run", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L397", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L186", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_parse_argv_version_flag" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_test_build_readme_context_unknown_equipment_blank_label", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L405", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L212", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_main_version_prints_version_and_exits_zero" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_lims_block", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L423", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L221", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_parse_argv_defaults_no_test_flags" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_test_build_creation_json_all_blocks_populated", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L432", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L270", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_parse_argv_test_flag" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_test_build_creation_json_sync_status_override", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L440", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L291", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_parse_argv_test_with_samples" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_test_build_creation_json_blank_nas_when_root_empty", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L448", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_parse_argv_samples_without_test_errors" + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L315", + "weight": 1.0, + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_controller", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L462", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L329", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_mode_env" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_project_request", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L487", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L347", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_main_test_flag_sets_env_and_bootstraps_config" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_resolved_desc_from", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L524", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L358", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_main_test_does_not_overwrite_existing_config" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_normalize_ctx", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L539", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L365", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_main_test_with_samples_adds_equipment" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_test_parity_build_readme_context", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L555", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L396", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_tray_test_main_py", - "target": "tray_test_main_test_main_without_test_does_not_set_env" + "source": "tests_unit_controller_test_metadata_assembly_py", + "target": "controller_test_metadata_assembly_test_parity_build_creation_json", + "confidence_score": 1.0 }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", + "source_file": "tests/unit/controller/test_metadata_assembly.py", "source_location": "L1", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_1", - "target": "tests_unit_tray_test_main_py" + "source": "controller_test_metadata_assembly_rationale_1", + "target": "tests_unit_controller_test_metadata_assembly_py", + "confidence_score": 1.0 }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L16", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L122", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubserverrunner", - "target": "tray_test_main_stubserverrunner_init" + "source": "controller_test_metadata_assembly_test_build_readme_context_partitions_readme_extra", + "target": "controller_test_metadata_assembly_config", + "confidence_score": 1.0 }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L22", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L156", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubserverrunner", - "target": "tray_test_main_stubserverrunner_start" + "source": "controller_test_metadata_assembly_test_build_readme_context_system_and_level_for_run", + "target": "controller_test_metadata_assembly_config", + "confidence_score": 1.0 }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L26", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L187", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubserverrunner", - "target": "tray_test_main_stubserverrunner_stop" + "source": "controller_test_metadata_assembly_test_build_readme_context_unknown_equipment_blank_label", + "target": "controller_test_metadata_assembly_config", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L82", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L222", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_make_tray", - "target": "tray_test_main_stubserverrunner" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_main_stubserverrunner", - "target": "tray_main_trayapp" + "source": "controller_test_metadata_assembly_test_build_creation_json_all_blocks_populated", + "target": "controller_test_metadata_assembly_config", + "confidence_score": 1.0 }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L31", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L271", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubwindowlauncher", - "target": "tray_test_main_stubwindowlauncher_init" + "source": "controller_test_metadata_assembly_test_build_creation_json_sync_status_override", + "target": "controller_test_metadata_assembly_config", + "confidence_score": 1.0 }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L35", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L292", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubwindowlauncher", - "target": "tray_test_main_stubwindowlauncher_open" + "source": "controller_test_metadata_assembly_test_build_creation_json_blank_nas_when_root_empty", + "target": "controller_test_metadata_assembly_config", + "confidence_score": 1.0 }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L38", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L368", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubwindowlauncher", - "target": "tray_test_main_stubwindowlauncher_close" + "source": "controller_test_metadata_assembly_test_parity_build_readme_context", + "target": "controller_test_metadata_assembly_config", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L83", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L399", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_make_tray", - "target": "tray_test_main_stubwindowlauncher" + "source": "controller_test_metadata_assembly_test_parity_build_creation_json", + "target": "controller_test_metadata_assembly_config", + "confidence_score": 1.0 }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_main_stubwindowlauncher", - "target": "tray_main_trayapp" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L43", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L74", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubquitcoordinator", - "target": "tray_test_main_stubquitcoordinator_init" + "source": "controller_test_metadata_assembly_config", + "target": "config_models_pathsconfig" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L46", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L80", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubquitcoordinator", - "target": "tray_test_main_stubquitcoordinator_quit" + "source": "controller_test_metadata_assembly_config", + "target": "config_models_equipmentconfig" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L84", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L87", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_make_tray", - "target": "tray_test_main_stubquitcoordinator" + "source": "controller_test_metadata_assembly_config", + "target": "config_models_operatorsconfig" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_main_stubquitcoordinator", - "target": "tray_main_trayapp" + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L88", + "weight": 1.0, + "source": "controller_test_metadata_assembly_config", + "target": "config_models_readmeconfig" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L52", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L124", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubstatusticker", - "target": "tray_test_main_stubstatusticker_init" + "source": "controller_test_metadata_assembly_test_build_readme_context_partitions_readme_extra", + "target": "controller_test_metadata_assembly_template_desc", + "confidence_score": 1.0 }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L57", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L165", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubstatusticker", - "target": "tray_test_main_stubstatusticker_start" + "source": "controller_test_metadata_assembly_test_build_readme_context_system_and_level_for_run", + "target": "controller_test_metadata_assembly_template_desc", + "confidence_score": 1.0 }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L60", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L196", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubstatusticker", - "target": "tray_test_main_stubstatusticker_stop" + "source": "controller_test_metadata_assembly_test_build_readme_context_unknown_equipment_blank_label", + "target": "controller_test_metadata_assembly_template_desc", + "confidence_score": 1.0 }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L63", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L240", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubstatusticker", - "target": "tray_test_main_stubstatusticker_tick_once" + "source": "controller_test_metadata_assembly_test_build_creation_json_all_blocks_populated", + "target": "controller_test_metadata_assembly_template_desc", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L85", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L279", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_make_tray", - "target": "tray_test_main_stubstatusticker" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_main_stubstatusticker", - "target": "tray_main_trayapp" + "source": "controller_test_metadata_assembly_test_build_creation_json_sync_status_override", + "target": "controller_test_metadata_assembly_template_desc", + "confidence_score": 1.0 }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L69", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L300", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubbus", - "target": "tray_test_main_stubbus_init" + "source": "controller_test_metadata_assembly_test_build_creation_json_blank_nas_when_root_empty", + "target": "controller_test_metadata_assembly_template_desc", + "confidence_score": 1.0 }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L72", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L93", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_stubbus", - "target": "tray_test_main_stubbus_cancel_all" + "source": "controller_test_metadata_assembly_template_desc", + "target": "controller_metadata_assembly_templatedesc" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L86", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L122", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_make_tray", - "target": "tray_test_main_stubbus" + "source": "controller_test_metadata_assembly_test_build_readme_context_partitions_readme_extra", + "target": "controller_test_metadata_assembly_sample_type_default", + "confidence_score": 1.0 }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_main_stubbus", - "target": "tray_main_trayapp" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L368", + "weight": 1.0, + "source": "controller_test_metadata_assembly_test_parity_build_readme_context", + "target": "controller_test_metadata_assembly_sample_type_default", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L87", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L399", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_make_tray", - "target": "tray_test_main_stubautostart" + "source": "controller_test_metadata_assembly_test_parity_build_creation_json", + "target": "controller_test_metadata_assembly_sample_type_default", + "confidence_score": 1.0 }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_test_main_stubautostart", - "target": "tray_main_trayapp" + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L104", + "weight": 1.0, + "source": "controller_test_metadata_assembly_sample_type_default", + "target": "config_models_readmedefaultfield" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L92", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L120", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_test_start_server_calls_runner", - "target": "tray_test_main_make_tray" + "source": "controller_test_metadata_assembly_rationale_120", + "target": "controller_test_metadata_assembly_test_build_readme_context_partitions_readme_extra", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L99", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L127", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_test_open_window_delegates", - "target": "tray_test_main_make_tray" + "source": "controller_test_metadata_assembly_test_build_readme_context_partitions_readme_extra", + "target": "controller_metadata_assembly_build_readme_context" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L105", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L150", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_test_request_quit_runs_coordinator", - "target": "tray_test_main_make_tray" + "source": "controller_test_metadata_assembly_test_build_readme_context_partitions_readme_extra", + "target": "readme_generator_customfield" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L111", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L157", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_test_request_quit_calls_icon_stop_when_set", - "target": "tray_test_main_make_tray" + "source": "controller_test_metadata_assembly_test_build_readme_context_system_and_level_for_run", + "target": "controller_metadata_assembly_build_readme_context" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L119", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L188", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_test_request_quit_handles_icon_stop_error", - "target": "tray_test_main_make_tray" + "source": "controller_test_metadata_assembly_test_build_readme_context_unknown_equipment_blank_label", + "target": "controller_metadata_assembly_build_readme_context" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L127", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L238", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_test_shutdown_tears_components_down", - "target": "tray_test_main_make_tray" + "source": "controller_test_metadata_assembly_test_build_creation_json_all_blocks_populated", + "target": "controller_test_metadata_assembly_lims_block", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L136", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L278", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_test_run_wires_icon_and_invokes_run_loop", - "target": "tray_test_main_make_tray" + "source": "controller_test_metadata_assembly_test_build_creation_json_sync_status_override", + "target": "controller_test_metadata_assembly_lims_block", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L207", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L299", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_test_main_handles_keyboard_interrupt", - "target": "tray_test_main_make_tray" + "source": "controller_test_metadata_assembly_test_build_creation_json_blank_nas_when_root_empty", + "target": "controller_test_metadata_assembly_lims_block", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L219", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L213", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_test_run_returns_one_on_icon_failure", - "target": "tray_test_main_make_tray" + "source": "controller_test_metadata_assembly_lims_block", + "target": "api_schemas_limsprojectblock" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L244", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L225", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_test_request_quit_uses_running_loop_when_present", - "target": "tray_test_main_make_tray" + "source": "controller_test_metadata_assembly_test_build_creation_json_all_blocks_populated", + "target": "api_schemas_pluginapplied" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L482", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L232", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_test_mode_env", - "target": "tray_test_main_make_tray" + "source": "controller_test_metadata_assembly_test_build_creation_json_all_blocks_populated", + "target": "controller_metadata_assembly_build_creation_json" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L81", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L272", "weight": 1.0, - "source": "tray_test_main_make_tray", - "target": "tray_main_trayapp" + "source": "controller_test_metadata_assembly_test_build_creation_json_sync_status_override", + "target": "controller_metadata_assembly_build_creation_json" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L171", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L293", "weight": 1.0, - "source": "tray_test_main_test_build_default_components", - "target": "tray_main_build_default_components" + "source": "controller_test_metadata_assembly_test_build_creation_json_blank_nas_when_root_empty", + "target": "controller_metadata_assembly_build_creation_json" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L179", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L369", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_179", - "target": "tray_test_main_test_main_uses_run_helper" + "source": "controller_test_metadata_assembly_test_parity_build_readme_context", + "target": "controller_test_metadata_assembly_controller", + "confidence_score": 1.0 }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L235", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L400", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_235", - "target": "tray_test_main_test_request_quit_uses_running_loop_when_present" + "source": "controller_test_metadata_assembly_test_parity_build_creation_json", + "target": "controller_test_metadata_assembly_controller", + "confidence_score": 1.0 }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L270", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L316", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_270", - "target": "tray_test_main_test_build_default_app" + "source": "controller_test_metadata_assembly_controller", + "target": "controller_creation_creationcontroller" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L305", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L319", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_305", - "target": "tray_test_main_test_build_default_components_falls_back_to_default_app" + "source": "controller_test_metadata_assembly_controller", + "target": "template_copier_driver_templateengine" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L315", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L321", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_315", - "target": "tray_test_main_test_parse_argv_defaults_no_smoke" + "source": "controller_test_metadata_assembly_controller", + "target": "cache_creation_writer_creationwriter" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L318", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L322", "weight": 1.0, - "source": "tray_test_main_test_parse_argv_defaults_no_smoke", - "target": "tray_main_parse_argv" + "source": "controller_test_metadata_assembly_controller", + "target": "cache_equipment_equipmentcachewriter" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L323", + "weight": 1.0, + "source": "controller_test_metadata_assembly_controller", + "target": "controller_creation_noopreadmegenerator" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", "source_location": "L324", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_324", - "target": "tray_test_main_test_parse_argv_smoke_flag" + "source": "controller_test_metadata_assembly_controller", + "target": "controller_creation_noopnassync" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L327", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L325", "weight": 1.0, - "source": "tray_test_main_test_parse_argv_smoke_flag", - "target": "tray_main_parse_argv" + "source": "controller_test_metadata_assembly_controller", + "target": "controller_session_store_sessionstore" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L332", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L371", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_332", - "target": "tray_test_main_test_parse_argv_no_autostart_prompt_silently_accepted" + "source": "controller_test_metadata_assembly_test_parity_build_readme_context", + "target": "controller_test_metadata_assembly_project_request", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L335", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L402", "weight": 1.0, - "source": "tray_test_main_test_parse_argv_no_autostart_prompt_silently_accepted", - "target": "tray_main_parse_argv" + "source": "controller_test_metadata_assembly_test_parity_build_creation_json", + "target": "controller_test_metadata_assembly_project_request", + "confidence_score": 1.0 }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L342", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L330", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_342", - "target": "tray_test_main_test_run_smoke_starts_server_and_stops_on_signal" + "source": "controller_test_metadata_assembly_project_request", + "target": "controller_creation_projectcreaterequest" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L379", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L385", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_379", - "target": "tray_test_main_test_main_smoke_dispatches_to_run_smoke" + "source": "controller_test_metadata_assembly_test_parity_build_readme_context", + "target": "controller_test_metadata_assembly_resolved_desc_from", + "confidence_score": 1.0 }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L398", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L432", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_398", - "target": "tray_test_main_test_parse_argv_version_flag" + "source": "controller_test_metadata_assembly_test_parity_build_creation_json", + "target": "controller_test_metadata_assembly_resolved_desc_from", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L401", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L348", "weight": 1.0, - "source": "tray_test_main_test_parse_argv_version_flag", - "target": "tray_main_parse_argv" + "source": "controller_test_metadata_assembly_resolved_desc_from", + "target": "controller_metadata_assembly_templatedesc" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L408", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L393", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_408", - "target": "tray_test_main_test_main_version_prints_version_and_exits_zero" + "source": "controller_test_metadata_assembly_test_parity_build_readme_context", + "target": "controller_test_metadata_assembly_normalize_ctx", + "confidence_score": 1.0 }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L424", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L359", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_424", - "target": "tray_test_main_test_parse_argv_defaults_no_test_flags" + "source": "controller_test_metadata_assembly_rationale_359", + "target": "controller_test_metadata_assembly_normalize_ctx", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L427", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L377", "weight": 1.0, - "source": "tray_test_main_test_parse_argv_defaults_no_test_flags", - "target": "tray_main_parse_argv" + "source": "controller_test_metadata_assembly_test_parity_build_readme_context", + "target": "controller_metadata_assembly_build_readme_context" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L435", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L416", "weight": 1.0, - "source": "tray_test_main_test_parse_argv_test_flag", - "target": "tray_main_parse_argv" + "source": "controller_test_metadata_assembly_test_parity_build_creation_json", + "target": "template_copier_driver_renderresult" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L443", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L417", "weight": 1.0, - "source": "tray_test_main_test_parse_argv_test_with_samples", - "target": "tray_main_parse_argv" + "source": "controller_test_metadata_assembly_test_parity_build_creation_json", + "target": "plugins_host_pluginpassresult" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L451", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L420", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_test_main_rationale_451", - "target": "tray_test_main_test_parse_argv_samples_without_test_errors" + "source": "controller_test_metadata_assembly_test_parity_build_creation_json", + "target": "controller_metadata_assembly_build_creation_json" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L455", + "source_file": "tests/unit/controller/test_metadata_assembly.py", + "source_location": "L426", "weight": 1.0, - "source": "tray_test_main_test_parse_argv_samples_without_test_errors", - "target": "tray_main_parse_argv" + "source": "controller_test_metadata_assembly_test_parity_build_creation_json", + "target": "api_schemas_limsprojectblock" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L463", + "source_file": "tests/unit/controller/test_creation_apply_config.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_main_rationale_463", - "target": "tray_test_main_test_mode_env" + "source": "tests_unit_controller_test_creation_apply_config_py", + "target": "controller_test_creation_apply_config_controller" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_creation_apply_config.py", + "source_location": "L29", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_controller_test_creation_apply_config_py", + "target": "controller_test_creation_apply_config_test_apply_config_swaps_config" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_creation_apply_config.py", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_controller_test_creation_apply_config_py", + "target": "controller_test_creation_apply_config_test_apply_config_reinjects_plugin_host_only_when_given" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L488", + "source_file": "tests/unit/controller/test_creation_apply_config.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_main_rationale_488", - "target": "tray_test_main_test_main_test_flag_sets_env_and_bootstraps_config" + "source": "controller_test_creation_apply_config_rationale_1", + "target": "tests_unit_controller_test_creation_apply_config_py" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L508", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_creation_apply_config.py", + "source_location": "L31", "weight": 1.0, - "source": "tray_test_main_test_main_test_flag_sets_env_and_bootstraps_config", - "target": "config_loader_load_config" + "confidence_score": 1.0, + "source": "controller_test_creation_apply_config_test_apply_config_swaps_config", + "target": "controller_test_creation_apply_config_controller" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L525", + "source_file": "tests/unit/controller/test_creation_apply_config.py", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_main_rationale_525", - "target": "tray_test_main_test_main_test_does_not_overwrite_existing_config" + "source": "controller_test_creation_apply_config_test_apply_config_reinjects_plugin_host_only_when_given", + "target": "controller_test_creation_apply_config_controller" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L546", + "source_file": "tests/unit/controller/test_creation_apply_config.py", + "source_location": "L19", "weight": 1.0, - "source": "tray_test_main_test_main_test_with_samples_adds_equipment", - "target": "config_loader_load_config" + "source": "controller_test_creation_apply_config_controller", + "target": "controller_creation_creationcontroller" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/tray/test_main.py", - "source_location": "L556", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "tray_test_main_rationale_556", - "target": "tray_test_main_test_main_without_test_does_not_set_env" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_state_to_phase_pending_returns_none" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L57", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_system_fields" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_state_to_phase_validating_returns_validating_inputs" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L73", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_state_to_phase_rendering_returns_rendering_template" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L99", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_generator" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_state_to_phase_plugin_pass_returns_running_plugins" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L109", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_generate_writes_both_files" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_state_to_phase_input_required_returns_input_required" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L118", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_readme_starts_with_yaml_front_matter" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_state_to_phase_cache_write_returns_writing_cache" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L135", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_readme_body_includes_label_and_objective" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_state_to_phase_post_validate_returns_validating_post_creation" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L148", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_readme_fields_json_round_trips" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_state_to_phase_sync_queued_returns_queueing_nas_sync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L192", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_empty_core_field_rejected" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_state_to_phase_done_returns_done" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L201", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_label_over_max_length_rejected" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_state_to_phase_failed_returns_none" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L208", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_objective_over_max_length_rejected" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_state_to_phase_aborted_returns_none" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L222", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L69", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_required_template_field_missing_raises" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_state_to_phase_covers_every_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L231", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_required_config_field_missing_raises" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_pending_transitions_to_validating" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L247", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_duplicate_field_id_across_layers_raises" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_validating_transitions_to_rendering" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L263", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_custom_field_label_collides_with_template_id" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_rendering_transitions_to_plugin_pass" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L281", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_core_field_redeclared_in_template_raises" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_plugin_pass_transitions_to_input_required_and_cache_write" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L290", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_core_field_redeclared_in_config_raises" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_input_required_transitions_back_to_plugin_pass" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L304", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_project_level_system_run_is_none" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_cache_write_transitions_to_post_validate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L313", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_run_level_experimental_run_name" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_post_validate_transitions_to_sync_queued" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L322", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_run_level_test_run_name" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_sync_queued_transitions_to_done" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L336", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_string_type_accepts_string_rejects_int" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_fail_allowed_from_every_non_terminal_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L354", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L151", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_text_type_accepts_multiline_rejects_list" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_aborted_allowed_from_every_non_terminal_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L370", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_choice_type_accepts_listed_rejects_other" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_done_is_terminal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L386", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L164", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_choice_without_options_raises" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_failed_is_terminal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L396", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L168", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_date_type_accepts_iso8601_rejects_garbage" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_aborted_is_terminal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L419", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L177", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_date_type_rejects_non_string" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_assert_transition_allows_legal_forward_edge" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L429", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L183", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_boolean_type_accepts_bool_rejects_string" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_assert_transition_allows_cancel_from_any_non_terminal" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L449", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L188", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_unknown_field_type_raises" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_assert_transition_rejects_skipping_a_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L459", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L193", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_choice_type_rejects_non_string_value" + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_assert_transition_rejects_terminal_to_anything" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L476", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L198", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_assert_transition_rejects_done_back_to_pipeline" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L203", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_assert_transition_rejects_backwards_through_pipeline" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L213", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_session_state_values_match_lowercase_names" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L218", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_phase_values_use_spec_strings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L229", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_valid_transitions_keys_cover_every_session_state" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L233", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tests_unit_controller_test_state_machine_py", + "target": "controller_test_state_machine_test_assert_transition_rejects_unknown_source_state" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_test_state_machine_rationale_1", + "target": "tests_unit_controller_test_state_machine_py" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L26", + "weight": 1.0, + "source": "controller_test_state_machine_test_state_to_phase_pending_returns_none", + "target": "controller_state_machine_state_to_phase" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L30", + "weight": 1.0, + "source": "controller_test_state_machine_test_state_to_phase_validating_returns_validating_inputs", + "target": "controller_state_machine_state_to_phase" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L34", + "weight": 1.0, + "source": "controller_test_state_machine_test_state_to_phase_rendering_returns_rendering_template", + "target": "controller_state_machine_state_to_phase" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L38", + "weight": 1.0, + "source": "controller_test_state_machine_test_state_to_phase_plugin_pass_returns_running_plugins", + "target": "controller_state_machine_state_to_phase" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L42", + "weight": 1.0, + "source": "controller_test_state_machine_test_state_to_phase_input_required_returns_input_required", + "target": "controller_state_machine_state_to_phase" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L46", + "weight": 1.0, + "source": "controller_test_state_machine_test_state_to_phase_cache_write_returns_writing_cache", + "target": "controller_state_machine_state_to_phase" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L50", + "weight": 1.0, + "source": "controller_test_state_machine_test_state_to_phase_post_validate_returns_validating_post_creation", + "target": "controller_state_machine_state_to_phase" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L54", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_generate_is_idempotent_byte_identical" + "source": "controller_test_state_machine_test_state_to_phase_sync_queued_returns_queueing_nas_sync", + "target": "controller_state_machine_state_to_phase" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L512", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L58", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_generated_at_uses_z_suffix" + "source": "controller_test_state_machine_test_state_to_phase_done_returns_done", + "target": "controller_state_machine_state_to_phase" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L520", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L62", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_cache_dir_created_on_demand" + "source": "controller_test_state_machine_test_state_to_phase_failed_returns_none", + "target": "controller_state_machine_state_to_phase" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L529", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L66", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_value_without_declaration_skips_typecheck" + "source": "controller_test_state_machine_test_state_to_phase_aborted_returns_none", + "target": "controller_state_machine_state_to_phase" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L546", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L70", "weight": 1.0, "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_optional_empty_field_is_skipped" + "source": "controller_test_state_machine_rationale_70", + "target": "controller_test_state_machine_test_state_to_phase_covers_every_state" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L556", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L73", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_required_field_present_with_none_raises" + "source": "controller_test_state_machine_test_state_to_phase_covers_every_state", + "target": "controller_state_machine_state_to_phase" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L569", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L179", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_readme_test_generator_py", - "target": "readme_test_generator_test_generated_at_uses_z_for_naive_datetime" + "source": "controller_test_state_machine_test_assert_transition_allows_legal_forward_edge", + "target": "controller_state_machine_assert_transition" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L184", "weight": 1.0, - "confidence_score": 1.0, - "source": "readme_test_generator_rationale_1", - "target": "tests_unit_readme_test_generator_py" + "source": "controller_test_state_machine_test_assert_transition_allows_cancel_from_any_non_terminal", + "target": "controller_state_machine_assert_transition" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L92", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L190", "weight": 1.0, - "confidence_score": 1.0, - "source": "readme_test_generator_ctx", - "target": "readme_test_generator_system_fields" + "source": "controller_test_state_machine_test_assert_transition_rejects_skipping_a_state", + "target": "controller_state_machine_assert_transition" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L305", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L195", "weight": 1.0, - "confidence_score": 1.0, - "source": "readme_test_generator_test_project_level_system_run_is_none", - "target": "readme_test_generator_system_fields" + "source": "controller_test_state_machine_test_assert_transition_rejects_terminal_to_anything", + "target": "controller_state_machine_assert_transition" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L314", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L200", "weight": 1.0, - "confidence_score": 1.0, - "source": "readme_test_generator_test_run_level_experimental_run_name", - "target": "readme_test_generator_system_fields" + "source": "controller_test_state_machine_test_assert_transition_rejects_done_back_to_pipeline", + "target": "controller_state_machine_assert_transition" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L205", + "weight": 1.0, + "source": "controller_test_state_machine_test_assert_transition_rejects_backwards_through_pipeline", + "target": "controller_state_machine_assert_transition" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L323", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L234", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_run_level_test_run_name", - "target": "readme_test_generator_system_fields" + "source": "controller_test_state_machine_rationale_234", + "target": "controller_test_state_machine_test_assert_transition_rejects_unknown_source_state" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L62", + "source_file": "tests/unit/controller/test_state_machine.py", + "source_location": "L244", "weight": 1.0, - "source": "readme_test_generator_system_fields", - "target": "readme_generator_systemfields" + "source": "controller_test_state_machine_test_assert_transition_rejects_unknown_source_state", + "target": "controller_state_machine_assert_transition" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L110", + "source_file": "tests/unit/controller/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_generate_writes_both_files", - "target": "readme_test_generator_ctx" + "source": "controller_init_rationale_1", + "target": "tests_unit_controller_init_py" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L121", + "source_file": "tests/integration/controller/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_readme_starts_with_yaml_front_matter", - "target": "readme_test_generator_ctx" + "source": "controller_init_rationale_1", + "target": "tests_integration_controller_init_py" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L140", + "source_file": "src/exlab_wizard/controller/__init__.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_readme_body_includes_label_and_objective", - "target": "readme_test_generator_ctx" + "source": "controller_init_rationale_1", + "target": "src_exlab_wizard_controller_init_py" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L151", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_readme_fields_json_round_trips", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_open_returns_fresh_pending_session" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L197", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_empty_core_field_rejected", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_open_assigns_uuid4_session_id" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L204", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_label_over_max_length_rejected", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_open_two_sessions_get_distinct_ids" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L213", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_objective_over_max_length_rejected", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_open_sets_created_at_and_last_heartbeat_to_now" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L227", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L75", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_required_template_field_missing_raises", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_get_returns_none_for_unknown_session_id" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L237", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_required_config_field_missing_raises", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_get_returns_session_after_open" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L255", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_duplicate_field_id_across_layers_raises", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_iter_sorted_returns_pairs_oldest_created_first" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L271", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_custom_field_label_collides_with_template_id", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_gc_publishes_terminal_frame_to_live_subscriber" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L286", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_core_field_redeclared_in_template_raises", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_project_identifier_prefers_short_id_then_falls_back_to_project_name" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L295", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L136", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_core_field_redeclared_in_config_raises", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_transition_updates_state_and_phase_together" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L306", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_project_level_system_run_is_none", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_transition_to_input_required_sets_next_action_awaiting_input" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L315", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_run_level_experimental_run_name", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_transition_back_to_plugin_pass_clears_next_action" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L324", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_run_level_test_run_name", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_transition_rejects_unknown_session_id" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L343", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L175", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_string_type_accepts_string_rejects_int", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_transition_rejects_illegal_state_transition" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L360", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L187", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_text_type_accepts_multiline_rejects_list", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_attach_event_queue_wires_queue_to_session" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L376", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_choice_type_accepts_listed_rejects_other", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_attach_event_queue_rejects_unknown_session_id" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L391", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L207", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_choice_without_options_raises", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_heartbeat_updates_last_heartbeat" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L402", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L217", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_date_type_accepts_iso8601_rejects_garbage", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_heartbeat_is_noop_for_unknown_session" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L424", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L228", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_date_type_rejects_non_string", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_abandoned_older_than_returns_only_input_required_sessions" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L435", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L250", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_boolean_type_accepts_bool_rejects_string", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_abandoned_older_than_skips_recent_input_required_sessions" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L454", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L265", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_unknown_field_type_raises", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_abandoned_older_than_returns_empty_when_no_sessions_exist" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L466", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L275", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_choice_type_rejects_non_string_value", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_close_stores_outcome_for_done_session" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L480", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L294", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_generate_is_idempotent_byte_identical", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_close_stores_outcome_in_error_for_failed_session" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L513", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L304", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_generated_at_uses_z_suffix", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_close_is_noop_for_unknown_session" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L523", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L315", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_cache_dir_created_on_demand", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_gc_loop_closes_abandoned_input_required_session" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L538", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L339", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_value_without_declaration_skips_typecheck", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_gc_loop_periodically_runs_and_can_be_cancelled" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L551", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L350", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_optional_empty_field_is_skipped", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_gc_loop_skips_non_input_required_sessions" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L564", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L366", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_required_field_present_with_none_raises", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_session_is_terminal_for_terminal_states" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L582", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L382", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_test_generated_at_uses_z_for_naive_datetime", - "target": "readme_test_generator_ctx" + "source": "tests_unit_controller_test_session_store_py", + "target": "controller_test_session_store_test_session_is_terminal_false_for_non_terminal_states" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L86", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L1", "weight": 1.0, - "source": "readme_test_generator_ctx", - "target": "readme_generator_readmecontext" + "confidence_score": 1.0, + "source": "controller_test_session_store_rationale_1", + "target": "tests_unit_controller_test_session_store_py" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L88", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L37", "weight": 1.0, - "source": "readme_test_generator_ctx", - "target": "readme_generator_corefields" + "source": "controller_test_session_store_test_open_returns_fresh_pending_session", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L100", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L47", "weight": 1.0, - "source": "readme_test_generator_generator", - "target": "readme_generator_readmegenerator" + "source": "controller_test_session_store_test_open_assigns_uuid4_session_id", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L154", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L55", "weight": 1.0, - "source": "readme_test_generator_test_readme_fields_json_round_trips", - "target": "readme_generator_customfield" + "source": "controller_test_session_store_test_open_two_sessions_get_distinct_ids", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L156", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L62", "weight": 1.0, - "source": "readme_test_generator_test_readme_fields_json_round_trips", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_open_sets_created_at_and_last_heartbeat_to_now", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L225", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L76", "weight": 1.0, - "source": "readme_test_generator_test_required_template_field_missing_raises", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_get_returns_none_for_unknown_session_id", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L234", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L81", "weight": 1.0, - "source": "readme_test_generator_test_required_config_field_missing_raises", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_get_returns_session_after_open", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L250", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L88", "weight": 1.0, - "source": "readme_test_generator_test_duplicate_field_id_across_layers_raises", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_iter_sorted_returns_pairs_oldest_created_first", + "target": "controller_session_store_sessionstore" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L99", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_test_session_store_rationale_99", + "target": "controller_test_session_store_test_gc_publishes_terminal_frame_to_live_subscriber" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L266", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L105", "weight": 1.0, - "source": "readme_test_generator_test_custom_field_label_collides_with_template_id", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_gc_publishes_terminal_frame_to_live_subscriber", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L267", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L124", "weight": 1.0, - "source": "readme_test_generator_test_custom_field_label_collides_with_template_id", - "target": "readme_generator_customfield" + "source": "controller_test_session_store_test_project_identifier_prefers_short_id_then_falls_back_to_project_name", + "target": "controller_session_store_project_identifier" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L284", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L137", "weight": 1.0, - "source": "readme_test_generator_test_core_field_redeclared_in_template_raises", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_transition_updates_state_and_phase_together", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L293", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L145", "weight": 1.0, - "source": "readme_test_generator_test_core_field_redeclared_in_config_raises", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_transition_to_input_required_sets_next_action_awaiting_input", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L339", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L155", "weight": 1.0, - "source": "readme_test_generator_test_string_type_accepts_string_rejects_int", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_transition_back_to_plugin_pass_clears_next_action", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L357", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L170", "weight": 1.0, - "source": "readme_test_generator_test_text_type_accepts_multiline_rejects_list", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_transition_rejects_unknown_session_id", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L373", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L176", "weight": 1.0, - "source": "readme_test_generator_test_choice_type_accepts_listed_rejects_other", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_transition_rejects_illegal_state_transition", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L387", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L188", "weight": 1.0, - "source": "readme_test_generator_test_choice_without_options_raises", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_attach_event_queue_wires_queue_to_session", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L399", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L196", "weight": 1.0, - "source": "readme_test_generator_test_date_type_accepts_iso8601_rejects_garbage", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_attach_event_queue_rejects_unknown_session_id", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L420", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L208", "weight": 1.0, - "source": "readme_test_generator_test_date_type_rejects_non_string", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_heartbeat_updates_last_heartbeat", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L432", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L218", "weight": 1.0, - "source": "readme_test_generator_test_boolean_type_accepts_bool_rejects_string", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_heartbeat_is_noop_for_unknown_session", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L450", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L229", "weight": 1.0, - "source": "readme_test_generator_test_unknown_field_type_raises", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_abandoned_older_than_returns_only_input_required_sessions", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L462", - "weight": 1.0, - "source": "readme_test_generator_test_choice_type_rejects_non_string_value", - "target": "readme_generator_templatefielddecl" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L479", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L251", "weight": 1.0, - "confidence_score": 1.0, - "source": "readme_test_generator_rationale_479", - "target": "readme_test_generator_test_generate_is_idempotent_byte_identical" + "source": "controller_test_session_store_test_abandoned_older_than_skips_recent_input_required_sessions", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L483", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L266", "weight": 1.0, - "source": "readme_test_generator_test_generate_is_idempotent_byte_identical", - "target": "readme_generator_customfield" + "source": "controller_test_session_store_test_abandoned_older_than_returns_empty_when_no_sessions_exist", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L485", - "weight": 1.0, - "source": "readme_test_generator_test_generate_is_idempotent_byte_identical", - "target": "readme_generator_templatefielddecl" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L532", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L276", "weight": 1.0, - "confidence_score": 1.0, - "source": "readme_test_generator_rationale_532", - "target": "readme_test_generator_test_value_without_declaration_skips_typecheck" + "source": "controller_test_session_store_test_close_stores_outcome_for_done_session", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L535", - "weight": 1.0, - "source": "readme_test_generator_test_value_without_declaration_skips_typecheck", - "target": "readme_generator_templatefielddecl" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L547", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L295", "weight": 1.0, - "confidence_score": 1.0, - "source": "readme_test_generator_rationale_547", - "target": "readme_test_generator_test_optional_empty_field_is_skipped" + "source": "controller_test_session_store_test_close_stores_outcome_in_error_for_failed_session", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L548", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L305", "weight": 1.0, - "source": "readme_test_generator_test_optional_empty_field_is_skipped", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_close_is_noop_for_unknown_session", + "target": "controller_session_store_sessionstore" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L559", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L316", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_rationale_559", - "target": "readme_test_generator_test_required_field_present_with_none_raises" + "source": "controller_test_session_store_rationale_316", + "target": "controller_test_session_store_test_gc_loop_closes_abandoned_input_required_session" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L560", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L317", "weight": 1.0, - "source": "readme_test_generator_test_required_field_present_with_none_raises", - "target": "readme_generator_templatefielddecl" + "source": "controller_test_session_store_test_gc_loop_closes_abandoned_input_required_session", + "target": "controller_session_store_sessionstore" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L572", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L340", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_test_generator_rationale_572", - "target": "readme_test_generator_test_generated_at_uses_z_for_naive_datetime" + "source": "controller_test_session_store_rationale_340", + "target": "controller_test_session_store_test_gc_loop_periodically_runs_and_can_be_cancelled" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/readme/test_generator.py", - "source_location": "L573", - "weight": 1.0, - "source": "readme_test_generator_test_generated_at_uses_z_for_naive_datetime", - "target": "readme_generator_systemfields" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/readme/__init__.py", - "source_location": "L1", - "weight": 1.0, - "confidence_score": 1.0, - "source": "readme_init_rationale_1", - "target": "tests_unit_readme_init_py" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/readme/__init__.py", - "source_location": "L1", - "weight": 1.0, - "confidence_score": 1.0, - "source": "readme_init_rationale_1", - "target": "src_exlab_wizard_readme_init_py" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_creation_apply_config.py", - "source_location": "L16", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_creation_apply_config_py", - "target": "controller_test_creation_apply_config_controller" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_creation_apply_config.py", - "source_location": "L29", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_creation_apply_config_py", - "target": "controller_test_creation_apply_config_test_apply_config_swaps_config" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_creation_apply_config.py", - "source_location": "L39", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L341", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_creation_apply_config_py", - "target": "controller_test_creation_apply_config_test_apply_config_reinjects_plugin_host_only_when_given" + "source": "controller_test_session_store_test_gc_loop_periodically_runs_and_can_be_cancelled", + "target": "controller_session_store_sessionstore" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_creation_apply_config.py", - "source_location": "L1", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L351", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_test_creation_apply_config_rationale_1", - "target": "tests_unit_controller_test_creation_apply_config_py" + "source": "controller_test_session_store_rationale_351", + "target": "controller_test_session_store_test_gc_loop_skips_non_input_required_sessions" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_creation_apply_config.py", - "source_location": "L31", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L352", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_creation_apply_config_test_apply_config_swaps_config", - "target": "controller_test_creation_apply_config_controller" + "source": "controller_test_session_store_test_gc_loop_skips_non_input_required_sessions", + "target": "controller_session_store_sessionstore" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_creation_apply_config.py", - "source_location": "L40", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L367", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_creation_apply_config_test_apply_config_reinjects_plugin_host_only_when_given", - "target": "controller_test_creation_apply_config_controller" + "source": "controller_test_session_store_test_session_is_terminal_for_terminal_states", + "target": "controller_session_store_session" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_creation_apply_config.py", - "source_location": "L19", - "weight": 1.0, - "source": "controller_test_creation_apply_config_controller", - "target": "controller_creation_creationcontroller" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L25", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_state_to_phase_pending_returns_none" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L29", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_state_to_phase_validating_returns_validating_inputs" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L33", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_state_to_phase_rendering_returns_rendering_template" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L37", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_state_to_phase_plugin_pass_returns_running_plugins" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L41", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_state_to_phase_input_required_returns_input_required" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L45", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_state_to_phase_cache_write_returns_writing_cache" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L49", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_state_to_phase_post_validate_returns_validating_post_creation" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L53", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_state_to_phase_sync_queued_returns_queueing_nas_sync" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L57", + "source_file": "tests/unit/controller/test_session_store.py", + "source_location": "L383", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_state_to_phase_done_returns_done" + "source": "controller_test_session_store_test_session_is_terminal_false_for_non_terminal_states", + "target": "controller_session_store_session" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L61", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L48", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_state_to_phase_failed_returns_none" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_sandbox", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L65", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L69", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_state_to_phase_aborted_returns_none" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_read_creation", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L69", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L74", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_state_to_phase_covers_every_state" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_read_readme_fields", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L82", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L79", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_pending_transitions_to_validating" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_read_front_matter", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", + "source_file": "tests/unit/sample_data/test_generator.py", "source_location": "L86", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_validating_transitions_to_rendering" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_read_label", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L90", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L91", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_rendering_transitions_to_plugin_pass" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_project_dirs", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L94", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_plugin_pass_transitions_to_input_required_and_cache_write" + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L107", + "weight": 1.0, + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_run_dirs", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L100", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L121", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_input_required_transitions_back_to_plugin_pass" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_full_tree_exists", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L104", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L146", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_cache_write_transitions_to_post_validate" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_every_folder_has_metadata", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L108", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L176", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_post_validate_transitions_to_sync_queued" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_test_runs_marker_present_for_test_projects", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L112", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L198", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_sync_queued_transitions_to_done" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_sync_status_spread", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L134", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L216", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_fail_allowed_from_every_non_terminal_state" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_each_run_sync_status_matches_sample", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L151", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L240", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_aborted_allowed_from_every_non_terminal_state" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_default_payload_pair", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L160", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L256", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_done_is_terminal" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_blocked_run_carries_trigger_file", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L164", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L284", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_failed_is_terminal" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_readme_field_layering", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L168", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L307", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_aborted_is_terminal" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_seeded_config_default_is_present_and_optional", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L177", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L325", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_assert_transition_allows_legal_forward_edge" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_snapshot", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L183", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L339", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_assert_transition_allows_cancel_from_any_non_terminal" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_determinism", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L188", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L354", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_assert_transition_rejects_skipping_a_state" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_equipment_json_normalized_is_deterministic", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L193", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L383", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_assert_transition_rejects_terminal_to_anything" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_wipe_refuses_when_test_mode_unset", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L198", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L389", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_assert_transition_rejects_done_back_to_pipeline" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_wipe_refuses_when_app_name_not_test", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L203", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L399", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_assert_transition_rejects_backwards_through_pipeline" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_wipe_refuses_when_target_escapes_sandbox", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L213", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L419", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_session_state_values_match_lowercase_names" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_wipe_refuses_symlinked_target_escaping_sandbox", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L218", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L444", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_phase_values_use_spec_strings" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_seeded_equipment_roots_are_base_paths", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L229", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L472", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_valid_transitions_keys_cover_every_session_state" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_no_wipe_is_idempotent_and_nondestructive", + "confidence_score": 1.0 }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L233", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L487", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_state_machine_py", - "target": "controller_test_state_machine_test_assert_transition_rejects_unknown_source_state" + "source": "tests_unit_sample_data_test_generator_py", + "target": "sample_data_test_generator_test_generator_class_is_constructable", + "confidence_score": 1.0 }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", + "source_file": "tests/unit/sample_data/test_generator.py", "source_location": "L1", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_state_machine_rationale_1", - "target": "tests_unit_controller_test_state_machine_py" + "source": "sample_data_test_generator_rationale_1", + "target": "tests_unit_sample_data_test_generator_py", + "confidence_score": 1.0 }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L26", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L49", "weight": 1.0, - "source": "controller_test_state_machine_test_state_to_phase_pending_returns_none", - "target": "controller_state_machine_state_to_phase" + "source": "sample_data_test_generator_rationale_49", + "target": "sample_data_test_generator_sandbox", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L30", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L58", "weight": 1.0, - "source": "controller_test_state_machine_test_state_to_phase_validating_returns_validating_inputs", - "target": "controller_state_machine_state_to_phase" + "source": "sample_data_test_generator_sandbox", + "target": "config_models_pathsconfig" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L34", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L63", "weight": 1.0, - "source": "controller_test_state_machine_test_state_to_phase_rendering_returns_rendering_template", - "target": "controller_state_machine_state_to_phase" + "source": "sample_data_test_generator_sandbox", + "target": "config_models_orchestratorconfig" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L38", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L65", "weight": 1.0, - "source": "controller_test_state_machine_test_state_to_phase_plugin_pass_returns_running_plugins", - "target": "controller_state_machine_state_to_phase" + "source": "sample_data_test_generator_sandbox", + "target": "config_loader_save_config" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L42", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L159", "weight": 1.0, - "source": "controller_test_state_machine_test_state_to_phase_input_required_returns_input_required", - "target": "controller_state_machine_state_to_phase" + "source": "sample_data_test_generator_test_every_folder_has_metadata", + "target": "sample_data_test_generator_read_creation", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L46", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L206", "weight": 1.0, - "source": "controller_test_state_machine_test_state_to_phase_cache_write_returns_writing_cache", - "target": "controller_state_machine_state_to_phase" + "source": "sample_data_test_generator_test_sync_status_spread", + "target": "sample_data_test_generator_read_creation", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L50", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L230", "weight": 1.0, - "source": "controller_test_state_machine_test_state_to_phase_post_validate_returns_validating_post_creation", - "target": "controller_state_machine_state_to_phase" + "source": "sample_data_test_generator_test_each_run_sync_status_matches_sample", + "target": "sample_data_test_generator_read_creation", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L54", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L266", "weight": 1.0, - "source": "controller_test_state_machine_test_state_to_phase_sync_queued_returns_queueing_nas_sync", - "target": "controller_state_machine_state_to_phase" + "source": "sample_data_test_generator_test_blocked_run_carries_trigger_file", + "target": "sample_data_test_generator_read_creation", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L58", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L466", "weight": 1.0, - "source": "controller_test_state_machine_test_state_to_phase_done_returns_done", - "target": "controller_state_machine_state_to_phase" + "source": "sample_data_test_generator_test_seeded_equipment_roots_are_base_paths", + "target": "sample_data_test_generator_read_creation", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L62", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L70", "weight": 1.0, - "source": "controller_test_state_machine_test_state_to_phase_failed_returns_none", - "target": "controller_state_machine_state_to_phase" + "source": "sample_data_test_generator_read_creation", + "target": "exlab_wizard_paths_creation_json_path" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L66", - "weight": 1.0, - "source": "controller_test_state_machine_test_state_to_phase_aborted_returns_none", - "target": "controller_state_machine_state_to_phase" - }, - { - "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L70", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L161", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_state_machine_rationale_70", - "target": "controller_test_state_machine_test_state_to_phase_covers_every_state" + "source": "sample_data_test_generator_test_every_folder_has_metadata", + "target": "sample_data_test_generator_read_readme_fields", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L73", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L299", "weight": 1.0, - "source": "controller_test_state_machine_test_state_to_phase_covers_every_state", - "target": "controller_state_machine_state_to_phase" + "source": "sample_data_test_generator_test_readme_field_layering", + "target": "sample_data_test_generator_read_readme_fields", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L179", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L75", "weight": 1.0, - "source": "controller_test_state_machine_test_assert_transition_allows_legal_forward_edge", - "target": "controller_state_machine_assert_transition" + "source": "sample_data_test_generator_read_readme_fields", + "target": "exlab_wizard_paths_readme_fields_json_path" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L184", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L88", "weight": 1.0, - "source": "controller_test_state_machine_test_assert_transition_allows_cancel_from_any_non_terminal", - "target": "controller_state_machine_assert_transition" + "source": "sample_data_test_generator_read_label", + "target": "sample_data_test_generator_read_front_matter", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L190", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L163", "weight": 1.0, - "source": "controller_test_state_machine_test_assert_transition_rejects_skipping_a_state", - "target": "controller_state_machine_assert_transition" + "source": "sample_data_test_generator_test_every_folder_has_metadata", + "target": "sample_data_test_generator_read_front_matter", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L195", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L231", "weight": 1.0, - "source": "controller_test_state_machine_test_assert_transition_rejects_terminal_to_anything", - "target": "controller_state_machine_assert_transition" + "source": "sample_data_test_generator_test_each_run_sync_status_matches_sample", + "target": "sample_data_test_generator_read_label", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L200", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L249", "weight": 1.0, - "source": "controller_test_state_machine_test_assert_transition_rejects_done_back_to_pipeline", - "target": "controller_state_machine_assert_transition" + "source": "sample_data_test_generator_test_default_payload_pair", + "target": "sample_data_test_generator_read_label", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L205", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L295", "weight": 1.0, - "source": "controller_test_state_machine_test_assert_transition_rejects_backwards_through_pipeline", - "target": "controller_state_machine_assert_transition" + "source": "sample_data_test_generator_test_readme_field_layering", + "target": "sample_data_test_generator_read_label", + "confidence_score": 1.0 }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L234", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L87", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_state_machine_rationale_234", - "target": "controller_test_state_machine_test_assert_transition_rejects_unknown_source_state" + "source": "sample_data_test_generator_rationale_87", + "target": "sample_data_test_generator_read_label", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_state_machine.py", - "source_location": "L244", - "weight": 1.0, - "source": "controller_test_state_machine_test_assert_transition_rejects_unknown_source_state", - "target": "controller_state_machine_assert_transition" - }, - { - "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L131", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_init_rationale_1", - "target": "tests_unit_controller_init_py" + "source": "sample_data_test_generator_test_full_tree_exists", + "target": "sample_data_test_generator_project_dirs", + "confidence_score": 1.0 }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/integration/controller/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L151", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_init_rationale_1", - "target": "tests_integration_controller_init_py" + "source": "sample_data_test_generator_test_every_folder_has_metadata", + "target": "sample_data_test_generator_project_dirs", + "confidence_score": 1.0 }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/controller/__init__.py", - "source_location": "L1", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L181", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_init_rationale_1", - "target": "src_exlab_wizard_controller_init_py" + "source": "sample_data_test_generator_test_test_runs_marker_present_for_test_projects", + "target": "sample_data_test_generator_project_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L36", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L204", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_open_returns_fresh_pending_session" + "source": "sample_data_test_generator_test_sync_status_spread", + "target": "sample_data_test_generator_project_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L46", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L228", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_open_assigns_uuid4_session_id" + "source": "sample_data_test_generator_test_each_run_sync_status_matches_sample", + "target": "sample_data_test_generator_project_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L54", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L247", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_open_two_sessions_get_distinct_ids" + "source": "sample_data_test_generator_test_default_payload_pair", + "target": "sample_data_test_generator_project_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L61", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L262", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_open_sets_created_at_and_last_heartbeat_to_now" + "source": "sample_data_test_generator_test_blocked_run_carries_trigger_file", + "target": "sample_data_test_generator_project_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L75", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L291", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_get_returns_none_for_unknown_session_id" + "source": "sample_data_test_generator_test_readme_field_layering", + "target": "sample_data_test_generator_project_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L80", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L464", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_get_returns_session_after_open" + "source": "sample_data_test_generator_test_seeded_equipment_roots_are_base_paths", + "target": "sample_data_test_generator_project_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L87", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L92", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_iter_sorted_returns_pairs_oldest_created_first" + "source": "sample_data_test_generator_rationale_92", + "target": "sample_data_test_generator_project_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L98", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L135", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_gc_publishes_terminal_frame_to_live_subscriber" + "source": "sample_data_test_generator_test_full_tree_exists", + "target": "sample_data_test_generator_run_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L120", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L154", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_project_identifier_prefers_short_id_then_falls_back_to_project_name" + "source": "sample_data_test_generator_test_every_folder_has_metadata", + "target": "sample_data_test_generator_run_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L136", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L205", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_transition_updates_state_and_phase_together" + "source": "sample_data_test_generator_test_sync_status_spread", + "target": "sample_data_test_generator_run_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L144", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L229", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_transition_to_input_required_sets_next_action_awaiting_input" + "source": "sample_data_test_generator_test_each_run_sync_status_matches_sample", + "target": "sample_data_test_generator_run_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L154", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L248", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_transition_back_to_plugin_pass_clears_next_action" + "source": "sample_data_test_generator_test_default_payload_pair", + "target": "sample_data_test_generator_run_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L169", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L265", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_transition_rejects_unknown_session_id" + "source": "sample_data_test_generator_test_blocked_run_carries_trigger_file", + "target": "sample_data_test_generator_run_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L175", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L294", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_transition_rejects_illegal_state_transition" + "source": "sample_data_test_generator_test_readme_field_layering", + "target": "sample_data_test_generator_run_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L187", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L465", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_attach_event_queue_wires_queue_to_session" + "source": "sample_data_test_generator_test_seeded_equipment_roots_are_base_paths", + "target": "sample_data_test_generator_run_dirs", + "confidence_score": 1.0 }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L195", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L122", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_attach_event_queue_rejects_unknown_session_id" + "source": "sample_data_test_generator_test_full_tree_exists", + "target": "sample_data_generator_generate_samples" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L207", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L123", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_heartbeat_updates_last_heartbeat" + "source": "sample_data_test_generator_test_full_tree_exists", + "target": "config_loader_load_config" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L217", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L147", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_heartbeat_is_noop_for_unknown_session" + "source": "sample_data_test_generator_test_every_folder_has_metadata", + "target": "sample_data_generator_generate_samples" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L228", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L148", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_abandoned_older_than_returns_only_input_required_sessions" + "source": "sample_data_test_generator_test_every_folder_has_metadata", + "target": "config_loader_load_config" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L250", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L170", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_abandoned_older_than_skips_recent_input_required_sessions" + "source": "sample_data_test_generator_test_every_folder_has_metadata", + "target": "exlab_wizard_paths_equipment_json_path" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L265", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L177", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_abandoned_older_than_returns_empty_when_no_sessions_exist" + "source": "sample_data_test_generator_test_test_runs_marker_present_for_test_projects", + "target": "sample_data_generator_generate_samples" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L275", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L178", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_close_stores_outcome_for_done_session" + "source": "sample_data_test_generator_test_test_runs_marker_present_for_test_projects", + "target": "config_loader_load_config" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L294", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L183", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_close_stores_outcome_in_error_for_failed_session" + "source": "sample_data_test_generator_test_test_runs_marker_present_for_test_projects", + "target": "exlab_wizard_paths_cache_dir" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L304", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L199", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_close_is_noop_for_unknown_session" + "source": "sample_data_test_generator_test_sync_status_spread", + "target": "sample_data_generator_generate_samples" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L315", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L200", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_gc_loop_closes_abandoned_input_required_session" + "source": "sample_data_test_generator_test_sync_status_spread", + "target": "config_loader_load_config" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L339", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L217", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_gc_loop_periodically_runs_and_can_be_cancelled" + "source": "sample_data_test_generator_test_each_run_sync_status_matches_sample", + "target": "sample_data_generator_generate_samples" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L350", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L218", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_gc_loop_skips_non_input_required_sessions" + "source": "sample_data_test_generator_test_each_run_sync_status_matches_sample", + "target": "config_loader_load_config" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L366", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L241", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_session_is_terminal_for_terminal_states" + "source": "sample_data_test_generator_test_default_payload_pair", + "target": "sample_data_generator_generate_samples" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L382", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L242", "weight": 1.0, - "confidence_score": 1.0, - "source": "tests_unit_controller_test_session_store_py", - "target": "controller_test_session_store_test_session_is_terminal_false_for_non_terminal_states" + "source": "sample_data_test_generator_test_default_payload_pair", + "target": "config_loader_load_config" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L257", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_session_store_rationale_1", - "target": "tests_unit_controller_test_session_store_py" + "source": "sample_data_test_generator_test_blocked_run_carries_trigger_file", + "target": "sample_data_generator_generate_samples" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L37", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L258", "weight": 1.0, - "source": "controller_test_session_store_test_open_returns_fresh_pending_session", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_blocked_run_carries_trigger_file", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L47", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L285", "weight": 1.0, - "source": "controller_test_session_store_test_open_assigns_uuid4_session_id", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_readme_field_layering", + "target": "sample_data_generator_generate_samples" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L55", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L286", "weight": 1.0, - "source": "controller_test_session_store_test_open_two_sessions_get_distinct_ids", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_readme_field_layering", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L62", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L308", "weight": 1.0, - "source": "controller_test_session_store_test_open_sets_created_at_and_last_heartbeat_to_now", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_seeded_config_default_is_present_and_optional", + "target": "sample_data_generator_generate_samples" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L76", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L309", "weight": 1.0, - "source": "controller_test_session_store_test_get_returns_none_for_unknown_session_id", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_seeded_config_default_is_present_and_optional", + "target": "config_loader_load_config" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L343", + "weight": 1.0, + "source": "sample_data_test_generator_test_determinism", + "target": "sample_data_test_generator_snapshot", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L326", + "weight": 1.0, + "source": "sample_data_test_generator_rationale_326", + "target": "sample_data_test_generator_snapshot", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L81", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L340", "weight": 1.0, - "source": "controller_test_session_store_test_get_returns_session_after_open", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_determinism", + "target": "sample_data_generator_generate_samples" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L88", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L341", "weight": 1.0, - "source": "controller_test_session_store_test_iter_sorted_returns_pairs_oldest_created_first", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_determinism", + "target": "config_loader_load_config" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L99", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L355", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_session_store_rationale_99", - "target": "controller_test_session_store_test_gc_publishes_terminal_frame_to_live_subscriber" + "source": "sample_data_test_generator_rationale_355", + "target": "sample_data_test_generator_test_equipment_json_normalized_is_deterministic", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L105", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L356", "weight": 1.0, - "source": "controller_test_session_store_test_gc_publishes_terminal_frame_to_live_subscriber", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_equipment_json_normalized_is_deterministic", + "target": "sample_data_generator_generate_samples" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L124", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L357", "weight": 1.0, - "source": "controller_test_session_store_test_project_identifier_prefers_short_id_then_falls_back_to_project_name", - "target": "controller_session_store_project_identifier" + "source": "sample_data_test_generator_test_equipment_json_normalized_is_deterministic", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L137", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L386", "weight": 1.0, - "source": "controller_test_session_store_test_transition_updates_state_and_phase_together", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_wipe_refuses_when_test_mode_unset", + "target": "sample_data_generator_generate_samples" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L145", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L396", "weight": 1.0, - "source": "controller_test_session_store_test_transition_to_input_required_sets_next_action_awaiting_input", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_wipe_refuses_when_app_name_not_test", + "target": "sample_data_generator_generate_samples" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L155", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L404", "weight": 1.0, - "source": "controller_test_session_store_test_transition_back_to_plugin_pass_clears_next_action", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_wipe_refuses_when_target_escapes_sandbox", + "target": "sample_data_generator_generate_samples" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L170", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L405", "weight": 1.0, - "source": "controller_test_session_store_test_transition_rejects_unknown_session_id", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_wipe_refuses_when_target_escapes_sandbox", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L176", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L407", "weight": 1.0, - "source": "controller_test_session_store_test_transition_rejects_illegal_state_transition", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_wipe_refuses_when_target_escapes_sandbox", + "target": "config_models_pathsconfig" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L188", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L414", "weight": 1.0, - "source": "controller_test_session_store_test_attach_event_queue_wires_queue_to_session", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_wipe_refuses_when_target_escapes_sandbox", + "target": "config_loader_save_config" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L420", + "weight": 1.0, + "source": "sample_data_test_generator_rationale_420", + "target": "sample_data_test_generator_test_wipe_refuses_symlinked_target_escaping_sandbox", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L196", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L423", "weight": 1.0, - "source": "controller_test_session_store_test_attach_event_queue_rejects_unknown_session_id", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_wipe_refuses_symlinked_target_escaping_sandbox", + "target": "sample_data_generator_generate_samples" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L208", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L424", "weight": 1.0, - "source": "controller_test_session_store_test_heartbeat_updates_last_heartbeat", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_wipe_refuses_symlinked_target_escaping_sandbox", + "target": "config_loader_load_config" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L445", + "weight": 1.0, + "source": "sample_data_test_generator_rationale_445", + "target": "sample_data_test_generator_test_seeded_equipment_roots_are_base_paths", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L218", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L453", "weight": 1.0, - "source": "controller_test_session_store_test_heartbeat_is_noop_for_unknown_session", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_seeded_equipment_roots_are_base_paths", + "target": "sample_data_generator_generate_samples" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L229", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L454", "weight": 1.0, - "source": "controller_test_session_store_test_abandoned_older_than_returns_only_input_required_sessions", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_seeded_equipment_roots_are_base_paths", + "target": "config_loader_load_config" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L473", + "weight": 1.0, + "source": "sample_data_test_generator_rationale_473", + "target": "sample_data_test_generator_test_no_wipe_is_idempotent_and_nondestructive", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L251", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L474", "weight": 1.0, - "source": "controller_test_session_store_test_abandoned_older_than_skips_recent_input_required_sessions", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_no_wipe_is_idempotent_and_nondestructive", + "target": "sample_data_generator_generate_samples" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L266", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L475", "weight": 1.0, - "source": "controller_test_session_store_test_abandoned_older_than_returns_empty_when_no_sessions_exist", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_no_wipe_is_idempotent_and_nondestructive", + "target": "config_loader_load_config" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L276", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L488", "weight": 1.0, - "source": "controller_test_session_store_test_close_stores_outcome_for_done_session", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_generator_class_is_constructable", + "target": "sample_data_generator_sampledatagenerator" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L295", + "source_file": "tests/unit/sample_data/test_generator.py", + "source_location": "L490", "weight": 1.0, - "source": "controller_test_session_store_test_close_stores_outcome_in_error_for_failed_session", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_generator_test_generator_class_is_constructable", + "target": "config_loader_load_config" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L23", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_project", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L27", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_samples_top_level_shape", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L34", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_testrig_has_one_project_three_runs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L41", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_altrig_has_two_projects_two_runs_each", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L49", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_total_run_count_is_seven", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L54", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_malformed_short_id_raises_validation_error", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L73", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_malformed_equipment_id_raises_validation_error", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L98", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_malformed_project_name_raises_validation_error", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L119", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_unknown_key_rejected_extra_forbid", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L131", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_samplefile_rejects_escaping_relpath", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L137", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_samplefile_accepts_nested_relative_path", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L141", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_sync_status_spread_covers_required_states", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L151", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_proj_0003_blocked_run_carries_trigger_file", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L162", + "weight": 1.0, + "source": "tests_unit_sample_data_test_spec_py", + "target": "sample_data_test_spec_test_proj_0002_calibration_a_has_readme_extra_fields", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L1", + "weight": 1.0, + "source": "sample_data_test_spec_rationale_1", + "target": "tests_unit_sample_data_test_spec_py", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L305", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L45", "weight": 1.0, - "source": "controller_test_session_store_test_close_is_noop_for_unknown_session", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_spec_test_altrig_has_two_projects_two_runs_each", + "target": "sample_data_test_spec_project", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L153", + "weight": 1.0, + "source": "sample_data_test_spec_test_proj_0003_blocked_run_carries_trigger_file", + "target": "sample_data_test_spec_project", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L164", + "weight": 1.0, + "source": "sample_data_test_spec_test_proj_0002_calibration_a_has_readme_extra_fields", + "target": "sample_data_test_spec_project", + "confidence_score": 1.0 }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L316", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L28", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_session_store_rationale_316", - "target": "controller_test_session_store_test_gc_loop_closes_abandoned_input_required_session" + "source": "sample_data_test_spec_rationale_28", + "target": "sample_data_test_spec_test_samples_top_level_shape", + "confidence_score": 1.0 }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L317", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L56", "weight": 1.0, - "source": "controller_test_session_store_test_gc_loop_closes_abandoned_input_required_session", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_spec_test_malformed_short_id_raises_validation_error", + "target": "sample_data_spec_sampleproject" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L340", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L63", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_session_store_rationale_340", - "target": "controller_test_session_store_test_gc_loop_periodically_runs_and_can_be_cancelled" + "source": "sample_data_test_spec_test_malformed_short_id_raises_validation_error", + "target": "sample_data_spec_samplerun" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L341", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L75", "weight": 1.0, - "source": "controller_test_session_store_test_gc_loop_periodically_runs_and_can_be_cancelled", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_spec_test_malformed_equipment_id_raises_validation_error", + "target": "sample_data_spec_sampleequipment" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L351", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L79", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_session_store_rationale_351", - "target": "controller_test_session_store_test_gc_loop_skips_non_input_required_sessions" + "source": "sample_data_test_spec_test_malformed_equipment_id_raises_validation_error", + "target": "sample_data_spec_sampleproject" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L352", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L86", "weight": 1.0, - "source": "controller_test_session_store_test_gc_loop_skips_non_input_required_sessions", - "target": "controller_session_store_sessionstore" + "source": "sample_data_test_spec_test_malformed_equipment_id_raises_validation_error", + "target": "sample_data_spec_samplerun" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L367", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L102", "weight": 1.0, - "source": "controller_test_session_store_test_session_is_terminal_for_terminal_states", - "target": "controller_session_store_session" + "source": "sample_data_test_spec_test_malformed_project_name_raises_validation_error", + "target": "sample_data_spec_sampleproject" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/unit/controller/test_session_store.py", - "source_location": "L383", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L109", "weight": 1.0, - "source": "controller_test_session_store_test_session_is_terminal_false_for_non_terminal_states", - "target": "controller_session_store_session" + "source": "sample_data_test_spec_test_malformed_project_name_raises_validation_error", + "target": "sample_data_spec_samplerun" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L121", + "weight": 1.0, + "source": "sample_data_test_spec_test_unknown_key_rejected_extra_forbid", + "target": "sample_data_spec_samplerun" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L132", + "weight": 1.0, + "source": "sample_data_test_spec_rationale_132", + "target": "sample_data_test_spec_test_samplefile_rejects_escaping_relpath", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L134", + "weight": 1.0, + "source": "sample_data_test_spec_test_samplefile_rejects_escaping_relpath", + "target": "sample_data_spec_samplefile" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/sample_data/test_spec.py", + "source_location": "L138", + "weight": 1.0, + "source": "sample_data_test_spec_test_samplefile_accepts_nested_relative_path", + "target": "sample_data_spec_samplefile" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/sample_data/__init__.py", + "source_location": "L1", + "weight": 1.0, + "source": "sample_data_init_rationale_1", + "target": "tests_unit_sample_data_init_py", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/__init__.py", + "source_location": "L1", + "weight": 1.0, + "source": "sample_data_init_rationale_1", + "target": "src_exlab_wizard_sample_data_init_py", + "confidence_score": 1.0 }, { "relation": "contains", @@ -145552,6 +154665,46 @@ "source": "config_models_config", "target": "basemodel" }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L29", + "weight": 1.0, + "source": "sample_data_spec_samplefile", + "target": "basemodel", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L50", + "weight": 1.0, + "source": "sample_data_spec_samplerun", + "target": "basemodel", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L63", + "weight": 1.0, + "source": "sample_data_spec_sampleproject", + "target": "basemodel", + "confidence_score": 1.0 + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L97", + "weight": 1.0, + "source": "sample_data_spec_sampleequipment", + "target": "basemodel", + "confidence_score": 1.0 + }, { "relation": "inherits", "confidence": "EXTRACTED", @@ -155247,6 +164400,109 @@ "source": "api_test_app_test_lifespan_starts_and_stops_audit_task", "target": "api_app_create_app" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L10", + "weight": 1.0, + "source": "tests_unit_dev_test_seed_py", + "target": "dev_test_seed_sandbox_under", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L31", + "weight": 1.0, + "source": "tests_unit_dev_test_seed_py", + "target": "dev_test_seed_test_seed_main_creates_full_tree", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L59", + "weight": 1.0, + "source": "tests_unit_dev_test_seed_py", + "target": "dev_test_seed_test_seed_main_wipes_and_rebuilds", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L1", + "weight": 1.0, + "source": "dev_test_seed_rationale_1", + "target": "tests_unit_dev_test_seed_py", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L37", + "weight": 1.0, + "source": "dev_test_seed_test_seed_main_creates_full_tree", + "target": "dev_test_seed_sandbox_under", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L64", + "weight": 1.0, + "source": "dev_test_seed_test_seed_main_wipes_and_rebuilds", + "target": "dev_test_seed_sandbox_under", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L11", + "weight": 1.0, + "source": "dev_test_seed_rationale_11", + "target": "dev_test_seed_sandbox_under", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L32", + "weight": 1.0, + "source": "dev_test_seed_rationale_32", + "target": "dev_test_seed_test_seed_main_creates_full_tree", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L56", + "weight": 1.0, + "source": "dev_test_seed_test_seed_main_creates_full_tree", + "target": "exlab_wizard_paths_creation_json_path" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/dev/test_seed.py", + "source_location": "L60", + "weight": 1.0, + "source": "dev_test_seed_rationale_60", + "target": "dev_test_seed_test_seed_main_wipes_and_rebuilds", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -174158,6 +183414,16 @@ "source": "controller_test_creation_flow_rationale_432", "target": "controller_test_creation_flow_test_plugin_input_required_suspend_resume" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L501", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_501", + "target": "controller_test_creation_flow_test_cancel_with_discard_files_removes_partial_dir", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174178,6 +183444,16 @@ "source": "controller_test_creation_flow_rationale_503", "target": "controller_test_creation_flow_test_cancel_with_discard_files_removes_partial_dir" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L539", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_539", + "target": "controller_test_creation_flow_test_cancel_without_discard_leaves_partial_dir", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174198,6 +183474,16 @@ "source": "controller_test_creation_flow_rationale_541", "target": "controller_test_creation_flow_test_cancel_without_discard_leaves_partial_dir" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L563", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_563", + "target": "controller_test_creation_flow_test_post_validate_blocks_sync_when_placeholder_left_in_file", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174266,11 +183552,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L688", + "source_location": "L693", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_creation_flow_rationale_688", - "target": "controller_test_creation_flow_test_real_readme_generator_writes_frontmatter_and_cache" + "source": "controller_test_creation_flow_rationale_693", + "target": "controller_test_creation_flow_test_real_readme_generator_writes_frontmatter_and_cache", + "confidence_score": 1.0 }, { "relation": "calls", @@ -174294,6 +183580,16 @@ "source": "controller_test_creation_flow_test_real_readme_generator_writes_frontmatter_and_cache", "target": "readme_generator_readmegenerator" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L688", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_test_creation_flow_rationale_688", + "target": "controller_test_creation_flow_test_real_readme_generator_writes_frontmatter_and_cache" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174315,6 +183611,16 @@ "source": "controller_test_creation_flow_test_noop_nas_sync_returns_none", "target": "controller_creation_noopnassync" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L769", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_769", + "target": "controller_test_creation_flow_test_required_template_field_missing_in_readme_extra_fails", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174335,6 +183641,16 @@ "source": "controller_test_creation_flow_rationale_771", "target": "controller_test_creation_flow_test_required_template_field_missing_in_readme_extra_fails" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L805", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_805", + "target": "controller_test_creation_flow_test_required_template_field_present_passes_validation", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174359,11 +183675,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L844", + "source_location": "L849", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_creation_flow_rationale_844", - "target": "controller_test_creation_flow_test_cancel_input_required_aborts_session_via_plugin_callback" + "source": "controller_test_creation_flow_rationale_849", + "target": "controller_test_creation_flow_test_cancel_input_required_aborts_session_via_plugin_callback", + "confidence_score": 1.0 }, { "relation": "calls", @@ -174376,6 +183692,16 @@ "source": "controller_test_creation_flow_test_cancel_input_required_aborts_session_via_plugin_callback", "target": "plugins_host_pluginhost" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L844", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_test_creation_flow_rationale_844", + "target": "controller_test_creation_flow_test_cancel_input_required_aborts_session_via_plugin_callback" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174386,6 +183712,16 @@ "source": "controller_test_creation_flow_rationale_851", "target": "controller_test_creation_flow_test_cancel_input_required_aborts_session_via_plugin_callback" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L907", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_907", + "target": "controller_test_creation_flow_test_cancel_invokes_cleanup_when_compose_path_fails", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174406,6 +183742,16 @@ "source": "controller_test_creation_flow_rationale_909", "target": "controller_test_creation_flow_test_cancel_invokes_cleanup_when_compose_path_fails" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L930", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_930", + "target": "controller_test_creation_flow_test_cleanup_removes_existing_directory_when_discard_files_true", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174430,11 +183776,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L942", + "source_location": "L947", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_creation_flow_rationale_942", - "target": "controller_test_creation_flow_test_config_required_readme_field_missing_fails" + "source": "controller_test_creation_flow_rationale_947", + "target": "controller_test_creation_flow_test_config_required_readme_field_missing_fails", + "confidence_score": 1.0 }, { "relation": "calls", @@ -174447,6 +183793,16 @@ "source": "controller_test_creation_flow_test_config_required_readme_field_missing_fails", "target": "config_models_readmedefaultfield" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L942", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_test_creation_flow_rationale_942", + "target": "controller_test_creation_flow_test_config_required_readme_field_missing_fails" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174457,6 +183813,16 @@ "source": "controller_test_creation_flow_rationale_949", "target": "controller_test_creation_flow_test_config_required_readme_field_missing_fails" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L973", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_973", + "target": "controller_test_creation_flow_test_render_failure_transitions_session_to_failed", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174477,6 +183843,16 @@ "source": "controller_test_creation_flow_rationale_975", "target": "controller_test_creation_flow_test_render_failure_transitions_session_to_failed" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1001", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_1001", + "target": "controller_test_creation_flow_test_run_creation_writes_equipment_json_at_root", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174497,6 +183873,16 @@ "source": "controller_test_creation_flow_rationale_1003", "target": "controller_test_creation_flow_test_run_creation_writes_equipment_json_at_root" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1017", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_1017", + "target": "controller_test_creation_flow_test_format_error_with_non_validation_exception_returns_internal_error", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174517,6 +183903,16 @@ "source": "controller_test_creation_flow_rationale_1019", "target": "controller_test_creation_flow_test_format_error_with_non_validation_exception_returns_internal_error" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1024", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_1024", + "target": "controller_test_creation_flow_test_append_log_writes_log_line", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174537,6 +183933,16 @@ "source": "controller_test_creation_flow_rationale_1026", "target": "controller_test_creation_flow_test_append_log_writes_log_line" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1040", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_1040", + "target": "controller_test_creation_flow_test_run_inherits_lims_project_block_from_parent", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174557,6 +183963,16 @@ "source": "controller_test_creation_flow_rationale_1042", "target": "controller_test_creation_flow_test_run_inherits_lims_project_block_from_parent" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1064", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_1064", + "target": "controller_test_creation_flow_test_cancel_before_task_starts_invokes_cleanup", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174577,6 +183993,16 @@ "source": "controller_test_creation_flow_rationale_1066", "target": "controller_test_creation_flow_test_cancel_before_task_starts_invokes_cleanup" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1084", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_1084", + "target": "controller_test_creation_flow_test_resume_session_with_no_resume_queue_raises", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174597,6 +184023,16 @@ "source": "controller_test_creation_flow_rationale_1086", "target": "controller_test_creation_flow_test_resume_session_with_no_resume_queue_raises" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1105", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_1105", + "target": "controller_test_creation_flow_test_subscribe_creates_queue_when_missing", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174617,6 +184053,16 @@ "source": "controller_test_creation_flow_rationale_1107", "target": "controller_test_creation_flow_test_subscribe_creates_queue_when_missing" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1129", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_1129", + "target": "controller_test_creation_flow_test_plugin_pass_aborted_transitions_to_failed", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174641,11 +184087,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/integration/controller/test_creation_flow.py", - "source_location": "L1169", + "source_location": "L1174", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_test_creation_flow_rationale_1169", - "target": "controller_test_creation_flow_test_required_field_ids_filters_non_dict_entries" + "source": "controller_test_creation_flow_rationale_1174", + "target": "controller_test_creation_flow_test_required_field_ids_filters_non_dict_entries", + "confidence_score": 1.0 }, { "relation": "calls", @@ -174658,6 +184104,16 @@ "source": "controller_test_creation_flow_test_required_field_ids_filters_non_dict_entries", "target": "controller_creation_required_field_ids" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1169", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_test_creation_flow_rationale_1169", + "target": "controller_test_creation_flow_test_required_field_ids_filters_non_dict_entries" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -174668,6 +184124,16 @@ "source": "controller_test_creation_flow_rationale_1176", "target": "controller_test_creation_flow_test_required_field_ids_filters_non_dict_entries" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/integration/controller/test_creation_flow.py", + "source_location": "L1190", + "weight": 1.0, + "source": "controller_test_creation_flow_rationale_1190", + "target": "controller_test_creation_flow_test_run_without_parent_creation_json_fills_stub_block", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -177398,6 +186864,16 @@ "source": "tests_e2e_test_flow_08_settings_py", "target": "e2e_test_flow_08_settings_test_flow_08_lims_password_cancel_discards_edit" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_08_settings.py", + "source_location": "L108", + "weight": 1.0, + "source": "tests_e2e_test_flow_08_settings_py", + "target": "e2e_test_flow_08_settings_test_flow_08_workstation_section_hides_staging_root", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -177461,6 +186937,27 @@ "source": "e2e_test_flow_08_settings_test_flow_08_lims_password_cancel_discards_edit", "target": "page_objects_settings_page_settingspage" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_08_settings.py", + "source_location": "L109", + "weight": 1.0, + "source": "e2e_test_flow_08_settings_rationale_109", + "target": "e2e_test_flow_08_settings_test_flow_08_workstation_section_hides_staging_root", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/e2e/test_flow_08_settings.py", + "source_location": "L112", + "weight": 1.0, + "source": "e2e_test_flow_08_settings_test_flow_08_workstation_section_hides_staging_root", + "target": "page_objects_settings_page_settingspage" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -178192,11 +187689,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L34", + "source_location": "L38", "weight": 1.0, - "confidence_score": 1.0, - "source": "e2e_test_flow_16_add_equipment_rationale_34", - "target": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_identity_step" + "source": "e2e_test_flow_16_add_equipment_rationale_38", + "target": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_identity_step", + "confidence_score": 1.0 }, { "relation": "calls", @@ -178213,11 +187710,21 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L45", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "e2e_test_flow_16_add_equipment_rationale_45", - "target": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_paths_step" + "source": "e2e_test_flow_16_add_equipment_rationale_34", + "target": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_identity_step" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_16_add_equipment.py", + "source_location": "L49", + "weight": 1.0, + "source": "e2e_test_flow_16_add_equipment_rationale_49", + "target": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_paths_step", + "confidence_score": 1.0 }, { "relation": "calls", @@ -178234,11 +187741,21 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L53", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "e2e_test_flow_16_add_equipment_rationale_53", - "target": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_sync_mode_step" + "source": "e2e_test_flow_16_add_equipment_rationale_45", + "target": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_paths_step" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_16_add_equipment.py", + "source_location": "L61", + "weight": 1.0, + "source": "e2e_test_flow_16_add_equipment_rationale_61", + "target": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_sync_mode_step", + "confidence_score": 1.0 }, { "relation": "calls", @@ -178255,11 +187772,21 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L60", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "e2e_test_flow_16_add_equipment_rationale_60", - "target": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_review_and_confirm" + "source": "e2e_test_flow_16_add_equipment_rationale_53", + "target": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_sync_mode_step" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_16_add_equipment.py", + "source_location": "L68", + "weight": 1.0, + "source": "e2e_test_flow_16_add_equipment_rationale_68", + "target": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_review_and_confirm", + "confidence_score": 1.0 }, { "relation": "calls", @@ -178276,11 +187803,21 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/e2e/test_flow_16_add_equipment.py", - "source_location": "L70", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "e2e_test_flow_16_add_equipment_rationale_70", - "target": "e2e_test_flow_16_add_equipment_test_flow_16_next_enables_on_valid_input_and_state_survives_back" + "source": "e2e_test_flow_16_add_equipment_rationale_60", + "target": "e2e_test_flow_16_add_equipment_test_flow_16_add_equipment_review_and_confirm" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_16_add_equipment.py", + "source_location": "L78", + "weight": 1.0, + "source": "e2e_test_flow_16_add_equipment_rationale_78", + "target": "e2e_test_flow_16_add_equipment_test_flow_16_next_enables_on_valid_input_and_state_survives_back", + "confidence_score": 1.0 }, { "relation": "calls", @@ -178293,6 +187830,16 @@ "source": "e2e_test_flow_16_add_equipment_test_flow_16_next_enables_on_valid_input_and_state_survives_back", "target": "page_objects_wizard_equipment_page_wizardequipmentpage" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_16_add_equipment.py", + "source_location": "L70", + "weight": 1.0, + "confidence_score": 1.0, + "source": "e2e_test_flow_16_add_equipment_rationale_70", + "target": "e2e_test_flow_16_add_equipment_test_flow_16_next_enables_on_valid_input_and_state_survives_back" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -178809,6 +188356,16 @@ "source": "e2e_test_flow_25_production_main_wiring_test_flow_25_footer_clear_verified_routes_to_callback", "target": "e2e_test_flow_25_production_main_wiring_goto" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L24", + "weight": 1.0, + "source": "e2e_test_flow_25_production_main_wiring_rationale_24", + "target": "e2e_test_flow_25_production_main_wiring_goto", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -178819,6 +188376,16 @@ "source": "e2e_test_flow_25_production_main_wiring_rationale_22", "target": "e2e_test_flow_25_production_main_wiring_goto" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L43", + "weight": 1.0, + "source": "e2e_test_flow_25_production_main_wiring_rationale_43", + "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_main_route_renders_redesigned_layout", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -178829,6 +188396,16 @@ "source": "e2e_test_flow_25_production_main_wiring_rationale_41", "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_main_route_renders_redesigned_layout" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L81", + "weight": 1.0, + "source": "e2e_test_flow_25_production_main_wiring_rationale_81", + "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_add_equipment_button_navigates_to_wizard", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -178839,6 +188416,16 @@ "source": "e2e_test_flow_25_production_main_wiring_rationale_76", "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_add_equipment_button_navigates_to_wizard" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L88", + "weight": 1.0, + "source": "e2e_test_flow_25_production_main_wiring_rationale_88", + "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_select_node_threads_selected_into_url", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -178849,6 +188436,16 @@ "source": "e2e_test_flow_25_production_main_wiring_rationale_83", "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_select_node_threads_selected_into_url" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L101", + "weight": 1.0, + "source": "e2e_test_flow_25_production_main_wiring_rationale_101", + "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_selected_query_renders_centre_and_right_panes", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -178859,6 +188456,16 @@ "source": "e2e_test_flow_25_production_main_wiring_rationale_96", "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_selected_query_renders_centre_and_right_panes" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L111", + "weight": 1.0, + "source": "e2e_test_flow_25_production_main_wiring_rationale_111", + "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_breadcrumb_navigation_re_navigates_main", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -178869,6 +188476,16 @@ "source": "e2e_test_flow_25_production_main_wiring_rationale_106", "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_breadcrumb_navigation_re_navigates_main" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L127", + "weight": 1.0, + "source": "e2e_test_flow_25_production_main_wiring_rationale_127", + "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_toggle_right_pane_toggles_query_param", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -178879,6 +188496,16 @@ "source": "e2e_test_flow_25_production_main_wiring_rationale_122", "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_toggle_right_pane_toggles_query_param" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L138", + "weight": 1.0, + "source": "e2e_test_flow_25_production_main_wiring_rationale_138", + "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_tree_context_action_deep_links_into_settings", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -178889,6 +188516,16 @@ "source": "e2e_test_flow_25_production_main_wiring_rationale_133", "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_tree_context_action_deep_links_into_settings" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L153", + "weight": 1.0, + "source": "e2e_test_flow_25_production_main_wiring_rationale_153", + "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_received_equipment_disables_creation_buttons", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -178899,6 +188536,16 @@ "source": "e2e_test_flow_25_production_main_wiring_rationale_148", "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_received_equipment_disables_creation_buttons" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_25_production_main_wiring.py", + "source_location": "L182", + "weight": 1.0, + "source": "e2e_test_flow_25_production_main_wiring_rationale_182", + "target": "e2e_test_flow_25_production_main_wiring_test_flow_25_footer_clear_verified_routes_to_callback", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -180010,6 +189657,16 @@ "source": "e2e_test_app_build_test_app", "target": "ui_theme_register_theme" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/_test_app.py", + "source_location": "L949", + "weight": 1.0, + "source": "e2e_test_app_rationale_949", + "target": "e2e_test_app_create_app_factory", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -180153,6 +189810,212 @@ "source": "e2e_test_flow_12_quit_coordinator_rationale_1", "target": "tests_e2e_test_flow_12_quit_coordinator_py" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L26", + "weight": 1.0, + "source": "tests_e2e_test_flow_28_selection_search_density_py", + "target": "e2e_test_flow_28_selection_search_density_goto", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L39", + "weight": 1.0, + "source": "tests_e2e_test_flow_28_selection_search_density_py", + "target": "e2e_test_flow_28_selection_search_density_test_flow_28_select_file_row_highlights_and_shows_subcard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L58", + "weight": 1.0, + "source": "tests_e2e_test_flow_28_selection_search_density_py", + "target": "e2e_test_flow_28_selection_search_density_test_flow_28_search_filters_tree_and_shows_count", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L67", + "weight": 1.0, + "source": "tests_e2e_test_flow_28_selection_search_density_py", + "target": "e2e_test_flow_28_selection_search_density_test_flow_28_search_no_matches_state", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L73", + "weight": 1.0, + "source": "tests_e2e_test_flow_28_selection_search_density_py", + "target": "e2e_test_flow_28_selection_search_density_test_flow_28_density_toggle_threads_density_param", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L82", + "weight": 1.0, + "source": "tests_e2e_test_flow_28_selection_search_density_py", + "target": "e2e_test_flow_28_selection_search_density_test_flow_28_sync_legend_popover_lists_states", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L94", + "weight": 1.0, + "source": "tests_e2e_test_flow_28_selection_search_density_py", + "target": "e2e_test_flow_28_selection_search_density_test_flow_28_selected_tree_node_carries_selected_class", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L1", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_rationale_1", + "target": "tests_e2e_test_flow_28_selection_search_density_py", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L42", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_test_flow_28_select_file_row_highlights_and_shows_subcard", + "target": "e2e_test_flow_28_selection_search_density_goto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L60", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_test_flow_28_search_filters_tree_and_shows_count", + "target": "e2e_test_flow_28_selection_search_density_goto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L69", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_test_flow_28_search_no_matches_state", + "target": "e2e_test_flow_28_selection_search_density_goto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L75", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_test_flow_28_density_toggle_threads_density_param", + "target": "e2e_test_flow_28_selection_search_density_goto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L84", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_test_flow_28_sync_legend_popover_lists_states", + "target": "e2e_test_flow_28_selection_search_density_goto", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L97", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_test_flow_28_selected_tree_node_carries_selected_class", + "target": "e2e_test_flow_28_selection_search_density_goto", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L40", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_rationale_40", + "target": "e2e_test_flow_28_selection_search_density_test_flow_28_select_file_row_highlights_and_shows_subcard", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L59", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_rationale_59", + "target": "e2e_test_flow_28_selection_search_density_test_flow_28_search_filters_tree_and_shows_count", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L68", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_rationale_68", + "target": "e2e_test_flow_28_selection_search_density_test_flow_28_search_no_matches_state", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L74", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_rationale_74", + "target": "e2e_test_flow_28_selection_search_density_test_flow_28_density_toggle_threads_density_param", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L83", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_rationale_83", + "target": "e2e_test_flow_28_selection_search_density_test_flow_28_sync_legend_popover_lists_states", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/e2e/test_flow_28_selection_search_density.py", + "source_location": "L95", + "weight": 1.0, + "source": "e2e_test_flow_28_selection_search_density_rationale_95", + "target": "e2e_test_flow_28_selection_search_density_test_flow_28_selected_tree_node_carries_selected_class", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -182480,6 +192343,17 @@ "source": "exlab_wizard_paths_rationale_96", "target": "exlab_wizard_paths_app_name" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L249", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_wipe", + "target": "exlab_wizard_paths_app_name" + }, { "relation": "calls", "context": "call", @@ -182718,6 +192592,17 @@ "source": "tray_dependencies_make_save_config", "target": "exlab_wizard_paths_os_config_path" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/dev/seed.py", + "source_location": "L32", + "weight": 1.0, + "source": "dev_seed_main", + "target": "exlab_wizard_paths_os_config_path" + }, { "relation": "calls", "context": "call", @@ -182845,6 +192730,39 @@ "source": "ui_mount_ensure_staging_root", "target": "exlab_wizard_paths_ensure_dir" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L63", + "weight": 1.0, + "source": "config_test_bootstrap_write_starter_test_config", + "target": "exlab_wizard_paths_ensure_dir" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L326", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_project", + "target": "exlab_wizard_paths_ensure_dir" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L429", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_metadata", + "target": "exlab_wizard_paths_ensure_dir" + }, { "relation": "calls", "context": "call", @@ -182888,6 +192806,17 @@ "source": "window_main_main", "target": "exlab_wizard_paths_ensure_state_dir" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/dev/seed.py", + "source_location": "L31", + "weight": 1.0, + "source": "dev_seed_main", + "target": "exlab_wizard_paths_ensure_state_dir" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -182974,6 +192903,17 @@ "source": "controller_creation_creationcontroller_validate_inputs", "target": "exlab_wizard_paths_canonicalize_equipment_id" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L111", + "weight": 1.0, + "source": "sample_data_spec_check_id", + "target": "exlab_wizard_paths_canonicalize_equipment_id" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -182995,6 +192935,17 @@ "source": "exlab_wizard_paths_validate_project_short_id", "target": "exlab_wizard_errors_configerror" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L79", + "weight": 1.0, + "source": "sample_data_spec_check_short_id", + "target": "exlab_wizard_paths_validate_project_short_id" + }, { "relation": "calls", "context": "call", @@ -183081,6 +193032,17 @@ "source": "controller_creation_creationcontroller_validate_inputs", "target": "exlab_wizard_paths_validate_project_name" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L92", + "weight": 1.0, + "source": "sample_data_spec_check_name", + "target": "exlab_wizard_paths_validate_project_name" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -183102,6 +193064,17 @@ "source": "controller_creation_creationcontroller_compose_destination_path", "target": "exlab_wizard_paths_compose_run_path" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L358", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_project", + "target": "exlab_wizard_paths_compose_run_path" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -183123,6 +193096,17 @@ "source": "controller_creation_creationcontroller_compose_destination_path", "target": "exlab_wizard_paths_compose_project_path" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L321", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_project", + "target": "exlab_wizard_paths_compose_project_path" + }, { "relation": "calls", "context": "call", @@ -183546,6 +193530,28 @@ "source": "cache_sync_state_writer_sync_state_path", "target": "exlab_wizard_paths_cache_dir" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L397", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_project", + "target": "exlab_wizard_paths_cache_dir" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L429", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_metadata", + "target": "exlab_wizard_paths_cache_dir" + }, { "relation": "calls", "context": "call", @@ -183632,6 +193638,17 @@ "source": "controller_creation_creationcontroller_write_cache", "target": "exlab_wizard_paths_creation_json_path" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L463", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_metadata", + "target": "exlab_wizard_paths_creation_json_path" + }, { "relation": "calls", "context": "call", @@ -183773,6 +193790,17 @@ "source": "controller_creation_creationcontroller_write_equipment_json", "target": "exlab_wizard_paths_equipment_json_path" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L311", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_equipment", + "target": "exlab_wizard_paths_equipment_json_path" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -184546,6 +194574,46 @@ "source": "controller_creation_creationcontroller", "target": "exlab_wizard_errors_configerror" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L26", + "weight": 0.8, + "source": "sample_data_spec_samplefile", + "target": "exlab_wizard_errors_configerror", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L26", + "weight": 0.8, + "source": "sample_data_spec_samplerun", + "target": "exlab_wizard_errors_configerror", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L26", + "weight": 0.8, + "source": "sample_data_spec_sampleproject", + "target": "exlab_wizard_errors_configerror", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L26", + "weight": 0.8, + "source": "sample_data_spec_sampleequipment", + "target": "exlab_wizard_errors_configerror", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -185297,11 +195365,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/theme.py", - "source_location": "L113", + "source_location": "L129", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_theme_rationale_113", - "target": "ui_theme_register_theme" + "source": "ui_theme_rationale_129", + "target": "ui_theme_register_theme", + "confidence_score": 1.0 }, { "relation": "calls", @@ -185314,6 +195382,16 @@ "source": "ui_mount_mount_ui", "target": "ui_theme_register_theme" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/theme.py", + "source_location": "L113", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_theme_rationale_113", + "target": "ui_theme_register_theme" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -185335,6 +195413,16 @@ "source": "ui_theme_register_static_assets", "target": "ui_theme_resolve_assets_dir" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/theme.py", + "source_location": "L158", + "weight": 1.0, + "source": "ui_theme_rationale_158", + "target": "ui_theme_resolve_assets_dir", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -185369,11 +195457,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/theme.py", - "source_location": "L157", + "source_location": "L173", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_theme_rationale_157", - "target": "ui_theme_register_static_assets" + "source": "ui_theme_rationale_173", + "target": "ui_theme_register_static_assets", + "confidence_score": 1.0 }, { "relation": "calls", @@ -185386,6 +195474,16 @@ "source": "ui_mount_mount_ui", "target": "ui_theme_register_static_assets" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/theme.py", + "source_location": "L157", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_theme_rationale_157", + "target": "ui_theme_register_static_assets" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -186310,16 +196408,6 @@ "source": "src_exlab_wizard_ui_mount_py", "target": "ui_mount_run_staging_action" }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1176", - "weight": 1.0, - "confidence_score": 1.0, - "source": "src_exlab_wizard_ui_mount_py", - "target": "ui_mount_bulk_clear_verified" - }, { "relation": "contains", "confidence": "EXTRACTED", @@ -186584,41 +196672,51 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1931", + "source_location": "L1950", "weight": 1.0, "confidence_score": 1.0, "source": "src_exlab_wizard_ui_mount_py", - "target": "ui_mount_build_staging_state" + "target": "ui_mount_show_toast" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1", + "target": "src_exlab_wizard_ui_mount_py" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1950", + "source_location": "L1176", "weight": 1.0, "confidence_score": 1.0, "source": "src_exlab_wizard_ui_mount_py", - "target": "ui_mount_show_toast" + "target": "ui_mount_bulk_clear_verified" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1963", + "source_location": "L1931", "weight": 1.0, "confidence_score": 1.0, "source": "src_exlab_wizard_ui_mount_py", - "target": "ui_mount_render_unavailable" + "target": "ui_mount_build_staging_state" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1", + "source_location": "L1963", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_mount_rationale_1", - "target": "src_exlab_wizard_ui_mount_py" + "source": "src_exlab_wizard_ui_mount_py", + "target": "ui_mount_render_unavailable" }, { "relation": "contains", @@ -186667,10 +196765,10 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1211", + "source_location": "L1300", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_mount_bulk_clear_verified", + "source": "ui_mount_toggle_keep_local", "target": "ui_mount_spawn_background" }, { @@ -186678,21 +196776,31 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1300", + "source_location": "L1566", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_mount_toggle_keep_local", + "source": "ui_mount_open_log_dialog", "target": "ui_mount_spawn_background" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L62", + "weight": 1.0, + "source": "ui_mount_rationale_62", + "target": "ui_mount_spawn_background", + "confidence_score": 1.0 + }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1566", + "source_location": "L1211", "weight": 1.0, "confidence_score": 1.0, - "source": "ui_mount_open_log_dialog", + "source": "ui_mount_bulk_clear_verified", "target": "ui_mount_spawn_background" }, { @@ -186720,11 +196828,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L67", + "source_location": "L70", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_67", - "target": "ui_mount_mount_ui" + "source": "ui_mount_rationale_70", + "target": "ui_mount_mount_ui", + "confidence_score": 1.0 }, { "relation": "calls", @@ -186737,6 +196845,26 @@ "source": "tray_main_build_default_app", "target": "ui_mount_mount_ui" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L67", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_67", + "target": "ui_mount_mount_ui" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L98", + "weight": 1.0, + "source": "ui_mount_rationale_98", + "target": "ui_mount_register_pages", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -186757,6 +196885,16 @@ "source": "ui_mount_rationale_90", "target": "ui_mount_register_pages" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L472", + "weight": 1.0, + "source": "ui_mount_rationale_472", + "target": "ui_mount_lims_credential_handlers", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -186811,11 +196949,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L523", + "source_location": "L526", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_523", - "target": "ui_mount_nas_test_connection" + "source": "ui_mount_rationale_526", + "target": "ui_mount_nas_test_connection", + "confidence_score": 1.0 }, { "relation": "calls", @@ -186828,6 +196966,16 @@ "source": "ui_mount_nas_test_connection", "target": "components_test_connection_panel_testconnectionresult" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L523", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_523", + "target": "ui_mount_nas_test_connection" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -186901,6 +197049,16 @@ "source": "ui_mount_persist_config", "target": "ui_mount_apply_live_config" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L582", + "weight": 1.0, + "source": "ui_mount_rationale_582", + "target": "ui_mount_persist_config", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -186962,6 +197120,16 @@ "source": "ui_mount_ensure_staging_root", "target": "ui_mount_show_toast" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L614", + "weight": 1.0, + "source": "ui_mount_rationale_614", + "target": "ui_mount_ensure_staging_root", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187016,11 +197184,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L637", + "source_location": "L640", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_637", - "target": "ui_mount_apply_live_config" + "source": "ui_mount_rationale_640", + "target": "ui_mount_apply_live_config", + "confidence_score": 1.0 }, { "relation": "calls", @@ -187033,6 +197201,16 @@ "source": "ui_mount_apply_live_config", "target": "tray_dependencies_apply_live_config" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L637", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_637", + "target": "ui_mount_apply_live_config" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187088,11 +197266,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L654", + "source_location": "L657", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_654", - "target": "ui_mount_nas_remote_missing" + "source": "ui_mount_rationale_657", + "target": "ui_mount_nas_remote_missing", + "confidence_score": 1.0 }, { "relation": "calls", @@ -187105,6 +197283,16 @@ "source": "ui_mount_nas_remote_missing", "target": "api_dependencies_nas_remote_available" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L654", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_654", + "target": "ui_mount_nas_remote_missing" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187150,11 +197338,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L678", + "source_location": "L681", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_678", - "target": "ui_mount_is_setup_ready" + "source": "ui_mount_rationale_681", + "target": "ui_mount_is_setup_ready", + "confidence_score": 1.0 }, { "relation": "calls", @@ -187167,6 +197355,16 @@ "source": "ui_mount_is_setup_ready", "target": "api_setup_compute_setup_state" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L678", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_678", + "target": "ui_mount_is_setup_ready" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187211,11 +197409,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L710", + "source_location": "L713", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_710", - "target": "ui_mount_apply_autostart" + "source": "ui_mount_rationale_713", + "target": "ui_mount_apply_autostart", + "confidence_score": 1.0 }, { "relation": "calls", @@ -187228,6 +197426,16 @@ "source": "ui_mount_apply_autostart", "target": "components_filter_chips_toggle" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L710", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_710", + "target": "ui_mount_apply_autostart" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187290,6 +197498,17 @@ "source": "ui_mount_build_main_state", "target": "ui_mount_setup_next_action" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L759", + "weight": 1.0, + "source": "ui_mount_build_main_state", + "target": "components_status_bar_segment_derive_footer_segment_states" + }, { "relation": "calls", "context": "call", @@ -187316,11 +197535,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L769", + "source_location": "L787", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_769", - "target": "ui_mount_panel_sessions" + "source": "ui_mount_rationale_787", + "target": "ui_mount_panel_sessions", + "confidence_score": 1.0 }, { "relation": "calls", @@ -187333,6 +197552,16 @@ "source": "ui_mount_panel_sessions", "target": "controller_session_store_on_operations_panel" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L769", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_769", + "target": "ui_mount_panel_sessions" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187383,6 +197612,16 @@ "source": "ui_mount_rationale_773", "target": "ui_mount_panel_sessions" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L804", + "weight": 1.0, + "source": "ui_mount_rationale_804", + "target": "ui_mount_operation_counts", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187447,11 +197686,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L803", + "source_location": "L821", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_803", - "target": "ui_mount_setup_next_action" + "source": "ui_mount_rationale_821", + "target": "ui_mount_setup_next_action", + "confidence_score": 1.0 }, { "relation": "calls", @@ -187464,6 +197703,16 @@ "source": "ui_mount_setup_next_action", "target": "api_setup_compute_setup_state" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L803", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_803", + "target": "ui_mount_setup_next_action" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187514,6 +197763,16 @@ "source": "ui_mount_rationale_807", "target": "ui_mount_setup_next_action" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L851", + "weight": 1.0, + "source": "ui_mount_rationale_851", + "target": "ui_mount_build_main_query", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187584,6 +197843,16 @@ "source": "ui_mount_rationale_830", "target": "ui_mount_build_main_query" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L884", + "weight": 1.0, + "source": "ui_mount_rationale_884", + "target": "ui_mount_classify_node", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187698,6 +197967,16 @@ "source": "ui_mount_build_metadata_payload", "target": "ui_mount_metadata_for_run" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L928", + "weight": 1.0, + "source": "ui_mount_rationale_928", + "target": "ui_mount_build_metadata_payload", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187768,6 +198047,16 @@ "source": "ui_mount_rationale_895", "target": "ui_mount_build_metadata_payload" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L955", + "weight": 1.0, + "source": "ui_mount_rationale_955", + "target": "ui_mount_metadata_for_owned_equipment", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187838,6 +198127,16 @@ "source": "ui_mount_rationale_922", "target": "ui_mount_metadata_for_owned_equipment" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L970", + "weight": 1.0, + "source": "ui_mount_rationale_970", + "target": "ui_mount_metadata_for_relay_equipment", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187919,6 +198218,16 @@ "source": "ui_mount_metadata_for_project", "target": "ui_mount_count_dir_children" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L984", + "weight": 1.0, + "source": "ui_mount_rationale_984", + "target": "ui_mount_metadata_for_project", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -187989,6 +198298,16 @@ "source": "ui_mount_rationale_951", "target": "ui_mount_metadata_for_project" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1018", + "weight": 1.0, + "source": "ui_mount_rationale_1018", + "target": "ui_mount_count_dir_children", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -188063,11 +198382,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1015", + "source_location": "L1033", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1015", - "target": "ui_mount_metadata_for_run" + "source": "ui_mount_rationale_1033", + "target": "ui_mount_metadata_for_run", + "confidence_score": 1.0 }, { "relation": "calls", @@ -188080,6 +198399,16 @@ "source": "ui_mount_metadata_for_run", "target": "io_json_files_read_msgspec_json" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1015", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1015", + "target": "ui_mount_metadata_for_run" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -188155,11 +198484,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1058", + "source_location": "L1076", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1058", - "target": "ui_mount_build_selected_file" + "source": "ui_mount_rationale_1076", + "target": "ui_mount_build_selected_file", + "confidence_score": 1.0 }, { "relation": "calls", @@ -188172,6 +198501,16 @@ "source": "ui_mount_build_selected_file", "target": "pages_staging_format_bytes" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1058", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1058", + "target": "ui_mount_build_selected_file" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -188216,11 +198555,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1107", + "source_location": "L1125", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1107", - "target": "ui_mount_build_selected_folder" + "source": "ui_mount_rationale_1125", + "target": "ui_mount_build_selected_folder", + "confidence_score": 1.0 }, { "relation": "calls", @@ -188233,6 +198572,16 @@ "source": "ui_mount_build_selected_folder", "target": "components_sync_rollup_sync_rollup" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1107", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1107", + "target": "ui_mount_build_selected_folder" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -188288,11 +198637,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1148", + "source_location": "L1166", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1148", - "target": "ui_mount_drive_folder_feed" + "source": "ui_mount_rationale_1166", + "target": "ui_mount_drive_folder_feed", + "confidence_score": 1.0 }, { "relation": "calls", @@ -188305,6 +198654,16 @@ "source": "ui_mount_drive_folder_feed", "target": "components_file_list_filelistentry" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1148", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1148", + "target": "ui_mount_drive_folder_feed" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -188375,6 +198734,16 @@ "source": "ui_mount_rationale_1034", "target": "ui_mount_drive_folder_feed" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1227", + "weight": 1.0, + "source": "ui_mount_rationale_1227", + "target": "ui_mount_fetch_folder_async", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -188455,6 +198824,16 @@ "source": "ui_mount_rationale_1095", "target": "ui_mount_fetch_folder_async" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1251", + "weight": 1.0, + "source": "ui_mount_rationale_1251", + "target": "ui_mount_refresh_selected_folder", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -188527,6 +198906,16 @@ "source": "ui_mount_run_staging_action", "target": "ui_mount_open_log_dialog" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1291", + "weight": 1.0, + "source": "ui_mount_rationale_1291", + "target": "ui_mount_run_staging_action", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -188627,117 +199016,6 @@ "source": "ui_mount_rationale_1119", "target": "ui_mount_run_staging_action" }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1187", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_bulk_clear_verified", - "target": "ui_mount_show_toast" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1331", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1331", - "target": "ui_mount_bulk_clear_verified" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1326", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1326", - "target": "ui_mount_bulk_clear_verified" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1319", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1319", - "target": "ui_mount_bulk_clear_verified" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1317", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1317", - "target": "ui_mount_bulk_clear_verified" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1282", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1282", - "target": "ui_mount_bulk_clear_verified" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1274", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1274", - "target": "ui_mount_bulk_clear_verified" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1241", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1241", - "target": "ui_mount_bulk_clear_verified" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1142", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1142", - "target": "ui_mount_bulk_clear_verified" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1123", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1123", - "target": "ui_mount_bulk_clear_verified" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1177", - "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1177", - "target": "ui_mount_bulk_clear_verified" - }, { "relation": "calls", "context": "call", @@ -188771,6 +199049,16 @@ "source": "ui_mount_file_context_action", "target": "ui_mount_toggle_keep_local" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1356", + "weight": 1.0, + "source": "ui_mount_rationale_1356", + "target": "ui_mount_file_context_action", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -188886,11 +199174,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1415", + "source_location": "L1395", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1415", - "target": "ui_mount_toggle_keep_local" + "source": "ui_mount_rationale_1395", + "target": "ui_mount_toggle_keep_local", + "confidence_score": 1.0 }, { "relation": "calls", @@ -188914,6 +199202,16 @@ "source": "ui_mount_toggle_keep_local", "target": "routers_browse_run_relative_posix" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1415", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1415", + "target": "ui_mount_toggle_keep_local" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -189004,6 +199302,16 @@ "source": "ui_mount_rationale_1261", "target": "ui_mount_toggle_keep_local" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1438", + "weight": 1.0, + "source": "ui_mount_rationale_1438", + "target": "ui_mount_open_in_os", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -189115,6 +199423,16 @@ "source": "ui_mount_open_operations_modal", "target": "ui_mount_build_operation_rows" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1466", + "weight": 1.0, + "source": "ui_mount_rationale_1466", + "target": "ui_mount_build_operation_rows", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -189263,11 +199581,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1498", + "source_location": "L1478", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1498", - "target": "ui_mount_open_operations_modal" + "source": "ui_mount_rationale_1478", + "target": "ui_mount_open_operations_modal", + "confidence_score": 1.0 }, { "relation": "calls", @@ -189280,6 +199598,16 @@ "source": "ui_mount_open_operations_modal", "target": "components_operations_modal_operations_modal" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1498", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1498", + "target": "ui_mount_open_operations_modal" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -189381,6 +199709,16 @@ "source": "ui_mount_open_operation_details", "target": "ui_mount_show_toast" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1502", + "weight": 1.0, + "source": "ui_mount_rationale_1502", + "target": "ui_mount_open_operation_details", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -189503,6 +199841,16 @@ "source": "ui_mount_resume_operation", "target": "ui_mount_open_input_required_dialog" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1536", + "weight": 1.0, + "source": "ui_mount_rationale_1536", + "target": "ui_mount_resume_operation", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -189618,11 +199966,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1588", + "source_location": "L1568", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1588", - "target": "ui_mount_open_input_required_dialog" + "source": "ui_mount_rationale_1568", + "target": "ui_mount_open_input_required_dialog", + "confidence_score": 1.0 }, { "relation": "calls", @@ -189635,6 +199983,16 @@ "source": "ui_mount_open_input_required_dialog", "target": "components_input_required_dialog_input_required_dialog" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1588", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1588", + "target": "ui_mount_open_input_required_dialog" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -189747,6 +200105,16 @@ "source": "ui_mount_cancel_operation", "target": "ui_mount_cancel_session" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1606", + "weight": 1.0, + "source": "ui_mount_rationale_1606", + "target": "ui_mount_cancel_operation", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -189847,6 +200215,16 @@ "source": "ui_mount_rationale_1472", "target": "ui_mount_cancel_operation" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1615", + "weight": 1.0, + "source": "ui_mount_rationale_1615", + "target": "ui_mount_cancel_session", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -189947,6 +200325,16 @@ "source": "ui_mount_rationale_1481", "target": "ui_mount_cancel_session" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1656", + "weight": 1.0, + "source": "ui_mount_rationale_1656", + "target": "ui_mount_open_log_dialog", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -190051,11 +200439,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1724", + "source_location": "L1704", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1724", - "target": "ui_mount_missing_setup_sections" + "source": "ui_mount_rationale_1704", + "target": "ui_mount_missing_setup_sections", + "confidence_score": 1.0 }, { "relation": "calls", @@ -190068,6 +200456,16 @@ "source": "ui_mount_missing_setup_sections", "target": "api_dependencies_lims_password_present" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1724", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1724", + "target": "ui_mount_missing_setup_sections" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -190213,6 +200611,16 @@ "source": "ui_mount_submit_run", "target": "ui_mount_templates_dir" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1737", + "weight": 1.0, + "source": "ui_mount_rationale_1737", + "target": "ui_mount_templates_dir", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -190324,6 +200732,16 @@ "source": "ui_mount_render_run_wizard", "target": "ui_mount_template_names" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1745", + "weight": 1.0, + "source": "ui_mount_rationale_1745", + "target": "ui_mount_template_names", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -190439,11 +200857,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1782", + "source_location": "L1762", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1782", - "target": "ui_mount_template_questions_map" + "source": "ui_mount_rationale_1762", + "target": "ui_mount_template_questions_map", + "confidence_score": 1.0 }, { "relation": "calls", @@ -190467,6 +200885,16 @@ "source": "ui_mount_template_questions_map", "target": "constants_enums_templatetype" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1782", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1782", + "target": "ui_mount_template_questions_map" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -190572,11 +201000,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1815", + "source_location": "L1795", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1815", - "target": "ui_mount_lims_catalogue_projects" + "source": "ui_mount_rationale_1795", + "target": "ui_mount_lims_catalogue_projects", + "confidence_score": 1.0 }, { "relation": "calls", @@ -190589,6 +201017,16 @@ "source": "ui_mount_lims_catalogue_projects", "target": "lims_catalogue_read_catalogue" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1815", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1815", + "target": "ui_mount_lims_catalogue_projects" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -190679,6 +201117,16 @@ "source": "ui_mount_rationale_1661", "target": "ui_mount_lims_catalogue_projects" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1829", + "weight": 1.0, + "source": "ui_mount_rationale_1829", + "target": "ui_mount_lims_projects", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -190790,6 +201238,16 @@ "source": "ui_mount_render_run_wizard", "target": "ui_mount_equipment_ids" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1859", + "weight": 1.0, + "source": "ui_mount_rationale_1859", + "target": "ui_mount_equipment_ids", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -190901,6 +201359,16 @@ "source": "ui_mount_run_creation", "target": "ui_mount_await_session" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1867", + "weight": 1.0, + "source": "ui_mount_rationale_1867", + "target": "ui_mount_await_session", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -191023,6 +201491,16 @@ "source": "ui_mount_run_creation", "target": "ui_mount_consume_session_progress" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1886", + "weight": 1.0, + "source": "ui_mount_rationale_1886", + "target": "ui_mount_consume_session_progress", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -191123,6 +201601,16 @@ "source": "ui_mount_rationale_1752", "target": "ui_mount_consume_session_progress" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1929", + "weight": 1.0, + "source": "ui_mount_rationale_1929", + "target": "ui_mount_close_dialog", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -191249,11 +201737,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1957", + "source_location": "L1937", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1957", - "target": "ui_mount_submit_project" + "source": "ui_mount_rationale_1937", + "target": "ui_mount_submit_project", + "confidence_score": 1.0 }, { "relation": "calls", @@ -191266,6 +201754,16 @@ "source": "ui_mount_submit_project", "target": "controller_creation_projectcreaterequest" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1957", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1957", + "target": "ui_mount_submit_project" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -191393,11 +201891,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1990", + "source_location": "L1970", "weight": 1.0, - "confidence_score": 1.0, - "source": "ui_mount_rationale_1990", - "target": "ui_mount_submit_run" + "source": "ui_mount_rationale_1970", + "target": "ui_mount_submit_run", + "confidence_score": 1.0 }, { "relation": "calls", @@ -191410,6 +201908,16 @@ "source": "ui_mount_submit_run", "target": "controller_creation_runcreaterequest" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1990", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1990", + "target": "ui_mount_submit_run" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -191511,6 +202019,16 @@ "source": "ui_mount_run_creation", "target": "ui_mount_show_toast" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L2011", + "weight": 1.0, + "source": "ui_mount_rationale_2011", + "target": "ui_mount_run_creation", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -191611,6 +202129,16 @@ "source": "ui_mount_rationale_1877", "target": "ui_mount_run_creation" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L2054", + "weight": 1.0, + "source": "ui_mount_rationale_2054", + "target": "ui_mount_safe_audit", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -191714,13 +202242,13 @@ { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, + "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/mount.py", - "source_location": "L1940", + "source_location": "L1187", "weight": 1.0, - "source": "ui_mount_build_staging_state", - "target": "orchestrator_staging_query_list_staged_runs" + "confidence_score": 1.0, + "source": "ui_mount_bulk_clear_verified", + "target": "ui_mount_show_toast" }, { "relation": "contains", @@ -192126,6 +202654,36 @@ "source": "components_file_list_rationale_1", "target": "src_exlab_wizard_ui_components_file_list_py" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L40", + "weight": 1.0, + "source": "components_file_list_rationale_40", + "target": "components_file_list_filelistentry", + "confidence_score": 1.0 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L27", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "components_file_list_filelistentry" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L27", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "components_file_list_filelistentry" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -192140,11 +202698,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L59", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "components_file_list_rationale_59", - "target": "components_file_list_fileliststate" + "source": "components_file_list_rationale_60", + "target": "components_file_list_fileliststate", + "confidence_score": 1.0 }, { "relation": "uses", @@ -192167,6 +202725,16 @@ "source": "pages_main_render_centre_file_list", "target": "components_file_list_fileliststate" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L59", + "weight": 1.0, + "confidence_score": 1.0, + "source": "components_file_list_rationale_59", + "target": "components_file_list_fileliststate" + }, { "relation": "calls", "context": "call", @@ -192178,6 +202746,16 @@ "source": "components_file_list_diff_file_lists", "target": "components_file_list_filelistdiff" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L73", + "weight": 1.0, + "source": "components_file_list_rationale_73", + "target": "components_file_list_filelistdiff", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -192198,6 +202776,16 @@ "source": "components_file_list_rationale_69", "target": "components_file_list_filelistdiff" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L84", + "weight": 1.0, + "source": "components_file_list_rationale_84", + "target": "components_file_list_diff_file_lists", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -192229,6 +202817,16 @@ "source": "components_file_list_render_row", "target": "components_file_list_row_background" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L123", + "weight": 1.0, + "source": "components_file_list_rationale_123", + "target": "components_file_list_row_background", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -192275,11 +202873,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/components/file_list.py", - "source_location": "L179", + "source_location": "L180", "weight": 1.0, - "confidence_score": 1.0, - "source": "components_file_list_rationale_179", - "target": "components_file_list_render_file_list" + "source": "components_file_list_rationale_180", + "target": "components_file_list_render_file_list", + "confidence_score": 1.0 }, { "relation": "calls", @@ -192292,6 +202890,16 @@ "source": "pages_main_render_centre_file_list", "target": "components_file_list_render_file_list" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L179", + "weight": 1.0, + "confidence_score": 1.0, + "source": "components_file_list_rationale_179", + "target": "components_file_list_render_file_list" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -192332,6 +202940,16 @@ "source": "components_file_list_rationale_118", "target": "components_file_list_render_file_list" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/file_list.py", + "source_location": "L224", + "weight": 1.0, + "source": "components_file_list_rationale_224", + "target": "components_file_list_render_header", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -192919,6 +203537,16 @@ "source": "components_tree_treenode", "target": "constants_enums_treeprojectstatus" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L27", + "weight": 0.8, + "source": "pages_main_mainpagestate", + "target": "components_tree_treenode", + "confidence_score": 0.5 + }, { "relation": "calls", "context": "call", @@ -193003,6 +203631,17 @@ "source": "components_tree_rationale_153", "target": "components_tree_build_nodes" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L373", + "weight": 1.0, + "source": "pages_main_render_file_explorer_page", + "target": "components_tree_build_nodes" + }, { "relation": "calls", "context": "call", @@ -193056,6 +203695,16 @@ "source": "components_tree_tree_header_slot", "target": "components_tree_ctx_emit" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/tree.py", + "source_location": "L306", + "weight": 1.0, + "source": "components_tree_rationale_306", + "target": "components_tree_ctx_emit", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -193081,11 +203730,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/components/tree.py", - "source_location": "L372", + "source_location": "L382", "weight": 1.0, - "confidence_score": 1.0, - "source": "components_tree_rationale_372", - "target": "components_tree_build_tree" + "source": "components_tree_rationale_382", + "target": "components_tree_build_tree", + "confidence_score": 1.0 }, { "relation": "calls", @@ -193098,6 +203747,16 @@ "source": "pages_main_render_file_explorer_page", "target": "components_tree_build_tree" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/tree.py", + "source_location": "L372", + "weight": 1.0, + "confidence_score": 1.0, + "source": "components_tree_rationale_372", + "target": "components_tree_build_tree" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -193396,11 +204055,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", - "source_location": "L37", + "source_location": "L38", "weight": 1.0, - "confidence_score": 1.0, - "source": "components_metadata_pane_rationale_37", - "target": "components_metadata_pane_metadatapanestate" + "source": "components_metadata_pane_rationale_38", + "target": "components_metadata_pane_metadatapanestate", + "confidence_score": 1.0 }, { "relation": "uses", @@ -193423,6 +204082,16 @@ "source": "pages_main_render_right_pane", "target": "components_metadata_pane_metadatapanestate" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "components_metadata_pane_rationale_37", + "target": "components_metadata_pane_metadatapanestate" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -193444,6 +204113,16 @@ "source": "components_metadata_pane_render_selected_file_card", "target": "components_metadata_pane_selected_file_card_title" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", + "source_location": "L52", + "weight": 1.0, + "source": "components_metadata_pane_rationale_52", + "target": "components_metadata_pane_selected_file_card_title", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -193535,11 +204214,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", - "source_location": "L67", + "source_location": "L68", "weight": 1.0, - "confidence_score": 1.0, - "source": "components_metadata_pane_rationale_67", - "target": "components_metadata_pane_render_metadata_pane" + "source": "components_metadata_pane_rationale_68", + "target": "components_metadata_pane_render_metadata_pane", + "confidence_score": 1.0 }, { "relation": "calls", @@ -193552,6 +204231,16 @@ "source": "pages_main_render_right_pane", "target": "components_metadata_pane_render_metadata_pane" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", + "source_location": "L67", + "weight": 1.0, + "confidence_score": 1.0, + "source": "components_metadata_pane_rationale_67", + "target": "components_metadata_pane_render_metadata_pane" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -193654,11 +204343,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", - "source_location": "L130", + "source_location": "L133", "weight": 1.0, - "confidence_score": 1.0, - "source": "components_metadata_pane_rationale_130", - "target": "components_metadata_pane_kv_sync" + "source": "components_metadata_pane_rationale_133", + "target": "components_metadata_pane_kv_sync", + "confidence_score": 1.0 }, { "relation": "calls", @@ -193671,6 +204360,16 @@ "source": "components_metadata_pane_kv_sync", "target": "components_sync_status_icon_sync_status_icon" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", + "source_location": "L130", + "weight": 1.0, + "confidence_score": 1.0, + "source": "components_metadata_pane_rationale_130", + "target": "components_metadata_pane_kv_sync" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -193681,6 +204380,16 @@ "source": "components_metadata_pane_rationale_124", "target": "components_metadata_pane_kv_sync" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/metadata_pane.py", + "source_location": "L151", + "weight": 1.0, + "source": "components_metadata_pane_rationale_151", + "target": "components_metadata_pane_render_selected_file_card", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -194110,6 +204819,26 @@ "source": "components_input_required_dialog_rationale_58", "target": "components_input_required_dialog_input_required_dialog" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/status_bar_segment.py", + "source_location": "L32", + "weight": 1.0, + "source": "src_exlab_wizard_ui_components_status_bar_segment_py", + "target": "components_status_bar_segment_footersegmentstates", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/status_bar_segment.py", + "source_location": "L46", + "weight": 1.0, + "source": "src_exlab_wizard_ui_components_status_bar_segment_py", + "target": "components_status_bar_segment_derive_footer_segment_states", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -194150,6 +204879,37 @@ "source": "components_status_bar_segment_rationale_1", "target": "src_exlab_wizard_ui_components_status_bar_segment_py" }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/status_bar_segment.py", + "source_location": "L69", + "weight": 1.0, + "source": "components_status_bar_segment_derive_footer_segment_states", + "target": "components_status_bar_segment_footersegmentstates", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/status_bar_segment.py", + "source_location": "L33", + "weight": 1.0, + "source": "components_status_bar_segment_rationale_33", + "target": "components_status_bar_segment_footersegmentstates", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/status_bar_segment.py", + "source_location": "L52", + "weight": 1.0, + "source": "components_status_bar_segment_rationale_52", + "target": "components_status_bar_segment_derive_footer_segment_states", + "confidence_score": 1.0 + }, { "relation": "calls", "context": "call", @@ -194161,6 +204921,16 @@ "source": "components_status_bar_segment_segment_spec", "target": "components_status_bar_segment_segmentspec" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/status_bar_segment.py", + "source_location": "L78", + "weight": 1.0, + "source": "components_status_bar_segment_rationale_78", + "target": "components_status_bar_segment_segmentspec", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -194182,6 +204952,16 @@ "source": "components_status_bar_segment_status_bar_segment", "target": "components_status_bar_segment_segment_spec" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/status_bar_segment.py", + "source_location": "L91", + "weight": 1.0, + "source": "components_status_bar_segment_rationale_91", + "target": "components_status_bar_segment_segment_spec", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -194192,6 +204972,16 @@ "source": "components_status_bar_segment_rationale_46", "target": "components_status_bar_segment_segment_spec" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/status_bar_segment.py", + "source_location": "L115", + "weight": 1.0, + "source": "components_status_bar_segment_rationale_115", + "target": "components_status_bar_segment_status_bar_segment", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -194202,6 +204992,16 @@ "source": "components_status_bar_segment_rationale_70", "target": "components_status_bar_segment_status_bar_segment" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/sync_status_icon.py", + "source_location": "L118", + "weight": 1.0, + "source": "src_exlab_wizard_ui_components_sync_status_icon_py", + "target": "components_sync_status_icon_sync_legend_entries", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -194232,6 +205032,27 @@ "source": "components_sync_status_icon_rationale_1", "target": "src_exlab_wizard_ui_components_sync_status_icon_py" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/sync_status_icon.py", + "source_location": "L119", + "weight": 1.0, + "source": "components_sync_status_icon_rationale_119", + "target": "components_sync_status_icon_sync_legend_entries", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L610", + "weight": 1.0, + "source": "pages_main_render_sync_legend", + "target": "components_sync_status_icon_sync_legend_entries" + }, { "relation": "calls", "context": "call", @@ -194243,6 +205064,16 @@ "source": "components_sync_status_icon_sync_status_icon", "target": "components_sync_status_icon_sync_status_props" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/sync_status_icon.py", + "source_location": "L138", + "weight": 1.0, + "source": "components_sync_status_icon_rationale_138", + "target": "components_sync_status_icon_sync_status_props", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -194263,6 +205094,16 @@ "source": "components_sync_status_icon_rationale_113", "target": "components_sync_status_icon_sync_status_props" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/sync_status_icon.py", + "source_location": "L177", + "weight": 1.0, + "source": "components_sync_status_icon_rationale_177", + "target": "components_sync_status_icon_sync_status_icon", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -194428,11 +205269,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/components/framed_pane.py", - "source_location": "L96", + "source_location": "L97", "weight": 1.0, - "confidence_score": 1.0, - "source": "components_framed_pane_rationale_96", - "target": "components_framed_pane_framed_pane" + "source": "components_framed_pane_rationale_97", + "target": "components_framed_pane_framed_pane", + "confidence_score": 1.0 }, { "relation": "calls", @@ -194445,6 +205286,16 @@ "source": "pages_main_render_file_explorer_page", "target": "components_framed_pane_framed_pane" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/framed_pane.py", + "source_location": "L96", + "weight": 1.0, + "confidence_score": 1.0, + "source": "components_framed_pane_rationale_96", + "target": "components_framed_pane_framed_pane" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -195549,6 +206400,36 @@ "source": "components_filter_chips_rationale_69", "target": "components_filter_chips_filter_chips" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/empty_state.py", + "source_location": "L21", + "weight": 1.0, + "source": "src_exlab_wizard_ui_components_empty_state_py", + "target": "components_empty_state_empty_state", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/empty_state.py", + "source_location": "L1", + "weight": 1.0, + "source": "components_empty_state_rationale_1", + "target": "src_exlab_wizard_ui_components_empty_state_py", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/components/empty_state.py", + "source_location": "L22", + "weight": 1.0, + "source": "components_empty_state_rationale_22", + "target": "components_empty_state_empty_state", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -196490,11 +207371,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", - "source_location": "L52", + "source_location": "L58", "weight": 1.0, - "confidence_score": 1.0, - "source": "pages_wizard_equipment_rationale_52", - "target": "pages_wizard_equipment_equipmentwizardstate" + "source": "pages_wizard_equipment_rationale_58", + "target": "pages_wizard_equipment_equipmentwizardstate", + "confidence_score": 1.0 }, { "relation": "uses", @@ -196506,6 +207387,16 @@ "source": "pages_wizard_equipment_equipmentwizardstate", "target": "config_models_equipmentconfig" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", + "source_location": "L52", + "weight": 1.0, + "confidence_score": 1.0, + "source": "pages_wizard_equipment_rationale_52", + "target": "pages_wizard_equipment_equipmentwizardstate" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -196516,6 +207407,16 @@ "source": "pages_wizard_equipment_rationale_50", "target": "pages_wizard_equipment_equipmentwizardstate" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", + "source_location": "L79", + "weight": 1.0, + "source": "pages_wizard_equipment_rationale_79", + "target": "pages_wizard_equipment_can_advance", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -196547,6 +207448,16 @@ "source": "pages_wizard_equipment_maybe_confirm", "target": "pages_wizard_equipment_assemble_equipment_config" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", + "source_location": "L107", + "weight": 1.0, + "source": "pages_wizard_equipment_rationale_107", + "target": "pages_wizard_equipment_assemble_equipment_config", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -196567,6 +207478,16 @@ "source": "pages_wizard_equipment_rationale_122", "target": "pages_wizard_equipment_assemble_equipment_config" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/wizard_equipment.py", + "source_location": "L127", + "weight": 1.0, + "source": "pages_wizard_equipment_rationale_127", + "target": "pages_wizard_equipment_render_wizard_equipment", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -196778,6 +207699,16 @@ "source": "pages_settings_settings_sections_for", "target": "pages_settings_nas_mode_equipment" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L62", + "weight": 1.0, + "source": "pages_settings_rationale_62", + "target": "pages_settings_nas_mode_equipment", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -196799,6 +207730,16 @@ "source": "pages_settings_render_settings_page", "target": "pages_settings_settings_sections_for" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L77", + "weight": 1.0, + "source": "pages_settings_rationale_77", + "target": "pages_settings_settings_sections_for", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -196845,11 +207786,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/pages/settings.py", - "source_location": "L97", + "source_location": "L96", "weight": 1.0, - "confidence_score": 1.0, - "source": "pages_settings_rationale_97", - "target": "pages_settings_settingsstate" + "source": "pages_settings_rationale_96", + "target": "pages_settings_settingsstate", + "confidence_score": 1.0 }, { "relation": "uses", @@ -196861,6 +207802,16 @@ "source": "pages_settings_settingsstate", "target": "config_models_config" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L97", + "weight": 1.0, + "confidence_score": 1.0, + "source": "pages_settings_rationale_97", + "target": "pages_settings_settingsstate" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -196882,6 +207833,16 @@ "source": "pages_settings_render_settings_page", "target": "pages_settings_first_incomplete_section" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L105", + "weight": 1.0, + "source": "pages_settings_rationale_105", + "target": "pages_settings_first_incomplete_section", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -196913,6 +207874,16 @@ "source": "pages_settings_render_settings_page", "target": "pages_settings_save_button_label" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L125", + "weight": 1.0, + "source": "pages_settings_rationale_125", + "target": "pages_settings_save_button_label", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -196944,6 +207915,16 @@ "source": "pages_settings_render_settings_page", "target": "pages_settings_section_has_warning" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L135", + "weight": 1.0, + "source": "pages_settings_rationale_135", + "target": "pages_settings_section_has_warning", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -196975,6 +207956,16 @@ "source": "pages_settings_render_settings_page", "target": "pages_settings_section_is_dirty" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L141", + "weight": 1.0, + "source": "pages_settings_rationale_141", + "target": "pages_settings_section_is_dirty", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197006,6 +207997,16 @@ "source": "pages_settings_render_settings_page", "target": "pages_settings_build_settings_draft" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L147", + "weight": 1.0, + "source": "pages_settings_rationale_147", + "target": "pages_settings_build_settings_draft", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197026,6 +208027,16 @@ "source": "pages_settings_rationale_151", "target": "pages_settings_build_settings_draft" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L158", + "weight": 1.0, + "source": "pages_settings_rationale_158", + "target": "pages_settings_finalize_settings_draft", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197057,6 +208068,16 @@ "source": "pages_settings_render_section_body", "target": "pages_settings_lims_credential_initial_state" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L176", + "weight": 1.0, + "source": "pages_settings_rationale_176", + "target": "pages_settings_lims_credential_initial_state", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197099,6 +208120,16 @@ "source": "pages_settings_render_settings_page", "target": "pages_settings_render_section_body" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L205", + "weight": 1.0, + "source": "pages_settings_rationale_205", + "target": "pages_settings_render_settings_page", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197130,6 +208161,16 @@ "source": "pages_settings_render_section_body", "target": "pages_settings_render_chip_editor" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L394", + "weight": 1.0, + "source": "pages_settings_rationale_394", + "target": "pages_settings_render_chip_editor", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197172,6 +208213,16 @@ "source": "pages_settings_render_section_body", "target": "pages_settings_render_nas_remote_section" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L483", + "weight": 1.0, + "source": "pages_settings_rationale_483", + "target": "pages_settings_render_section_body", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197203,6 +208254,16 @@ "source": "pages_settings_rationale_492", "target": "pages_settings_render_section_body" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L700", + "weight": 1.0, + "source": "pages_settings_rationale_700", + "target": "pages_settings_render_equipment_section", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197227,11 +208288,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/pages/settings.py", - "source_location": "L775", + "source_location": "L770", "weight": 1.0, - "confidence_score": 1.0, - "source": "pages_settings_rationale_775", - "target": "pages_settings_render_nas_remote_section" + "source": "pages_settings_rationale_770", + "target": "pages_settings_render_nas_remote_section", + "confidence_score": 1.0 }, { "relation": "calls", @@ -197244,6 +208305,16 @@ "source": "pages_settings_render_nas_remote_section", "target": "api_dependencies_nas_remote_available" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/settings.py", + "source_location": "L775", + "weight": 1.0, + "confidence_score": 1.0, + "source": "pages_settings_rationale_775", + "target": "pages_settings_render_nas_remote_section" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -197366,6 +208437,26 @@ "source": "src_exlab_wizard_ui_pages_main_py", "target": "pages_main_chip_state_to_tree_filters" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L117", + "weight": 1.0, + "source": "src_exlab_wizard_ui_pages_main_py", + "target": "pages_main_count_search_results", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L138", + "weight": 1.0, + "source": "src_exlab_wizard_ui_pages_main_py", + "target": "pages_main_density_card_class", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -197396,6 +208487,16 @@ "source": "src_exlab_wizard_ui_pages_main_py", "target": "pages_main_render_file_explorer_page" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L584", + "weight": 1.0, + "source": "src_exlab_wizard_ui_pages_main_py", + "target": "pages_main_render_sync_legend", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -197441,11 +208542,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/ui/pages/main.py", - "source_location": "L34", + "source_location": "L35", "weight": 1.0, - "confidence_score": 1.0, - "source": "pages_main_rationale_34", - "target": "pages_main_mainpagestate" + "source": "pages_main_rationale_35", + "target": "pages_main_mainpagestate", + "confidence_score": 1.0 }, { "relation": "uses", @@ -197457,6 +208558,16 @@ "source": "pages_main_mainpagestate", "target": "pages_staging_stagingdockstate" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "pages_main_rationale_34", + "target": "pages_main_mainpagestate" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197478,6 +208589,16 @@ "source": "pages_main_render_file_explorer_page", "target": "pages_main_default_chips" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L97", + "weight": 1.0, + "source": "pages_main_rationale_97", + "target": "pages_main_default_chips", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197519,6 +208640,16 @@ "source": "pages_main_render_file_explorer_page", "target": "pages_main_chip_state_to_tree_filters" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L107", + "weight": 1.0, + "source": "pages_main_rationale_107", + "target": "pages_main_chip_state_to_tree_filters", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197549,6 +208680,48 @@ "source": "pages_main_rationale_86", "target": "pages_main_chip_state_to_tree_filters" }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L372", + "weight": 1.0, + "source": "pages_main_render_file_explorer_page", + "target": "pages_main_count_search_results", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L118", + "weight": 1.0, + "source": "pages_main_rationale_118", + "target": "pages_main_count_search_results", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L446", + "weight": 1.0, + "source": "pages_main_render_file_explorer_page", + "target": "pages_main_density_card_class", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L139", + "weight": 1.0, + "source": "pages_main_rationale_139", + "target": "pages_main_density_card_class", + "confidence_score": 1.0 + }, { "relation": "calls", "context": "call", @@ -197560,6 +208733,16 @@ "source": "pages_main_render_right_pane", "target": "pages_main_problems_badge_text" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L151", + "weight": 1.0, + "source": "pages_main_rationale_151", + "target": "pages_main_problems_badge_text", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197601,6 +208784,16 @@ "source": "pages_main_render_file_explorer_page", "target": "pages_main_setup_incomplete_banner_props" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L163", + "weight": 1.0, + "source": "pages_main_rationale_163", + "target": "pages_main_setup_incomplete_banner_props", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197653,6 +208846,16 @@ "source": "pages_main_render_file_explorer_page", "target": "pages_main_render_right_pane" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L214", + "weight": 1.0, + "source": "pages_main_rationale_214", + "target": "pages_main_render_file_explorer_page", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197693,6 +208896,26 @@ "source": "pages_main_rationale_157", "target": "pages_main_render_file_explorer_page" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L585", + "weight": 1.0, + "source": "pages_main_rationale_585", + "target": "pages_main_render_sync_legend", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L631", + "weight": 1.0, + "source": "pages_main_rationale_631", + "target": "pages_main_render_centre_file_list", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -197873,6 +209096,16 @@ "source": "pages_main_rationale_427", "target": "pages_main_render_centre_file_list" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/pages/main.py", + "source_location": "L671", + "weight": 1.0, + "source": "pages_main_rationale_671", + "target": "pages_main_render_right_pane", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -202390,6 +213623,16 @@ "source": "controller_creation_creationcontroller", "target": "cache_equipment_equipmentcachewriter" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L49", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "cache_equipment_equipmentcachewriter", + "confidence_score": 0.5 + }, { "relation": "calls", "context": "call", @@ -202401,6 +213644,17 @@ "source": "tray_dependencies_build_equipment_writer", "target": "cache_equipment_equipmentcachewriter" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L161", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_init", + "target": "cache_equipment_equipmentcachewriter" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -204318,6 +215572,16 @@ "source": "controller_creation_creationcontroller", "target": "cache_creation_writer_creationwriter" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L48", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "cache_creation_writer_creationwriter", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -204359,6 +215623,17 @@ "source": "tray_dependencies_build_creation_writer", "target": "cache_creation_writer_creationwriter" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L160", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_init", + "target": "cache_creation_writer_creationwriter" + }, { "relation": "uses", "confidence": "INFERRED", @@ -205066,6 +216341,37 @@ "source": "config_models_rationale_94", "target": "config_models_pathsconfig" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L42", + "weight": 1.0, + "source": "config_test_bootstrap_write_starter_test_config", + "target": "config_models_pathsconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L350", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "config_models_pathsconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L350", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "config_models_pathsconfig" + }, { "relation": "uses", "confidence": "INFERRED", @@ -205188,6 +216494,26 @@ "source": "api_setup_autostartresult", "target": "config_models_limsconfig" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L350", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "config_models_limsconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L350", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "config_models_limsconfig" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -205208,6 +216534,16 @@ "source": "config_models_rationale_125", "target": "config_models_readmedefaultfield" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L51", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "config_models_readmedefaultfield", + "confidence_score": 0.5 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -205228,6 +216564,27 @@ "source": "config_models_rationale_166", "target": "config_models_readmeconfig" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L51", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "config_models_readmeconfig", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L225", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_build_and_reload_config", + "target": "config_models_readmeconfig" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -205446,6 +216803,26 @@ "source": "config_models_rationale_238", "target": "config_models_nasconfig" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L360", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "config_models_nasconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L360", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "config_models_nasconfig" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -205459,12 +216836,12 @@ { "relation": "uses", "confidence": "INFERRED", - "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L293", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L51", "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_main_trayapp", - "target": "config_models_equipmentconfig" + "source": "sample_data_generator_sampledatagenerator", + "target": "config_models_equipmentconfig", + "confidence_score": 0.5 }, { "relation": "uses", @@ -205576,6 +216953,47 @@ "source": "sync_nas_client_nassyncclient", "target": "config_models_equipmentconfig" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L206", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_build_and_reload_config", + "target": "config_models_equipmentconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L350", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "config_models_equipmentconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L350", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "config_models_equipmentconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/tray/main.py", + "source_location": "L293", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_main_trayapp", + "target": "config_models_equipmentconfig" + }, { "relation": "calls", "context": "call", @@ -205731,6 +217149,27 @@ "source": "config_models_rationale_359", "target": "config_models_operatorsconfig" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L51", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "config_models_operatorsconfig", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L226", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_build_and_reload_config", + "target": "config_models_operatorsconfig" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -205831,6 +217270,37 @@ "source": "config_models_rationale_466", "target": "config_models_orchestratorconfig" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L47", + "weight": 1.0, + "source": "config_test_bootstrap_write_starter_test_config", + "target": "config_models_orchestratorconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L350", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "config_models_orchestratorconfig" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L350", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "config_models_orchestratorconfig" + }, { "relation": "uses", "confidence": "INFERRED", @@ -205894,16 +217364,6 @@ "source": "config_models_rationale_502", "target": "config_models_config" }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L293", - "weight": 0.8, - "confidence_score": 0.5, - "source": "tray_main_trayapp", - "target": "config_models_config" - }, { "relation": "uses", "confidence": "INFERRED", @@ -205984,6 +217444,26 @@ "source": "controller_creation_creationcontroller", "target": "config_models_config" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L42", + "weight": 0.8, + "source": "controller_metadata_assembly_templatedesc", + "target": "config_models_config", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L51", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "config_models_config", + "confidence_score": 0.5 + }, { "relation": "uses", "confidence": "INFERRED", @@ -206164,6 +217644,36 @@ "source": "orchestrator_staging_query_stagedrunsummary", "target": "config_models_config" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L350", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "config_models_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L350", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "config_models_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/tray/main.py", + "source_location": "L293", + "weight": 0.8, + "confidence_score": 0.5, + "source": "tray_main_trayapp", + "target": "config_models_config" + }, { "relation": "uses", "confidence": "INFERRED", @@ -206411,6 +217921,17 @@ "source": "tray_dependencies_load_config_safely", "target": "config_loader_load_config" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L203", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_build_and_reload_config", + "target": "config_loader_load_config" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -206453,6 +217974,28 @@ "source": "config_loader_save_config", "target": "io_atomic_write_atomic_write_bytes" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L52", + "weight": 1.0, + "source": "config_test_bootstrap_write_starter_test_config", + "target": "config_loader_save_config" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L229", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_build_and_reload_config", + "target": "config_loader_save_config" + }, { "relation": "calls", "context": "call", @@ -206484,6 +218027,100 @@ "source": "config_loader_rationale_172", "target": "config_loader_dump_config" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L18", + "weight": 1.0, + "source": "src_exlab_wizard_config_test_bootstrap_py", + "target": "config_test_bootstrap_write_starter_test_config", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L68", + "weight": 1.0, + "source": "src_exlab_wizard_config_test_bootstrap_py", + "target": "config_test_bootstrap_bootstrap_test_config", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L1", + "weight": 1.0, + "source": "config_test_bootstrap_rationale_1", + "target": "src_exlab_wizard_config_test_bootstrap_py", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L79", + "weight": 1.0, + "source": "config_test_bootstrap_bootstrap_test_config", + "target": "config_test_bootstrap_write_starter_test_config", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L19", + "weight": 1.0, + "source": "config_test_bootstrap_rationale_19", + "target": "config_test_bootstrap_write_starter_test_config", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/dev/seed.py", + "source_location": "L35", + "weight": 1.0, + "source": "dev_seed_main", + "target": "config_test_bootstrap_write_starter_test_config" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L69", + "weight": 1.0, + "source": "config_test_bootstrap_rationale_69", + "target": "config_test_bootstrap_bootstrap_test_config", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/config/test_bootstrap.py", + "source_location": "L83", + "weight": 1.0, + "source": "config_test_bootstrap_bootstrap_test_config", + "target": "sample_data_generator_generate_samples" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/tray/main.py", + "source_location": "L340", + "weight": 1.0, + "source": "tray_main_main", + "target": "config_test_bootstrap_bootstrap_test_config" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -209747,15 +221384,55 @@ "source": "constants_enums_rationale_15", "target": "constants_enums_runkind" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L25", + "weight": 0.8, + "source": "sample_data_spec_samplefile", + "target": "constants_enums_runkind", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L25", + "weight": 0.8, + "source": "sample_data_spec_samplerun", + "target": "constants_enums_runkind", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L25", + "weight": 0.8, + "source": "sample_data_spec_sampleproject", + "target": "constants_enums_runkind", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L25", + "weight": 0.8, + "source": "sample_data_spec_sampleequipment", + "target": "constants_enums_runkind", + "confidence_score": 0.5 + }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1052", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L206", "weight": 1.0, - "source": "controller_creation_creationcontroller_write_cache", + "source": "controller_metadata_assembly_build_creation_json", "target": "constants_enums_runkind" }, { @@ -209769,6 +221446,17 @@ "source": "routers_sessions_build_run_request", "target": "constants_enums_runkind" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1052", + "weight": 1.0, + "source": "controller_creation_creationcontroller_write_cache", + "target": "constants_enums_runkind" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -209779,6 +221467,46 @@ "source": "constants_enums_rationale_25", "target": "constants_enums_syncstatus" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L25", + "weight": 0.8, + "source": "sample_data_spec_samplefile", + "target": "constants_enums_syncstatus", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L25", + "weight": 0.8, + "source": "sample_data_spec_samplerun", + "target": "constants_enums_syncstatus", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L25", + "weight": 0.8, + "source": "sample_data_spec_sampleproject", + "target": "constants_enums_syncstatus", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L25", + "weight": 0.8, + "source": "sample_data_spec_sampleequipment", + "target": "constants_enums_syncstatus", + "confidence_score": 0.5 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -209912,6 +221640,46 @@ "source": "constants_enums_rationale_160", "target": "constants_enums_syncmode" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L25", + "weight": 0.8, + "source": "sample_data_spec_samplefile", + "target": "constants_enums_syncmode", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L25", + "weight": 0.8, + "source": "sample_data_spec_samplerun", + "target": "constants_enums_syncmode", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L25", + "weight": 0.8, + "source": "sample_data_spec_sampleproject", + "target": "constants_enums_syncmode", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L25", + "weight": 0.8, + "source": "sample_data_spec_sampleequipment", + "target": "constants_enums_syncmode", + "confidence_score": 0.5 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -209992,6 +221760,17 @@ "source": "constants_enums_rationale_201", "target": "constants_enums_fieldtype" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L252", + "weight": 1.0, + "source": "controller_metadata_assembly_readme_decls_from_template", + "target": "constants_enums_fieldtype" + }, { "relation": "calls", "context": "call", @@ -211373,6 +223152,39 @@ "source": "readme_generator_system_fields_dict", "target": "utils_time_dt_to_iso" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L308", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_equipment", + "target": "utils_time_dt_to_iso" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L391", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_project", + "target": "utils_time_dt_to_iso" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L461", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_metadata", + "target": "utils_time_dt_to_iso" + }, { "relation": "calls", "context": "call", @@ -213379,16 +225191,6 @@ "source": "src_exlab_wizard_tray_main_py", "target": "tray_main_parse_argv" }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L272", - "weight": 1.0, - "confidence_score": 1.0, - "source": "src_exlab_wizard_tray_main_py", - "target": "tray_main_bootstrap_test_config" - }, { "relation": "contains", "confidence": "EXTRACTED", @@ -213419,6 +225221,16 @@ "source": "tray_main_rationale_1", "target": "src_exlab_wizard_tray_main_py" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/tray/main.py", + "source_location": "L272", + "weight": 1.0, + "confidence_score": 1.0, + "source": "src_exlab_wizard_tray_main_py", + "target": "tray_main_bootstrap_test_config" + }, { "relation": "method", "confidence": "EXTRACTED", @@ -213749,32 +225561,21 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L419", + "source_location": "L424", "weight": 1.0, "confidence_score": 1.0, "source": "tray_main_main", - "target": "tray_main_bootstrap_test_config" + "target": "tray_main_run_smoke" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L273", + "source_location": "L277", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_main_rationale_273", - "target": "tray_main_bootstrap_test_config" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L424", - "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_main_main", - "target": "tray_main_run_smoke" + "source": "tray_main_rationale_277", + "target": "tray_main_run_smoke", + "confidence_score": 1.0 }, { "relation": "rationale_for", @@ -213800,11 +225601,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/tray/main.py", - "source_location": "L384", + "source_location": "L310", "weight": 1.0, - "confidence_score": 1.0, - "source": "tray_main_rationale_384", - "target": "tray_main_main" + "source": "tray_main_rationale_310", + "target": "tray_main_main", + "confidence_score": 1.0 }, { "relation": "calls", @@ -213817,6 +225618,27 @@ "source": "tray_main_main", "target": "logging_manager_configure_logging" }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/tray/main.py", + "source_location": "L419", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_main_main", + "target": "tray_main_bootstrap_test_config" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/tray/main.py", + "source_location": "L384", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_main_rationale_384", + "target": "tray_main_main" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -215438,6 +227260,17 @@ "source": "readme_generator_corefields", "target": "api_schemas_readmefieldsjson" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L158", + "weight": 1.0, + "source": "controller_metadata_assembly_build_readme_context", + "target": "readme_generator_corefields" + }, { "relation": "calls", "context": "call", @@ -215469,6 +227302,28 @@ "source": "readme_generator_templatefielddecl", "target": "api_schemas_readmefieldsjson" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L249", + "weight": 1.0, + "source": "controller_metadata_assembly_readme_decls_from_template", + "target": "readme_generator_templatefielddecl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L274", + "weight": 1.0, + "source": "controller_metadata_assembly_readme_decls_from_config", + "target": "readme_generator_templatefielddecl" + }, { "relation": "calls", "context": "call", @@ -215511,6 +227366,17 @@ "source": "readme_generator_customfield", "target": "api_schemas_readmefieldsjson" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L137", + "weight": 1.0, + "source": "controller_metadata_assembly_build_readme_context", + "target": "readme_generator_customfield" + }, { "relation": "calls", "context": "call", @@ -215542,6 +227408,17 @@ "source": "readme_generator_systemfields", "target": "api_schemas_readmefieldsjson" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L144", + "weight": 1.0, + "source": "controller_metadata_assembly_build_readme_context", + "target": "readme_generator_systemfields" + }, { "relation": "calls", "context": "call", @@ -215573,6 +227450,17 @@ "source": "readme_generator_readmecontext", "target": "api_schemas_readmefieldsjson" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L156", + "weight": 1.0, + "source": "controller_metadata_assembly_build_readme_context", + "target": "readme_generator_readmecontext" + }, { "relation": "calls", "context": "call", @@ -215624,6 +227512,17 @@ "source": "readme_generator_readmegenerator", "target": "api_schemas_readmefieldsjson" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L159", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_init", + "target": "readme_generator_readmegenerator" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -216068,71 +227967,71 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1269", + "source_location": "L1339", "weight": 1.0, "confidence_score": 1.0, "source": "src_exlab_wizard_controller_creation_py", - "target": "controller_creation_readme_decls_from_template" + "target": "controller_creation_has_hard_finding" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1301", + "source_location": "L1343", "weight": 1.0, "confidence_score": 1.0, "source": "src_exlab_wizard_controller_creation_py", - "target": "controller_creation_readme_decls_from_config" + "target": "controller_creation_attach_resolved" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1326", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "src_exlab_wizard_controller_creation_py", - "target": "controller_creation_os_username" + "source": "controller_creation_rationale_1", + "target": "src_exlab_wizard_controller_creation_py" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1339", + "source_location": "L1269", "weight": 1.0, "confidence_score": 1.0, "source": "src_exlab_wizard_controller_creation_py", - "target": "controller_creation_has_hard_finding" + "target": "controller_creation_readme_decls_from_template" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1343", + "source_location": "L1301", "weight": 1.0, "confidence_score": 1.0, "source": "src_exlab_wizard_controller_creation_py", - "target": "controller_creation_attach_resolved" + "target": "controller_creation_readme_decls_from_config" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1", + "source_location": "L1326", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_creation_rationale_1", - "target": "src_exlab_wizard_controller_creation_py" + "source": "src_exlab_wizard_controller_creation_py", + "target": "controller_creation_os_username" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L142", + "source_location": "L136", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_creation_rationale_142", - "target": "controller_creation_projectcreaterequest" + "source": "controller_creation_rationale_136", + "target": "controller_creation_projectcreaterequest", + "confidence_score": 1.0 }, { "relation": "uses", @@ -216164,26 +228063,6 @@ "source": "controller_creation_projectcreaterequest", "target": "api_schemas_limsprojectblock" }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", - "weight": 0.8, - "confidence_score": 0.5, - "source": "controller_creation_projectcreaterequest", - "target": "api_schemas_orchestratorblock" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", - "weight": 0.8, - "confidence_score": 0.5, - "source": "controller_creation_projectcreaterequest", - "target": "api_schemas_pathsblock" - }, { "relation": "uses", "confidence": "INFERRED", @@ -216208,11 +228087,11 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L71", "weight": 0.8, - "confidence_score": 0.5, "source": "controller_creation_projectcreaterequest", - "target": "api_schemas_templateblock" + "target": "controller_metadata_assembly_templatedesc", + "confidence_score": 0.5 }, { "relation": "uses", @@ -216269,11 +228148,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L161", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_creation_rationale_161", - "target": "controller_creation_runcreaterequest" + "source": "controller_creation_rationale_142", + "target": "controller_creation_projectcreaterequest" }, { "relation": "uses", @@ -216282,8 +228161,8 @@ "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, - "source": "controller_creation_runcreaterequest", - "target": "api_schemas_creationjson" + "source": "controller_creation_projectcreaterequest", + "target": "api_schemas_orchestratorblock" }, { "relation": "uses", @@ -216292,8 +228171,28 @@ "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, - "source": "controller_creation_runcreaterequest", - "target": "api_schemas_equipmentjson" + "source": "controller_creation_projectcreaterequest", + "target": "api_schemas_pathsblock" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L46", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_creation_projectcreaterequest", + "target": "api_schemas_templateblock" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L155", + "weight": 1.0, + "source": "controller_creation_rationale_155", + "target": "controller_creation_runcreaterequest", + "confidence_score": 1.0 }, { "relation": "uses", @@ -216303,7 +228202,7 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_runcreaterequest", - "target": "api_schemas_limsprojectblock" + "target": "api_schemas_creationjson" }, { "relation": "uses", @@ -216313,7 +228212,7 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_runcreaterequest", - "target": "api_schemas_orchestratorblock" + "target": "api_schemas_equipmentjson" }, { "relation": "uses", @@ -216323,7 +228222,7 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_runcreaterequest", - "target": "api_schemas_pathsblock" + "target": "api_schemas_limsprojectblock" }, { "relation": "uses", @@ -216349,11 +228248,11 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L71", "weight": 0.8, - "confidence_score": 0.5, "source": "controller_creation_runcreaterequest", - "target": "api_schemas_templateblock" + "target": "controller_metadata_assembly_templatedesc", + "confidence_score": 0.5 }, { "relation": "uses", @@ -216406,6 +228305,46 @@ "source": "routers_sessions_build_run_request", "target": "controller_creation_runcreaterequest" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L161", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_creation_rationale_161", + "target": "controller_creation_runcreaterequest" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L46", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_creation_runcreaterequest", + "target": "api_schemas_orchestratorblock" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L46", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_creation_runcreaterequest", + "target": "api_schemas_pathsblock" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L46", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_creation_runcreaterequest", + "target": "api_schemas_templateblock" + }, { "relation": "calls", "context": "call", @@ -216421,11 +228360,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L186", + "source_location": "L180", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_creation_rationale_186", - "target": "controller_creation_sessionhandle" + "source": "controller_creation_rationale_180", + "target": "controller_creation_sessionhandle", + "confidence_score": 1.0 }, { "relation": "uses", @@ -216465,7 +228404,7 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_sessionhandle", - "target": "api_schemas_orchestratorblock" + "target": "api_schemas_pluginapplied" }, { "relation": "uses", @@ -216475,77 +228414,97 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_sessionhandle", - "target": "api_schemas_pathsblock" + "target": "api_schemas_pluginisolation" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L71", + "weight": 0.8, + "source": "controller_creation_sessionhandle", + "target": "controller_metadata_assembly_templatedesc", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L79", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_sessionhandle", - "target": "api_schemas_pluginapplied" + "target": "controller_session_store_session" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L79", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_sessionhandle", - "target": "api_schemas_pluginisolation" + "target": "controller_session_store_sessionstore" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L80", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_sessionhandle", - "target": "api_schemas_templateblock" + "target": "controller_state_machine_phase" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L79", + "source_location": "L80", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_sessionhandle", - "target": "controller_session_store_session" + "target": "controller_state_machine_sessionstate" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L186", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_creation_rationale_186", + "target": "controller_creation_sessionhandle" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L79", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_sessionhandle", - "target": "controller_session_store_sessionstore" + "target": "api_schemas_orchestratorblock" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L80", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_sessionhandle", - "target": "controller_state_machine_phase" + "target": "api_schemas_pathsblock" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L80", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_sessionhandle", - "target": "controller_state_machine_sessionstate" + "target": "api_schemas_templateblock" }, { "relation": "method", @@ -216561,11 +228520,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L200", + "source_location": "L194", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_creation_rationale_200", - "target": "controller_creation_readmegeneratorprotocol" + "source": "controller_creation_rationale_194", + "target": "controller_creation_readmegeneratorprotocol", + "confidence_score": 1.0 }, { "relation": "uses", @@ -216605,7 +228564,7 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_readmegeneratorprotocol", - "target": "api_schemas_orchestratorblock" + "target": "api_schemas_pluginapplied" }, { "relation": "uses", @@ -216615,77 +228574,97 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_readmegeneratorprotocol", - "target": "api_schemas_pathsblock" + "target": "api_schemas_pluginisolation" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L71", + "weight": 0.8, + "source": "controller_creation_readmegeneratorprotocol", + "target": "controller_metadata_assembly_templatedesc", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L79", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_readmegeneratorprotocol", - "target": "api_schemas_pluginapplied" + "target": "controller_session_store_session" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L79", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_readmegeneratorprotocol", - "target": "api_schemas_pluginisolation" + "target": "controller_session_store_sessionstore" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L80", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_readmegeneratorprotocol", - "target": "api_schemas_templateblock" + "target": "controller_state_machine_phase" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L79", + "source_location": "L80", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_readmegeneratorprotocol", - "target": "controller_session_store_session" + "target": "controller_state_machine_sessionstate" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L200", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_creation_rationale_200", + "target": "controller_creation_readmegeneratorprotocol" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L79", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_readmegeneratorprotocol", - "target": "controller_session_store_sessionstore" + "target": "api_schemas_orchestratorblock" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L80", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_readmegeneratorprotocol", - "target": "controller_state_machine_phase" + "target": "api_schemas_pathsblock" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L80", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_readmegeneratorprotocol", - "target": "controller_state_machine_sessionstate" + "target": "api_schemas_templateblock" }, { "relation": "method", @@ -216712,11 +228691,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L211", + "source_location": "L205", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_creation_rationale_211", - "target": "controller_creation_noopreadmegenerator" + "source": "controller_creation_rationale_205", + "target": "controller_creation_noopreadmegenerator", + "confidence_score": 1.0 }, { "relation": "uses", @@ -216756,7 +228735,7 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_noopreadmegenerator", - "target": "api_schemas_orchestratorblock" + "target": "api_schemas_pluginapplied" }, { "relation": "uses", @@ -216766,77 +228745,97 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_noopreadmegenerator", - "target": "api_schemas_pathsblock" + "target": "api_schemas_pluginisolation" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L71", + "weight": 0.8, + "source": "controller_creation_noopreadmegenerator", + "target": "controller_metadata_assembly_templatedesc", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L79", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_noopreadmegenerator", - "target": "api_schemas_pluginapplied" + "target": "controller_session_store_session" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L79", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_noopreadmegenerator", - "target": "api_schemas_pluginisolation" + "target": "controller_session_store_sessionstore" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L80", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_noopreadmegenerator", - "target": "api_schemas_templateblock" + "target": "controller_state_machine_phase" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L79", + "source_location": "L80", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_noopreadmegenerator", - "target": "controller_session_store_session" + "target": "controller_state_machine_sessionstate" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L211", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_creation_rationale_211", + "target": "controller_creation_noopreadmegenerator" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L79", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_noopreadmegenerator", - "target": "controller_session_store_sessionstore" + "target": "api_schemas_orchestratorblock" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L80", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_noopreadmegenerator", - "target": "controller_state_machine_phase" + "target": "api_schemas_pathsblock" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L80", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_noopreadmegenerator", - "target": "controller_state_machine_sessionstate" + "target": "api_schemas_templateblock" }, { "relation": "calls", @@ -216863,11 +228862,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L227", + "source_location": "L221", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_creation_rationale_227", - "target": "controller_creation_nassyncprotocol" + "source": "controller_creation_rationale_221", + "target": "controller_creation_nassyncprotocol", + "confidence_score": 1.0 }, { "relation": "uses", @@ -216907,7 +228906,7 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_nassyncprotocol", - "target": "api_schemas_orchestratorblock" + "target": "api_schemas_pluginapplied" }, { "relation": "uses", @@ -216917,77 +228916,97 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_nassyncprotocol", - "target": "api_schemas_pathsblock" + "target": "api_schemas_pluginisolation" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L71", + "weight": 0.8, + "source": "controller_creation_nassyncprotocol", + "target": "controller_metadata_assembly_templatedesc", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L79", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_nassyncprotocol", - "target": "api_schemas_pluginapplied" + "target": "controller_session_store_session" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L79", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_nassyncprotocol", - "target": "api_schemas_pluginisolation" + "target": "controller_session_store_sessionstore" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L80", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_nassyncprotocol", - "target": "api_schemas_templateblock" + "target": "controller_state_machine_phase" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L79", + "source_location": "L80", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_nassyncprotocol", - "target": "controller_session_store_session" + "target": "controller_state_machine_sessionstate" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L227", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_creation_rationale_227", + "target": "controller_creation_nassyncprotocol" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L79", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_nassyncprotocol", - "target": "controller_session_store_sessionstore" + "target": "api_schemas_orchestratorblock" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L80", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_nassyncprotocol", - "target": "controller_state_machine_phase" + "target": "api_schemas_pathsblock" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L80", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_nassyncprotocol", - "target": "controller_state_machine_sessionstate" + "target": "api_schemas_templateblock" }, { "relation": "method", @@ -217014,11 +229033,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L233", + "source_location": "L227", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_creation_rationale_233", - "target": "controller_creation_noopnassync" + "source": "controller_creation_rationale_227", + "target": "controller_creation_noopnassync", + "confidence_score": 1.0 }, { "relation": "uses", @@ -217050,26 +229069,6 @@ "source": "controller_creation_noopnassync", "target": "api_schemas_limsprojectblock" }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", - "weight": 0.8, - "confidence_score": 0.5, - "source": "controller_creation_noopnassync", - "target": "api_schemas_orchestratorblock" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", - "weight": 0.8, - "confidence_score": 0.5, - "source": "controller_creation_noopnassync", - "target": "api_schemas_pathsblock" - }, { "relation": "uses", "confidence": "INFERRED", @@ -217094,11 +229093,11 @@ "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L71", "weight": 0.8, - "confidence_score": 0.5, "source": "controller_creation_noopnassync", - "target": "api_schemas_templateblock" + "target": "controller_metadata_assembly_templatedesc", + "confidence_score": 0.5 }, { "relation": "uses", @@ -217140,6 +229139,46 @@ "source": "controller_creation_noopnassync", "target": "controller_state_machine_sessionstate" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L233", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_creation_rationale_233", + "target": "controller_creation_noopnassync" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L46", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_creation_noopnassync", + "target": "api_schemas_orchestratorblock" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L46", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_creation_noopnassync", + "target": "api_schemas_pathsblock" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L46", + "weight": 0.8, + "confidence_score": 0.5, + "source": "controller_creation_noopnassync", + "target": "api_schemas_templateblock" + }, { "relation": "calls", "context": "call", @@ -217425,11 +229464,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L245", + "source_location": "L239", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_creation_rationale_245", - "target": "controller_creation_creationcontroller" + "source": "controller_creation_rationale_239", + "target": "controller_creation_creationcontroller", + "confidence_score": 1.0 }, { "relation": "uses", @@ -217469,7 +229508,7 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_creationcontroller", - "target": "api_schemas_orchestratorblock" + "target": "api_schemas_pluginapplied" }, { "relation": "uses", @@ -217479,77 +229518,97 @@ "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_creationcontroller", - "target": "api_schemas_pathsblock" + "target": "api_schemas_pluginisolation" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L71", + "weight": 0.8, + "source": "controller_creation_creationcontroller", + "target": "controller_metadata_assembly_templatedesc", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L79", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_creationcontroller", - "target": "api_schemas_pluginapplied" + "target": "controller_session_store_session" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L79", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_creationcontroller", - "target": "api_schemas_pluginisolation" + "target": "controller_session_store_sessionstore" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L46", + "source_location": "L80", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_creationcontroller", - "target": "api_schemas_templateblock" + "target": "controller_state_machine_phase" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L79", + "source_location": "L80", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_creationcontroller", - "target": "controller_session_store_session" + "target": "controller_state_machine_sessionstate" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L245", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_creation_rationale_245", + "target": "controller_creation_creationcontroller" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L79", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_creationcontroller", - "target": "controller_session_store_sessionstore" + "target": "api_schemas_orchestratorblock" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L80", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_creationcontroller", - "target": "controller_state_machine_phase" + "target": "api_schemas_pathsblock" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L80", + "source_location": "L46", "weight": 0.8, "confidence_score": 0.5, "source": "controller_creation_creationcontroller", - "target": "controller_state_machine_sessionstate" + "target": "api_schemas_templateblock" }, { "relation": "calls", @@ -217562,6 +229621,16 @@ "source": "controller_creation_creationcontroller_init", "target": "controller_session_store_sessionstore" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L289", + "weight": 1.0, + "source": "controller_creation_rationale_289", + "target": "controller_creation_creationcontroller_apply_config", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -217583,6 +229652,16 @@ "source": "controller_creation_creationcontroller_create_project", "target": "controller_creation_creationcontroller_launch" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L306", + "weight": 1.0, + "source": "controller_creation_rationale_306", + "target": "controller_creation_creationcontroller_create_project", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -217604,6 +229683,16 @@ "source": "controller_creation_creationcontroller_create_run", "target": "controller_creation_creationcontroller_launch" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L319", + "weight": 1.0, + "source": "controller_creation_rationale_319", + "target": "controller_creation_creationcontroller_create_run", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -217625,6 +229714,16 @@ "source": "controller_creation_creationcontroller_resume", "target": "controller_creation_creationcontroller_handle" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L324", + "weight": 1.0, + "source": "controller_creation_rationale_324", + "target": "controller_creation_creationcontroller_resume", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -217646,6 +229745,16 @@ "source": "controller_creation_creationcontroller_cancel", "target": "controller_creation_creationcontroller_cleanup" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L348", + "weight": 1.0, + "source": "controller_creation_rationale_348", + "target": "controller_creation_creationcontroller_cancel", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -217667,6 +229776,16 @@ "source": "controller_creation_creationcontroller_status", "target": "controller_creation_creationcontroller_handle" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L391", + "weight": 1.0, + "source": "controller_creation_rationale_391", + "target": "controller_creation_creationcontroller_status", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -217677,6 +229796,16 @@ "source": "controller_creation_rationale_397", "target": "controller_creation_creationcontroller_status" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L398", + "weight": 1.0, + "source": "controller_creation_rationale_398", + "target": "controller_creation_creationcontroller_subscribe", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -217753,6 +229882,16 @@ "source": "controller_creation_creationcontroller_launch", "target": "controller_creation_creationcontroller_run_pipeline" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L422", + "weight": 1.0, + "source": "controller_creation_rationale_422", + "target": "controller_creation_creationcontroller_launch", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -217807,6 +229946,16 @@ "source": "controller_creation_creationcontroller_validate_inputs", "target": "controller_creation_required_field_ids" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L460", + "weight": 1.0, + "source": "controller_creation_rationale_460", + "target": "controller_creation_creationcontroller_validate_inputs", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -217872,6 +230021,16 @@ "source": "controller_creation_creationcontroller_run_pipeline", "target": "controller_creation_creationcontroller_fail" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L602", + "weight": 1.0, + "source": "controller_creation_rationale_602", + "target": "controller_creation_creationcontroller_run_pipeline", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -218003,6 +230162,16 @@ "source": "controller_creation_creationcontroller_pipeline_states", "target": "controller_creation_creationcontroller_append_log" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L622", + "weight": 1.0, + "source": "controller_creation_rationale_622", + "target": "controller_creation_creationcontroller_pipeline_states", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -218079,6 +230248,16 @@ "source": "controller_creation_creationcontroller_write_cache", "target": "controller_creation_project_name_for" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L757", + "weight": 1.0, + "source": "controller_creation_rationale_757", + "target": "controller_creation_creationcontroller_resolve_run_lims_block", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -218133,6 +230312,16 @@ "source": "controller_creation_creationcontroller_cleanup", "target": "controller_creation_creationcontroller_compose_destination_path" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L810", + "weight": 1.0, + "source": "controller_creation_rationale_810", + "target": "controller_creation_creationcontroller_render", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -218148,44 +230337,87 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L914", + "source_location": "L975", "weight": 1.0, "confidence_score": 1.0, + "source": "controller_creation_creationcontroller_write_cache", + "target": "controller_creation_creationcontroller_build_readme_context" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L899", + "weight": 1.0, + "source": "controller_creation_rationale_899", + "target": "controller_creation_creationcontroller_build_readme_context", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L909", + "weight": 1.0, "source": "controller_creation_creationcontroller_build_readme_context", - "target": "controller_creation_readme_decls_from_template" + "target": "controller_metadata_assembly_templatedesc" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L917", + "weight": 1.0, + "source": "controller_creation_creationcontroller_build_readme_context", + "target": "controller_metadata_assembly_build_readme_context" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L930", + "weight": 1.0, + "source": "controller_creation_creationcontroller_build_readme_context", + "target": "controller_metadata_assembly_os_username" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L915", + "source_location": "L914", "weight": 1.0, "confidence_score": 1.0, "source": "controller_creation_creationcontroller_build_readme_context", - "target": "controller_creation_readme_decls_from_config" + "target": "controller_creation_readme_decls_from_template" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L942", + "source_location": "L915", "weight": 1.0, "confidence_score": 1.0, "source": "controller_creation_creationcontroller_build_readme_context", - "target": "controller_creation_os_username" + "target": "controller_creation_readme_decls_from_config" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L975", + "source_location": "L942", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_creation_creationcontroller_write_cache", - "target": "controller_creation_creationcontroller_build_readme_context" + "source": "controller_creation_creationcontroller_build_readme_context", + "target": "controller_creation_os_username" }, { "relation": "rationale_for", @@ -218212,11 +230444,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L973", + "source_location": "L943", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_creation_rationale_973", - "target": "controller_creation_creationcontroller_write_cache" + "source": "controller_creation_rationale_943", + "target": "controller_creation_creationcontroller_write_cache", + "confidence_score": 1.0 }, { "relation": "calls", @@ -218251,6 +230483,38 @@ "source": "controller_creation_creationcontroller_write_cache", "target": "api_schemas_pluginisolation" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1008", + "weight": 1.0, + "source": "controller_creation_creationcontroller_write_cache", + "target": "controller_metadata_assembly_templatedesc" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1016", + "weight": 1.0, + "source": "controller_creation_creationcontroller_write_cache", + "target": "controller_metadata_assembly_build_creation_json" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L973", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_creation_rationale_973", + "target": "controller_creation_creationcontroller_write_cache" + }, { "relation": "calls", "context": "call", @@ -218299,11 +230563,11 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1083", + "source_location": "L1045", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_creation_rationale_1083", - "target": "controller_creation_creationcontroller_write_equipment_json" + "source": "controller_creation_rationale_1045", + "target": "controller_creation_creationcontroller_write_equipment_json", + "confidence_score": 1.0 }, { "relation": "calls", @@ -218316,6 +230580,26 @@ "source": "controller_creation_creationcontroller_write_equipment_json", "target": "api_schemas_equipmentjson" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1083", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_creation_rationale_1083", + "target": "controller_creation_creationcontroller_write_equipment_json" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1082", + "weight": 1.0, + "source": "controller_creation_rationale_1082", + "target": "controller_creation_creationcontroller_post_validate", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -218370,6 +230654,16 @@ "source": "controller_creation_creationcontroller_fail", "target": "controller_creation_creationcontroller_cleanup" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1161", + "weight": 1.0, + "source": "controller_creation_rationale_1161", + "target": "controller_creation_creationcontroller_cleanup", + "confidence_score": 1.0 + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -218384,51 +230678,51 @@ "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1232", + "source_location": "L1194", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_creation_rationale_1232", - "target": "controller_creation_creationcontroller_append_log" + "source": "controller_creation_rationale_1194", + "target": "controller_creation_creationcontroller_append_log", + "confidence_score": 1.0 }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1257", + "source_location": "L1232", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_creation_rationale_1257", - "target": "controller_creation_required_field_ids" + "source": "controller_creation_rationale_1232", + "target": "controller_creation_creationcontroller_append_log" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1270", + "source_location": "L1219", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_creation_rationale_1270", - "target": "controller_creation_readme_decls_from_template" + "source": "controller_creation_rationale_1219", + "target": "controller_creation_required_field_ids", + "confidence_score": 1.0 }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1302", + "source_location": "L1257", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_creation_rationale_1302", - "target": "controller_creation_readme_decls_from_config" + "source": "controller_creation_rationale_1257", + "target": "controller_creation_required_field_ids" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "src/exlab_wizard/controller/creation.py", - "source_location": "L1327", + "source_location": "L1238", "weight": 1.0, - "confidence_score": 1.0, - "source": "controller_creation_rationale_1327", - "target": "controller_creation_os_username" + "source": "controller_creation_rationale_1238", + "target": "controller_creation_attach_resolved", + "confidence_score": 1.0 }, { "relation": "rationale_for", @@ -218632,6 +230926,294 @@ "source": "controller_session_store_sessionstore_transition", "target": "controller_state_machine_assert_transition" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L68", + "weight": 1.0, + "source": "src_exlab_wizard_controller_metadata_assembly_py", + "target": "controller_metadata_assembly_templatedesc", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L96", + "weight": 1.0, + "source": "src_exlab_wizard_controller_metadata_assembly_py", + "target": "controller_metadata_assembly_build_readme_context", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L168", + "weight": 1.0, + "source": "src_exlab_wizard_controller_metadata_assembly_py", + "target": "controller_metadata_assembly_build_creation_json", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L230", + "weight": 1.0, + "source": "src_exlab_wizard_controller_metadata_assembly_py", + "target": "controller_metadata_assembly_readme_decls_from_template", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L262", + "weight": 1.0, + "source": "src_exlab_wizard_controller_metadata_assembly_py", + "target": "controller_metadata_assembly_readme_decls_from_config", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L287", + "weight": 1.0, + "source": "src_exlab_wizard_controller_metadata_assembly_py", + "target": "controller_metadata_assembly_os_username", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L1", + "weight": 1.0, + "source": "controller_metadata_assembly_rationale_1", + "target": "src_exlab_wizard_controller_metadata_assembly_py", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L69", + "weight": 1.0, + "source": "controller_metadata_assembly_rationale_69", + "target": "controller_metadata_assembly_templatedesc", + "confidence_score": 1.0 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L34", + "weight": 0.8, + "source": "controller_metadata_assembly_templatedesc", + "target": "api_schemas_creationjson", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L34", + "weight": 0.8, + "source": "controller_metadata_assembly_templatedesc", + "target": "api_schemas_limsprojectblock", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L34", + "weight": 0.8, + "source": "controller_metadata_assembly_templatedesc", + "target": "api_schemas_orchestratorblock", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L34", + "weight": 0.8, + "source": "controller_metadata_assembly_templatedesc", + "target": "api_schemas_pathsblock", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L34", + "weight": 0.8, + "source": "controller_metadata_assembly_templatedesc", + "target": "api_schemas_pluginapplied", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L34", + "weight": 0.8, + "source": "controller_metadata_assembly_templatedesc", + "target": "api_schemas_templateblock", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L70", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "controller_metadata_assembly_templatedesc", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L120", + "weight": 1.0, + "source": "controller_metadata_assembly_build_readme_context", + "target": "controller_metadata_assembly_readme_decls_from_template", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L121", + "weight": 1.0, + "source": "controller_metadata_assembly_build_readme_context", + "target": "controller_metadata_assembly_readme_decls_from_config", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L112", + "weight": 1.0, + "source": "controller_metadata_assembly_rationale_112", + "target": "controller_metadata_assembly_build_readme_context", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L431", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_metadata", + "target": "controller_metadata_assembly_build_readme_context" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L184", + "weight": 1.0, + "source": "controller_metadata_assembly_rationale_184", + "target": "controller_metadata_assembly_build_creation_json", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L194", + "weight": 1.0, + "source": "controller_metadata_assembly_build_creation_json", + "target": "api_schemas_orchestratorblock" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L201", + "weight": 1.0, + "source": "controller_metadata_assembly_build_creation_json", + "target": "api_schemas_creationjson" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L208", + "weight": 1.0, + "source": "controller_metadata_assembly_build_creation_json", + "target": "api_schemas_templateblock" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L215", + "weight": 1.0, + "source": "controller_metadata_assembly_build_creation_json", + "target": "api_schemas_pathsblock" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L448", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_metadata", + "target": "controller_metadata_assembly_build_creation_json" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L231", + "weight": 1.0, + "source": "controller_metadata_assembly_rationale_231", + "target": "controller_metadata_assembly_readme_decls_from_template", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L263", + "weight": 1.0, + "source": "controller_metadata_assembly_rationale_263", + "target": "controller_metadata_assembly_readme_decls_from_config", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/metadata_assembly.py", + "source_location": "L288", + "weight": 1.0, + "source": "controller_metadata_assembly_rationale_288", + "target": "controller_metadata_assembly_os_username", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -218843,6 +231425,26 @@ "source": "controller_session_store_rationale_93", "target": "controller_session_store_sessionstore" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L282", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "controller_session_store_sessionstore" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L282", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "controller_session_store_sessionstore" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -219084,6 +231686,531 @@ "source": "routers_operations_session_to_entry", "target": "controller_session_store_project_identifier" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L29", + "weight": 1.0, + "source": "src_exlab_wizard_sample_data_spec_py", + "target": "sample_data_spec_samplefile", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L37", + "weight": 1.0, + "source": "src_exlab_wizard_sample_data_spec_py", + "target": "sample_data_spec_check_relpath", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L50", + "weight": 1.0, + "source": "src_exlab_wizard_sample_data_spec_py", + "target": "sample_data_spec_samplerun", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L63", + "weight": 1.0, + "source": "src_exlab_wizard_sample_data_spec_py", + "target": "sample_data_spec_sampleproject", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L75", + "weight": 1.0, + "source": "src_exlab_wizard_sample_data_spec_py", + "target": "sample_data_spec_check_short_id", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L85", + "weight": 1.0, + "source": "src_exlab_wizard_sample_data_spec_py", + "target": "sample_data_spec_check_name", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L97", + "weight": 1.0, + "source": "src_exlab_wizard_sample_data_spec_py", + "target": "sample_data_spec_sampleequipment", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L107", + "weight": 1.0, + "source": "src_exlab_wizard_sample_data_spec_py", + "target": "sample_data_spec_check_id", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/spec.py", + "source_location": "L1", + "weight": 1.0, + "source": "sample_data_spec_rationale_1", + "target": "src_exlab_wizard_sample_data_spec_py", + "confidence_score": 1.0 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L86", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_spec_samplerun", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L86", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_spec_sampleproject", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L86", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_spec_sampleequipment", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L121", + "weight": 1.0, + "source": "src_exlab_wizard_sample_data_generator_py", + "target": "sample_data_generator_generate_samples", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L147", + "weight": 1.0, + "source": "src_exlab_wizard_sample_data_generator_py", + "target": "sample_data_generator_sampledatagenerator", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L1", + "weight": 1.0, + "source": "sample_data_generator_rationale_1", + "target": "src_exlab_wizard_sample_data_generator_py", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L144", + "weight": 1.0, + "source": "sample_data_generator_generate_samples", + "target": "sample_data_generator_sampledatagenerator_generate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L144", + "weight": 1.0, + "source": "sample_data_generator_generate_samples", + "target": "sample_data_generator_sampledatagenerator", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L127", + "weight": 1.0, + "source": "sample_data_generator_rationale_127", + "target": "sample_data_generator_generate_samples", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/dev/seed.py", + "source_location": "L38", + "weight": 1.0, + "source": "dev_seed_main", + "target": "sample_data_generator_generate_samples" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L150", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_generator_sampledatagenerator_init", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L163", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_generator_sampledatagenerator_generate", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L171", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_generator_sampledatagenerator_generate_async", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L194", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_generator_sampledatagenerator_build_and_reload_config", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L239", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_generator_sampledatagenerator_wipe", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L286", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_generator_sampledatagenerator_write_equipment", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L313", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_generator_sampledatagenerator_write_project", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L401", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_generator_sampledatagenerator_write_metadata", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L469", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_generator_sampledatagenerator_run_date", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L479", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator", + "target": "sample_data_generator_sampledatagenerator_write_payload", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L148", + "weight": 1.0, + "source": "sample_data_generator_rationale_148", + "target": "sample_data_generator_sampledatagenerator", + "confidence_score": 1.0 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L43", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "api_schemas_equipmentjson", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L43", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "api_schemas_limsprojectblock", + "confidence_score": 0.5 + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L43", + "weight": 0.8, + "source": "sample_data_generator_sampledatagenerator", + "target": "api_schemas_testrunsjson", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L165", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_generate", + "target": "sample_data_generator_sampledatagenerator_generate_async", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L446", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_metadata", + "target": "sample_data_generator_sampledatagenerator_generate", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L164", + "weight": 1.0, + "source": "sample_data_generator_rationale_164", + "target": "sample_data_generator_sampledatagenerator_generate", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L172", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_generate_async", + "target": "sample_data_generator_sampledatagenerator_build_and_reload_config", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L185", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_generate_async", + "target": "sample_data_generator_sampledatagenerator_wipe", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L188", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_generate_async", + "target": "sample_data_generator_sampledatagenerator_write_equipment", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L195", + "weight": 1.0, + "source": "sample_data_generator_rationale_195", + "target": "sample_data_generator_sampledatagenerator_build_and_reload_config", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L240", + "weight": 1.0, + "source": "sample_data_generator_rationale_240", + "target": "sample_data_generator_sampledatagenerator_wipe", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L297", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_equipment", + "target": "sample_data_generator_sampledatagenerator_write_project", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L301", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_equipment", + "target": "api_schemas_equipmentjson" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L337", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_project", + "target": "sample_data_generator_sampledatagenerator_write_metadata", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L357", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_project", + "target": "sample_data_generator_sampledatagenerator_run_date", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L366", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_project", + "target": "sample_data_generator_sampledatagenerator_write_payload", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L328", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_project", + "target": "api_schemas_limsprojectblock" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L389", + "weight": 1.0, + "source": "sample_data_generator_sampledatagenerator_write_project", + "target": "api_schemas_testrunsjson" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L420", + "weight": 1.0, + "source": "sample_data_generator_rationale_420", + "target": "sample_data_generator_sampledatagenerator_write_metadata", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L470", + "weight": 1.0, + "source": "sample_data_generator_rationale_470", + "target": "sample_data_generator_sampledatagenerator_run_date", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/sample_data/generator.py", + "source_location": "L480", + "weight": 1.0, + "source": "sample_data_generator_rationale_480", + "target": "sample_data_generator_sampledatagenerator_write_payload", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -220683,6 +233810,26 @@ "source": "api_schemas_rationale_87", "target": "api_schemas_limsprojectblock" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1344", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "api_schemas_limsprojectblock" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1344", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "api_schemas_limsprojectblock" + }, { "relation": "uses", "confidence": "INFERRED", @@ -220703,6 +233850,26 @@ "source": "api_schemas_rationale_107", "target": "api_schemas_templateblock" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1344", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "api_schemas_templateblock" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1344", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "api_schemas_templateblock" + }, { "relation": "uses", "confidence": "INFERRED", @@ -220743,6 +233910,26 @@ "source": "api_schemas_rationale_153", "target": "api_schemas_pathsblock" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1344", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "api_schemas_pathsblock" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1344", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "api_schemas_pathsblock" + }, { "relation": "uses", "confidence": "INFERRED", @@ -221093,6 +234280,26 @@ "source": "sync_nas_client_nassyncclient", "target": "api_schemas_creationjson" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1344", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "api_schemas_creationjson" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1344", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "api_schemas_creationjson" + }, { "relation": "uses", "confidence": "INFERRED", @@ -222527,6 +235734,26 @@ "source": "routers_browse_rationale_133", "target": "routers_browse_folderentry" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1729", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "routers_browse_folderentry" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1729", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "routers_browse_folderentry" + }, { "relation": "calls", "context": "call", @@ -222548,6 +235775,26 @@ "source": "routers_browse_rationale_157", "target": "routers_browse_folderresponse" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1729", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "routers_browse_folderresponse" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1729", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "routers_browse_folderresponse" + }, { "relation": "calls", "context": "call", @@ -224029,6 +237276,46 @@ "source": "routers_staging_rationale_353", "target": "routers_staging_require_config" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/dev/__init__.py", + "source_location": "L1", + "weight": 1.0, + "source": "dev_init_rationale_1", + "target": "src_exlab_wizard_dev_init_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/dev/seed.py", + "source_location": "L15", + "weight": 1.0, + "source": "src_exlab_wizard_dev_seed_py", + "target": "dev_seed_main", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/dev/seed.py", + "source_location": "L1", + "weight": 1.0, + "source": "dev_seed_rationale_1", + "target": "src_exlab_wizard_dev_seed_py", + "confidence_score": 1.0 + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/dev/seed.py", + "source_location": "L16", + "weight": 1.0, + "source": "dev_seed_rationale_16", + "target": "dev_seed_main", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -229796,6 +243083,17 @@ "source": "orchestrator_staging_query_rationale_80", "target": "orchestrator_staging_query_list_staged_runs" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1940", + "weight": 1.0, + "source": "ui_mount_build_staging_state", + "target": "orchestrator_staging_query_list_staged_runs" + }, { "relation": "calls", "context": "call", @@ -229900,256 +243198,6 @@ "source": "orchestrator_staging_query_rationale_205", "target": "orchestrator_staging_query_iso_to_epoch" }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L1", - "weight": 1.0, - "confidence_score": 1.0, - "source": "resume_md", - "target": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L1", - "weight": 1.0, - "confidence_score": 1.0, - "source": "resume_md", - "target": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L1", - "weight": 1.0, - "confidence_score": 1.0, - "source": "resume_md", - "target": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L7", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", - "target": "exlabwizard_resume_current_state_2026_05_29_session_2" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L47", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", - "target": "exlabwizard_resume_how_to_work_lessons_from_this_session_important" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L70", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", - "target": "exlabwizard_resume_where_things_stand" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L100", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", - "target": "exlabwizard_resume_phase_4_remaining_work_option_b_selection_metadata" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L164", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", - "target": "exlabwizard_resume_code_review_findings_to_honor_from_earlier_passes" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L171", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", - "target": "exlabwizard_resume_quick_resume_verification_run_sequentially_one_at_a_time" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L7", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint", - "target": "exlabwizard_resume_current_state_2026_05_29_session_2" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L25", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint", - "target": "exlabwizard_resume_how_to_work_lessons_from_this_session_important" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L7", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress", - "target": "exlabwizard_resume_how_to_work_lessons_from_this_session_important" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L38", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_where_things_stand", - "target": "exlabwizard_resume_committed_clean_phases_1_3" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L46", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_where_things_stand", - "target": "exlabwizard_resume_uncommitted_partial_phase_4_working_tree_additive_backward_compatible" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L48", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint", - "target": "exlabwizard_resume_where_things_stand" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L30", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress", - "target": "exlabwizard_resume_where_things_stand" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L108", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_phase_4_remaining_work_option_b_selection_metadata", - "target": "exlabwizard_resume_tests_to_add_phase_4" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L118", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_phase_4_remaining_work_option_b_selection_metadata", - "target": "exlabwizard_resume_demo_checkpoint_task_6_after_phase_4_verifies_green" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L78", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint", - "target": "exlabwizard_resume_phase_4_remaining_work_option_b_selection_metadata" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L60", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress", - "target": "exlabwizard_resume_phase_4_remaining_work_option_b_selection_metadata" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L142", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint", - "target": "exlabwizard_resume_code_review_findings_to_honor_from_earlier_passes" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L124", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress", - "target": "exlabwizard_resume_code_review_findings_to_honor_from_earlier_passes" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L132", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_quick_resume_verification_run_sequentially_one_at_a_time", - "target": "exlabwizard_resume_codeblock_1" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L149", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint", - "target": "exlabwizard_resume_quick_resume_verification_run_sequentially_one_at_a_time" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "RESUME.md", - "source_location": "L131", - "weight": 1.0, - "confidence_score": 1.0, - "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress", - "target": "exlabwizard_resume_quick_resume_verification_run_sequentially_one_at_a_time" - }, { "relation": "contains", "confidence": "EXTRACTED", @@ -230800,6 +243848,26 @@ "source": "exlabwizard_design_08_usage_rules_anti_patterns", "target": "exlabwizard_design_don_t" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L1", + "weight": 1.0, + "source": "claude_md", + "target": "exlabwizard_claude_exlabwizard_project_notes_for_claude", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "CLAUDE.md", + "source_location": "L3", + "weight": 1.0, + "source": "exlabwizard_claude_exlabwizard_project_notes_for_claude", + "target": "exlabwizard_claude_orchestrator_staging_is_intentionally_hidden_not_removed", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -234510,6 +247578,226 @@ "source": "specs_2026_05_21_operator_free_per_file_nas_sync_design_per_file_sync_state_sync_state_json", "target": "specs_2026_05_21_operator_free_per_file_nas_sync_design_codeblock_1" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L1", + "weight": 1.0, + "source": "docs_superpowers_specs_2026_05_29_hide_orchestrator_staging_design_md", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_hide_orchestrator_staging_from_the_ui_design_spec", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L14", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_hide_orchestrator_staging_from_the_ui_design_spec", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_1_summary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L61", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_hide_orchestrator_staging_from_the_ui_design_spec", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_2_goals_non_goals", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L92", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_hide_orchestrator_staging_from_the_ui_design_spec", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_3_design", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L181", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_hide_orchestrator_staging_from_the_ui_design_spec", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_4_claude_md_update", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L218", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_hide_orchestrator_staging_from_the_ui_design_spec", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_5_testing", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L255", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_hide_orchestrator_staging_from_the_ui_design_spec", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_6_risks_notes", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L45", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_1_summary", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_why_hide_rather_than_a_feature_flag", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L51", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_1_summary", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_critical_implementation_note_do_not_delete_the_orchestrator_package", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L63", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_2_goals_non_goals", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_goals", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L75", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_2_goals_non_goals", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_non_goals", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L96", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_3_design", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_3_1_add_equipment_wizard_ui_pages_wizard_equipment_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L114", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_3_design", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_3_2_settings_section_ui_pages_settings_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L132", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_3_design", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_3_3_staging_route_ui_mount_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L146", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_3_design", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_3_4_main_window_footer_ui_pages_main_py", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L158", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_3_design", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_3_5_what_stays_dormant_explicitly_untouched", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L173", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_3_design", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_3_6_reversibility_contract", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L188", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_4_claude_md_update", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_codeblock_1", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L220", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_5_testing", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_tests_that_must_change", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L235", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_5_testing", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_tests_that_stay_green_unchanged_by_design", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L241", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_5_testing", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_tests_to_add", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md", + "source_location": "L249", + "weight": 1.0, + "source": "specs_2026_05_29_hide_orchestrator_staging_design_5_testing", + "target": "specs_2026_05_29_hide_orchestrator_staging_design_verification", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -234780,6 +248068,106 @@ "source": "specs_2026_05_28_rclone_conf_nas_sync_design_4_verify_cleanup_flow", "target": "specs_2026_05_28_rclone_conf_nas_sync_design_codeblock_4" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L1", + "weight": 1.0, + "source": "docs_superpowers_specs_2026_05_29_main_window_ui_refresh_remaining_work_md", + "target": "specs_2026_05_29_main_window_ui_refresh_remaining_work_main_window_ui_refresh_remaining_work_v2", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L21", + "weight": 1.0, + "source": "specs_2026_05_29_main_window_ui_refresh_remaining_work_main_window_ui_refresh_remaining_work_v2", + "target": "specs_2026_05_29_main_window_ui_refresh_remaining_work_1_what_has_shipped_committed_on_the_branch", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L65", + "weight": 1.0, + "source": "specs_2026_05_29_main_window_ui_refresh_remaining_work_main_window_ui_refresh_remaining_work_v2", + "target": "specs_2026_05_29_main_window_ui_refresh_remaining_work_2_divergences_from_the_approved_design_spec_must_be_reconciled", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L102", + "weight": 1.0, + "source": "specs_2026_05_29_main_window_ui_refresh_remaining_work_main_window_ui_refresh_remaining_work_v2", + "target": "specs_2026_05_29_main_window_ui_refresh_remaining_work_a_spec_reconciliation_done", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L115", + "weight": 1.0, + "source": "specs_2026_05_29_main_window_ui_refresh_remaining_work_main_window_ui_refresh_remaining_work_v2", + "target": "specs_2026_05_29_main_window_ui_refresh_remaining_work_b_phase_5_polish_reconcile_each_item_with_the_popover", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L174", + "weight": 1.0, + "source": "specs_2026_05_29_main_window_ui_refresh_remaining_work_main_window_ui_refresh_remaining_work_v2", + "target": "specs_2026_05_29_main_window_ui_refresh_remaining_work_c_phase_6_e2e_final_verification_done_e72cd73", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L233", + "weight": 1.0, + "source": "specs_2026_05_29_main_window_ui_refresh_remaining_work_main_window_ui_refresh_remaining_work_v2", + "target": "specs_2026_05_29_main_window_ui_refresh_remaining_work_d_cleanup_tech_debt", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L250", + "weight": 1.0, + "source": "specs_2026_05_29_main_window_ui_refresh_remaining_work_main_window_ui_refresh_remaining_work_v2", + "target": "specs_2026_05_29_main_window_ui_refresh_remaining_work_e_risks_open_questions", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L271", + "weight": 1.0, + "source": "specs_2026_05_29_main_window_ui_refresh_remaining_work_main_window_ui_refresh_remaining_work_v2", + "target": "specs_2026_05_29_main_window_ui_refresh_remaining_work_f_deferred_out_of_scope_from_design_spec_11", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md", + "source_location": "L280", + "weight": 1.0, + "source": "specs_2026_05_29_main_window_ui_refresh_remaining_work_main_window_ui_refresh_remaining_work_v2", + "target": "specs_2026_05_29_main_window_ui_refresh_remaining_work_working_notes_carry_forward", + "confidence_score": 1.0 + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -240630,6 +254018,918 @@ "source": "memory_query_20260529_232003_how_are_the_example_equipment_projects_run_folde_q_how_are_the_example_equipment_projects_run_folders_and_samples_generated_in_test_mode_of_the_wizard_tray", "target": "memory_query_20260529_232003_how_are_the_example_equipment_projects_run_folde_source_nodes" }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L95", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_pages_rationale_95", + "target": "ui_test_pages_test_main_setup_banner_subline_tailored_for_nas_credentials" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_pages.py", + "source_location": "L276", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_pages_rationale_276", + "target": "ui_test_pages_test_settings_first_incomplete_resolves_nas_credentials" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L101", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_fakeui", + "target": "ui_test_mount_fakeui_init" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L107", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_fakeui", + "target": "ui_test_mount_fakeui_card" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L111", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_fakeui", + "target": "ui_test_mount_fakeui_label" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L657", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_render_unavailable_renders_headline_and_subline", + "target": "ui_test_mount_fakeui" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L99", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_99", + "target": "ui_test_mount_fakeui" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L350", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_fakeui", + "target": "config_models_rclonesftptransport" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L119", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_boomui", + "target": "ui_test_mount_boomui_card" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L123", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_boomui", + "target": "ui_test_mount_boomui_label" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L665", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_test_render_unavailable_swallows_failure", + "target": "ui_test_mount_boomui" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L118", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_118", + "target": "ui_test_mount_boomui" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L117", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_117", + "target": "ui_test_mount_boomui" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L350", + "weight": 0.8, + "confidence_score": 0.5, + "source": "ui_test_mount_boomui", + "target": "config_models_rclonesftptransport" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L461", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_461", + "target": "ui_test_mount_test_staging_state_when_staging_root_missing" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L460", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_460", + "target": "ui_test_mount_test_staging_state_when_staging_root_missing" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1702", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1702", + "target": "ui_test_mount_drain_background" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1696", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1696", + "target": "ui_test_mount_drain_background" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1698", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1698", + "target": "ui_test_mount_drain_background" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1529", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1529", + "target": "ui_test_mount_drain_background" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1503", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1503", + "target": "ui_test_mount_drain_background" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1545", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1545", + "target": "ui_test_mount_drain_background" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1790", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1790", + "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1784", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1784", + "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1786", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1786", + "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1617", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1617", + "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1592", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1592", + "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1633", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1633", + "target": "ui_test_mount_test_bulk_clear_verified_clears_verified_rows" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1817", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1817", + "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1813", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1813", + "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1644", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1644", + "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1619", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1619", + "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1660", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1660", + "target": "ui_test_mount_test_bulk_clear_verified_no_config_toasts_and_returns" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1826", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1826", + "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1820", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1820", + "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1822", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1822", + "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1653", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1653", + "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1628", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1628", + "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1627", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1627", + "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L1669", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_1669", + "target": "ui_test_mount_test_bulk_clear_verified_logs_helper_exception" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2937", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_2937", + "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2931", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_2931", + "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2933", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_2933", + "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2764", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_2764", + "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2739", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_2739", + "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2738", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_2738", + "target": "ui_test_mount_test_bulk_clear_verified_no_verified_rows_toasts" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L3017", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_3017", + "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L3011", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_3011", + "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L3013", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_3013", + "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2844", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_2844", + "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2819", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_2819", + "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "tests/unit/ui/test_mount.py", + "source_location": "L2818", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_test_mount_rationale_2818", + "target": "ui_test_mount_test_build_staging_state_query_failure_returns_empty_rows" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1331", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1331", + "target": "ui_mount_bulk_clear_verified" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1326", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1326", + "target": "ui_mount_bulk_clear_verified" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1319", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1319", + "target": "ui_mount_bulk_clear_verified" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1317", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1317", + "target": "ui_mount_bulk_clear_verified" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1282", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1282", + "target": "ui_mount_bulk_clear_verified" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1274", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1274", + "target": "ui_mount_bulk_clear_verified" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1241", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1241", + "target": "ui_mount_bulk_clear_verified" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1142", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1142", + "target": "ui_mount_bulk_clear_verified" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1123", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1123", + "target": "ui_mount_bulk_clear_verified" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/ui/mount.py", + "source_location": "L1177", + "weight": 1.0, + "confidence_score": 1.0, + "source": "ui_mount_rationale_1177", + "target": "ui_mount_bulk_clear_verified" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/tray/main.py", + "source_location": "L273", + "weight": 1.0, + "confidence_score": 1.0, + "source": "tray_main_rationale_273", + "target": "tray_main_bootstrap_test_config" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1270", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_creation_rationale_1270", + "target": "controller_creation_readme_decls_from_template" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1302", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_creation_rationale_1302", + "target": "controller_creation_readme_decls_from_config" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "src/exlab_wizard/controller/creation.py", + "source_location": "L1327", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_creation_rationale_1327", + "target": "controller_creation_os_username" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "resume_md", + "target": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "resume_md", + "target": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "resume_md", + "target": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", + "target": "exlabwizard_resume_current_state_2026_05_29_session_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", + "target": "exlabwizard_resume_how_to_work_lessons_from_this_session_important" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L70", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", + "target": "exlabwizard_resume_where_things_stand" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L100", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", + "target": "exlabwizard_resume_phase_4_remaining_work_option_b_selection_metadata" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L164", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", + "target": "exlabwizard_resume_code_review_findings_to_honor_from_earlier_passes" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L171", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_post_demo_ui_batch_committed", + "target": "exlabwizard_resume_quick_resume_verification_run_sequentially_one_at_a_time" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint", + "target": "exlabwizard_resume_current_state_2026_05_29_session_2" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint", + "target": "exlabwizard_resume_how_to_work_lessons_from_this_session_important" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress", + "target": "exlabwizard_resume_how_to_work_lessons_from_this_session_important" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L38", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_where_things_stand", + "target": "exlabwizard_resume_committed_clean_phases_1_3" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L46", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_where_things_stand", + "target": "exlabwizard_resume_uncommitted_partial_phase_4_working_tree_additive_backward_compatible" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L48", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint", + "target": "exlabwizard_resume_where_things_stand" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress", + "target": "exlabwizard_resume_where_things_stand" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L108", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_phase_4_remaining_work_option_b_selection_metadata", + "target": "exlabwizard_resume_tests_to_add_phase_4" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L118", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_phase_4_remaining_work_option_b_selection_metadata", + "target": "exlabwizard_resume_demo_checkpoint_task_6_after_phase_4_verifies_green" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L78", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint", + "target": "exlabwizard_resume_phase_4_remaining_work_option_b_selection_metadata" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress", + "target": "exlabwizard_resume_phase_4_remaining_work_option_b_selection_metadata" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L142", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint", + "target": "exlabwizard_resume_code_review_findings_to_honor_from_earlier_passes" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L124", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress", + "target": "exlabwizard_resume_code_review_findings_to_honor_from_earlier_passes" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L132", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_quick_resume_verification_run_sequentially_one_at_a_time", + "target": "exlabwizard_resume_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L149", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_done_committed_at_demo_checkpoint", + "target": "exlabwizard_resume_quick_resume_verification_run_sequentially_one_at_a_time" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "RESUME.md", + "source_location": "L131", + "weight": 1.0, + "confidence_score": 1.0, + "source": "exlabwizard_resume_resume_main_window_ui_refresh_phase_4_in_progress", + "target": "exlabwizard_resume_quick_resume_verification_run_sequentially_one_at_a_time" + }, { "relation": "rationale_for", "confidence": "EXTRACTED", @@ -242484,5 +256784,5 @@ } ], "hyperedges": [], - "built_at_commit": "51b618681d32c1eb8a1b051994927c47126723c1" + "built_at_commit": "43a5508320b0c27e4535d23b4b187f16bfcefa39" } \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index 812ea3d..6c61b5b 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -12,7 +12,7 @@ "hash": "9c1e4ef8d86e83de2b60b3c32f985793" }, "/Users/alex/Projects/ExLabWizard/tests/unit/test_paths.py": { - "mtime": 1780089349.3177474, + "mtime": 1780127492.775397, "hash": "7e4e855a4d3c854291bf29541f3ef33a" }, "/Users/alex/Projects/ExLabWizard/tests/unit/test_main.py": { @@ -24,47 +24,55 @@ "hash": "d3ac0f6c3b8fbffd4416a1dd8fbf268a" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_metadata_pane.py": { - "mtime": 1780102467.6444001, + "mtime": 1780127492.7798204, "hash": "cd9eaf0c5332806f78fe5b60e646c9fa" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_components.py": { - "mtime": 1780089349.3181427, - "hash": "53cfe3a74d440ba4924c49dffb13ced8" + "mtime": 1780127492.7764957, + "hash": "1b6008f10035cec93c1ca5f8d6714ec5" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_framed_pane.py": { - "mtime": 1780102224.0792646, - "hash": "a0591883902294de389feb93c240dbdc" + "mtime": 1780127492.7795568, + "hash": "57fd7b163f11192467258f94e16aa5df" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_pages.py": { - "mtime": 1780054073.152241, - "hash": "fd5a3d4a5a440f0f42dccfbda15fe8d2" + "mtime": 1780127492.7816114, + "hash": "228ab4bc29f7ae13ec28cd7f014f6f8e" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_mount.py": { - "mtime": 1780102457.4899583, - "hash": "ceef6978381f6ec5d6371be70222f3ce" + "mtime": 1780127492.7812407, + "hash": "ac051c46057b6978a779cfdbff1e2cda" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_settings_page.py": { - "mtime": 1780018059.26053, - "hash": "c23bf876d1b6df34ae8ab2c673fdb310" + "mtime": 1780127492.7940397, + "hash": "805bd9568cf2ac099fbf0d92a5b0940f" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/__init__.py": { "mtime": 1778192475.5767596, "hash": "8ed5d6363fb291bfde80adec3f3eb6a3" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_wizard_equipment.py": { - "mtime": 1780056848.0742567, - "hash": "597fc443f64f5071c10e77e30894b0f1" + "mtime": 1780127492.795881, + "hash": "4035f20fadfd810204dc69d344fe570a" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_staging_page.py": { - "mtime": 1779440349.5867205, - "hash": "4e36f575cd6c285f748e6b828961e428" + "mtime": 1780127492.7945998, + "hash": "b47c63b90b66a6bfe123e7b756b95cc2" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_notifications.py": { "mtime": 1778192475.577294, "hash": "50a9a7ab9eed0e6d1f5e8a2b74e53335" }, + "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_status_bar_segment.py": { + "mtime": 1780127492.7948403, + "hash": "7c2a0d17386fbf7deb1a8a928b8ada68" + }, + "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_empty_state.py": { + "mtime": 1780127492.7774882, + "hash": "e9890cb46c1626678d32670f25c6bb1a" + }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_sync_status_icon.py": { - "mtime": 1780098340.6532662, + "mtime": 1780127492.7951574, "hash": "56ea263bcd90b005d679f1871462f083" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_templates_page.py": { @@ -76,19 +84,19 @@ "hash": "1c27498b62e21bf92df8e1d077de1f45" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_dynamic_form.py": { - "mtime": 1780056860.2935295, + "mtime": 1780127492.7773285, "hash": "6e717afd0f0fb8644efba0bceef90cc4" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_file_list.py": { - "mtime": 1780103257.787698, + "mtime": 1780127492.7793205, "hash": "b2a4a651216f1648407937a5624ddcea" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_theme.py": { - "mtime": 1780096810.880133, - "hash": "c6dec8fad481865171282ae9b618f0ef" + "mtime": 1780127492.7955854, + "hash": "ad86af4230a93fab76dab54d2a533fe3" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_settings_nas_remote.py": { - "mtime": 1780090445.4453564, + "mtime": 1780127492.7817829, "hash": "444be67873050256c353111d4fa97a31" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_breadcrumb.py": { @@ -96,7 +104,7 @@ "hash": "29deda2201ddbd6822a39c87f3dcaeec" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_sync_rollup.py": { - "mtime": 1780098645.1099246, + "mtime": 1780127492.7949893, "hash": "07d22562014692f55c6930bf795632b6" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_factories_smoke.py": { @@ -104,7 +112,7 @@ "hash": "3e8f6696ad6a0027bb04ceb30266f420" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_design.py": { - "mtime": 1780096791.0580933, + "mtime": 1780127492.7769916, "hash": "10ef631a3907c5acb6f61d927e9f9374" }, "/Users/alex/Projects/ExLabWizard/tests/unit/ui/test_travelling_badge.py": { @@ -120,7 +128,7 @@ "hash": "ac23e27c91f5371ec8573869291df875" }, "/Users/alex/Projects/ExLabWizard/tests/unit/lims/test_catalogue.py": { - "mtime": 1780054073.0687616, + "mtime": 1780127492.7716691, "hash": "536457500f9edb90ec9afd45382163d3" }, "/Users/alex/Projects/ExLabWizard/tests/unit/lims/test_keyring_store.py": { @@ -144,7 +152,7 @@ "hash": "add82d5e3c75fb4ddca7d30a97744a28" }, "/Users/alex/Projects/ExLabWizard/tests/unit/validator/test_engine_reconfigure.py": { - "mtime": 1780089349.3175116, + "mtime": 1780127492.7960641, "hash": "9772ab094af61c195c128458e749d331" }, "/Users/alex/Projects/ExLabWizard/tests/unit/validator/test_findings.py": { @@ -180,11 +188,11 @@ "hash": "a0145513fca4f1c135b9efba1babea62" }, "/Users/alex/Projects/ExLabWizard/tests/unit/cache/test_sync_state_writer.py": { - "mtime": 1779484405.1287787, + "mtime": 1780127492.7678812, "hash": "519a403d2abab42c1dc1981b19ca7fb3" }, "/Users/alex/Projects/ExLabWizard/tests/unit/config/test_loader.py": { - "mtime": 1780089349.3177516, + "mtime": 1780127492.7682116, "hash": "00e9e17a3a0fb54ddbceb9a1cda7f2f8" }, "/Users/alex/Projects/ExLabWizard/tests/unit/config/__init__.py": { @@ -192,7 +200,7 @@ "hash": "08b871e14b89d3a9a0087f1a7633939f" }, "/Users/alex/Projects/ExLabWizard/tests/unit/config/test_models.py": { - "mtime": 1780056676.4053636, + "mtime": 1780127492.768593, "hash": "b5c57aac8c6c7aa37efac0463bd86cdf" }, "/Users/alex/Projects/ExLabWizard/tests/unit/plugins/test_registry.py": { @@ -212,7 +220,7 @@ "hash": "b238c936c945cdc2d90b2b2b5fdcbcab" }, "/Users/alex/Projects/ExLabWizard/tests/unit/constants/test_schema_versions.py": { - "mtime": 1779484275.181043, + "mtime": 1780127492.770293, "hash": "086194144f5c63b2084965761936e226" }, "/Users/alex/Projects/ExLabWizard/tests/unit/constants/test_patterns.py": { @@ -224,15 +232,15 @@ "hash": "1ad9c0f22b6b87c22a1db6af089e2fe2" }, "/Users/alex/Projects/ExLabWizard/tests/unit/constants/test_enum_literal_alignment.py": { - "mtime": 1780056684.4006004, + "mtime": 1780127492.7690096, "hash": "407fa1e5adde27c9cdc4f8a6559f4154" }, "/Users/alex/Projects/ExLabWizard/tests/unit/constants/test_enums.py": { - "mtime": 1780056694.1220536, + "mtime": 1780127492.769342, "hash": "940545d14e651e599da352c588415ac5" }, "/Users/alex/Projects/ExLabWizard/tests/unit/constants/test_keyring.py": { - "mtime": 1780055779.8613105, + "mtime": 1780127492.7699444, "hash": "69f2a9adf854c6d8812f938056ffceac" }, "/Users/alex/Projects/ExLabWizard/tests/unit/constants/test_limits.py": { @@ -240,7 +248,7 @@ "hash": "2507a56ed8297c11734b95b080066253" }, "/Users/alex/Projects/ExLabWizard/tests/unit/constants/test_filenames.py": { - "mtime": 1779855843.682109, + "mtime": 1780127492.769662, "hash": "62b2088f57700ba962e760f881359b68" }, "/Users/alex/Projects/ExLabWizard/tests/unit/io/test_yaml_files.py": { @@ -284,7 +292,7 @@ "hash": "1cd78fadd17c3efd584fe9592cdc548c" }, "/Users/alex/Projects/ExLabWizard/tests/unit/tray/test_dependencies.py": { - "mtime": 1780055591.3691678, + "mtime": 1780127492.775685, "hash": "492797c07a9fa17e06ff24608fb6a0f0" }, "/Users/alex/Projects/ExLabWizard/tests/unit/tray/test_icon.py": { @@ -292,7 +300,7 @@ "hash": "fa7c022ed699127b36e34370146defc0" }, "/Users/alex/Projects/ExLabWizard/tests/unit/tray/test_live_reload.py": { - "mtime": 1780055591.3693438, + "mtime": 1780127492.7758014, "hash": "dd66078ec0f271b1ee9135f04ca66055" }, "/Users/alex/Projects/ExLabWizard/tests/unit/tray/__init__.py": { @@ -324,8 +332,8 @@ "hash": "bf11e3ef2f3c01998d5022cb95e8c1cb" }, "/Users/alex/Projects/ExLabWizard/tests/unit/tray/test_main.py": { - "mtime": 1779757041.95291, - "hash": "1a90f5d96089fec8e381faa6b7632bab" + "mtime": 1780127492.7761261, + "hash": "d5c72feddc7c51c580a55f9aba0251cb" }, "/Users/alex/Projects/ExLabWizard/tests/unit/readme/test_generator.py": { "mtime": 1778192475.5748081, @@ -335,8 +343,12 @@ "mtime": 1778192475.5747452, "hash": "7a73647defb3f8daef6bdedf1d21465e" }, + "/Users/alex/Projects/ExLabWizard/tests/unit/controller/test_metadata_assembly.py": { + "mtime": 1780127492.770636, + "hash": "8c89ef8125812035c8aac7c8a6f23aea" + }, "/Users/alex/Projects/ExLabWizard/tests/unit/controller/test_creation_apply_config.py": { - "mtime": 1780010403.039255, + "mtime": 1780127492.7704635, "hash": "72e93e8894e4f58f9b577455bc7e8594" }, "/Users/alex/Projects/ExLabWizard/tests/unit/controller/test_state_machine.py": { @@ -348,9 +360,21 @@ "hash": "a33a092ec45a0389b4b9d25e6125a6ea" }, "/Users/alex/Projects/ExLabWizard/tests/unit/controller/test_session_store.py": { - "mtime": 1780054073.0685444, + "mtime": 1780127492.770831, "hash": "b6761a00135296dbc813fc4804a3837e" }, + "/Users/alex/Projects/ExLabWizard/tests/unit/sample_data/test_generator.py": { + "mtime": 1780127492.7729716, + "hash": "57408369ebbf71cc913e3423d1abf9e3" + }, + "/Users/alex/Projects/ExLabWizard/tests/unit/sample_data/test_spec.py": { + "mtime": 1780127492.7731693, + "hash": "6e6a99015efe48f2a2db20b27ae16cfc" + }, + "/Users/alex/Projects/ExLabWizard/tests/unit/sample_data/__init__.py": { + "mtime": 1780127492.7728174, + "hash": "1458085be0265691f7436a8af8ec2e6c" + }, "/Users/alex/Projects/ExLabWizard/tests/unit/window/test_pywebview_app.py": { "mtime": 1778192475.5782878, "hash": "44a51852304729dfe6566c103d4959d9" @@ -364,7 +388,7 @@ "hash": "d67c8f78e08c64a6db3b8dd11ded28a8" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/test_setup.py": { - "mtime": 1780089349.3181524, + "mtime": 1780127492.767371, "hash": "2ed533d8b41818be59d88f8e3b582e91" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/test_errors.py": { @@ -372,15 +396,15 @@ "hash": "81052c1115947cd793f32c3d86459dac" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/test_config_router.py": { - "mtime": 1780055591.3666506, + "mtime": 1780127492.7653618, "hash": "2714aaf17ee667b18c3050f4d19d36b4" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/test_operations.py": { - "mtime": 1780089349.3174365, + "mtime": 1780127492.7660224, "hash": "c2a251dd56c12175904849b885b25e14" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/test_sessions.py": { - "mtime": 1780089349.317949, + "mtime": 1780127492.7671595, "hash": "c635fa72bb792879f6758ac40aba7d1c" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/__init__.py": { @@ -388,19 +412,19 @@ "hash": "2145e18491ee0565977bfa7b9d07170b" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/test_browse.py": { - "mtime": 1780089349.3175888, + "mtime": 1780127492.7649665, "hash": "d43c8fd151042b0764d2c929f05944f7" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/test_schemas.py": { - "mtime": 1779440066.7145877, + "mtime": 1780127492.7668667, "hash": "08f882b2af85f0155235951ab59efd0c" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/test_health.py": { - "mtime": 1780089349.317364, + "mtime": 1780127492.7656677, "hash": "0d75474b2f8a81cc766cd3dd9f22c04a" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/test_staging_router.py": { - "mtime": 1780055591.3675961, + "mtime": 1780127492.7676933, "hash": "bc296f4f6ac4568de9b147dc60221db3" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/test_events.py": { @@ -408,19 +432,27 @@ "hash": "c0b0fd1a1b82f9ace5966f1e761a19ca" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/test_problems.py": { - "mtime": 1780089349.3174274, + "mtime": 1780127492.7664242, "hash": "93910c95e91ecfcad717c8d9cdf4ec15" }, "/Users/alex/Projects/ExLabWizard/tests/unit/api/test_app.py": { "mtime": 1778231226.4448552, "hash": "2b76cc2c808dfde66db440c1555ad935" }, + "/Users/alex/Projects/ExLabWizard/tests/unit/dev/__init__.py": { + "mtime": 1780127492.771078, + "hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "/Users/alex/Projects/ExLabWizard/tests/unit/dev/test_seed.py": { + "mtime": 1780127492.7712524, + "hash": "f8d54a9f83c940f2bd3faa02d44efa91" + }, "/Users/alex/Projects/ExLabWizard/tests/unit/sync/test_nas_client_extra.py": { - "mtime": 1780055591.3687432, + "mtime": 1780127492.774299, "hash": "017627d95c9647cf597873193d69dd5c" }, "/Users/alex/Projects/ExLabWizard/tests/unit/sync/test_transports.py": { - "mtime": 1780089458.2963915, + "mtime": 1780127492.7748806, "hash": "0071afc688f51bbeb712a51c2afa6beb" }, "/Users/alex/Projects/ExLabWizard/tests/unit/sync/test_bandwidth.py": { @@ -436,15 +468,15 @@ "hash": "4133020cc8e2abfdccc2e65d7deb3ba2" }, "/Users/alex/Projects/ExLabWizard/tests/unit/sync/test_manifest.py": { - "mtime": 1780089403.2927425, + "mtime": 1780127492.7735682, "hash": "052d1424e0931e0ad3a72b73c30e45a6" }, "/Users/alex/Projects/ExLabWizard/tests/unit/sync/test_queue.py": { - "mtime": 1779440066.7161484, + "mtime": 1780127492.7746835, "hash": "74b0e368f65c7fec4dacfa26c7fc702a" }, "/Users/alex/Projects/ExLabWizard/tests/unit/sync/test_nas_client.py": { - "mtime": 1780089349.3179948, + "mtime": 1780127492.7738955, "hash": "6880c6011c719efc0312342e5c1f61f3" }, "/Users/alex/Projects/ExLabWizard/tests/unit/sync/test_pre_sync_gate.py": { @@ -452,15 +484,15 @@ "hash": "a6fcee1bc3829913a84d60b214ceafd4" }, "/Users/alex/Projects/ExLabWizard/tests/unit/sync/_helpers.py": { - "mtime": 1780089349.3173623, + "mtime": 1780127492.7734172, "hash": "d1f2cfce3dc507465c47ad2626bae3a8" }, "/Users/alex/Projects/ExLabWizard/tests/unit/sync/transports/test_run.py": { - "mtime": 1780055797.7350745, + "mtime": 1780127492.7750587, "hash": "607879a5f01b6c13134bd23a25dae948" }, "/Users/alex/Projects/ExLabWizard/tests/unit/sync/transports/__init__.py": { - "mtime": 1779855071.352482, + "mtime": 1780127492.774925, "hash": "d41d8cd98f00b204e9800998ecf8427e" }, "/Users/alex/Projects/ExLabWizard/tests/unit/logging/test_handlers.py": { @@ -488,19 +520,19 @@ "hash": "d41d8cd98f00b204e9800998ecf8427e" }, "/Users/alex/Projects/ExLabWizard/tests/unit/orchestrator/test_scan.py": { - "mtime": 1779440066.7156014, + "mtime": 1780127492.7721531, "hash": "57367db62d6d36e813d593208aca1331" }, "/Users/alex/Projects/ExLabWizard/tests/unit/orchestrator/test_staging_query.py": { - "mtime": 1779440612.1588957, + "mtime": 1780127492.7726471, "hash": "d9649cab738c9eabc9306914f6eb8fd5" }, "/Users/alex/Projects/ExLabWizard/tests/unit/orchestrator/test_quiescence_poller.py": { - "mtime": 1780056872.2030475, + "mtime": 1780127492.7718842, "hash": "d4ae98a8a4ebe3465f7ec9cd85e5d3b0" }, "/Users/alex/Projects/ExLabWizard/tests/integration/test_orchestrator_lifecycle.py": { - "mtime": 1780055591.3662944, + "mtime": 1780127492.7643068, "hash": "23c6441e6e8a0fc1251437ccad51bd3c" }, "/Users/alex/Projects/ExLabWizard/tests/integration/test_tray_window_smoke.py": { @@ -516,7 +548,7 @@ "hash": "0f4f55cb1ce70e3e71c0624153dbfa66" }, "/Users/alex/Projects/ExLabWizard/tests/integration/test_nas_sync.py": { - "mtime": 1780055591.3661125, + "mtime": 1780127492.7639818, "hash": "2cb8f03107da1fc8cf237f0502e5e7d7" }, "/Users/alex/Projects/ExLabWizard/tests/integration/test_lims_contract.py": { @@ -528,7 +560,7 @@ "hash": "5f322e3384aa5c03f10f876b970f8e7f" }, "/Users/alex/Projects/ExLabWizard/tests/integration/test_schema_major_mismatch.py": { - "mtime": 1779440066.713749, + "mtime": 1780127492.7645805, "hash": "21c848f8cf35aa68e8d7ce00c5dc912a" }, "/Users/alex/Projects/ExLabWizard/tests/integration/test_creation_json_concurrent_writes.py": { @@ -556,11 +588,11 @@ "hash": "5ef739e9d1f14f3535b763538b417f55" }, "/Users/alex/Projects/ExLabWizard/tests/integration/controller/test_creation_flow.py": { - "mtime": 1780055591.3658764, - "hash": "cdea8aea1fba5ee56694a464ae7848ab" + "mtime": 1780127492.7636416, + "hash": "eac3dac147e5dc442affebee42387f37" }, "/Users/alex/Projects/ExLabWizard/tests/integration/api/test_full_flow.py": { - "mtime": 1780057483.2668922, + "mtime": 1780127492.7633097, "hash": "004622d614515148ba4f7189dd7fe1a1" }, "/Users/alex/Projects/ExLabWizard/tests/integration/api/__init__.py": { @@ -576,7 +608,7 @@ "hash": "c5bd253e8f3c32ade2e5fd5c36c20551" }, "/Users/alex/Projects/ExLabWizard/tests/fixtures/stub_rclone.py": { - "mtime": 1780089349.3177044, + "mtime": 1780127492.7630148, "hash": "321b822f02904409c06a0d0fd8ff4037" }, "/Users/alex/Projects/ExLabWizard/tests/fixtures/lims/__init__.py": { @@ -652,15 +684,15 @@ "hash": "8a7e67e129a688cb87e54beb6bda2b5b" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_18_relay_receive.py": { - "mtime": 1779756776.7318337, - "hash": "a095da9485d1d386ee28f7ece7f41221" + "mtime": 1780127492.7587204, + "hash": "13eafd28d46b07dca72e4c8c9d71c28b" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/conftest.py": { "mtime": 1778192475.564071, "hash": "c829372e25eef37256a59f2f2c4c655c" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_00_fresh_install_setup.py": { - "mtime": 1780011020.0550826, + "mtime": 1780127492.756034, "hash": "7a5d046bf277afa22b206d7175a59ff2" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_22_onboarding_redesign.py": { @@ -668,12 +700,12 @@ "hash": "1650794b7cac77e1c2b6ad7a0b71fb17" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_24_context_menus.py": { - "mtime": 1779756804.5270338, + "mtime": 1780127492.7604518, "hash": "c2c8e5086bd253a6bfe566a0e5757aea" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_08_settings.py": { - "mtime": 1779227746.8426805, - "hash": "d3f26ada5f06ba221b734ed4cb640c1f" + "mtime": 1780127492.7575479, + "hash": "fd4985ddb9a69bc772e47094854153f2" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_11_crash_recovery.py": { "mtime": 1778192475.565255, @@ -684,36 +716,36 @@ "hash": "19775cc3226bc74e960e00f5b87b2cc4" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/_prod_server.py": { - "mtime": 1779986413.153844, + "mtime": 1780127492.7551198, "hash": "43a505812390991df92b25a4b501aaa9" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_17_picker_step.py": { - "mtime": 1779756766.9308562, + "mtime": 1780127492.7584834, "hash": "e23004f7506d280e0f9800e80e792b5c" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_20_file_explorer.py": { - "mtime": 1779756795.9519956, - "hash": "a8db4783f97e8094b40bf65b5ecf298c" + "mtime": 1780127492.7592452, + "hash": "04c74b325a42bccbd83f7622e0f50917" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_05_browse_view_sync_icons.py": { - "mtime": 1779442176.9190416, + "mtime": 1780127492.757116, "hash": "6c093486780dfe0629d95d164e58d196" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_05_browse_view.py": { - "mtime": 1779756744.839734, - "hash": "2a99ad94592dfcad5296bd4431e10c18" + "mtime": 1780127492.756897, + "hash": "28deafae8abe360179c2cff732d72d8e" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/__init__.py": { "mtime": 1778192475.5637705, "hash": "6480819940f21f3ae2328cf54c585bab" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_16_add_equipment.py": { - "mtime": 1779756757.3570318, - "hash": "edf4da81c38419db4f5a793aca3184f9" + "mtime": 1780127492.7581873, + "hash": "0eb3146fa4fbd9644425bb32ba074354" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_23_footer_staging.py": { - "mtime": 1778871321.7852678, - "hash": "bd483c4eb5d60cc1a643a0f8865b115f" + "mtime": 1780127492.7601063, + "hash": "2d5904fbbec8c46bffe632bc2d20f4b3" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_smoke.py": { "mtime": 1778192475.5655344, @@ -724,15 +756,15 @@ "hash": "d6fcd7fae19416124787bd557f01db23" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/_prod_app.py": { - "mtime": 1780010908.8504312, + "mtime": 1780127492.7548025, "hash": "ae30687a0f5a8822f669210c546984bf" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_25_production_main_wiring.py": { - "mtime": 1779756858.55785, - "hash": "ed37996d2e2438ddc227bf47c4a99d81" + "mtime": 1780127492.760771, + "hash": "15958967f87c28c0c6c43baf61449c52" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_00_full_lifecycle.py": { - "mtime": 1780058294.8777995, + "mtime": 1780127492.7563918, "hash": "d42e96a857a1a02f12f45c5048b537f2" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_13_keyboard.py": { @@ -740,23 +772,23 @@ "hash": "68630d2ccbfc8b7037a2b8fde15dee32" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/ux_catalog.py": { - "mtime": 1780058311.3744118, - "hash": "cfb91a781f6185a28ffefff890e0f8bd" + "mtime": 1780127492.7617998, + "hash": "45b8467766268d4dd48673981c9709f8" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_07_plugin_input_required.py": { "mtime": 1778231226.4438095, "hash": "4a98c5cce9d1b968845728d9d3e30549" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_26_equipment_wizard_persist.py": { - "mtime": 1780058252.5317383, - "hash": "dfcc52d378d474adbbb2d6148dd94d6f" + "mtime": 1780127492.7608967, + "hash": "03ae527198f8be67e9a74a363488cf47" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_09_orchestrator.py": { - "mtime": 1779440066.7122064, - "hash": "c1b68a350a84a98ae13751d8bc4743ff" + "mtime": 1780127492.757826, + "hash": "e225f2b23f11dcf161c1a876d2725756" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_27_nas_credential_settings.py": { - "mtime": 1780089349.3176565, + "mtime": 1780127492.7611983, "hash": "9dd0534a57d3bb552d1a67b8ee987a65" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_15_websocket_reconnect.py": { @@ -764,23 +796,27 @@ "hash": "a1297d4b32da80ea55922d26035f7bc3" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_21_stage_ceiling.py": { - "mtime": 1778871321.7851264, - "hash": "c667d19a391ac83e3e13592f491dd631" + "mtime": 1780127492.7598636, + "hash": "23a2d59dc53f4ef2137864629c065823" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/_test_app.py": { - "mtime": 1780103737.6304162, - "hash": "1912d354fe6afe013ddad3f737d55ad9" + "mtime": 1780127492.7553606, + "hash": "610a82f42c2a7c1129f05f894f4f9202" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_01_onboarding.py": { - "mtime": 1779756734.0719478, + "mtime": 1780127492.7566726, "hash": "cb7aa98e7ca787d2cb541ee5e24eb667" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_12_quit_coordinator.py": { "mtime": 1778192475.5653136, "hash": "b446a82d687ebce887db8a3be258200b" }, + "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_28_selection_search_density.py": { + "mtime": 1780127492.7614245, + "hash": "45c3a6c9921d00f99a8878c53a8fd304" + }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_19_travelling_badge.py": { - "mtime": 1779756786.8896565, + "mtime": 1780127492.7589877, "hash": "485bc403e0aca95447a408b89e86a9a3" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/test_flow_04_test_run.py": { @@ -816,7 +852,7 @@ "hash": "845cef84d0a5f2d23b5df1f11f2411d2" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/page_objects/wizard_equipment_page.py": { - "mtime": 1780058243.1227832, + "mtime": 1780127492.7556603, "hash": "424ab986931c731019088f9930051f81" }, "/Users/alex/Projects/ExLabWizard/tests/e2e/page_objects/staging_page.py": { @@ -852,7 +888,7 @@ "hash": "7b4912e2e5f6d9b05ae779cdaec666c6" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/paths.py": { - "mtime": 1780089301.373161, + "mtime": 1780127492.7423623, "hash": "41694fd1199b7969f46148c4225e94d4" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/__init__.py": { @@ -868,15 +904,15 @@ "hash": "31376a07c68496d020a4ec65c890a8a2" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/theme.py": { - "mtime": 1780103719.496492, - "hash": "0b419940974050726fc967cb3877a073" + "mtime": 1780127492.7527719, + "hash": "4008c43960f502cf74c1bd64bcee20bf" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/equipment_form.py": { - "mtime": 1780056544.0252504, + "mtime": 1780127492.7500763, "hash": "7496ee16f936c63c8d827cb6b758a9fe" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/design.py": { - "mtime": 1780096780.2650476, + "mtime": 1780127492.749751, "hash": "19a34ecba9f3e2424880028c8ae79786" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/__init__.py": { @@ -888,16 +924,16 @@ "hash": "fa8ba085628e54b8d93beb8a08c51c21" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/mount.py": { - "mtime": 1780103726.6905062, - "hash": "59b2323cb3f406bc687e6b2c1afc7c19" + "mtime": 1780127492.750392, + "hash": "d85ca1a349b6de37aa577848d9473e36" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/keyboard.py": { "mtime": 1778887316.7165968, "hash": "fbf7351a12e538ba507b9939608c2fd0" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/file_list.py": { - "mtime": 1780103238.770357, - "hash": "cddc5754a16e32ebf7d728f07cb80b7a" + "mtime": 1780127492.7468443, + "hash": "089f35bb74f49e228ce809b46983cca1" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/test_connection_panel.py": { "mtime": 1778887316.715521, @@ -908,8 +944,8 @@ "hash": "152c8bf8986bac00526b6812ecc1d3ae" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/tree.py": { - "mtime": 1779441802.3543327, - "hash": "6cdffcfec36618a4f122f7235157e954" + "mtime": 1780127492.749361, + "hash": "46b0ede6371f2e745a8bc786ebbb8a50" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/breadcrumb.py": { "mtime": 1778887316.714585, @@ -920,8 +956,8 @@ "hash": "1a8652318c6cdef6a633b66e6a279a15" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/metadata_pane.py": { - "mtime": 1780103789.373093, - "hash": "4caaf5cb75d585242bc294a4a297dc76" + "mtime": 1780127492.7475898, + "hash": "a5ed22ddf8f5d875e821666706beb4b1" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/travelling_badge.py": { "mtime": 1778887316.7156353, @@ -932,31 +968,31 @@ "hash": "a3dca258873ced990e4fbcfa793df49d" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/input_required_dialog.py": { - "mtime": 1780054073.0601943, + "mtime": 1780127492.7472425, "hash": "f7932b4cffad2ce648076047fc9eebbe" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/status_bar_segment.py": { - "mtime": 1778887316.7153776, - "hash": "665b502098247541d78470c96ea25d9c" + "mtime": 1780127492.7484574, + "hash": "ebdf27e726f9b903e9a716c94c20e911" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/sync_status_icon.py": { - "mtime": 1780098407.7319925, - "hash": "dacd5302036c89ec7677d292dd9ecdcd" + "mtime": 1780127492.749022, + "hash": "6f6bb3a5f3bb6bd4dbacdc3189ef560e" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/framed_pane.py": { - "mtime": 1780104038.4705172, - "hash": "66be5a73b97d753d4217bb61b4cc7159" + "mtime": 1780127492.747055, + "hash": "d2c67453a97631d78aa9962733509b42" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/tree_context_menu.py": { "mtime": 1778887316.7158039, "hash": "0b53e57b5cf5368220c333c14785ca5a" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/__init__.py": { - "mtime": 1780054073.0600948, + "mtime": 1780127492.746346, "hash": "7df53923728263eaa7b52d4d5460882c" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/operations_modal.py": { - "mtime": 1780054073.0603356, + "mtime": 1780127492.7479556, "hash": "505cc97f8ff9f889540d9e62e2e5088d" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/credential_field.py": { @@ -964,7 +1000,7 @@ "hash": "bb5ea99d8cd87f9db6c3162fbbedd876" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/session_progress.py": { - "mtime": 1780054073.0605893, + "mtime": 1780127492.7481494, "hash": "b35ec4323a6972fc7d27dffbb7472e83" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/validation_summary.py": { @@ -972,7 +1008,7 @@ "hash": "3bfd38a1aab846180aea65cce1d82570" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/sync_rollup.py": { - "mtime": 1780097821.5339239, + "mtime": 1780127492.7486317, "hash": "610e49becae2ccb4c049b1cf05ddf4b9" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/mode_badge.py": { @@ -983,12 +1019,16 @@ "mtime": 1778887316.7148159, "hash": "ccbc9d62e963b070e86da6d5b9225e44" }, + "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/empty_state.py": { + "mtime": 1780127492.7464836, + "hash": "9e522062f61d126a5699edfc10235849" + }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/components/banner_stack.py": { "mtime": 1778887316.7145374, "hash": "be7dc1fc2a61ad9c043807e0f75d4d4f" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/pages/wizard_run.py": { - "mtime": 1780054073.0631807, + "mtime": 1780127492.7522957, "hash": "94a1ba2fdc718b85f15cba0913461fa0" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/pages/__init__.py": { @@ -1000,31 +1040,31 @@ "hash": "17428444f6305f0ded21f43ffad6510c" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/pages/problems.py": { - "mtime": 1780054073.062179, + "mtime": 1780127492.7509363, "hash": "2ad9347f86161cc3ace90b2232559e29" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/pages/wizard_equipment.py": { - "mtime": 1780056590.2521746, - "hash": "540a7773a1e88758a4d5c5c1267a89ee" + "mtime": 1780127492.7519054, + "hash": "6ca65c5fe5f788497c73401070e01e79" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/pages/settings.py": { - "mtime": 1780054073.0625908, - "hash": "ed826e694aa5d8b0b1c5aa8dc8718595" + "mtime": 1780127492.7512918, + "hash": "e8a9fe103e7cd5f7c1bb84909936e691" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/pages/welcome.py": { "mtime": 1778887316.7175474, "hash": "93443e3baaaad7b4083192196fdc7378" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/pages/main.py": { - "mtime": 1780104972.020372, - "hash": "dea929c62e5503b9a199093e7ff96742" + "mtime": 1780127492.750621, + "hash": "be6794eecca87d282c4dbf7c22c59a8e" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/pages/staging.py": { - "mtime": 1779440066.7111874, + "mtime": 1780127492.7515812, "hash": "c2bfea5f8d1943226c4c67d8ceb5fe28" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/pages/wizard_project.py": { - "mtime": 1780054073.06304, + "mtime": 1780127492.7520502, "hash": "f73b9beb3f4e2979968d197ffa404f9a" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/ui/client/refresh_coordinator.py": { @@ -1060,7 +1100,7 @@ "hash": "c97f40a1978d3bf5d19e2aaf042a1b2f" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/lims/catalogue.py": { - "mtime": 1780054073.0565794, + "mtime": 1780127492.740775, "hash": "d0b38da7e90beb8a01d7eab36de27ab0" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/validator/findings.py": { @@ -1076,7 +1116,7 @@ "hash": "a0e24719f7552e94f1622cb08c9fd75b" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/validator/engine.py": { - "mtime": 1780009028.044374, + "mtime": 1780127492.7532067, "hash": "2fa0066d4c427ce753a51f256848d5fe" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/cache/equipment.py": { @@ -1084,11 +1124,11 @@ "hash": "2bb6f468eaf403b89916bed3e88f343a" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/cache/sync_state_schema.py": { - "mtime": 1779855272.3585145, + "mtime": 1780127492.7363758, "hash": "5798c1a0dd899ecba4a45b0550ee9d4a" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/cache/sync_state_writer.py": { - "mtime": 1779857194.194154, + "mtime": 1780127492.7365298, "hash": "6f7592a49354a0a1a09a34414007b358" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/cache/__init__.py": { @@ -1104,7 +1144,7 @@ "hash": "dfec2dabdda0ff69f6328ef460c1d931" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/config/models.py": { - "mtime": 1780056506.5896342, + "mtime": 1780127492.7372184, "hash": "4217789fc4446740b5199202c1c5da72" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/config/__init__.py": { @@ -1112,15 +1152,19 @@ "hash": "9d4df1a87a4de0801371cb8295bf37a1" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/config/loader.py": { - "mtime": 1779756530.9651835, + "mtime": 1780127492.7368817, "hash": "450450079de510c1a274d3689ae648cb" }, + "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/config/test_bootstrap.py": { + "mtime": 1780127492.7374804, + "hash": "d1797cade1bb01ebc3cff611c38719b4" + }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/plugins/registry.py": { "mtime": 1778887316.711591, "hash": "29fced03bce3dd9ac45aa207e6cc7d1b" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/plugins/host.py": { - "mtime": 1780054073.0571249, + "mtime": 1780127492.7426171, "hash": "b72dd5f6695b0cb6ed2a680c85d6eb8a" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/plugins/__init__.py": { @@ -1140,7 +1184,7 @@ "hash": "e3180c2c9c7985c96fd7dac690cda358" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/constants/enums.py": { - "mtime": 1780056518.8499293, + "mtime": 1780127492.7386696, "hash": "9cb99526a85dc9ef1f39a31b335da1b0" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/constants/patterns.py": { @@ -1152,23 +1196,23 @@ "hash": "fa79e7b95ff3d79def246b2717f155a8" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/constants/filenames.py": { - "mtime": 1779855764.851056, + "mtime": 1780127492.738964, "hash": "8bc238887a4a9b69300b1acb614f0e6b" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/constants/__init__.py": { - "mtime": 1780056532.0557973, + "mtime": 1780127492.7379632, "hash": "6bb039e240dc387e195e35ddc41ebe55" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/constants/keyring.py": { - "mtime": 1780055753.0152812, + "mtime": 1780127492.739248, "hash": "78c2cee12ea89415d8429962c29e42de" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/constants/app.py": { - "mtime": 1779756405.7655954, + "mtime": 1780127492.738331, "hash": "a6f71851fc16d5d6f1473da0ff153914" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/constants/schema_versions.py": { - "mtime": 1779484219.8213682, + "mtime": 1780127492.7395022, "hash": "e0b4552628e679f871216fcaaa19268e" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/io/json_files.py": { @@ -1236,11 +1280,11 @@ "hash": "1d67ebe63250b16a79225ba593a58776" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/tray/main.py": { - "mtime": 1780055591.3640535, - "hash": "f8291d155f98e091a30c7e60cf1ed3b3" + "mtime": 1780127492.7461336, + "hash": "679b5e342a48b87c3f694525122057eb" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/tray/dependencies.py": { - "mtime": 1780060015.5331824, + "mtime": 1780127492.7457714, "hash": "eeac3ad7049b07165e0b114bb1e2d5df" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/tray/status.py": { @@ -1260,21 +1304,37 @@ "hash": "4c7138b81baba5821d4f161c75efe99e" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/controller/creation.py": { - "mtime": 1780054073.0561836, - "hash": "2b4a756d8614d0587ddeb146cfdbd55e" + "mtime": 1780127492.740004, + "hash": "6f16e811337471ca3dbfe03028c451ce" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/controller/__init__.py": { - "mtime": 1780054073.0560045, + "mtime": 1780127492.7396195, "hash": "405e6cc064b0901197e29f80b99a7434" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/controller/state_machine.py": { "mtime": 1778887316.7091095, "hash": "0a4a2cc88367c1fd28ecbb2724124fab" }, + "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/controller/metadata_assembly.py": { + "mtime": 1780127492.7401772, + "hash": "60d804394038f9569fdddd5fe5298788" + }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/controller/session_store.py": { - "mtime": 1780054073.056357, + "mtime": 1780127492.7403305, "hash": "40cb1a6d39431075aa83ae997d8ee0b3" }, + "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/sample_data/__init__.py": { + "mtime": 1780127492.7428222, + "hash": "2c7f35120f1ff282c881bfd296881344" + }, + "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/sample_data/spec.py": { + "mtime": 1780127492.7431495, + "hash": "4477fab0f95b17c87c41e09798e56be8" + }, + "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/sample_data/generator.py": { + "mtime": 1780127492.7429783, + "hash": "3059e4a7ff1838218356e992640cf93d" + }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/window/pywebview_app.py": { "mtime": 1778887316.7195377, "hash": "dc8a76edd7fa9db575086409f1c66ffe" @@ -1288,11 +1348,11 @@ "hash": "9063ad0cc4f8c535ce7ea63789b48f88" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/health.py": { - "mtime": 1779484175.042146, + "mtime": 1780127492.73452, "hash": "18697ab159bd8fbce89712c1daddd8b5" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/_dependencies.py": { - "mtime": 1780054073.0536618, + "mtime": 1780127492.733323, "hash": "0ed6d7e9943b778d152760318339788f" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/events.py": { @@ -1304,23 +1364,23 @@ "hash": "48bed013bd51413dc7f9237be3b3e360" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/setup.py": { - "mtime": 1780055591.3631065, + "mtime": 1780127492.736241, "hash": "dd6e78c79538fd1c47d915103ac3d67e" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/schemas.py": { - "mtime": 1779484850.0430028, + "mtime": 1780127492.7359338, "hash": "e38b57b85c80d01b2d76b71dc7b25020" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/app.py": { - "mtime": 1780054073.0539734, + "mtime": 1780127492.7337248, "hash": "9cfff859e37fc3674546271360860b42" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/errors.py": { - "mtime": 1779858522.1781368, + "mtime": 1780127492.734156, "hash": "b0a68a0b15fd2274bb30dc5fbfcf58fc" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/routers/browse.py": { - "mtime": 1779442977.6942852, + "mtime": 1780127492.734869, "hash": "209dd73510b163cbc533b0f372e24895" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/routers/sessions.py": { @@ -1328,7 +1388,7 @@ "hash": "81f672a70b8d6f7dd7045feb0c09f5f4" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/routers/config.py": { - "mtime": 1780054073.054517, + "mtime": 1780127492.7352352, "hash": "696a9cd77e1cf39575e5338a529cc97f" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/routers/__init__.py": { @@ -1336,7 +1396,7 @@ "hash": "6fd1880a00170fce23b10839fbd1cf42" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/routers/operations.py": { - "mtime": 1780054073.054641, + "mtime": 1780127492.7353764, "hash": "9ec4637d63ae1e7ec6726870513b252b" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/routers/problems.py": { @@ -1344,19 +1404,27 @@ "hash": "b90d8ffd6425ecee253a30306deab6fe" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/api/routers/staging.py": { - "mtime": 1779442904.0151088, + "mtime": 1780127492.735629, "hash": "0a39d67b0cf64596742ac66f68a4b941" }, + "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/dev/__init__.py": { + "mtime": 1780127492.7404745, + "hash": "6531fb973320a1ab9aec73f81321bcdb" + }, + "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/dev/seed.py": { + "mtime": 1780127492.7405903, + "hash": "c76def5c7bf679f25f8dbb87ccd81976" + }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/sync/queue.py": { - "mtime": 1779440066.7093844, + "mtime": 1780127492.7440805, "hash": "85264151b44bd5a782eea72963d28370" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/sync/manifest.py": { - "mtime": 1780054073.0579178, + "mtime": 1780127492.743361, "hash": "3f1ec584a9eafaa7023db1880b70c400" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/sync/nas_client.py": { - "mtime": 1780060071.3812962, + "mtime": 1780127492.7437706, "hash": "8386077ad5c29e7b2a631c9bb45513cd" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/sync/__init__.py": { @@ -1376,11 +1444,11 @@ "hash": "955594315b5c9e19cd8af9ea405fa782" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/sync/verifier.py": { - "mtime": 1780054073.0594795, + "mtime": 1780127492.745401, "hash": "d3efd1bfc30a75f97bb7df81d53258e2" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/sync/run_delete.py": { - "mtime": 1779441094.115504, + "mtime": 1780127492.744273, "hash": "236e0a2cc47194ed090decb713c6f2bf" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/sync/transports/__init__.py": { @@ -1388,11 +1456,11 @@ "hash": "969f593c82e2f8d810fc14d18c7f8ce4" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/sync/transports/rclone.py": { - "mtime": 1780059989.2729561, + "mtime": 1780127492.7448435, "hash": "8f275712cf0b3e7f133a0bd808742c32" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/sync/transports/_run.py": { - "mtime": 1780055651.8629074, + "mtime": 1780127492.7445235, "hash": "82cda4b53794a4a610ea1d1fae3c0f73" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/logging/handlers.py": { @@ -1416,47 +1484,47 @@ "hash": "8f4df4fa7eaba0f8f4bf4638195efcd8" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/orchestrator/quiescence_poller.py": { - "mtime": 1780009097.5564256, + "mtime": 1780127492.741557, "hash": "33cb3372ec583b7e1516a689e25353a6" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/orchestrator/_scan.py": { - "mtime": 1779440066.7088668, + "mtime": 1780127492.7414172, "hash": "edcf28b19e340b56c557675510e005a4" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/orchestrator/__init__.py": { - "mtime": 1779440066.7087142, + "mtime": 1780127492.7410383, "hash": "b8d5aef1bbfbba441a5e2017f9d8387d" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/orchestrator/staging_clear.py": { - "mtime": 1779484898.324295, + "mtime": 1780127492.7417138, "hash": "ba94a24ffd24b749767c45e5bab04ea6" }, "/Users/alex/Projects/ExLabWizard/src/exlab_wizard/orchestrator/staging_query.py": { - "mtime": 1779484883.3951538, + "mtime": 1780127492.7419918, "hash": "0005ca3ecf74d0bde4e7cc32c1e36a27" }, - "/Users/alex/Projects/ExLabWizard/RESUME.md": { - "mtime": 1780104603.0197268, - "hash": "eef7a43d505f447d6e31036dafc8c343" - }, "/Users/alex/Projects/ExLabWizard/README.md": { - "mtime": 1780059235.8983097, + "mtime": 1780127492.6327887, "hash": "11804cd2e3ebab98d154473118dd1c5b" }, "/Users/alex/Projects/ExLabWizard/DESIGN.md": { - "mtime": 1780097265.7269132, - "hash": "75bd7614dff9734c6dafb4d935b122b2" + "mtime": 1780127492.6323993, + "hash": "c3a05673915471f27cafbf5de668a50f" + }, + "/Users/alex/Projects/ExLabWizard/CLAUDE.md": { + "mtime": 1780127492.6319506, + "hash": "0866fbee43eb2619ecc6dc05960e23b7" }, "/Users/alex/Projects/ExLabWizard/_internal/README.md": { "mtime": 1778192475.5510361, "hash": "e403bbc18b842a6ec94007208db50db3" }, "/Users/alex/Projects/ExLabWizard/tests/docker/README.md": { - "mtime": 1780059287.8496666, + "mtime": 1780127492.7538886, "hash": "9c6f96d2eff5408f74db57ab5ead49d9" }, "/Users/alex/Projects/ExLabWizard/tests/docker/docker-compose.yml": { - "mtime": 1780059329.792995, + "mtime": 1780127492.7539966, "hash": "3da2ffaec0a510317910d004f027ae0b" }, "/Users/alex/Projects/ExLabWizard/tests/docker/nas-data/Run_2026-05-28T10-00/notes.txt": { @@ -1492,7 +1560,7 @@ "hash": "0e45fac0a3f0c1878d8d9aa44f62922a" }, "/Users/alex/Projects/ExLabWizard/tests/fixtures/configs/incomplete_no_lims.yaml": { - "mtime": 1780055591.3650835, + "mtime": 1780127492.762414, "hash": "c3da19993a7c74ed53e9c320fba84f6c" }, "/Users/alex/Projects/ExLabWizard/tests/fixtures/configs/incomplete_no_equipment.yaml": { @@ -1500,7 +1568,7 @@ "hash": "776bf7dbec2586b7874dece188b85ef7" }, "/Users/alex/Projects/ExLabWizard/tests/fixtures/configs/incomplete_no_paths.yaml": { - "mtime": 1780055591.365368, + "mtime": 1780127492.7627475, "hash": "135f14f38d84daeef4bb7dcbb859e86f" }, "/Users/alex/Projects/ExLabWizard/tests/fixtures/configs/README.md": { @@ -1508,7 +1576,7 @@ "hash": "ce11b965fa9d372fcfe59145bf54261b" }, "/Users/alex/Projects/ExLabWizard/tests/fixtures/configs/complete.yaml": { - "mtime": 1780055591.3648598, + "mtime": 1780127492.7620916, "hash": "3aaf7d7016b241d4a31c97f15e366b43" }, "/Users/alex/Projects/ExLabWizard/tests/fixtures/templates/run_basic_both/copier.yml": { @@ -1544,16 +1612,16 @@ "hash": "7854ac689141fb183330629890161f5f" }, "/Users/alex/Projects/ExLabWizard/docs/REMAINING_WORK_TASKS.md": { - "mtime": 1780054072.9264362, + "mtime": 1780127492.6361957, "hash": "9600e3c6f5cf47b1581d4b852a54c8cd" }, "/Users/alex/Projects/ExLabWizard/docs/REMAINING_WORK.md": { - "mtime": 1780019735.8312056, + "mtime": 1780127492.6360016, "hash": "a2e81051f3d87aeecdc3d3ecbd091587" }, "/Users/alex/Projects/ExLabWizard/docs/UX_INTERACTIONS.md": { - "mtime": 1780058315.8738008, - "hash": "9d541678d89390618ce32bb552342977" + "mtime": 1780127492.6365495, + "hash": "91e2f91c00613e3cb4aa107250bcec05" }, "/Users/alex/Projects/ExLabWizard/docs/source/index.md": { "mtime": 1778887316.704442, @@ -1576,7 +1644,7 @@ "hash": "7cf53076bf9f6eee3365cfcf6287db25" }, "/Users/alex/Projects/ExLabWizard/docs/source/user_guide/01_settings.md": { - "mtime": 1779440066.7064464, + "mtime": 1780127492.6375227, "hash": "09300bc443c9cc5e658b9b113b604673" }, "/Users/alex/Projects/ExLabWizard/docs/source/user_guide/06_readme.md": { @@ -2100,59 +2168,67 @@ "hash": "a95d15b3fd67f4f74dd818b2771aa057" }, "/Users/alex/Projects/ExLabWizard/docs/setup/rclone-remote-setup.md": { - "mtime": 1780059005.7139099, + "mtime": 1780127492.6371698, "hash": "78c5b53e591b0469ff733a4894b8c951" }, "/Users/alex/Projects/ExLabWizard/docs/superpowers/plans/2026-05-28-rclone-conf-nas-sync.md": { - "mtime": 1780054072.9283602, + "mtime": 1780127492.6380005, "hash": "c8350a97b9387cd7eb92831f7fe5473c" }, "/Users/alex/Projects/ExLabWizard/docs/superpowers/specs/2026-05-21-operator-free-per-file-nas-sync-design.md": { - "mtime": 1779430584.872797, + "mtime": 1780127492.6382616, "hash": "5367be02ac45a50b14099b0c7fc2d0ee" }, + "/Users/alex/Projects/ExLabWizard/docs/superpowers/specs/2026-05-29-hide-orchestrator-staging-design.md": { + "mtime": 1780127492.6392357, + "hash": "522f3ac8d4851d99d3e36c1dac9d6262" + }, "/Users/alex/Projects/ExLabWizard/docs/superpowers/specs/2026-05-28-rclone-conf-nas-sync-design.md": { - "mtime": 1780054072.9288309, + "mtime": 1780127492.6386688, "hash": "95d28226b9cb36646e93fef5fa02f553" }, + "/Users/alex/Projects/ExLabWizard/docs/superpowers/specs/2026-05-29-main-window-ui-refresh-remaining-work.md": { + "mtime": 1780127492.6407588, + "hash": "7cacfb2511fecbfecee7b93448d0a123" + }, "/Users/alex/Projects/ExLabWizard/docs/superpowers/specs/2026-05-26-rclone-only-nas-sync-design.md": { - "mtime": 1779845832.8495932, + "mtime": 1780127492.638464, "hash": "43b73291db0d69e51495778fdd2f6ff5" }, "/Users/alex/Projects/ExLabWizard/docs/superpowers/specs/2026-05-28-staging-root-opt-in-design.md": { - "mtime": 1780017359.8830984, + "mtime": 1780127492.638931, "hash": "d56fc10fda54a79576688cc8bd9937c0" }, "/Users/alex/Projects/ExLabWizard/docs/superpowers/specs/2026-05-29-main-window-ui-refresh-design.md": { - "mtime": 1780095878.3579915, - "hash": "d282a915c25a086d24ecd7bc22a322a4" + "mtime": 1780127492.6394908, + "hash": "48b475c09c1d487e02681d50c466631d" }, "/Users/alex/Projects/ExLabWizard/docs/superpowers/specs/2026-05-29-sample-data-generation-design.md": { - "mtime": 1780104679.628073, + "mtime": 1780127492.640989, "hash": "70258894ffc1bb38439453188286fc5f" }, "/Users/alex/Projects/ExLabWizard/docs/superpowers/specs/2026-05-29-main-window-ui-refresh-mockups/01-panel-framing.html": { - "mtime": 1780093862.3769424, + "mtime": 1780127492.639764, "hash": "49a4e07b135b59eb3791b8c45f0a3e4e" }, "/Users/alex/Projects/ExLabWizard/docs/superpowers/specs/2026-05-29-main-window-ui-refresh-mockups/README.md": { - "mtime": 1780093886.4036276, + "mtime": 1780127492.6404974, "hash": "fb70c159acf041214b5f2324791cec27" }, "/Users/alex/Projects/ExLabWizard/docs/superpowers/specs/2026-05-29-main-window-ui-refresh-mockups/03-zebra-and-row-states.html": { - "mtime": 1780093862.378179, + "mtime": 1780127492.6401887, "hash": "3f4e544a58b2e5eb6dd3f99eee626dbd" }, "/Users/alex/Projects/ExLabWizard/docs/superpowers/specs/2026-05-29-main-window-ui-refresh-mockups/02-metadata-pane.html": { - "mtime": 1780093862.3775811, + "mtime": 1780127492.6399722, "hash": "6d24972e489685bf1f430b821c62dc6d" }, "/Users/alex/Projects/ExLabWizard/design_specs/ExLab-Wizard_Frontend_Spec.md": { - "mtime": 1780059358.741903, + "mtime": 1780127492.6342502, "hash": "285c35784047449a4e8ac6ee51dae79d" }, "/Users/alex/Projects/ExLabWizard/design_specs/ExLab-Wizard_Design_Spec.md": { - "mtime": 1780059223.0669901, + "mtime": 1780127492.6331832, "hash": "9cf49a512378d8998d1354e687b0084a" }, "/Users/alex/Projects/ExLabWizard/design_specs/IMPLEMENTATION_PLAN.md": { @@ -2160,7 +2236,7 @@ "hash": "32b2530bc80f6db00868d08018c95733" }, "/Users/alex/Projects/ExLabWizard/design_specs/design_spec_sections/07_Sync_and_Database_Integration.md": { - "mtime": 1780059710.6192603, + "mtime": 1780127492.6353943, "hash": "5f2392237225b7aeb466138ad7f28621" }, "/Users/alex/Projects/ExLabWizard/design_specs/design_spec_sections/03_Directory_Structure_Convention.md": { @@ -2180,7 +2256,7 @@ "hash": "eb168a0f19078a0db433186fd943b876" }, "/Users/alex/Projects/ExLabWizard/design_specs/design_spec_sections/04_Backend_Architecture.md": { - "mtime": 1780059735.2139034, + "mtime": 1780127492.6348472, "hash": "173ccf8c606b35b0fe3d2fbd3dea6d94" }, "/Users/alex/Projects/ExLabWizard/design_specs/design_spec_sections/11_Cache_Folders.md": { @@ -2212,65 +2288,13 @@ "hash": "000f4d2b3ef0ea572a57e7e8b59d6507" }, "/Users/alex/Projects/ExLabWizard/design_specs/design_spec_sections/09_Configuration_File.md": { - "mtime": 1780059065.9947093, + "mtime": 1780127492.6357927, "hash": "bb6bd4fb6c3e4ac7ef70579b93e4a43d" }, "/Users/alex/Projects/ExLabWizard/graphify-out/memory/query_20260529_232003_how_are_the_example_equipment__projects__run_folde.md": { "mtime": 1780096803.6951628, "hash": "ec3f6d9ef1d6e34e709a1264cd6a3e6d" }, - "/Users/alex/Projects/ExLabWizard/phase4-toggle-element-iter2.png": { - "mtime": 1780103437.422997, - "hash": "0de7de983e932887e2ac47e53fefbedd" - }, - "/Users/alex/Projects/ExLabWizard/nas-verify-connected.png": { - "mtime": 1780054073.0531566, - "hash": "d4b60a8c2b74a5d54f88076563e47f26" - }, - "/Users/alex/Projects/ExLabWizard/phase4-iter5-popover-open.png": { - "mtime": 1780104362.4543195, - "hash": "b00bdf96e4d57116df16f503260b9140" - }, - "/Users/alex/Projects/ExLabWizard/phase4-iter2-toggle.png": { - "mtime": 1780103426.8827293, - "hash": "47af9a16b2fc902ff0c30c59fec7f30a" - }, - "/Users/alex/Projects/ExLabWizard/phase4-after-file-selected.png": { - "mtime": 1780102892.6410756, - "hash": "1be2e86ab0dd67895fd4870431bc3775" - }, - "/Users/alex/Projects/ExLabWizard/phase4-iter4-header-left.png": { - "mtime": 1780104093.274454, - "hash": "95d40b075ca71a7d5f9da06c800c613a" - }, - "/Users/alex/Projects/ExLabWizard/phase4-toggle-element.png": { - "mtime": 1780103327.1303482, - "hash": "3b331550f3ab4defc2dea7fac5f69f30" - }, - "/Users/alex/Projects/ExLabWizard/phase4-iter5-popover-closed.png": { - "mtime": 1780104381.3889573, - "hash": "678fd9f64ac2fcfdf549c55c28cc12a8" - }, - "/Users/alex/Projects/ExLabWizard/phase4-before-no-file-selected.png": { - "mtime": 1780102878.5206833, - "hash": "b74c23e9ed3602c70dc9fe1e170d4688" - }, - "/Users/alex/Projects/ExLabWizard/phase4-iter3-theme-toggle-overflow.png": { - "mtime": 1780103826.583603, - "hash": "0baab2fd481ac1e86b1fdf3a50a1fa27" - }, - "/Users/alex/Projects/ExLabWizard/nas-verify-01-main.png": { - "mtime": 1780054073.0511315, - "hash": "a075f0118806caabb5cea4e8cb5be6fe" - }, - "/Users/alex/Projects/ExLabWizard/phase4-iter1-toggle-and-highlight.png": { - "mtime": 1780103289.0490608, - "hash": "1bc85b4ee40d7e021646f37127131b3d" - }, - "/Users/alex/Projects/ExLabWizard/phase4-tombstone-file-selected.png": { - "mtime": 1780102913.7540896, - "hash": "270ddeb93b8bd5c4f72e0a1d2cd8d3f4" - }, "/Users/alex/Projects/ExLabWizard/docs/source/_static/screenshots/08_problems/01_initial.png": { "mtime": 1779316926.8585918, "hash": "cca8c2da2f99b78ba6f0545c88362d0e" From cb2a460a70b00664c9e6e398e5ac5d1e52355e74 Mon Sep 17 00:00:00 2001 From: Alexander Nguyen Date: Sat, 30 May 2026 13:30:20 -0700 Subject: [PATCH 2/2] test(sync,e2e): replace busy-poll loops with wall-clock waits Fix the timing-sensitive flakes that fail under CI/CPU load (red on main): the sync tests drove a background worker then busy-polled a FIXED iteration count (range(200)/range(400)/range(600) at 10ms = ~2-6s budgets). A loaded worker thread starves and the budget elapses before the state settles, so the loop pytest.fail()s despite correct behavior. Replace 23 such loops across tests/unit/sync/{test_nas_client, test_nas_client_extra}.py and tests/integration/test_nas_sync.py with two shared helpers in tests/unit/sync/_helpers.py: - wait_until(predicate, timeout=30): generic wall-clock-bounded await. - wait_for_job_state(client, job_id, target, timeout=30): the common queue-state shape; returns the row, names the last state on timeout. The budget is now a generous TIME ceiling (irrelevant when fast, robust when slow) rather than a magic iteration count. Also deletes the duplicate local _wait_for_state helper in test_nas_client.py. e2e: tests/e2e/test_flow_06_problems.py read row text immediately after wait_for(visible), catching the intermediate 'Active' before the override badge re-rendered to 'Override active'. Use Playwright's auto-retrying expect(...).to_contain_text(...) instead. No production code changed. Verified: sync unit 116 passed x3, integration 11 passed x2, ruff + format clean. Co-Authored-By: Claude Opus 4.8 (1M context) --- tests/e2e/test_flow_06_problems.py | 9 +- tests/integration/test_nas_sync.py | 76 +++++------ tests/unit/sync/_helpers.py | 66 +++++++++ tests/unit/sync/test_nas_client.py | 90 +++++-------- tests/unit/sync/test_nas_client_extra.py | 164 ++++++----------------- 5 files changed, 179 insertions(+), 226 deletions(-) diff --git a/tests/e2e/test_flow_06_problems.py b/tests/e2e/test_flow_06_problems.py index 7b5430e..60d1b0d 100644 --- a/tests/e2e/test_flow_06_problems.py +++ b/tests/e2e/test_flow_06_problems.py @@ -13,6 +13,8 @@ from __future__ import annotations +from playwright.sync_api import expect + from tests.e2e.page_objects.problems_page import ProblemsPage @@ -25,17 +27,16 @@ def test_flow_06_problems(page, server_url) -> None: problems.row(0).wait_for(state="visible", timeout=5_000) # Initial state is Active and the override CTA is rendered. - assert "Active" in problems.row_state(0).inner_text() + expect(problems.row_state(0)).to_contain_text("Active", timeout=5_000) problems.row_override(0).click() page.wait_for_load_state("networkidle") # State flips to Override active (the row state label is the source # of truth -- it includes the words "Override active"). - problems.row_state(0).wait_for(state="visible", timeout=5_000) - assert "Override active" in problems.row_state(0).inner_text() + expect(problems.row_state(0)).to_contain_text("Override active", timeout=5_000) # Revoke flips the state back to Active. problems.row_revoke(0).wait_for(state="visible", timeout=5_000) problems.row_revoke(0).click() page.wait_for_load_state("networkidle") problems.row(0).wait_for(state="visible", timeout=5_000) - assert "Active" in problems.row_state(0).inner_text() + expect(problems.row_state(0)).to_contain_text("Active", timeout=5_000) diff --git a/tests/integration/test_nas_sync.py b/tests/integration/test_nas_sync.py index 0af0c62..262383a 100644 --- a/tests/integration/test_nas_sync.py +++ b/tests/integration/test_nas_sync.py @@ -14,11 +14,9 @@ from __future__ import annotations -import asyncio import os import shutil import stat -from collections.abc import Callable from pathlib import Path import pytest @@ -47,6 +45,7 @@ from exlab_wizard.sync.nas_client import NASSyncClient from exlab_wizard.sync.queue import SyncJobRow, SyncJobState from exlab_wizard.validator.engine import Validator +from tests.unit.sync._helpers import wait_for_job_state, wait_until class _StubKeyring: @@ -137,26 +136,6 @@ async def _populate_run(local_root: Path) -> Path: return run_dir -async def _wait_for_state( - queue_get: Callable[[str], asyncio.Future[SyncJobRow | None]], - job_id: str, - targets: set[SyncJobState], - *, - timeout_s: float = 8.0, - poll_s: float = 0.05, -) -> SyncJobRow: - """Poll ``queue.get_by_id`` until ``state`` is in ``targets`` or timeout.""" - elapsed = 0.0 - while elapsed < timeout_s: - row = await queue_get(job_id) - if row is not None and row.state in targets: - return row - await asyncio.sleep(poll_s) - elapsed += poll_s - msg = f"job {job_id} never reached {targets!r}" - raise AssertionError(msg) - - async def test_full_happy_path_via_stub_rclone( stub_binaries_on_path: Path, tmp_path: Path, @@ -208,8 +187,8 @@ async def test_full_happy_path_via_stub_rclone( # The worker should drive through to VERIFIED + CLEANED (since # the test config sets min_verify_passes=1 and min_age_hours=0). - row = await _wait_for_state( - client._queue.get_by_id, + row = await wait_for_job_state( + client, handle.job_id, {SyncJobState.CLEANED, SyncJobState.CLEANUP_ELIGIBLE, SyncJobState.VERIFIED}, ) @@ -295,7 +274,7 @@ async def test_auth_error_terminates_failed( await client.init() try: handle = await client.enqueue(run_dir) - row = await _wait_for_state(client._queue.get_by_id, handle.job_id, {SyncJobState.FAILED}) + row = await wait_for_job_state(client, handle.job_id, {SyncJobState.FAILED}) assert row.state is SyncJobState.FAILED finally: await client.close() @@ -406,8 +385,8 @@ async def _lsjson(run: Path) -> RemoteManifest: try: handle = await client.enqueue(run_dir) assert handle.state == HandleState.QUEUED - row = await _wait_for_state( - client._queue.get_by_id, + row = await wait_for_job_state( + client, handle.job_id, {SyncJobState.VERIFIED, SyncJobState.CLEANUP_ELIGIBLE, SyncJobState.CLEANED}, ) @@ -474,8 +453,8 @@ async def _check(local: Path, *, files_from: Path) -> CheckResult: await client.init() try: handle = await client.enqueue(run_dir) - row = await _wait_for_state( - client._queue.get_by_id, + row = await wait_for_job_state( + client, handle.job_id, {SyncJobState.CLEANUP_ELIGIBLE}, ) @@ -536,19 +515,26 @@ async def test_poller_per_file_enqueue_drives_to_synced_state( assert enqueued == [run_dir] # The worker drives the per-file job through to VERIFIED. - async def _by_run_path(_ignored: str) -> SyncJobRow | None: - return await client._queue.get_by_run_path(run_dir) - - row = await _wait_for_state( - _by_run_path, - "", - {SyncJobState.VERIFIED, SyncJobState.CLEANUP_ELIGIBLE, SyncJobState.CLEANED}, - ) - assert row.state in { + targets = { SyncJobState.VERIFIED, SyncJobState.CLEANUP_ELIGIBLE, SyncJobState.CLEANED, } + captured: dict[str, SyncJobRow] = {} + + async def _reached_target() -> bool: + row = await client._queue.get_by_run_path(run_dir) + if row is not None and row.state in targets: + captured["row"] = row + return True + return False + + await wait_until( + _reached_target, + message=f"run {run_dir} never reached {targets!r}", + ) + row = captured["row"] + assert row.state in targets assert row.files == ("data.bin",) # sync_state.json records the verified file. @@ -623,14 +609,14 @@ async def test_poller_to_cleanup_honors_keep_local_and_stamps_cleared( enqueued = await poller.poll_once(now_monotonic=cfg.sync.quiescence_minutes * 60 + 1.0) assert enqueued == [run_dir] - async def _by_run_path(_ignored: str) -> SyncJobRow | None: - return await client._queue.get_by_run_path(run_dir) - # The worker drives the job through verify into the cleanup states. - await _wait_for_state( - _by_run_path, - "", - {SyncJobState.CLEANED}, + async def _reached_cleaned() -> bool: + row = await client._queue.get_by_run_path(run_dir) + return row is not None and row.state is SyncJobState.CLEANED + + await wait_until( + _reached_cleaned, + message=f"run {run_dir} never reached CLEANED", ) # The keep_local file survives; the other data file is removed. diff --git a/tests/unit/sync/_helpers.py b/tests/unit/sync/_helpers.py index e21550d..186839c 100644 --- a/tests/unit/sync/_helpers.py +++ b/tests/unit/sync/_helpers.py @@ -25,9 +25,12 @@ from __future__ import annotations +import asyncio +import time from collections.abc import Awaitable, Callable from datetime import UTC, datetime from pathlib import Path +from typing import Any from exlab_wizard.config.models import EquipmentConfig from exlab_wizard.constants import CACHE_DIR_NAME @@ -39,9 +42,72 @@ "local_check_factory", "local_lsjson_factory", "missing_one_lsjson_factory", + "wait_for_job_state", + "wait_until", ] +# A generous wall-clock ceiling: irrelevant when the worker is responsive, +# but large enough that a loaded CI runner never trips it spuriously. +_DEFAULT_WAIT_TIMEOUT_S = 30.0 +_DEFAULT_POLL_INTERVAL_S = 0.02 + + +async def wait_until( + predicate: Callable[[], Awaitable[bool]], + *, + timeout: float = _DEFAULT_WAIT_TIMEOUT_S, # noqa: ASYNC109 - wall-clock budget, not an asyncio.timeout cancel scope + interval: float = _DEFAULT_POLL_INTERVAL_S, + message: str = "condition not met within timeout", +) -> None: + """Await until ``predicate()`` returns True, bounded by wall-clock ``timeout``. + + Replaces fixed-iteration busy-poll loops in the sync tests: the budget is + a real time ceiling (default 30s) rather than a magic iteration count, so a + slow/loaded worker thread cannot trip a false failure while a responsive one + still returns in milliseconds. Raises ``AssertionError(message)`` on timeout. + """ + deadline = time.monotonic() + timeout + while True: + if await predicate(): + return + if time.monotonic() >= deadline: + raise AssertionError(message) + await asyncio.sleep(interval) + + +async def wait_for_job_state( + client: Any, + job_id: str, + target: set[Any], + *, + timeout: float = _DEFAULT_WAIT_TIMEOUT_S, # noqa: ASYNC109 - wall-clock budget, not an asyncio.timeout cancel scope + interval: float = _DEFAULT_POLL_INTERVAL_S, +) -> Any: + """Return the queue row once ``row.state`` is in ``target`` (wall-clock bounded). + + Thin loop over the most common sync-test shape: polling + ``client._queue.get_by_id(job_id)`` until the job reaches one of the + ``target`` states. Returns the matching row; raises ``AssertionError`` + (naming the last observed state) on timeout. Like :func:`wait_until`, the + budget is a real wall-clock ceiling rather than a fixed iteration count, so + a slow/loaded worker thread cannot trip a false failure. + """ + deadline = time.monotonic() + timeout + last_state = None + while True: + row = await client._queue.get_by_id(job_id) + if row is not None: + last_state = row.state + if row.state in target: + return row + if time.monotonic() >= deadline: + raise AssertionError( + f"job {job_id} never reached {target}; last observed state={last_state}" + ) + await asyncio.sleep(interval) + + def _read_files_from(files_from: Path | None) -> tuple[str, ...]: """Read run-relative paths from a ``--files-from`` tempfile.""" if files_from is None: diff --git a/tests/unit/sync/test_nas_client.py b/tests/unit/sync/test_nas_client.py index 0e71acc..ab4deb1 100644 --- a/tests/unit/sync/test_nas_client.py +++ b/tests/unit/sync/test_nas_client.py @@ -52,6 +52,8 @@ from tests.unit.sync._helpers import ( local_lsjson_factory, missing_one_lsjson_factory, + wait_for_job_state, + wait_until, ) # --------------------------------------------------------------------------- @@ -289,13 +291,7 @@ async def test_retry_resets_failed_to_queued(tmp_path: Path, writer: CreationWri try: handle = await client.enqueue(run_dir) # Wait until the worker has marked the job as FAILED. - for _ in range(200): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.FAILED: - break - await asyncio.sleep(0.02) - else: - pytest.fail("worker did not transition to FAILED in time") + await wait_for_job_state(client, handle.job_id, {SyncJobState.FAILED}) await client.retry(handle.job_id) row = await client._queue.get_by_id(handle.job_id) @@ -356,17 +352,15 @@ async def test_worker_drives_to_verified_and_marks_synced( await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(300): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state in { + await wait_for_job_state( + client, + handle.job_id, + { SyncJobState.VERIFIED, SyncJobState.CLEANUP_ELIGIBLE, SyncJobState.CLEANED, - }: - break - await asyncio.sleep(0.02) - else: - pytest.fail("worker did not reach VERIFIED in time") + }, + ) creation_path = run_dir / CACHE_DIR_NAME / CREATION_JSON_NAME decoded = msgspec_json.decode(creation_path.read_bytes(), type=CreationJson) assert decoded.sync_status == "synced" @@ -412,17 +406,15 @@ async def _check_should_not_run(local: Path, *, files_from: Path): await client.init() try: handle = await client.enqueue(run_dir, ["data.bin"]) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state in { + await wait_for_job_state( + client, + handle.job_id, + { SyncJobState.VERIFIED, SyncJobState.CLEANUP_ELIGIBLE, SyncJobState.CLEANED, - }: - break - await asyncio.sleep(0.01) - else: - pytest.fail("worker did not reconcile to VERIFIED via lsjson") + }, + ) # The data file is credited in sync_state.json from the lsjson match. state = await sync_state.read(run_dir) @@ -466,14 +458,16 @@ async def test_routine_reconcile_requeues_when_remote_file_missing( await client.init() try: handle = await client.enqueue(run_dir, ["data.bin", "other.bin"]) + # The credited file lands in sync_state; the job never reaches VERIFIED. - for _ in range(200): + async def _data_credited() -> bool: state = await sync_state.read(run_dir) - if "data.bin" in state.files and state.files["data.bin"].verified_at: - break - await asyncio.sleep(0.01) - else: - pytest.fail("data.bin was never credited from the partial listing") + return "data.bin" in state.files and bool(state.files["data.bin"].verified_at) + + await wait_until( + _data_credited, + message="data.bin was never credited from the partial listing", + ) # The job keeps cycling QUEUED -> RUNNING -> AWAITING_VERIFY -> # QUEUED because "other.bin" never reconciles; it must never reach a @@ -508,13 +502,7 @@ async def test_worker_terminal_failed_on_auth_error(tmp_path: Path, writer: Crea await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(200): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.FAILED: - break - await asyncio.sleep(0.02) - else: - pytest.fail("worker did not reach FAILED on auth error") + await wait_for_job_state(client, handle.job_id, {SyncJobState.FAILED}) finally: await client.close() @@ -537,13 +525,7 @@ async def test_enqueue_existing_failed_resets_to_queued( await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(200): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.FAILED: - break - await asyncio.sleep(0.02) - else: - pytest.fail("worker did not reach FAILED") + await wait_for_job_state(client, handle.job_id, {SyncJobState.FAILED}) # Now the same enqueue call should reset to QUEUED. handle2 = await client.enqueue(run_dir) assert handle2.state == HandleState.QUEUED @@ -699,13 +681,7 @@ async def test_enqueue_requeues_terminal_job_with_new_files( await client.init() try: handle = await client.enqueue(run_dir, ["data.bin"]) - for _ in range(200): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.FAILED: - break - await asyncio.sleep(0.02) - else: - pytest.fail("worker did not reach FAILED") + await wait_for_job_state(client, handle.job_id, {SyncJobState.FAILED}) # Re-enqueue with a new subset -> re-armed QUEUED carrying the new files. handle2 = await client.enqueue(run_dir, ["other.bin"]) assert handle2.state == HandleState.QUEUED @@ -985,14 +961,16 @@ async def test_drive_job_bandwidth_comes_from_nas_block( await client.init() try: await client.enqueue(run_dir) + # Wait for the worker to complete at least the push step (recorded # bwlimit is set before the push call in _drive_job). - for _ in range(200): - if recorded: - break - await asyncio.sleep(0.02) - else: - pytest.fail("worker did not invoke the push callable in time") + async def _push_recorded() -> bool: + return bool(recorded) + + await wait_until( + _push_recorded, + message="worker did not invoke the push callable in time", + ) finally: await client.close() diff --git a/tests/unit/sync/test_nas_client_extra.py b/tests/unit/sync/test_nas_client_extra.py index 6a7cf74..5399a9f 100644 --- a/tests/unit/sync/test_nas_client_extra.py +++ b/tests/unit/sync/test_nas_client_extra.py @@ -14,8 +14,6 @@ from pathlib import Path from typing import Any -import pytest - from exlab_wizard.api.schemas import ( CreationJson, LimsProjectBlock, @@ -44,6 +42,8 @@ local_check_factory, local_lsjson_factory, missing_one_lsjson_factory, + wait_for_job_state, + wait_until, ) @@ -150,17 +150,15 @@ async def _push( try: handle = await client.enqueue(run_dir) # Wait for the second pass to land on a non-error state. - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state in { + await wait_for_job_state( + client, + handle.job_id, + { SyncJobState.VERIFIED, SyncJobState.CLEANUP_ELIGIBLE, SyncJobState.CLEANED, - }: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected eventual VERIFIED after retry") + }, + ) # Two transport calls: one mismatch, one success. assert call_count["n"] >= 2 finally: @@ -189,13 +187,7 @@ async def _push( await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.FAILED: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected terminal FAILED on second hash mismatch") + await wait_for_job_state(client, handle.job_id, {SyncJobState.FAILED}) finally: await client.close() @@ -229,13 +221,7 @@ async def _push( await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.CLEANED: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected CLEANED state") + await wait_for_job_state(client, handle.job_id, {SyncJobState.CLEANED}) # Full directory removal: the run directory itself is gone. assert not run_dir.exists() finally: @@ -266,13 +252,7 @@ async def _push( await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.CLEANED: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected CLEANED state") + await wait_for_job_state(client, handle.job_id, {SyncJobState.CLEANED}) # Data files removed; cache subtree retained. assert (run_dir / CACHE_DIR_NAME).exists() assert not (run_dir / "data.bin").exists() @@ -306,13 +286,7 @@ async def _push( try: handle = await client.enqueue(run_dir) # Wait for VERIFIED. - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.VERIFIED: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected VERIFIED") + await wait_for_job_state(client, handle.job_id, {SyncJobState.VERIFIED}) # The run dir is still intact. assert run_dir.exists() assert (run_dir / "data.bin").exists() @@ -344,13 +318,7 @@ async def _push( await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.CLEANUP_ELIGIBLE: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected CLEANUP_ELIGIBLE") + await wait_for_job_state(client, handle.job_id, {SyncJobState.CLEANUP_ELIGIBLE}) # Files retained because min_verify_passes wasn't met. assert (run_dir / "data.bin").exists() finally: @@ -382,13 +350,7 @@ async def _push( await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.CLEANUP_ELIGIBLE: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected CLEANUP_ELIGIBLE on remote stat fail") + await wait_for_job_state(client, handle.job_id, {SyncJobState.CLEANUP_ELIGIBLE}) # Files retained because remote_stat failed. assert (run_dir / "data.bin").exists() finally: @@ -555,13 +517,7 @@ async def _push( await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.CLEANED: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected CLEANED state") + await wait_for_job_state(client, handle.job_id, {SyncJobState.CLEANED}) finally: await client.close() @@ -600,13 +556,7 @@ async def _push( await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.CLEANED: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected CLEANED state") + await wait_for_job_state(client, handle.job_id, {SyncJobState.CLEANED}) # The keep_local file survives; the other data file is removed. assert (run_dir / "data.bin").exists() assert not (run_dir / "subdir" / "child.txt").exists() @@ -650,13 +600,7 @@ async def _push( await client.init() try: handle = await client.enqueue(run_dir, files=["data.bin"]) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.VERIFIED: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected VERIFIED") + await wait_for_job_state(client, handle.job_id, {SyncJobState.VERIFIED}) # Give the worker a beat -- cleanup must NOT advance the job. await asyncio.sleep(0.1) row = await client._queue.get_by_id(handle.job_id) @@ -702,13 +646,7 @@ async def _slow( import shutil shutil.rmtree(run_dir) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.FAILED: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected FAILED on vanished local") + await wait_for_job_state(client, handle.job_id, {SyncJobState.FAILED}) finally: await client.close() @@ -761,13 +699,7 @@ async def _push(_local: Path, *, bwlimit_kibps: int | None, files_from: object = await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.CLEANED: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected CLEANED after a passing hash-gate") + await wait_for_job_state(client, handle.job_id, {SyncJobState.CLEANED}) # The hash-gate ran before the irreversible delete; data is gone. assert gate_calls["n"] >= 1 assert not (run_dir / "data.bin").exists() @@ -799,13 +731,7 @@ async def _push(_local: Path, *, bwlimit_kibps: int | None, files_from: object = await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.CLEANUP_ELIGIBLE: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected CLEANUP_ELIGIBLE on a failing hash-gate") + await wait_for_job_state(client, handle.job_id, {SyncJobState.CLEANUP_ELIGIBLE}) # The local data survives because the integrity gate did not pass. await asyncio.sleep(0.05) row = await client._queue.get_by_id(handle.job_id) @@ -868,13 +794,7 @@ async def _push(_local: Path, *, bwlimit_kibps: int | None, files_from: object = await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state is SyncJobState.CLEANUP_ELIGIBLE: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected CLEANUP_ELIGIBLE when the cleanup existence probe fails") + await wait_for_job_state(client, handle.job_id, {SyncJobState.CLEANUP_ELIGIBLE}) # The probe ran (a second lsjson call) and the local data survives. await asyncio.sleep(0.05) row = await client._queue.get_by_id(handle.job_id) @@ -932,13 +852,14 @@ async def _push( await client.init() try: handle = await client.enqueue(run_dir) - for _ in range(200): + + async def _attempted() -> bool: row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.attempts >= 1: - break - await asyncio.sleep(0.01) - else: - pytest.fail("network error never increased attempts") + return row is not None and row.attempts >= 1 + + await wait_until(_attempted, message="network error never increased attempts") + row = await client._queue.get_by_id(handle.job_id) + assert row is not None assert row.last_error == "network" assert row.next_attempt_at # backoff scheduled finally: @@ -1060,15 +981,18 @@ async def _push(_local: Path, *, bwlimit_kibps: int | None, files_from: object = await client.init() try: handle = await client.enqueue(run_dir, ["data.bin", "subdir/child.txt"]) + # data.bin reconciles on every sweep; the batch re-queues because # child.txt never reconciles. Wait until data.bin is credited. - for _ in range(600): + async def _data_credited() -> bool: state = await sync_state.read(run_dir) - if "data.bin" in state.files and state.files["data.bin"].verified_at: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected data.bin to be credited from the partial listing") + return "data.bin" in state.files and bool(state.files["data.bin"].verified_at) + + await wait_until( + _data_credited, + message="expected data.bin to be credited from the partial listing", + ) + state = await sync_state.read(run_dir) # data.bin reconciled: it carries a synced_signature + verified_at. assert state.files["data.bin"].synced_signature is not None @@ -1121,17 +1045,15 @@ async def _push(_local: Path, *, bwlimit_kibps: int | None, files_from: object = await client.init() try: handle = await client.enqueue(run_dir, ["data.bin", "subdir/child.txt"]) - for _ in range(400): - row = await client._queue.get_by_id(handle.job_id) - if row is not None and row.state in { + await wait_for_job_state( + client, + handle.job_id, + { SyncJobState.VERIFIED, SyncJobState.CLEANUP_ELIGIBLE, SyncJobState.CLEANED, - }: - break - await asyncio.sleep(0.01) - else: - pytest.fail("expected eventual VERIFIED") + }, + ) state = await sync_state.read(run_dir) assert {"data.bin", "subdir/child.txt"} <= set(state.files) for rec in state.files.values():