29 KiB
29 KiB
ai-exchange Session
Current Goal
Automation execution-layer P23 is closed locally. P23 adds a repeatable analysis/decision-only unattended harness that validates P15-P22 key paths and emits a single blockers/warnings/passed-checks report for local and future remote smoke. The default next action is P24 Remote Smoke And Ops Closure.
Current Branch
main
Last Updated
2026-05-12 UTC
Automation Status
- state: automation_execution_layer_p23_end_to_end_unattended_harness_closed
- current_phase: P23 End-To-End Unattended Harness
- latest_p7_selector_choice: continue_periodic_analysis_decision_monitoring_with_maturity_rollup
- latest_p14_slice: webhook_transport_retry
- latest_p15_pxx_tasklist_status: ready
- latest_p15_pxx_tasklist_path: docs/AI_ICT_自动化执行层_P15-PXX闭环任务清单_v1.md
- latest_p15_slice: alert_noise_policy_matrix
- latest_alert_noise_policy_status: implemented
- latest_alert_noise_policy_route_status: visible_existing_quality_summary
- latest_alert_noise_policy_runtime_status: visible
- latest_p16_slice: browser_screenshot_capture_adapter
- latest_visual_browser_capture_status: implemented
- latest_visual_browser_capture_smoke_status: captured
- latest_visual_capture_script_noop_status: ignored_watch_run_missing
- latest_p17_slice: visual_trigger_roi_router
- latest_visual_trigger_policy_status: implemented
- latest_visual_trigger_policy_smoke_status: idle_no_pending_watch_runs
- latest_visual_trigger_runtime_status: visible
- latest_visual_trigger_quality_summary_status: visible
- latest_p18_slice: visual_evidence_media_dispatch
- latest_visual_media_evidence_status: implemented
- latest_visual_media_evidence_dispatch_status: visible
- latest_visual_media_evidence_smoke_status: no_pending_alerts_safe_noop
- latest_p19_slice: multi_channel_alert_routing
- latest_channel_router_status: implemented
- latest_channel_health_status: visible
- latest_disabled_adapter_status: visible_credential_missing
- latest_channel_routing_smoke_status: no_pending_alerts_safe_noop
- latest_p20_slice: operator_digest_review_queue
- latest_operator_digest_status: implemented
- latest_operator_digest_route_status: ok
- latest_operator_digest_workbench_status: visible
- latest_operator_digest_smoke_status: safe_noop_or_completed
- latest_p21_slice: runtime_incident_journal
- latest_runtime_incident_journal_status: implemented
- latest_runtime_incident_journal_route_status: ok
- latest_runtime_incident_journal_workbench_status: visible
- latest_runtime_incident_journal_smoke_status: idle_persisted
- latest_p22_slice: maintenance_retention_rollup
- latest_maintenance_summary_status: implemented
- latest_maintenance_summary_route_status: ok
- latest_maintenance_summary_workbench_status: visible
- latest_maintenance_summary_smoke_status: warning_feedback_sample_health
- latest_p23_slice: end_to_end_unattended_harness
- latest_unattended_harness_status: implemented
- latest_unattended_harness_route_status: ok
- latest_unattended_harness_smoke_status: passed_9_checks
- next_execution_layer_phase: P24 Remote Smoke And Ops Closure
- latest_visual_review_script_status: idle
- latest_runtime_visual_watch_task_status: ok
- latest_visual_capture_cleanup_task_status: ok
- latest_runtime_watchdog_task_status: implemented
- latest_runtime_visual_watch_state: idle
- latest_visual_snapshot_capture_status: implemented
- latest_visual_reviews_panel_status: visible
- latest_visual_feedback_status: implemented
- latest_visual_alert_evidence_dispatch_status: implemented_existing_channels
- latest_alert_quality_summary_status: implemented
- latest_review_packet_alert_quality_status: visible
- latest_alert_quality_route_status: ok
- latest_visual_capture_cleanup_status: implemented
- latest_visual_capture_cleanup_route_status: ok
- latest_runtime_watchdog_status: implemented
- latest_runtime_watchdog_route_status: ok
- latest_alert_silent_window_status: implemented
- latest_alert_silent_window_route_status: ok
- latest_alert_retry_recovery_status: implemented
- latest_alert_transport_retry_status: implemented
- latest_runtime_blockers: none
- guards_unchanged: execution_allowed, real_live_ready, risk_governor, trust_bucket, operator_confirmation_protocol
Completed In This Run
- Verified
GSTACK_OK. - Promoted the visual-watch prewire into a P8 review loop slice.
- Added
VisualReviewServiceto review reserved watch runs, create optional snapshot records, create visual reviews, and mark watch runs reviewed. - Added
scripts/run_visual_review.pyfor manual or automation-driven review processing. - Added
VisualSnapshotCaptureServiceandscripts/run_visual_snapshot_capture.pyfor advisory review-packet snapshot capture. - Added API helpers and routes for
POST /trading/visual-watch/reviewandPOST /trading/visual-watch/review-pending. - Added a read-only workbench panel for recent visual reviews.
- Added a runtime
visual_watchtask that processes pending visual-watch reviews without changing trading gates. - Added
alert_feedbackpersistence and feedback service support for alert and visual-review labels. - Added visual-review feedback API routes and workbench actions for useful / misleading / actionable labels.
- Extended alert dispatch messages and delivery payloads with the latest visual evidence for the decision packet.
- Added
AlertQualitySummaryServiceto aggregate recent alert deliveries, alert feedback, visual feedback, and visual-review states. - Added
GET /trading/alerts/quality-summaryand attached the same summary toreview_packet.alert_quality_summary. - Added a dashboard
Alert Qualitypanel with delivery success, alert usefulness, visual helpfulness, flags, and operator summary. - Applied local migrations through
042_create_alert_feedback.sqlso P9 can be exercised on the current database. - Added
VisualCaptureRetentionServiceto remove stale.claude/visual_watch/capturesHTML/JSON artifacts by retention window. - Added
scripts/run_visual_capture_cleanup.pyandPOST /trading/visual-watch/cleanup-captures. - Added runtime task
visual_capture_cleanupand a workbenchCleanup Old Capturesbutton in the Visual Reviews panel. - Added
RuntimeTaskWatchdogServiceto detect runtime tasks that are overdue or running too long. - Added
scripts/run_runtime_task_watchdog.pyandGET /trading/runtime-watchdog. - Extended
runtime_statusand the runtime workbench panel withruntime_watchdog, stalled task names, and per-task stall details. - Added
AlertSilentWindowServicefor configurable quiet-hour suppression of outbound non-workbench alerts. - Added
scripts/run_alert_silent_window_status.pyandGET /trading/alerts/silent-window-status. - Extended alert dispatch, alert quality summary, runtime
alert_dispatchtask details, and theAlert Qualitypanel with silent-window visibility and suppression counts. - Added failed-alert retry recovery to
AlertDispatcherServicewith bounded retry attempts and retry backoff. - Added retry observability in dispatcher payloads, delivery summary fields, runtime
alert_dispatchdetails, andAlert Qualitydelivery cards. - Added bounded webhook transport retry inside
AlertDispatcherService._sendso transient outbound failures can be retried before the alert is marked failed. - Added transport-retry observability in dispatcher payloads, delivery summary fields, and runtime
alert_dispatchdetails. - Added focused unit tests for the service, script, API routing, and runtime task.
- Added
docs/AI_ICT_自动化执行层_P15-PXX闭环任务清单_v1.mdto define a finite continuation queue from P15 through PXX. - Updated the state anchors so future continuation starts at P15 instead of inventing new unbounded phases.
- Added alert noise policy matrix settings for external minimum severity, workbench-only alert types, suppressed duty modes, and suppressed operator modes.
- Extended
DeliveryPolicyServicewithevaluate_alert_delivery_policy()so alert status, silent window, alert type, severity, channel, duty mode, operator mode, and cooldown return a structured policy decision. - Extended
AlertDispatcherServiceto persistdelivery_policymetadata and exposepolicy_external_allowed,workbench_only, andsuppressed_noise_policycounters. - Extended
AlertQualitySummaryService, runtimealert_dispatchtask details,run_alert_dispatcher.py, and the workbenchAlert Qualitypanel with noise-policy visibility. - Added focused unit tests for policy matrix, dispatcher suppression, summary rollup, runtime details, and docs inventory alignment.
- Added browser-backed screenshot capture support to
VisualSnapshotCaptureServiceusing local Edge/Chrome headless when available. - Extended visual capture payloads with
html_path,screenshot_path,metadata_path,capture_url,browser_capture_status, and structuredbrowser_capturedetails. - Extended
scripts/run_visual_snapshot_capture.py,POST /trading/visual-watch/capture, and the workbench Visual Reviews panel with browser capture visibility. - Verified a real local browser screenshot smoke produced a PNG from a generated review-packet HTML artifact.
- Added structured
evaluate_visual_trigger_policy()for visual trigger/skip routing with auditable reason codes. - Wired decision alert payloads and reserved visual watch requests with
visual_trigger_policy,visual_trigger_skip_reason, andvisual_trigger_roi. - Extended runtime
decision_packetandvisual_watchtask details with visual trigger policy statuses, skip reasons, trigger type counts, and review state counts. - Extended visual review payloads, alert quality summary,
scripts/run_visual_review.py, and the workbench panels with trigger type and ROI visibility. - Added
build_visual_media_evidence()andsummarize_visual_media_evidence()so visual reviews produce a stable media evidence block. - Extended alert dispatcher delivery payloads, dispatcher results, alert messages, alert quality summary, runtime
alert_dispatchdetails, andrun_alert_dispatcher.pywith media evidence status. - Extended visual review API enrichment and workbench Visual Reviews with media evidence status and primary media path.
- Added structured channel route/capability helpers with workbench, webhook, WeCom, and email channel descriptions.
- Added channel health summary and disabled adapter metadata for WeCom/Email credential-missing states.
- Extended alert dispatcher payloads/results, delivery summary, runtime
alert_dispatchdetails, dispatcher script output, and workbench delivery cards with per-channel observability. - Added
OperatorDigestServiceto aggregate recent alerts, deliveries, visual reviews, quality flags, and missing feedback into an operator review queue. - Added
scripts/run_operator_digest.pyandGET /trading/alerts/operator-digest. - Extended the workbench
Alert Qualitypanel with operator digest status, review queue counts, and top review item types. - Added
runtime_incidentspersistence with upsert aggregation by incident key. - Added
RuntimeIncidentJournalService,scripts/run_runtime_incident_journal.py, andGET /trading/runtime-incidents. - Extended
runtime_status,run_trading_runtime.py, and the workbench runtime panel with incident summary, severity/source counts, and recommended actions. - Added
MaintenanceSummaryServicefor read-only storage/delivery/feedback/runtime maintenance rollups. - Added
scripts/run_maintenance_summary.pyandGET /trading/maintenance-summary. - Extended the workbench runtime panel with maintenance status, blockers/warnings, actions, and P23 assertion visibility.
- Added
UnattendedHarnessService,scripts/run_unattended_harness.py, andGET /trading/unattended-harness. - The harness validates policy suppression, dispatch retry contract, runtime watchdog, visual capture fallback, alert quality feedback rollup, visual media/channel rollup, operator digest, maintenance summary, and runtime environment blockers without using external channels or real trades.
Current Working State
- P7 is closed and remains a monitor-maturity routing layer, not a Research Council expansion.
- P8 review/capture/feedback surfaces remain implemented and unchanged in their execution guards.
- P9 quality rollup remains implemented and visible in both the dashboard and review packet.
- P10 retention cleanup remains implemented and visible in runtime plus workbench flows.
- P11 runtime watchdog remains implemented and visible in runtime status, API, script, and workbench flows.
- P12 silent-window noise control remains implemented and visible in dispatcher, summary, runtime, and workbench flows.
- P13 retry recovery remains implemented: failed alerts can be re-scanned, deferred during backoff, and stopped after bounded retry exhaustion.
- P14 transport retry is implemented: single webhook send attempts can now be retried in-process before the alert falls back to failed delivery state.
- P14 transport visibility is implemented: dispatcher results expose
transport_attempt_count, delivery summary exposestransport_retried_delivery_count/transport_retry_failed_count, and runtimealert_dispatchdetails expose transport retry counters. - P15-PXX is now a finite known-scope queue: P15 noise policy matrix, P16 browser screenshot capture adapter, P17 visual trigger ROI router, P18 visual evidence media dispatch, P19 multi-channel routing, P20 operator digest/review queue, P21 runtime incident journal, P22 maintenance rollup, P23 unattended harness, P24 remote smoke, and PXX closure gate.
- P15 noise policy matrix is implemented: external alert sends can be suppressed by severity, alert type, duty mode, operator mode, silent window, or cooldown while workbench visibility remains intact.
- P15 visibility is implemented: dispatcher payloads include
delivery_policy, delivery summary includes noise-policy/workbench-only/external-allowed counters, runtimealert_dispatchdetails expose policy counters, and the workbenchAlert Qualitypanel displays them. - P16 browser screenshot capture is implemented: visual snapshot capture now writes HTML/JSON artifacts and, when browser capture is available, a PNG screenshot; when unavailable, it returns structured
browser_capture_status=unavailablewithout interrupting the visual-watch flow. - P16 workbench visibility is implemented: Visual Reviews now expose browser capture status, image path, HTML path, and artifact path.
- P17 visual trigger ROI routing is implemented: ordinary observe/monitoring states now produce
observe_monitoring_not_high_valueinstead of reserving visual review, while actionable, blocked, market degraded, broker/reconciliation degraded, and council-recommended watch items produce explicit trigger types. - P17 visibility is implemented: decision alert payloads carry
visual_trigger_policy/visual_trigger_roi, runtime exposes trigger/skip counts, visual review summaries count trigger types and review results, and the workbench displays trigger counters. - P18 visual media evidence dispatch is implemented: visual review context now becomes a stable
media_evidenceblock with channel-awaremedia_attached,media_linked, ormedia_unavailablestatus. - P18 visibility is implemented: dispatcher payloads/results, delivery summary, runtime
alert_dispatchdetails, script output, visual review API, and workbench panels expose media evidence status. - P19 multi-channel alert routing is implemented: routing now returns
channel_route,channel_health, channel capability metadata, and explicit disabled-adapter states for WeCom/Email when credentials/adapters are unavailable. - P19 visibility is implemented: dispatcher result exposes
channel_summary/channel_health/channel_disabled, delivery summary exposeschannel_status_counts, runtimealert_dispatchdetails expose channel health, and the workbenchAlert Qualitypanel shows channel counts. - P20 operator digest/review queue is implemented: recent high-value alerts, suppressed deliveries, failed/retry deliveries, visual mismatches, and pending feedback items are aggregated into a bounded review queue.
- P20 visibility is implemented:
scripts/run_operator_digest.py,/trading/alerts/operator-digest, focused tests, and the workbenchAlert Qualitypanel expose digest status, counts, warnings, and top queue items. - P21 runtime incident journal is implemented: runtime/watchdog/blocker/noisy incident signals can be normalized into persisted incidents with severity, source, reason, subject, first/last seen timestamps, occurrence count, and recommended action.
- P21 visibility is implemented:
/trading/runtime-incidents,scripts/run_runtime_incident_journal.py,runtime_status.incident_summary,run_trading_runtime.py, and the workbench runtime panel expose incident counts and recommendations. - P22 maintenance retention rollup is implemented: visual capture retention dry-run stats, alert delivery health, feedback sample health, runtime watchdog, and incident journal health are aggregated into
checks,blockers,warnings,maintenance_actions, andp23_assertions. - P22 visibility is implemented:
/trading/maintenance-summary,scripts/run_maintenance_summary.py, and the workbench runtime panel expose maintenance state without deleting business data. - P23 unattended harness is implemented: a single local command/API call returns mode, passed checks, warnings, blockers, and trimmed payloads across P15-P22 key paths.
- P23 is analysis/decision-only:
external_channels_used=falseandreal_trade_required=false. - Latest
scripts/run_visual_review.pysmoke found no pending reviews: attempted=0, reviewed=0, status=idle. - Latest capture smoke returned
status=ignoredwhen no watch run was supplied, which is the expected safe no-op. - Latest cleanup smoke deleted one expired temporary artifact through
scripts/run_visual_capture_cleanup.py. - Latest watchdog smoke returned
stalled_task_count=0throughscripts/run_runtime_task_watchdog.py. - Latest silent-window smoke returned
active=truethroughscripts/run_alert_silent_window_status.pyand exposed the same state through/trading/alerts/silent-window-status. - Latest dispatcher smoke returned retry-related fields (
retry_candidates=0,retried=0,deferred_retry_backoff=0,retry_exhausted=0) throughscripts/run_alert_dispatcher.py. - Latest
scripts/run_trading_runtime.pysmoke returned blockers=none and includes a healthyvisual_watchruntime task. - Latest local runtime smoke confirmed
runtime_status.tasks.alert_dispatch.detailsnow exposes retry and silent-window counters with blockers=none.
P23 Blockers
- none
Current Risks Or Open Questions
- Browser screenshot capture adapter is a future enhancement, not a P8 closure blocker. The current adapter is an advisory review-packet HTML capture, and the review loop can still use an existing snapshot, an explicit
image_path, or write anunavailablestructured review. - Visual review remains advisory and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- Alert-quality statistics remain advisory and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- Capture cleanup remains operational only and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- Runtime watchdog remains operational only and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- Silent-window suppression remains operational only and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- Retry recovery remains operational only and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- Transport retry remains operational only and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- P15-PXX must remain automation execution-layer work and must not reopen Research Council phases or create new trading permissions.
- P15 noise policy remains operational only and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- P16 browser screenshot capture remains advisory evidence only and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- P17 visual trigger routing remains advisory evidence routing only and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- P18 media evidence remains delivery metadata/fallback routing only and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- P19 channel routing remains notification routing/observability only and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- P20 operator digest remains read-only review aggregation only and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- P21 runtime incident journal remains observability/persistence only and must not change execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- P22 maintenance summary remains read-only and uses visual capture retention dry-run statistics only; it must not delete business data or alter execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- P23 unattended harness remains a local/remote smoke verifier only and must not use external channels, require real trades, or alter execution permission, live readiness, trust bucket, risk governor, or operator confirmation.
- A final rerun of
scripts/run_alert_dispatcher.pyandscripts/run_trading_runtime.pyhit local PostgreSQL connection timeout because nothing was listening on127.0.0.1:5432; the P14 code path is still covered by full unit tests and earlier successful smoke during implementation. - P15 dispatcher smoke succeeded with
suppressed_noise_policy,workbench_only, andpolicy_external_allowedcounters present. P15 runtime smoke reachedalert_dispatchsuccessfully, but the overall runtime returned external environment blockers for market stream disconnected and OKX read transport connection refused. - P16 direct browser smoke succeeded locally with
browser_capture_status=captured. Script-level capture without a watch run still returns safe no-opwatch_run_missing. - P17 visual review smoke returned
status=idle,skip_reason=no_pending_visual_watch_runs, and empty trigger/review counters, which is the expected safe no-op when no policy-backed visual watch is pending. - P17 quality-summary API smoke returned 200 and exposed
visual_review_summary.trigger_type_counts/review_result_counts. - Latest P17 runtime smoke returned blockers=none and exposes
decision_packet.details.visual_trigger_*plusvisual_watch.details.skip_reason/ trigger counts. - P18 dispatcher smoke returned attempted=0 and media counters present as safe no-op:
media_attached=0,media_linked=0,media_unavailable=0. - P18 quality-summary API smoke returned 200 and exposed
delivery_summary.media_attached_count,media_linked_count, andmedia_unavailable_count. - Latest P18 runtime smoke returned blockers=none and exposes
alert_dispatch.details.media_attached/media_linked/media_unavailable. - P19 dispatcher smoke returned attempted=0 and exposed
channel_health.enabled_channels=["workbench"]plus disabledwebhook,wecom, andemailcredential-missing states. - P19 quality-summary API smoke returned 200 and exposed
delivery_summary.channel_status_counts. - Latest P19 runtime smoke returned blockers=none and exposes
alert_dispatch.details.channel_healthandchannel_summary. - P20 focused tests passed for digest service, script JSON/text output, API route, and dashboard route inventory; full
tests/unitpassed with 685 tests. - P20 smoke returned
status=completedthroughscripts/run_operator_digest.pywith review_queue=10, API route smoke returned 200 with review_queue=3, and runtime smoke returned blockers=none. - P21 local migration applied
043_create_runtime_incidents.sql. - P21 full validation passed: 691 unit tests, 69 script static checks,
node --check src/web/app.js, and runtime smoke blockers=none withIncident journal: idle / 0. - P21 script/API smoke returned idle persisted incident journal state, which is expected when no current runtime incidents are present.
- P22 full validation passed: 696 unit tests, 70 script static checks, and
node --check src/web/app.js. - P22 script/API smoke returned
status=warningwithwarnings=['feedback.sample_health'], blockers=[], automatic_actions=[], and P23 assertions visible. - P23 full validation passed: 701 unit tests, 71 script static checks, and
node --check src/web/app.js. - P23 script/API smoke returned
status=passed, passed_checks=9, warnings=[], blockers=[],external_channels_used=false, andreal_trade_required=false. - Real-live order submission remains intentionally disabled because the OKX order adapter is still not a real-live submitter.
Exact Next Step
P23 is locally closed. Default next action is P24 Remote Smoke And Ops Closure: deploy current HEAD when the remote environment is reachable, apply migrations, and smoke /health, runtime status, review packet, alert quality, visual watch, maintenance summary, and the P23 harness.
Validation Commands Used Recently
D:\ai-exchange\.venv\Scripts\python.exe -m unittest tests.unit.test_visual_review_service tests.unit.test_run_visual_review tests.unit.test_trading_runtime_service tests.unit.test_api_and_main tests.unit.test_api_server
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_script_static_checks.py
D:\ai-exchange\.venv\Scripts\python.exe -m unittest tests.unit.test_run_until_blocked tests.unit.test_monitoring_alert_rollout tests.unit.test_runtime_script_json
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_visual_review.py
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_visual_snapshot_capture.py
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_visual_capture_cleanup.py
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_runtime_task_watchdog.py
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_alert_silent_window_status.py
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_trading_runtime.py
D:\ai-exchange\.venv\Scripts\python.exe -m unittest tests.unit.test_visual_snapshot_capture_service tests.unit.test_run_visual_snapshot_capture tests.unit.test_api_static_server
D:\ai-exchange\.venv\Scripts\python.exe -m unittest tests.unit.test_visual_trigger_policy_service tests.unit.test_decision_packet_service tests.unit.test_research_council_decision_packet_fields tests.unit.test_visual_review_service tests.unit.test_alert_quality_summary_service tests.unit.test_trading_runtime_service tests.unit.test_run_visual_review
D:\ai-exchange\.venv\Scripts\python.exe -m unittest discover -s tests/unit
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_visual_review.py
D:\ai-exchange\.venv\Scripts\python.exe -m unittest tests.unit.test_visual_media_evidence_service tests.unit.test_alert_feedback_service tests.unit.test_alert_quality_summary_service tests.unit.test_trading_runtime_service tests.unit.test_api_and_main
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_alert_dispatcher.py
D:\ai-exchange\.venv\Scripts\python.exe -m unittest tests.unit.test_channel_router_service tests.unit.test_alert_feedback_service tests.unit.test_alert_quality_summary_service tests.unit.test_trading_runtime_service
D:\ai-exchange\.venv\Scripts\python.exe -m unittest tests.unit.test_operator_digest_service tests.unit.test_run_operator_digest tests.unit.test_api_server.ApiServerRoutingTests.test_routes_trading_alert_operator_digest tests.unit.test_api_static_server.ApiStaticServerTests.test_dashboard_uses_canonical_trading_routes
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_operator_digest.py
D:\ai-exchange\.venv\Scripts\python.exe -m unittest tests.unit.test_runtime_incident_journal_service tests.unit.test_run_runtime_incident_journal tests.unit.test_trading_runtime_service tests.unit.test_api_static_server.ApiStaticServerTests.test_dashboard_uses_canonical_trading_routes
D:\ai-exchange\.venv\Scripts\python.exe scripts\apply_migrations.py
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_runtime_incident_journal.py
D:\ai-exchange\.venv\Scripts\python.exe -m unittest tests.unit.test_maintenance_summary_service tests.unit.test_run_maintenance_summary tests.unit.test_api_server.ApiServerRoutingTests.test_routes_maintenance_summary tests.unit.test_api_static_server.ApiStaticServerTests.test_dashboard_uses_canonical_trading_routes
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_maintenance_summary.py
D:\ai-exchange\.venv\Scripts\python.exe -m unittest tests.unit.test_unattended_harness_service tests.unit.test_run_unattended_harness tests.unit.test_api_server.ApiServerRoutingTests.test_routes_unattended_harness
D:\ai-exchange\.venv\Scripts\python.exe scripts\run_unattended_harness.py