4.7 KiB
ADDED Requirements
Requirement: Separate assignment and scan outcomes
The worker administration list SHALL display assignment transport outcome, scan outcome, and diagnostic count as separate fields and SHALL not label last_error_code as the complete scan error category.
Scenario: Accepted scan has an error outcome
- WHEN a reservation has a durable accepted bundle whose target scan status is
error - THEN the list SHALL show assignment
accepted, scanerror, and the diagnostic count/categories
Scenario: Assignment expires before scan ingestion
- WHEN a reservation expires without an accepted bundle
- THEN the list SHALL show assignment
expired, scan outcome unavailable, and the expiry diagnostic
Requirement: Assignment detail timeline
Each worker assignment row SHALL link to a detail page that reconstructs issued, phase-progress, bundle/terminal report, receipt, ingestion, queue settlement, and projection timestamps that exist for that assignment.
Scenario: Administrator opens an active assignment
- WHEN progress events exist for an unresolved assignment
- THEN the page SHALL show current phase, phase age, last progress age, scan deadline, assignment deadline, and ordered prior phases
Scenario: Administrator opens a settled assignment
- WHEN the assignment has been accepted and projected
- THEN the timeline SHALL distinguish acceptance, ingestion, queue settlement, and projection completion rather than collapsing them into one completion time
Requirement: Clickable diagnostic detail
The assignment detail page SHALL list diagnostics and SHALL provide human summary, canonical envelope JSON, raw body view, process log view, transformation metadata, and copy/download actions for each diagnostic.
Scenario: Diagnostic body is complete
- WHEN an HTTP diagnostic contains an untruncated body
- THEN the raw-body view SHALL identify it as complete and display the captured content and metadata
Scenario: Diagnostic material is truncated
- WHEN body or log material was size-truncated
- THEN the view SHALL prominently display original/stored sizes, hash, and truncation state
Scenario: Legacy scan error has no diagnostic envelope
- WHEN an older scan has only existing
errors.raw_erroror result metadata - THEN the detail page SHALL display those fields as legacy evidence and SHALL not invent a new envelope
Requirement: Diagnostic filtering and grouping
The admin UI SHALL filter independently by source, time, worker/device, assignment outcome, scan outcome, phase, category, stable code, and retryability and SHALL group repeated diagnostic fingerprints without hiding individual occurrences.
Scenario: Administrator filters rate-limit errors
- WHEN category
rate_limitand a time window are selected - THEN results SHALL include matching diagnostics regardless of whether their assignments were accepted or prebundle-failed
Scenario: Repeated diagnostics are grouped
- WHEN multiple diagnostics share a fingerprint
- THEN the UI SHALL show aggregate count and affected assignments while retaining links to each occurrence
Requirement: Worker fleet status
The admin UI SHALL display each worker's configured cap, active slots, current phases, package identity, latest contact/progress ages, pending local-recovery indication when reported, and known idle/backoff reason.
Scenario: Worker is scanning without recent API contact
- WHEN a worker has an active assignment and recent progress events but its authentication contact timestamp is old
- THEN fleet status SHALL show active progress rather than classifying the worker as idle solely from contact age
Scenario: Worker cannot claim due to capacity
- WHEN the server rejects claims because a pipeline capacity axis is closed
- THEN fleet status SHALL show the capacity reason instead of a generic offline/idle state
Requirement: Deadline and duration administration
The runtime editor and worker observability pages SHALL explain effective scan, upload, and assignment deadlines and SHALL show p50/p95/p99 duration metrics with sample counts by source and phase.
Scenario: Administrator edits a source assignment deadline
- WHEN a per-source TTL candidate is previewed
- THEN the editor SHALL show the effective policy, validation relationship to scan/upload bounds, and that only future assignments are affected
Scenario: Administrator compares policy to observations
- WHEN sufficient phase-duration samples exist
- THEN the page SHALL show the configured deadline alongside source-specific percentile values without automatically changing configuration