{
  "schemaVersion": 2,
  "date": "2026.08.16",
  "publishedAt": "2026-08-16T15:13:13-07:00",
  "timeZone": "America/Los_Angeles",
  "title": "Retiring Daylab and restoring the continuous ranked queue",
  "publicationStatus": "Continuous queue restored and independently observed advancing ranked incidents",
  "executiveSummary": [
    "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."
  ],
  "workstreams": [
    {
      "title": "Legacy Daylab retirement",
      "status": "Completed",
      "details": [
        "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."
      ]
    },
    {
      "title": "Canonical queue recovery",
      "status": "Completed",
      "details": [
        "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."
      ]
    },
    {
      "title": "Operational safeguards and validation",
      "status": "Completed",
      "details": [
        "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": [
    "Use the continuous ranked queue as the only persistent automatic improvement mechanism.",
    "Keep bounded Daylab functions only as explicit diagnostics; reject all implicit persistent Daylab launches.",
    "Reset the breaker only after verifying that its recorded dirty-repository condition had been removed.",
    "Use the queue's own audited reset API rather than editing runtime state directly.",
    "Require evidence of a later scheduler-owned event sequence before calling the queue operative.",
    "Treat candidate revision rejection as normal scientific feedback and reserve the infrastructure breaker for execution-environment failures."
  ],
  "validation": [
    {
      "check": "Daylab process isolation and shutdown",
      "status": "passed",
      "result": "The two legacy Daylab PIDs were stopped; the Hiro API and Qwen model-server processes were left running; no hiro.lab.daylab process remained."
    },
    {
      "check": "Persistent launcher fail-closed behavior",
      "status": "passed",
      "result": "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."
    },
    {
      "check": "Focused active-loop and Daylab tests",
      "status": "passed",
      "result": "10 focused tests passed, including both persistent-launch guards and retained bounded diagnostic behavior."
    },
    {
      "check": "Continuous queue recovery cycle",
      "status": "passed",
      "result": "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."
    },
    {
      "check": "Independent recurring scheduler evidence",
      "status": "passed",
      "result": "New scheduler-owned investigation and potential-confirmation events appeared after the recovery invocation had ended, with a fresh exclusive lease and ranked incident selection."
    },
    {
      "check": "Full Hiro regression suite",
      "status": "passed",
      "result": "635 tests passed in 175.95 seconds."
    },
    {
      "check": "Journal test and production build",
      "status": "passed",
      "result": "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."
    }
  ],
  "currentState": [
    "No persistent Daylab process is running, and both former persistent launch paths are fail-closed.",
    "The Hiro API scheduler owns the continuous ranked queue and has independently selected and advanced work after breaker recovery. The live API reports one active candidate for a correction-recovery incident, 34 actionable ideas, 27 waiting, six retrying, and three implemented.",
    "The queue's infrastructure breaker is closed at one of three after the expected transition-time manifest mismatch; normal candidate rejections and bounded retries remain part of the operating loop.",
    "The current open-problem agenda calibration gate remains separate from this standard continuous queue and is not bypassed by the recovery.",
    "The implementation is committed as 391c4f1 and c004c1e on codex/rsi-first-cycle."
  ],
  "limitations": [
    "A long model-backed candidate evaluation can hold the queue lease for several minutes; current dashboard reads may be delayed if synchronous evaluation work occupies the API event loop.",
    "The transition commit invalidated one already-assembled candidate manifest, which was correctly classified as an infrastructure retry rather than evaluated against the wrong revision.",
    "Restoring queue execution does not resolve the separate evaluator-calibration requirement for the open-problem agenda.",
    "One-off Daylab diagnostics remain callable by explicit flags for bounded research use; they are not automatic queue owners."
  ],
  "nextSteps": [
    "Continue monitoring completed, revision-retry, and infrastructure-retry rates to distinguish proposal quality from harness reliability.",
    "Move long candidate evaluation off the API event loop if live dashboard responsiveness remains degraded during leased work.",
    "Expose the current runner lease, selected idea, next action, and breaker reason prominently on the benchmark queue tab.",
    "Continue the dedicated-inference-lane calibration work before allowing the separate open-problem agenda to construct another candidate."
  ]
}
