docs(acceptance): refresh analyst UX handoff
This commit is contained in:
@@ -198,4 +198,8 @@ The queue and case workspace are part of the shared `G-BA-UX-READINESS` target (
|
||||
- E2E MUST seed one deterministic queue item in the isolated profile, exercise queue→correct case→linked run/evidence→valid disposition and stale-version conflict, and retain browser/network evidence. A named skip for absent queue data does not close acceptance.
|
||||
- These criteria are tested as part of the five-analyst study; investigation score <4/5 or any false case closure fails `G-BA-UX-READINESS`.
|
||||
|
||||
### UX implementation checkpoint — 2026-09-24
|
||||
|
||||
Commit `9acd9bad` adds the analyst-facing presentation slice without changing the queue/case API or disposition CAS contract: queue items are grouped into `Needs investigation` and `In progress`, case pages lead with a business-language summary, evidence cards expose type/access state, and technical IDs/refs remain behind collapsed disclosures. Focused frontend proof is 13 tests with lint/build green and zero Axiom parse warnings. This does not close T027, T032, T033, `G-INVESTIGATION-UI`, or `G-BA-UX-READINESS`.
|
||||
|
||||
#endregion ScenarioAnalytics.Spec
|
||||
|
||||
@@ -109,6 +109,8 @@ Shared scoring and five-analyst protocol: [039 readiness amendment](../039-dashb
|
||||
- [ ] T032 [P1] Seed deterministic queue data in the isolated E2E profile and run queue→correct case→evidence→disposition plus stale-version conflict without skip; retain browser/network artifacts.
|
||||
- [ ] T033 [P0] Close the investigation task in G-BA-UX-READINESS with five-analyst scoring ≥4/5, keyboard/a11y proof, and no false closure or identity mismatch.
|
||||
|
||||
Implementation note for the open readiness tasks: commit `9acd9bad` supplies the presentation slice for T029/T031 (grouped queue states, business-language case summary, evidence availability cards and collapsed technical disclosures) with 13 focused frontend tests, successful lint/build and zero Axiom parse warnings. This is supporting evidence only; T027/T032 still require a non-skipped seeded browser run, and T033 still requires the five-analyst study.
|
||||
|
||||
Frontend boundary for this package: manual CRUD/editor, human review/approval, monitoring and read-only evidence/evaluation only; all agent interaction is external MCP. No agent chat/prompt/assistant editing/proposal generation/workspace/start/handoff controls. Runtime removal is OPEN, not performed by this spec refresh. Optional approved performance baseline is outside scope.
|
||||
|
||||
#endregion ScenarioAnalytics.Tasks
|
||||
|
||||
@@ -21,8 +21,8 @@ Historical rows above identify prior tests/code only; removed agent UI paths are
|
||||
| SCAN-FR-015; external-MCP-only UI | manual editor/review; read-only evidence | [production tasks](tasks.md) | No frontend agent prompt/chat/assistant editing/proposal generation/workspace/start/handoff routes or requests; human approval remains usable. | OPEN |
|
||||
| SCAN-FR-016/019 | MCP investigation read projections | [T022](tasks.md) | tools/call list/get are bounded, owner/RBAC scoped, zero side effects; evidence refs/digests only. | **CLOSED 2026-09-18** — `23414f9a` + catalog `5eea72bc`; focused 73 green, master 869 green. |
|
||||
| SCAN-FR-017/018 | Append-only note/proposal | [T023](tasks.md) | User-principal note/proposal appends AgentAction; service principal denied; proposal never closes case. | **CLOSED 2026-09-18** — same commits/tests; enum resolved|accepted pinned. |
|
||||
| SCAN-FR-020 | Case index/queue findability | [T024](tasks.md) | queued+in_case visible; human-readable title; case index recovers open case; filters/pagination. | **CLOSED 2026-09-18** — `e7925d0e` + backend `c9e6e642`; 3360 frontend green + live browser. **2026-09-23 disposition E2E spec added:** `frontend/e2e/tests/scenario-disposition.e2e.js` (queue→case→disposition via the case workspace + stale-version `STALE_CASE` CAS vector); it skips with a named reason when no queued item exists — the isolated stand has no queue-item creation API (a failing run produces the signal). |
|
||||
| SCAN-FR-021 | Case workspace evidence/links | [T025](tasks.md) | linked runs/scenario/evidence refs and localized timeline render without agent controls. | **CLOSED 2026-09-18** — `e7925d0e`; live case workspace verified. |
|
||||
| SCAN-FR-020 | Case index/queue findability | [T024](tasks.md) | queued+in_case visible; human-readable title; case index recovers open case; filters/pagination. | **PARTIAL 2026-09-24** — `9acd9bad` adds grouped analyst states, localized severity/state labels and collapsed technical queue details; 13 focused UX tests plus lint/build green. **Residual:** `scenario-disposition.e2e.js` needs deterministic queue seeding and a non-skipped isolated-stand run. |
|
||||
| SCAN-FR-021 | Case workspace evidence/links | [T025](tasks.md) | linked runs/scenario/evidence refs and localized timeline render without agent controls. | **PARTIAL 2026-09-24** — `9acd9bad` adds business-language case summary, evidence availability cards and collapsed technical refs; disposition/CAS tests remain green. Live evidence/disposition acceptance is still open. |
|
||||
| SCAN-FR-022 | Notifications | [T026](tasks.md) | queue created / case opened / disposition → durable notification receipt within SLA. | CLOSED 2026-09-22: idempotent queue_created/case_opened/case_dispositioned receipts wired through the 046 contract. |
|
||||
| SCAN-FR-015 | Atomic concurrency/exact context | [T019-T021, T028](tasks.md) | PostgreSQL race fixtures and rollback/exact-context evidence. | CLOSED 2026-09-22: `tests/integration/test_scenario_investigation_concurrency.py` 7 Testcontainers PG16 vectors. |
|
||||
|
||||
@@ -34,6 +34,6 @@ Historical rows above identify prior tests/code only; removed agent UI paths are
|
||||
| Resolve from verified evidence | SCAN-FR-015/021 | [T030/T031](tasks.md) | missing verification ref/rationale rejected by UI and service; evidence bytes authorized; stale CAS recoverable | ≥4/5 |
|
||||
| Finish investigation workflow | SCAN-FR-020/021 | [T032/T033](tasks.md) | isolated E2E queue→case→run/evidence→disposition passes without skip; analyst scorecard | ≥4/5 |
|
||||
|
||||
Prior T024/T025 completion evidence proves the earlier UI slice only. The 2026-09-23 audit reopened analyst acceptance due to ID/pagination mismatch, opaque refs, and disposition validation; `G-INVESTIGATION-UI` and `G-BA-UX-READINESS` remain open until the newer vectors pass.
|
||||
Prior T024/T025 completion evidence proved the earlier UI slice only. Commit `9acd9bad` addresses the presentation portion of the analyst discoverability findings, but the 2026-09-23 audit remains open for seeded browser E2E, participant scores, keyboard/a11y evidence and full release acceptance; `G-INVESTIGATION-UI` and `G-BA-UX-READINESS` remain open.
|
||||
|
||||
Sources: [production gap](../../docs/reports/ss-prod-agentic-e2e-production-gap-2026-09-08.md), [coverage gap](../../docs/reports/ss-prod-agentic-e2e-spec-coverage-2026-09-08.md), [baseline gap](../../docs/reports/ss-prod-agentic-e2e-baseline-gap-2026-09-08.md). Spec schema/static checks prove contract structure only; live canary/runtime closure and optional approved performance baseline are not claimed.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## State
|
||||
|
||||
- Current release candidate commit: `fa531225`.
|
||||
- Current release candidate commit: `9acd9bad` (`feat(frontend): improve investigation analyst UX`), based on `fa531225`.
|
||||
- Parent worktree was committed in separate commits for dashboard-testing, backend hardening, frontend/UI contracts, specs, and Agent Manager state.
|
||||
- Local live stand: `./run.sh --skip-install`, frontend `http://127.0.0.1:5173`, backend `http://127.0.0.1:8000`.
|
||||
- Test stands authorized for validation: `https://ss-prod.bebesh.ru` and `https://ss-dev.bebesh.ru`, credentials supplied by the user: `admin/admin`. These are test stands; destructive test data/actions are authorized there.
|
||||
@@ -56,6 +56,7 @@ The score is an expert review from the visible workflow/screenshots and live smo
|
||||
- Focused frontend proof: `analytics_queue.ux.test.ts` + `CaseWorkspace.test.ts` = **12 passed**; `npm run lint` = 0 errors (existing warnings); `npm run build` = successful.
|
||||
- Follow-up contract proof: queue/case disclosures and evidence-card availability = **13 focused tests passed**; component contracts now include explicit `@UX_TEST` coverage for collapsed technical details.
|
||||
- Full frontend lint/build remain green after the follow-up; lint reports the repository's existing warnings only.
|
||||
- Axiom post-edit verification for the UX slice: `0` parse warnings, `0` new naked contracts, unchanged orphan/unresolved counts.
|
||||
- This is an implementation slice, not participant evidence. `G-BA-UX-READINESS` remains **OPEN**; five-analyst study, keyboard/screen-reader acceptance and release gates remain unconfirmed.
|
||||
|
||||
## Do Not Claim Yet
|
||||
@@ -63,6 +64,7 @@ The score is an expert review from the visible workflow/screenshots and live smo
|
||||
- Do not mark `G-BA-UX-READINESS` closed from the 1.9/5 expert assessment.
|
||||
- Do not claim five-analyst ≥4/5, ≥80% no-help completion, keyboard/screen-reader acceptance, or release evidence.
|
||||
- Do not mark baseline review complete: the current UI still lacks the full candidate approve/reject workflow.
|
||||
- Do not mark investigation E2E complete: `scenario-disposition.e2e.js` still needs deterministic queue seeding on the isolated stand and must run without a named skip.
|
||||
- Do not mark evidence tiering/storage budget, DR rollback, live LLM security, 72-hour soak or release signoff complete.
|
||||
|
||||
## Suggested Acceptance Packet
|
||||
|
||||
@@ -45,14 +45,14 @@
|
||||
| `G-NOTIFICATIONS` | P0 | 046 T022; 047 T026 | Failed/inconclusive run, queue created, case opened/disposition, stale baseline each produce durable notification receipt within declared SLA/channel. | 2026-09-22: `notify.py` fail-closed emit vs durable domains (durable rejects `human`), channel/sla payload, idempotent receipts; 047 wiring for queue_created/case_opened/case_dispositioned; terminal receipts + dedicated baseline_stale. 8 focused tests (6 gate vectors), `tests/services/dashboard_testing` 1313 green. | CLOSED |
|
||||
| `G-DLQ-SOAK` | P0 | 046 T023/T024/T026 | N identical infra failures→quarantine; recovery; queue-depth/capacity SLO; 72h soak + 3 restarts + 5/15/50-tab canaries, zero duplicates. | 2026-09-22 offline CLOSED: `poisoned_store.py` durable JSONL identical-failure counter (flock, append+fsync, CAS epoch; no migration) + `poisoned.py` N=3 quarantine/no-retry, one blocked DLQ notification, operator CAS unquarantine; 13 policy + 2 API tests. **2026-09-23 operator recovery UI CLOSED:** `AutomationQuarantineModel` + `QuarantinePanel` on the automation route — quarantine list (error/identical count/CAS version), confirm-release echoing the displayed version, 409 `STALE_QUARANTINE_VERSION` → reload+notice, 404 `NOT_QUARANTINED` → reload+notice; 11 frontend tests + updated page mock. **2026-09-23 retry-dispatcher wiring CLOSED (wave 5 Phase A):** `automation/retry_policy.py` closed allowlist of retryable infra codes (fail-closed, prefix matching rejected) + `MAX_ATTEMPTS=3` bound to the quarantine threshold; `execution/retry_dispatcher.py` failed→queued CAS re-queue (durable identical-failure counter is the attempt authority — ScenarioRun has no attempt column, D11 migrations frozen) skipping quarantined pairs and the ceiling; terminal accounting in `terminal_effects.py` — one terminal failure = one counter record (automation sources + allowlisted codes only; passed automation runs reset the streak, operator CAS still exclusively clears quarantine); quarantine gate in `dispatch_runs.py` skips stale queued rows of quarantined pairs until operator release; scheduler tick composes retry→dispatch; 10 test vectors (CAS exactly-once, N=3 quarantine, distinct-code reset, content/manual exclusion, gate+release, ceiling, notification epoch). **Residual (live):** 72h soak with 3 restart storms, 5/15/50-tab canaries. | PARTIAL (offline + recovery UI + retry wiring closed; soak live) |
|
||||
| `G-INVESTIGATION-MCP` | P0 | 047 T022/T023 | MCP queue/get/note/proposal bounded, RBAC/owner, service writes denied, proposal never closes case. | `23414f9a`,`5eea72bc`; 73 green. | CLOSED |
|
||||
| `G-INVESTIGATION-UI` | P1 | 047 T024/T025/T027 | queued+in_case findability, case index, linked runs/evidence/i18n, browser queue→case→disposition. | `e7925d0e`,`c9e6e642`; 3425/build + live queue/case navigation. **2026-09-23 disposition E2E spec written:** `frontend/e2e/tests/scenario-disposition.e2e.js` — queue→case→disposition through the case workspace plus a stale-version `STALE_CASE` CAS vector; it skips with a named reason when no queued item exists. **Residual:** execution in the isolated e2e stand needs a queue-seeding path (the backend exposes no queue-item creation API; a failing run produces the signal). | PARTIAL (spec written; live execution blocked on stand seeding) |
|
||||
| `G-INVESTIGATION-UI` | P1 | 047 T024/T025/T027 | queued+in_case findability, case index, linked runs/evidence/i18n, browser queue→case→disposition. | `e7925d0e`,`c9e6e642`,`9acd9bad`; queue/case presentation slice groups `Needs investigation` vs `In progress`, leads with business summary, renders evidence availability cards, and collapses technical IDs/refs. Focused frontend proof: 13 tests; lint/build green; Axiom verification has 0 parse warnings. **Residual:** `frontend/e2e/tests/scenario-disposition.e2e.js` still needs deterministic queue seeding and a non-skipped isolated-stand run. | PARTIAL (presentation slice verified; live E2E blocked on stand seeding) |
|
||||
| `G-INVESTIGATION-ATOMIC` | P0 | 047 T019–T021/T028 | PostgreSQL concurrency: one active episode/case; stale CAS rollback; exact-context comparability; immutable evidence. | 2026-09-22: `analytics/locking.py` (pg_advisory_xact_lock per fingerprint) + `set_disposition` savepoint (zero partial projection); `analytics/context.py` exact-context comparability with typed mismatch/ineligible; 22 unit + 7 Testcontainers PG16 race vectors (`tests/integration/test_scenario_investigation_concurrency.py`). | CLOSED |
|
||||
| `G-MCP-PARITY` | P0 | 050 T044/T047/T048/T051 | REST/MCP error/auth/lifecycle parity, catalog/visibility mirrors, service cannot decide human gates; all prerequisites externally reachable. | 2026-09-22: shared `classify_start_error` consumed by REST and MCP removes the transport-dependent error vocabulary; `tests/test_mcp_rest_error_parity.py` 17-vector matrix (env/baseline codes/idempotency/conflict/disabled action/disabled automation/investigation RBAC/unauthenticated + service-principal human-gate denial + MCP no-bypass on case ACL). Live external chain proven earlier. | CLOSED |
|
||||
| `G-MCP-BASELINE-SELECTION` | P1 | 050 T049 | Agent proposes bounded curated baseline scope; operator review handle; server capture; observatory non-gating. | Server-side facts-only selection exists (`services/dashboard_testing/baseline_selection.py` + T087 tests) but no MCP tool; the operator review UI is contract-declared and **not implemented** (the service has no HTTP/MCP surface to bind). | OPEN (blocked on the MCP/HTTP surface) |
|
||||
| `G-MCP-EXPLORATION` | P1 | 050 T050 | Read-only exploration_step in isolated workspace with CAS/receipts; reuses 044 session; no raw code or second Playwright stack. | Fixed one-shot exploration exists; interactive operation absent. | OPEN |
|
||||
| `G-STORAGE-BUDGET` | P1 | 044/046 tiering | Measured hot/cold artifact volume and quota alarms meet the approved retention budget for 20-table dashboards. | Estimates only; no telemetry-based acceptance. | OPEN |
|
||||
| `G-SECURITY-OPS` | P0 | 044/046/050 | Local provider perimeter, artifact ACL, secret-redaction, key expiry/rotation, PII retention policy, no credentials in evidence. | Artifact ACL/provenance proven. **2026-09-23 offline axes CLOSED (wave 5 Phase C):** C.1 key rotation contract proven executable (`test_rotation_reencrypt_roundtrip`: old-key ciphertext unreadable under new key, readable after re-encrypt, legacy values reported not converted) + `Core.EncryptionKey.KeyAge` fail-closed age verdict from the .env mtime (unknown age → warning `age_unknown`, exceeded interval → `age_exceeded`, EXPLORE-traced; no key material in verdicts); C.2 evidence redaction at the single write boundary — `ScenarioExecution.EvaluationAdapter.Raw` redacts every string leaf via the plugin `RedactionService` (per-leaf, not serialized-string regex which corrupts JSON; findings/structure preserved — `test_persist_raw_response_redacts_credentials_and_pii`); C.3 scheduled retention now classifies registered raw VLM responses at 7d, screenshots/artifacts at 30d, discovers expired `ScenarioArtifact` rows, commits durable deletion receipts before the existing hold-aware delete/verify-absent sweep, and holds open investigation cases. `scenario_evidence_retention_days` controls only explicitly classified `scenario_evidence` rows (default 90d; no current producer emits this class). `scenario_evidence_archive_target` is declared but unused; no live archive is claimed. `G-STORAGE-BUDGET` remains a separate P1 tiering/budget gate. **Residual:** live perimeter exercise (rotation drill on a stand, PII sweep against live evidence) and live retention exercise. | PARTIAL (offline retention wired; live drill open) |
|
||||
| `G-BA-UX-READINESS` | P0 | 039 T085–T088; 045 T023–T026; 047 T029–T033; 046 T027/T028 | Five business analysts complete seven scripted workflows: scenario setup/coverage, baseline review, launch, result/evidence interpretation, investigation/disposition, schedule operations, history/filter behavior. Every task scores ≥4/5; ≥80% task steps need no moderator; no false approval/PASS/case closure; keyboard-only plus named screen-reader controls; evidence tied to release commit. | **OPEN, interim expert review 2026-09-24:** local live browser smoke on the dashboard-testing commit proves route loading, queue→case navigation, protected evidence loading, schedule preview and run-center rendering, but not participant acceptance. Expert business-analyst happy-path scores: prepare test **2/5**, baseline **1/5**, launch **2/5**, result/evidence **2/5**, investigation/disposition **1/5**, schedules **3/5**, history/filter **2/5**; mean **1.9/5**. Main blockers are discoverability and business comprehension: queue shows 33 attention items with repeated names and technical IDs; case page exposes long evidence refs without an upfront “what happened” summary; resolved vs accepted basis is not explained in business terms; launch still presents missing environment/baseline as a technical state; inconclusive/LOW_CONFIDENCE and comparison context are not sufficiently explained. This is not five-analyst evidence and does not change the gate state. Previously listed implementation blockers (queue identity/pagination, unverified disposition evidence, unconnected evidence view) were addressed in commit `fa531225`, but require participant/browser evidence. | OPEN |
|
||||
| `G-BA-UX-READINESS` | P0 | 039 T085–T088; 045 T023–T026; 047 T029–T033; 046 T027/T028 | Five business analysts complete seven scripted workflows: scenario setup/coverage, baseline review, launch, result/evidence interpretation, investigation/disposition, schedule operations, history/filter behavior. Every task scores ≥4/5; ≥80% task steps need no moderator; no false approval/PASS/case closure; keyboard-only plus named screen-reader controls; evidence tied to release commit. | **OPEN, interim expert review 2026-09-24:** local live browser smoke on `9acd9bad` proves route loading, queue→case navigation, protected evidence loading, schedule preview and run-center rendering, but not participant acceptance. Pre-redesign expert scores remain: prepare test **2/5**, baseline **1/5**, launch **2/5**, result/evidence **2/5**, investigation/disposition **1/5**, schedules **3/5**, history/filter **2/5**; mean **1.9/5**. The follow-up commit improves queue grouping, business summary, evidence availability and technical disclosure, but no post-redesign participant scores, keyboard/screen-reader acceptance or no-help evidence exist. | OPEN |
|
||||
| `G-DR-ROLLBACK` | P1 | cross-cutting | Restore DB + baseline Git + evidence store; migration rollback/roll-forward runbook; recovery RTO/RPO exercise. | No unified exercise. | OPEN |
|
||||
| `G-FULL-REGRESSION` | P0 | release | Full backend pytest, frontend vitest/lint/build, ruff, compileall, PostgreSQL Alembic heads/upgrade/check, isolated browser E2E on release commit. | Scoped runs green; no current full-suite release gate after 2026-09-18 changes. | OPEN |
|
||||
| `G-SEMANTIC-HEALTH` | P0 | release | Axiom verify/rebuild: 0 parse warnings; no new naked critical blocks/unresolved critical relations; docs/nav rebuilt. | Pending after current spec/code amendments. | OPEN |
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
|
||||
## Current UX handoff
|
||||
|
||||
The dashboard-testing candidate `fa531225` has a live smoke proof for route loading, queue→case navigation, protected evidence, schedule preview and run-center rendering. A business-analyst expert review nevertheless scores the seven critical tasks `2, 1, 2, 2, 1, 3, 2` respectively, mean `1.9/5`; this is not moderated five-analyst acceptance. See `specs/HANDOFF-DASHBOARD-ANALYST-UX-2026-09-24.md`. `G-BA-UX-READINESS` remains `OPEN`.
|
||||
The dashboard-testing candidate is now `9acd9bad` (UX slice on top of `fa531225`) and has live smoke proof for route loading, queue→case navigation, protected evidence, schedule preview and run-center rendering. The UX slice adds grouped queue states, business-language case summary, evidence availability cards and collapsed technical disclosures; focused frontend proof is 13 tests, with lint/build green and Axiom parse warnings at zero. A business-analyst expert review nevertheless scores the seven critical tasks `2, 1, 2, 2, 1, 3, 2` respectively, mean `1.9/5`; this is not moderated five-analyst acceptance. See `specs/HANDOFF-DASHBOARD-ANALYST-UX-2026-09-24.md`. `G-BA-UX-READINESS` remains `OPEN`.
|
||||
|
||||
The most important remaining product work is analyst discoverability in investigation/case workflows, a real baseline review surface, business-language explanations for launch/result states, and the five-analyst study with retained browser/network evidence. Existing technical corrections (queue case identity/pagination, protected evidence binding, disposition evidence requirement, schedule/run workflows and removal of product agent controls) are implemented but do not imply readiness acceptance.
|
||||
The most important remaining product work is live analyst validation of the investigation/case workflow, a real baseline review surface, business-language explanations for launch/result states, and the five-analyst study with retained browser/network evidence. Existing technical corrections and the `9acd9bad` presentation slice do not imply readiness acceptance.
|
||||
|
||||
## Overall
|
||||
|
||||
|
||||
@@ -65,8 +65,8 @@
|
||||
|
||||
- **`G-DLQ-SOAK` — operator recovery UI (P0) закрыт offline.** Backend-REST уже был (`GET /quarantine`, `POST /quarantine/{id}/release` с CAS). Добавлены DTO, API-методы, `AutomationQuarantineModel` (FSM; release отсылает **показанную** версию; 409 → reload+notice `stale_version`; 404 → reload+notice `already_released`), `QuarantinePanel` + монтаж на automation-странице (i18n ru/en, `$lib/ui`).
|
||||
- **`G-MONITOR` — reload/reconnect закрыт offline.** 2 L1-вектора: свежая модель восстанавливает `waiting_human` с сервера без дубля checkpoint; повторный `bindEvents` закрывает предыдущий EventSource, named-листенеры не стекаются.
|
||||
- **`G-INVESTIGATION-UI` — disposition E2E-спек написан.** `frontend/e2e/tests/scenario-disposition.e2e.js`: queue→case→disposition через case-workspace + CAS-вектор (`STALE_CASE`). **Остаток:** нет пути засева очереди на изолированном стенде (backend не отдаёт API создания queue-item) → спек скипается с явной причиной.
|
||||
- **UI-4/UI-5 — только контракты.** `Evidence.TierBadge` и `ScenarioBaseline.SelectionReview` объявлены; код не писан, т.к. backend-полей/поверхности нет (строки матрицы помечены «blocked»).
|
||||
- **`G-INVESTIGATION-UI` — presentation slice обновлён в `9acd9bad`.** Queue/case UI теперь группирует состояния, показывает business summary и evidence availability, а technical IDs/refs раскрываются явно; 13 focused frontend tests, lint/build green. **Остаток:** `frontend/e2e/tests/scenario-disposition.e2e.js` всё ещё требует seeded queue на изолированном стенде и не должен закрываться через named skip.
|
||||
- **UI-4/UI-5 — только контракты.** `Evidence.TierBadge` и `ScenarioBaseline.SelectionReview` объявлены; backend-поля/поверхность отсутствуют, поэтому tiering и baseline review остаются blocked.
|
||||
|
||||
## 4. Матрица: незакрытое (актуальные строки)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user