Hiro development journal

Retiring Daylab and restoring the continuous ranked queue

Continuous queue restored and independently observed advancing ranked incidents Machine-readable JSON

Executive summary

Two orphaned legacy Daylab processes were still collecting periodic evaluation packets even though policy had already assigned automatic improvement work to Hiro's continuous ranked queue. They were stopped without interrupting Hiro or the loaded Qwen model.

The Daylab PowerShell launcher now defaults to status inspection and refuses Start. The Python module also refuses an implicit persistent daemon launch, closing the direct-command bypass while preserving explicit one-off diagnostic modes.

The ranked queue had paused behind a three-failure infrastructure circuit breaker caused by attempts made while the repository was dirty during implementation. After confirming the repository was clean, the breaker was reset through the queue's audited reset operation.

A manual recovery cycle and later independent scheduler cycles selected the highest-ranked actionable incidents, moved them through investigation and candidate construction, and recorded normal revision or infrastructure retry evidence. This demonstrates that the live scheduler, persistent queue, Qwen-backed candidate path, and retry semantics are operating without Daylab.

Work completed

Legacy Daylab retirement

Completed
  • Located two related hiro.lab.daylab processes whose original parent was no longer present and verified that they were separate from the Hiro API and LM Studio process trees.
  • Stopped the exact Daylab process tree and removed its stale PID record; subsequent process inspection found no Daylab daemon.
  • Changed scripts/hiro_daylab.ps1 so its safe default is Status and Start fails with an explicit pointer to hiro.improvement.active_loop.
  • Changed python -m hiro.lab.daylab with no bounded diagnostic option so it exits with an argument error instead of entering run_forever. Explicit run-once and finite burst modes remain available for manual diagnostics.

Canonical queue recovery

Completed
  • Confirmed that api.server starts hiro.lab.scheduler and that the scheduler invokes run_due_active_improvement on its recurring cadence.
  • Inspected the durable SQLite queue: 34 ideas were actionable, with 29 waiting and five retrying before recovery; no item was active because the infrastructure breaker was open.
  • The last three infrastructure failures were blocked_dirty_repository events from the preceding implementation window. After the implementation was committed and the tree was verified clean, the audited clear_infrastructure_failures operation reset the count from three to zero.
  • A recovery cycle selected the rank-one broad-interaction incident, reproduced its potential, constructed a candidate, and scheduled a revision after held-out epistemics, latency, baseline-contrast, and test-contract gates rejected the attempt.
  • At 22:08:42 UTC, the already-running scheduler independently reacquired the due retry and wrote new investigation_started and potential_confirmed events. It later continued selecting other ranked incidents, proving recurring operation rather than a one-shot manual invocation.

Operational safeguards and validation

Completed
  • The continuous queue remains the sole automatic improvement owner. Daylab cannot be restarted through either former persistent entrypoint.
  • The queue uses an exclusive runner lease and durable append-only events, so a long Qwen evaluation is represented as active leased work rather than an empty or competing loop.
  • One retry observed during the transition correctly rejected a stale candidate whose base commit no longer matched its Step 2 manifest after the Daylab guard was committed. The breaker remained closed and the scheduler moved to the next ranked incident.
  • The Qwen qwen/qwen3.8-27b local model remained loaded and the Hiro API process tree remained running throughout the repair.

Decisions and reasoning

Validation and evidence

CheckStatusResult
Daylab process isolation and shutdown passed The two legacy Daylab PIDs were stopped; the Hiro API and Qwen model-server processes were left running; no hiro.lab.daylab process remained.
Persistent launcher fail-closed behavior passed The PowerShell Status action reported not running, PowerShell Start failed with the retirement message, and python -m hiro.lab.daylab without an explicit bounded mode exited with status 2 and the same ownership guidance.
Focused active-loop and Daylab tests passed 10 focused tests passed, including both persistent-launch guards and retained bounded diagnostic behavior.
Continuous queue recovery cycle passed The clean-tree manual recovery cycle completed, left the breaker closed at zero failures, and produced a scientifically grounded candidate_revision_scheduled outcome for the rank-one idea.
Independent recurring scheduler evidence passed New scheduler-owned investigation and potential-confirmation events appeared after the recovery invocation had ended, with a fresh exclusive lease and ranked incident selection.
Full Hiro regression suite passed 635 tests passed in 175.95 seconds.
Journal test and production build passed npm run test:hiro passed. After installing the clean checkout's lockfile-pinned dependencies, npm run build generated and validated 138 journal entries, then TypeScript and Vite completed the production build successfully.

Current state

Next steps