Files
cold_display_guard/progress.md

34 KiB

Progress

2026-04-27

  • Created project directory ~/Code/cold_display_guard.
  • Confirmed standalone project scope and initial project name.
  • Started file-based planning files.
  • Created core engine, config loader, CLI, README, design doc, implementation plan, and tests.
  • First test run failed because _end_batch() set ended_at before calculating dwell seconds, causing ended batches to report 0 seconds. Fixed by calculating dwell before assigning ended_at.
  • Test suite now passes: PYTHONPATH=src python3 -m unittest discover -s tests -v.
  • Initialized git repository and created the initial project commit.
  • Added RTSP single-frame calibration tool under tools/calibrator.
  • Added formal management API on port 19080 and Vite frontend on port 23000.

2026-05-26 v1.1 优化改造

Session Log

Time Batch Workstream Actor Action Result
2026-05-26 Batch setup and planning Main Agent Created active goal for v1.1 优化改造 Goal tracks dynamic zones, trash ROI editing, custom alarm threshold, warning escalation
2026-05-26 Batch setup and planning Main Agent Started backend and frontend planning sub-agents Waiting for role outputs while updating plan files
2026-05-26 Batch setup and planning Main Agent Updated task_plan.md and findings.md with v1.1 scope v1.1 优化改造 planning in progress
2026-05-26 Batch setup and planning Frontend Agent Returned frontend planning notes Added dynamic zones, trash ROI, event display, and validation notes to findings.md
2026-05-26 Batch setup and planning Backend Agent Returned backend event model and test risk notes Added event flow, summary risk, and compatibility notes to findings.md
2026-05-26 Batch setup and planning User Clarified that all requested work belongs to one v1.1 development batch with different workstreams Updated task_plan.md and docs/project.md wording
2026-05-26 Batch setup and planning User Asked to remove earlier split-work wording and make it part of one batch Renamed v1.1 plan table to batch workstreams and replaced split-work wording in progress
2026-05-26 Batch setup and planning User Set the batch name to v1.1 优化改造 Updated planning documents to use this name
2026-05-26 Backend event model Review Agent Re-reviewed event model after severity fix Pass; no blocking issues for Config/API workstream
2026-05-26 Batch setup and planning User Required a standard context header before each subagent task dispatch Added header convention to task_plan.md and findings.md; future subagent prompts will include project, batch, stage, and role
2026-05-26 Batch setup and planning User Clarified that 项目 in subagent task headers should use the actual project path Updated the required header path to /Users/yoilun/Code/cold_display_guard
2026-05-26 Config and management API Main Agent Added 1-10 numeric zone validation, zone_count, label, trash ROI separation, and alarm/warning summary counts Target config/API tests and full Python tests passed
2026-05-26 Config and management API Review Agent Reviewed Config/API workstream No blocking issues; raised two major contract issues, both fixed with regression tests
2026-05-26 Frontend management console Main Agent Added dynamic 1-10 numeric zone editor, independent trash ROI editing, minute-based alarm threshold, and alarm/warning event rendering Frontend unit test and Vite build passed
2026-05-26 Frontend management console Frontend Agent Reviewed frontend workstream No blocking issues; raised two major legacy-mapping/label issues, both fixed with regression tests and sent for re-review
2026-05-26 Documentation and final review Main Agent Updated README_zh.md, docs/project.md, and config/example.toml for v1.1 numeric zones and event flow Docs now describe one v1.1 优化改造 batch and current configuration/event model
2026-05-26 Frontend management console Frontend Agent Re-reviewed frontend legacy mapping and label normalization fixes Pass; no blocking, no major, no new minor issues
2026-05-26 Documentation and final review Review Agent Ran final v1.1 review No blocking; found two major issues in removal-time alarm ordering and partial calibration zone-count preservation, plus one planning-doc minor
2026-05-26 Documentation and final review Main Agent Fixed final review issues Added tests and fixes for removal-frame time_alarm, partial numeric calibration preserving zone_count, and updated top-level plan wording
2026-05-26 Documentation and final review Review Agent Re-reviewed final fixes Pass; no blocking, no major, no minor issues
2026-05-26 Documentation and final review Main Agent Completed v1.1 优化改造 batch Stop conditions satisfied and final verification recorded
2026-05-26 Homepage demo runtime display Main Agent Cleared old event data and added complete demo runtime homepage Homepage now defaults to runtime view with demo banner, metrics, dwell progress, and event table when real events are empty
2026-05-26 Homepage demo runtime display Frontend Agent Implemented demo runtime display and tests Added buildRuntimeDisplayModel, progress rows, demo/real labels, and responsive styles
2026-05-26 Homepage demo runtime display Review Agent Reviewed homepage demo runtime display Found progress ordering, threshold fallback, and XSS issues; all were fixed with regression tests
2026-05-26 Homepage demo runtime display Review Agent Final re-review Pass; no blocking or major issues
2026-05-26 Homepage demo runtime display Main Agent Rebuilt Docker web service http://127.0.0.1:23000 serves nginx container with latest frontend asset
2026-05-26 Homepage demo runtime display User Reported that the runtime demo homepage was still not visible Reproduced in Chrome; found frontend initialization stopped before tab switching
2026-05-26 Homepage demo runtime display Main Agent Fixed null config runtime display crash buildRuntimeDisplayModel() now tolerates config: null; Chrome shows runtime page with demo data, metrics, progress, and event table
2026-05-26 Remote Docker deployment Main Agent Probed xiaozheng@192.168.5.206 for Docker availability Blocked by SSH authentication failure: Permission denied (publickey,password)
2026-05-26 Remote Docker deployment Main Agent Synced project to xiaozheng@192.168.5.206:/home/xiaozheng/cold_display_guard rsync -az --delete completed with .git, local env, node modules, web dist, and logs excluded
2026-05-26 Remote Docker deployment Main Agent Built and started Docker services on 192.168.5.206 API and Web are running; runtime was stopped because [stream].rtsp_url is empty
2026-05-26 Hide demo runtime data Main Agent Removed synthetic demo runtime summary/events/progress from the frontend model Empty or diagnostics-only runtime data now renders empty states and real metrics only
2026-05-26 Hide demo runtime data Main Agent Synced and rebuilt Web on 192.168.5.206 Remote Web serves index-D3qCb2DS.js without demo batch/camera or visible demo-data strings
2026-05-27 Runtime recognition startup Main Agent Checked whether recognition had started on 192.168.5.206 Runtime was stopped, then started after fixing remote timezone from shanghai to Asia/Shanghai; diagnostics show frame capture and baseline_ready: true
2026-05-27 Runtime recognition investigation Main Agent Investigated why zones 1 and 6 appeared to stop counting after 20 minutes Evidence shows zones 1 and 6 remain occupied; frontend freezes at the one-time time_alarm event dwell value because no live tick is emitted/rendered
2026-05-28 Runtime vision small-object detection Main Agent Investigated why zones 1/2/5 placements were missed, zone 4 started timing, and zone 2 produced repeated short events Evidence showed small dark objects were diluted by whole-region mean/texture while zone 4 reflection drove texture false positives
2026-05-28 Runtime vision small-object detection Main Agent Added dark-pixel fraction occupancy and bright-reflection filtering, then deployed to 192.168.5.206 Current remote diagnostics show zones 1/2/5 occupied and zone 4 empty
2026-05-29 Same-frame trash confirmation Main Agent Investigated why zone 1 was removed and trash motion was visible but still escalated Diagnostics showed deposit=true in the same frame as removal, but the engine applied trash deposits before creating pending_disposal
2026-05-29 Same-frame trash confirmation Main Agent Applied remaining trash deposits again after zone transitions and deployed to 192.168.5.206 Same-frame removal plus visible trash ROI motion now emits batch_pending_disposal followed by batch_discarded
2026-05-29 Zone 4 reflection and stale progress Main Agent Investigated why zone 4 kept timing and why zone 9/10 progress bars appeared Zone 4 had high bright reflection plus a small dark edge crossing the dark threshold; zone 9/10 came from historical events outside the current 1-8 config
2026-05-29 Zone 4 reflection and stale progress Main Agent Added high-bright/small-dark reflection suppression and filtered progress rows to current configured zones only Remote summary now reports zones 1-8 all empty and frontend model returns no progress rows
2026-05-29 Event table dwell display Main Agent Investigated why a zone 1 batch_started row kept counting after the batch was consumed Frontend displayed live dwell per row and did not know the same batch had a later terminal event
2026-05-29 Event table dwell display Main Agent Limited event-table live dwell to the latest non-terminal event per batch and deployed the Web container Removed batch_started rows now keep their recorded dwell value while the terminal row shows final dwell

