Skip to content

Flags and incremental state (all jobs, desktop and online)

Rule (Atul, 18 Oct): every job — desktop (collector, harness, local models such as Gemini or Ollama jobs) or online (Claude check-in, MMDEP Assistant, hosted CI fallback) — follows the heartbeat and does incremental work only: it reads its state, processes only what changed since its last run, and writes its state back, so no other job repeats it. A new job is not merged until it has a row here.

Shared flags

Flag Where Written by Meaning
Heartbeat control branch: heartbeat.json, HEARTBEAT.md Collector (hourly, wake, unlock, reconnect) ACTIVE while now < active_until_utc: the laptop is up and desktop jobs own laptop work
Laptop runner status inside heartbeat.json Collector, from GitLab online / offline / unknown
Stop switch control branch: harness/STOP Atul or MMDEP-PM Harness does nothing while present
Check-in late control branch: heartbeat.json (checkin_late, checkin_last_utc), HEARTBEAT.md, and the MMDEP row of latest.md (check-in late: last <time or none>) Collector, from the last commit to check-ins/ on reports (or docs/status/check-ins/ on main) The Claude check-in (08:50 and 19:50 IST) has left no report for over 14 hours
Data source failing control branch: data_sources.json (per ID: status, ms, content type, bytes, fails in a row), latest.md section "Data sources (daily)" and the MMDEP row's flags (data source <ID> failing <n> days in a row (<status>)) Collector, once a day, a read-only GET of each URL row in docs/registers/data-sources.md (#66) A registry source failed (non-2xx or timeout) two daily checks in a row; one failure is shown but not flagged
Memory: sessions stale control branch: memory.json, the repository's Flags in latest.md (memory: sessions stale) Collector, every 6 h (backlog B14, #92), read-only docs/sessions/ has no commit within 24 h of the repository's latest commit, or is missing; a repository it can't read shows "not visible" and no flag
Memory: CURRENT.md stale as above (memory: CURRENT.md stale); counts of open decision-log and question-atul items in the section "Memory (rules §21)" Collector, every 6 h (#92) docs/knowledge/CURRENT.md is missing or older than the last commit outside docs/

Job state (cursor per job)

Job Runs on State file Incremental rule
Collector Laptop control: latest.json, history/ Snapshot each run; daily and weekly checks reuse cached results (site.json, certs.json) until stale
Harness Laptop control: harness/state.json, ledger.csv, LATEST.md Skips issues already pushed (waiting for review) and issues that failed until their body changes
Claude check-in Cloud (scheduled) main: docs/status/check-ins/state.json Only issues, PRs, branches and panel answers changed since last_run_utc; run-jobs only when heartbeat ACTIVE
MMDEP Assistant ChatGPT (attended) reports: state/mmdep-assistant.json Digest covers only items changed since last_digest_utc; ONLINE MODE only when heartbeat INACTIVE
Hosted CI fallback GitLab / GitHub cloud the pipeline itself + minutes in the digest Only for security, release or critical items, only while heartbeat INACTIVE, within the group budget (DR-011)
Actions sync (#57) Laptop, after each collector snapshot reports: actions/state.json (last Atul answers comment handled, every decision and whether it was commented and reached main) Only answer comments after the cursor; each decision commented and relayed once; a relay row lost before main is written again
Knowledge extract (B12) Laptop (by hand or scheduled) branch knowledge/<date>: docs/knowledge/state.json (hash per chat ID) Only chats new or changed since their last extract; cost to harness/spend.csv, stops before the monthly cap
Future model jobs (triage, preflight, quota probe) Laptop or cloud control: jobs/<job>/state.json Same pattern: read cursor, process new items, write cursor; check heartbeat first

State file shape

{"job": "mmdep-assistant", "last_run_utc": "2026-10-18T06:30+00:00", "cursor": {"issues_updated_after": "...", "answers_rows": 142}, "handled": ["MMDEP#21", "PE#337"]}