Test Results

Time Command Result Notes
2026-05-26 PYTHONPATH=src python3 -m unittest tests/test_engine.py -v pass 11 engine tests passed after v1.1 event model changes
2026-05-26 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 20 full Python tests passed
2026-05-26 PYTHONPATH=src python3 -m unittest tests/test_config.py -v pass 6 config tests passed after numeric zone validation fixes
2026-05-26 PYTHONPATH=src python3 -m unittest tests/test_manage_api.py -v pass 7 manage API tests passed after warning summary fixes
2026-05-26 node --test web/test/zone-state.test.js pass 7 frontend zone-state tests passed
2026-05-26 cd web && pnpm build pass Vite production build passed
2026-05-26 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 28 full Python tests passed after v1.1 config/API changes
2026-05-26 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 30 full Python tests passed after final review fixes
2026-05-26 node --test web/test/zone-state.test.js pass 7 frontend zone-state tests passed after final review fixes
2026-05-26 cd web && pnpm build pass Vite production build passed after final review fixes
2026-05-26 node --test web/test/zone-state.test.js pass 14 frontend zone-state tests passed after homepage demo runtime and review fixes
2026-05-26 cd web && pnpm build pass Vite production build passed with latest homepage runtime asset
2026-05-26 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 30 full Python tests passed after homepage runtime changes
2026-05-26 docker compose --env-file cold-display-guard.env -f docker-compose.yml up -d --build cold-display-guard-web pass Docker web image rebuilt and container restarted
2026-05-26 node --test web/test/zone-state.test.js pass 15 frontend zone-state tests passed after null-config startup fix
2026-05-26 cd web && pnpm build pass Vite production build passed after null-config startup fix
2026-05-26 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 30 full Python tests passed after null-config startup fix
2026-05-26 docker compose build cold-display-guard-api cold-display-guard-web on 192.168.5.206 pass Built cold-display-guard:dev and cold-display-guard-web:dev
2026-05-26 docker compose up -d on 192.168.5.206 pass API, runtime, and web containers created; runtime exited due missing RTSP
2026-05-26 curl http://192.168.5.206:19080/api/manage/health pass API returned {"status":"ok"}
2026-05-26 curl -I http://192.168.5.206:23000/ pass Web returned HTTP/1.1 200 OK
2026-05-26 node --test web/test/zone-state.test.js pass 16 frontend model tests passed after hiding demo runtime data
2026-05-26 cd web && pnpm build pass Vite production build passed with index-D3qCb2DS.js
2026-05-26 docker compose up -d --build cold-display-guard-web on 192.168.5.206 pass Remote Web and API containers restarted; API healthy, Web returned HTTP/1.1 200 OK
2026-05-26 `rg "演示数据 DEMO DATA demo_batch
2026-05-27 docker ps -a --filter name=cold-display-guard on 192.168.5.206 pass Runtime is Up; API is healthy; Web is up
2026-05-27 tail -5 logs/runtime_diagnostics.jsonl on 192.168.5.206 pass Runtime is writing fresh diagnostics; baseline became ready and all 10 zones reported counts
2026-05-27 `grep '"zone_id": "1"' logs/events.jsonl tail -20on192.168.5.206` pass
2026-05-27 `grep '"zone_id": "6"' logs/events.jsonl tail -20on192.168.5.206` pass
2026-05-27 tail -5 logs/runtime_diagnostics.jsonl on 192.168.5.206 pass Latest diagnostics still report zones 1 and 6 as occupied: true
2026-05-27 node --test web/test/zone-state.test.js pass 18 frontend model tests passed after live dwell timer fix
2026-05-27 PYTHONPATH=src python3 -m unittest tests/test_vision.py -v pass Vision regression tests passed for consecutive occupancy confirmation and raised reflection threshold
2026-05-27 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 32 full Python tests passed after runtime vision changes
2026-05-27 pnpm build in web/ pass Vite production build passed with index-BkBYO5x5.js
2026-05-27 rsync -az --delete ... --exclude config/example.toml to 192.168.5.206 pass Code synced while preserving remote RTSP/calibration config
2026-05-27 Remote config append [runtime] thresholds pass Added occupancy_mean_delta = 45.0, occupancy_confirm_frames = 2, and empty_confirm_frames = 2 without changing RTSP
2026-05-27 docker compose build cold-display-guard-api cold-display-guard-web on 192.168.5.206 pass Built new API/runtime shared image and web image with live timer code
2026-05-27 docker compose up -d --no-deps cold-display-guard-api cold-display-guard-web on 192.168.5.206 pass API and Web restarted; runtime intentionally left running to avoid relearning baseline with items still present
2026-05-27 curl remote health and web index pass API returned healthy and Web serves index-BkBYO5x5.js
2026-05-27 node --test web/test/zone-state.test.js pass 20 frontend model tests passed after event-table live dwell and current-zone filtering
2026-05-27 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 36 full Python tests passed after runtime state restore and seeded vision baseline
2026-05-27 docker compose up -d --no-deps cold-display-guard-runtime cold-display-guard-api on 192.168.5.206 pass Runtime restarted on new image while preserving active 1/6/7 timers from event history and prior baseline
2026-05-27 tail -n 3 logs/runtime_diagnostics.jsonl on 192.168.5.206 pass New diagnostics include raw_occupied/streaks; 1/6/7 occupied, 3/4/5/8 empty
2026-05-27 Remote summary after 12 seconds pass Event count stayed at 579; no new false events after runtime restart
2026-05-28 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 39 full Python tests passed after dark-fraction occupancy and reflection filtering
2026-05-28 node --test web/test/zone-state.test.js pass 20 frontend model tests passed
2026-05-28 pnpm build in web/ pass Vite production build passed with index-DFRi3R8X.js
2026-05-28 rsync -az --delete ... --exclude config/example.toml to 192.168.5.206 pass Code synced while preserving remote RTSP/calibration config
2026-05-28 Remote config runtime patch pass Added dark-fraction and bright-reflection runtime thresholds without printing or changing RTSP
2026-05-28 docker compose build cold-display-guard-api and up -d --no-deps cold-display-guard-runtime cold-display-guard-api on 192.168.5.206 pass API/runtime rebuilt and restarted on the new image
2026-05-28 Remote diagnostics/API summary pass Current counts show zones 1/2/5 occupied and zones 3/4/6/7/8 empty; zone 4 has reflection texture but dark fraction remains 0.0
2026-05-29 PYTHONPATH=src python3 -m unittest tests.test_engine.BatchEngineTests.test_same_observation_removal_and_trash_motion_discards_alerted_batch -v red then pass Reproduced and fixed same-frame trash motion being ignored for a newly pending alerted batch
2026-05-29 PYTHONPATH=src python3 -m unittest tests.test_main -v red then pass Runtime restart state restore now uses dark-fraction/bright-reflection occupancy rules
2026-05-29 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 41 full Python tests passed after same-frame trash confirmation and restore-rule fixes
2026-05-29 node --test web/test/zone-state.test.js pass 20 frontend model tests still passed
2026-05-29 rsync -az --delete ... --exclude config/example.toml to 192.168.5.206 pass Code synced while preserving remote RTSP/calibration config
2026-05-29 docker compose build cold-display-guard-api and up -d --no-deps cold-display-guard-runtime cold-display-guard-api on 192.168.5.206 pass API/runtime rebuilt and restarted on the same-frame trash confirmation fix
2026-05-29 Remote status and diagnostics check pass Runtime/API are up; API healthy; latest diagnostics are being written after restart
2026-05-29 Targeted reflection/progress tests red then pass Added regressions for bright reflection with small dark edge, runtime restore/API recompute using that rule, and hiding historical zone 9/10 progress
2026-05-29 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 42 full Python tests passed after zone 4 reflection suppression
2026-05-29 node --test web/test/zone-state.test.js pass 21 frontend model tests passed after current-zone progress filtering
2026-05-29 pnpm build in web/ pass Vite production build passed with index-sJMxcaD6.js
2026-05-29 docker compose build cold-display-guard-api cold-display-guard-web and up -d --no-deps cold-display-guard-runtime cold-display-guard-api cold-display-guard-web on 192.168.5.206 pass Runtime/API/Web rebuilt and restarted with reflection and progress fixes
2026-05-29 Remote API/diagnostics/frontend model verification pass API latest_zone_counts shows zones 1-8 all 0; latest diagnostics show zone 4 occupied: false; model progress rows are empty
2026-05-29 node --test web/test/zone-state.test.js red then pass Added regression so batch_started rows stop live ticking after the same batch has a terminal event
2026-05-29 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 42 Python tests still passed after frontend-only dwell display fix
2026-05-29 pnpm build in web/ pass Vite production build passed with index-BoXFyXbk.js
2026-05-29 docker compose build cold-display-guard-web and up -d --no-deps cold-display-guard-web on 192.168.5.206 pass Remote Web rebuilt and serves index-BoXFyXbk.js
2026-05-29 Remote frontend model verification for batch_000473 pass batch_started displays 0 seconds and batch_consumed displays final 64 seconds
2026-05-29 API stable-occupancy regression tests red then pass latest_zone_counts now uses runtime's debounced occupied state before raw threshold fallback
2026-05-29 Trash sustained-motion regression test red then pass Two consecutive moderate trash motions below the strong threshold now confirm disposal
2026-05-29 Runtime restore stable-occupancy regression test red then pass Restart restore now preserves debounced occupancy for threshold-edge zones
2026-05-29 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 45 full Python tests passed
2026-05-29 node --test web/test/zone-state.test.js pass 22 frontend model tests passed
2026-05-29 docker compose build cold-display-guard-runtime cold-display-guard-api and up -d --no-deps cold-display-guard-runtime cold-display-guard-api on 192.168.5.206 pass Runtime/API rebuilt and restarted with stable count and sustained trash-motion fixes
2026-05-29 Remote API/diagnostics verification pass API healthy; runtime writes motion_streak/strong_motion/sustained_motion; API summary matches stable zone counts
2026-05-29 PYTHONPATH=src python3 -m unittest tests.test_vision.VisionTests.test_runtime_vision_defaults_raise_brightness_reflection_threshold -v red then pass Default runtime sampling is now dense enough for small ROIs: sample_stride_pixels = 4
2026-05-29 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 45 full Python tests passed after dense sampling default
2026-05-29 node --test web/test/zone-state.test.js pass 22 frontend model tests passed
2026-05-29 Remote runtime/API rebuild and config patch pass Remote config now has sample_stride_pixels = 4; runtime/API restarted
2026-05-29 Remote zone 1 diagnostics verification pass Zone 1 stayed occupied for 16 consecutive post-deploy checks; API summary reports zone 1 as occupied
2026-05-29 PYTHONPATH=src python3 -m unittest tests.test_engine.BatchEngineTests.test_same_observation_trash_motion_discards_multiple_newly_pending_batches -v red then pass Same-frame trash motion now discards multiple alerted batches that clear together
2026-05-29 PYTHONPATH=src python3 -m unittest tests.test_vision.VisionTests.test_detector_allows_quick_sequential_strong_trash_motions -v red then pass Quick sequential strong trash motions are no longer suppressed by the old 8-second cooldown
2026-05-29 PYTHONPATH=src python3 -m unittest discover -s tests -v pass 47 full Python tests passed after multi-zone trash confirmation fix
2026-05-29 node --test web/test/zone-state.test.js pass 22 frontend model tests passed
2026-05-29 Remote runtime/API rebuild and config patch pass Remote config now has trash_motion_cooldown_seconds = 3; diagnostics include in_cooldown

Bug Loop

Batch Workstream Bug Fix Attempt Retest Result
Backend event model Review agent found severity missing from some events such as batch_started and mixed_batch_violation Added regression assertions and made _event() assign default severity by event type Resolved; re-review passed
Config and management API Review agent found zone_count could conflict with numeric zone_ids, and pending disposal was counted as an upgraded warning Added regression tests; validate zone_count == len(zone_ids) and count only warning_escalated/legacy _violation as warning events Resolved; target tests and full Python tests passed
Frontend management console Frontend agent found old rows/cols configs without zone_ids lost legacy polygons, and old labels could be saved back to numeric zones Added regression tests; derive legacy rNcM source IDs from rows/cols and normalize labels to 区域 N Resolved; re-review passed
Documentation and final review Final review found removal observations at the threshold skipped time_alarm before pending disposal Added regression tests and moved time-alarm application before zone-clear transitions Resolved; Python tests passed
Documentation and final review Final review found partial calibration saves could shrink zone_count to the number of completed polygons Added frontend payload layout, backend merge support for target numeric zone IDs, and regression tests preserving existing polygons/count Resolved; Python and frontend tests passed
Homepage demo runtime display Review found real progress kept maximum dwell time instead of the latest event Added latest-event regression tests and selected per-zone progress by timestamp or event order Resolved; frontend tests passed
Homepage demo runtime display Review found event rows missing threshold values fell back to 1200 instead of config threshold Added regression test and inherited the configured threshold Resolved; frontend tests passed
Homepage demo runtime display Review found latest_zone_counts was interpolated into innerHTML without escaping Added shared escapeHtml() and escaped each zone-count fragment Resolved; final review passed
Homepage demo runtime display Browser showed static calibration page because runtime display read config.thresholds while config was still null Added regression test for config: null and normalized missing config to {} before deriving thresholds Resolved; Chrome verification shows runtime demo homepage
Remote Docker deployment SSH to xiaozheng@192.168.5.206 failed with Permission denied (publickey,password) Tried normal SSH and escalated SSH using the same host/user; local key was not accepted and no interactive password was available Blocked until credentials are provided or the local public key is authorized on the remote host
Remote Docker deployment Initial docker compose up -d --build attempted to pull cold-display-guard:dev before a local image existed Stopped the hanging SSH command, confirmed no existing local image, then explicitly ran docker compose build cold-display-guard-api cold-display-guard-web before up -d Resolved; images built and API/Web started
Remote Docker deployment cold-display-guard-runtime restarted repeatedly Checked runtime logs; root cause was ValueError: stream.rtsp_url is required because config/example.toml has an empty RTSP URL Stopped runtime container until an RTSP URL is configured
Hide demo runtime data Empty runtime data still generated synthetic demo summary/events/progress Added failing frontend tests, then replaced demo fallback with empty summary, empty events, and empty progress rows Resolved; frontend tests and build passed
Hide demo runtime data Legacy event.demo rows or cold_display_guard_demo summaries could still surface if old data existed Added failing regression test, filtered demo-marked events/summaries, and removed visible demo labels from event rendering Resolved; remote JS asset has no visible demo-data strings
Runtime recognition startup Runtime restarted after RTSP was configured but exited with ZoneInfoNotFoundError: 'No time zone found with key shanghai' Updated remote config and local example config to timezone = "Asia/Shanghai", then restarted runtime Resolved; runtime remains up and writes diagnostics
Runtime recognition investigation Frontend dwell display stops near the 20-minute alarm even while the item remains present Added live dwell computation from started_at for non-ended batches, one-second frontend re-render, five-second runtime-data polling, and broader event fetch limit Resolved; Web/API deployed
Runtime vision false positives Reflections in empty zones crossed the old mean-luma threshold and triggered occupancy/alarm Raised default occupancy_mean_delta to 55.0, added 2-frame occupied/empty confirmation, recomputed current counts in API from diagnostics, restored runtime state from events/diagnostics, and restarted runtime Resolved; latest diagnostics show only 1/6/7 occupied
Runtime vision small dark objects Zones 1/2/5 contained compact dark objects that did not always exceed whole-region mean/texture thresholds; zone 4 bright reflection exceeded texture threshold; zone 2 flickered around the old threshold and created repeated short batches Added dark-fraction metrics, required dark evidence for texture occupancy, ignored bright reflection without dark evidence, and added manage API recomputation with the same rule Resolved; latest remote diagnostics keep 1/2/5 occupied, 4 empty, and zone 2 no longer produces consume/start flicker after deployment
Same-frame trash confirmation Trash motion in the visible trash ROI could occur in the exact frame where an alerted zone was removed; the engine consumed trash deposits before it created the new pending-disposal batch, so the deposit was lost and the batch later escalated Added a regression test and reapplied leftover trash deposits after zone transitions; also updated runtime restore to use the dark-fraction rules before restart Resolved for future events; existing historical warning_escalated rows are not rewritten
Zone 4 reflection and stale zone 9/10 progress Zone 4 reflection produced both bright pixels and a small dark edge above the dark-object threshold; old zone 9/10 events were still eligible for progress rows because missing live counts were treated as occupied Added a reflection classifier for high-bright/small-dark patterns and required progress rows to belong to current configured food zones with explicit live occupancy when diagnostics are present Resolved; remote currently shows no occupied zones and no progress rows
Event table live dwell after removal Earlier batch_started rows had no ended_at, so the frontend kept applying live dwell even after a later event in the same batch ended it Event rows now compute live dwell only for the latest non-terminal event in each batch Resolved; removed batches no longer keep counting in their batch_started row
Zone 2 progress flicker API summary recomputed latest zone counts from raw metrics, bypassing runtime's occupied/empty confirmation; threshold-edge zone 2 could flip to 0 while runtime still held stable occupied Summary now prefers per-zone stable occupied from diagnostics, then falls back to raw recompute only for older diagnostics Resolved; API counts align with runtime stable state
Zone 2 disposal escalated after trash drop The zone 2 batch was removed and entered pending disposal, but trash motion_delta peaked around 10.1, below the one-frame threshold 18, so no trash deposit was counted before the deadline Added sustained trash-motion confirmation: two consecutive moderate motions at >= 8.0 count as a deposit, while the strong one-frame threshold remains Resolved for future events; historical batch_000474 warning row is not rewritten
Runtime restart can drop threshold-edge timers Runtime restore used raw threshold recompute instead of stable occupied, so a restart during a one-frame raw dip could lose an active timer Restore now uses stable occupied when present and keeps raw recompute only as a fallback Resolved; regression test covers zone 2-style flicker
Zone 1 timer reset Zone 1's ROI had too few samples with the default stride 8; dark evidence jumped between 0.0714 and 0.0357/0, causing two occupied frames followed by two empty frames and repeated short batches Reduced default and remote sample_stride_pixels to 4 so small ROI/object evidence is less quantized Resolved in current verification; zone 1 remains continuously occupied after deploy
Zone 1/4 disposal missed after zone 2 discard Zone 2 generated a trash deposit at 14:32:13; zone 1/4 cleared at 14:32:19, but their strong trash motion was inside the old 8-second cooldown, and one same-frame deposit could only discard one newly pending batch Reduced trash cooldown to 3 seconds and let one same-frame trash motion discard all newly pending alerted batches from that observation Resolved for future events; historical zone 1/4 rows are not rewritten

2026-05-29 v1.2 轨迹识别

Session Log

Time Phase Actor Action Result
2026-05-29 Setup Main Agent Created Goal for v1.2 轨迹识别 using /Users/yoilun/Code/cold_display_guard as the real project path Active goal tracks lightweight trajectory detection plus YOLO-ready evidence contract
2026-05-29 Setup Main Agent Read /Users/yoilun/Code/goal-subagents-workflow-prompt.md Workflow requires task files, stage-based coding/testing agents, bug loop limit, and standard subagent context header
2026-05-29 Setup Main Agent Read existing task_plan.md, findings.md, progress.md, and docs/project.md v1.1 state is complete; v1.2 plan can start on branch lightweight-trajectory-tracking

Test Results

Time Command Result Notes

Bug Loop

Phase Bug Fix Attempt Retest Result