disinto-ops/prerequisites.md
planner-bot f045204d92 chore: planner run 2026-04-17
- Updated prerequisite tree: #425 closed, added Nomad backend and
  hire-an-agent objectives, tracked S2 verification bugs
- Filed vault procurement for #758 (ops repo branch protection)
- Memory update (runs 3-13 summarized): constraint focus shifted to
  #758 root blocker and hire-an-agent cascading bugs
2026-04-17 01:06:17 +00:00

6.5 KiB

Prerequisite Tree

Objective: Foundation — Core agent loop (dev → CI → review → merge)

  • dev-agent picks up backlog issues (dev/dev-agent.sh exists)
  • review-agent reviews PRs (review/review-pr.sh exists)
  • CI integration with Woodpecker (lib/ci-helpers.sh exists)
  • Stale in-progress recovery (#224 — closed)
  • Agent race condition fix (#160 — closed)
  • Dispatcher grep Alpine fix (#150 — closed) Status: DONE

Objective: Foundation — Supervisor health monitoring

  • supervisor-run.sh exists and runs via cron
  • preflight.sh collects health data Status: DONE

Objective: Foundation — Planner gap analysis against vision

  • Planner formula exists (run-planner.toml v4)
  • planner-run.sh cron wrapper exists
  • Planning runs established and maintaining prerequisite tree Status: DONE

Objective: Foundation — Multi-project support

  • Per-project TOML config (projects/*.toml)
  • load-project.sh helper Status: DONE

Objective: Foundation — Knowledge graph for structural defect detection

  • networkx package installed in agents container (#220 — closed)
  • build-graph.py exists in lib/
  • Graph report generating successfully (215 nodes, 259 edges as of 2026-04-17) Status: DONE

Objective: Foundation — Predictor-planner adversarial feedback loop

  • Predictor formula exists (run-predictor.toml)
  • Planner prediction triage step defined
  • Prediction workflow labels created on Forgejo (#225 — closed)
  • Predictor filing predictions (4 predictions triaged in run 2) Status: DONE

--- FOUNDATION MILESTONE: DONE ---

Objective: Adoption — One-command bootstrap (disinto init → disinto up)

  • disinto init re-run stability (#158 — closed)
  • disinto init repo creation API endpoint (#164 — closed)
  • Prediction labels created during init (#225 — closed)
  • Ops repo migration code landed (#425 — closed)
  • Ops repo branch protection blocks agent writes (#758 — open, HUMAN_BLOCKED, blocked-on-vault vault/pending/disinto-ops-branch-protection.md)
  • Re-seed ops repo directories on live deployment (#820 — open, blocked on #758)
  • issue_claim race — verify assignee after PATCH (#830 — open, priority) Status: BLOCKED — #758 ops repo branch protection requires human admin action

Objective: Adoption — Built-in Forgejo + Woodpecker CI

  • Docker compose with Forgejo + Woodpecker
  • Woodpecker OAuth2 redirect URI fix (#172 — closed)
  • WOODPECKER_HOST override fix (#178 — closed) Status: DONE

Objective: Adoption — Nomad deployment backend

  • --backend=nomad flag + stub (#821 — in-progress)
  • Nomad + systemd install (#822 — in-progress)
  • Vault install + auto-unseal (#823 — in-progress)
  • Orchestrator init (#824 — in-progress)
  • CI validation for nomad/vault artifacts (#825 — in-progress)
  • S0.1-fix: --backend swallowed as positional (#835 — in-progress)
  • S0.2-fix: install.sh must install docker daemon (#871 — closed)
  • Nomad job forgejo.hcl (#840 — in-progress)
  • deploy.sh dependency-ordered job run (#841 — open)
  • Wire --with forgejo into init --backend=nomad (#842 — in-progress)
  • CI: nomad job validate (#843 — open, orphan in graph)
  • Vault policies + apply script (#879 — in-progress)
  • vault-import.sh (#880 — open)
  • Vault JWT auth + nomad workload identity (#881 — in-progress)
  • forgejo.hcl reads Vault secrets via template stanza (#882 — in-progress)
  • disinto init --import-env / --import-sops (#883 — in-progress)
  • CI: vault policy fmt + validate (#884 — backlog)
  • S2-fix bugs blocking step 2 verification (#912, #920-#922, #926, #928) Status: IN PROGRESS — step-0 through step-2 active, multiple S2 verification bugs

Objective: Adoption — Multi-agent parallel operation (hire-an-agent)

  • hire-an-agent + compose generator defects (#834 — in-progress, priority)
  • TOML agent section name with dash crashes load-project.sh (#862 — in-progress, priority)
  • hire-an-agent does not add collaborator (#856 — open, priority)
  • hire-an-agent TOML editor corrupts on re-run (#886 — open, priority)
  • entrypoint clone path vs TOML parse mismatch (#861 — open, priority)
  • Parametric llama bots via LLAMA_BOTS env (#831 — open, priority)
  • Generate one compose service per LLAMA_BOTS entry (#832 — backlog, priority)
  • Compose generator duplicate service name detection (#850 — blocked) Status: IN PROGRESS — multiple critical bugs in hire-an-agent flow

Objective: Adoption — Landing page communicating value proposition

  • Website addressable exists (disinto.ai)
  • Website observability — no engagement measurement (#426 — vision) Status: BLOCKED — no evidence process connected to website

Objective: Adoption — Example project demonstrating full lifecycle

  • No example project exists (#697 — vision, priority)
  • Requires verified bootstrap (blocked on #758 → #820) Status: BLOCKED — depends on ops repo write access

Objective: Ship (Fold 2) — Deploy profiles per artifact type

  • No deploy profiles defined
  • CI pipeline working (Woodpecker OAuth fixed) Status: BLOCKED — not started, needs design (vision-level)

Objective: Ship (Fold 2) — Vault-gated fold transitions

  • Vault redesign complete (#73-#77 — all closed)
  • Vault PR workflow documented (docs/VAULT.md)
  • Vault directories in ops repo (#820 — blocked on #758) Status: BLOCKED — #820 ops repo dirs needed for vault workflow

Objective: Ship (Fold 2) — Engagement measurement baked into deploy pipelines

  • No engagement measurement exists
  • No observables yet (AGENTS.md confirms) Status: BLOCKED — depends on deploy profiles + website observability (#426)

Objective: Ship (Fold 2) — Rent-a-human for gated channels

  • run-rent-a-human formula exists
  • Not yet exercised in production Status: READY

Objective: Ship (Fold 2) — Assumptions register

  • No assumptions register exists Status: BLOCKED — not started

Objective: Learn (Fold 3) — Observable-driven planning

  • No observables exist yet Status: BLOCKED — depends on Ship milestone (engagement measurement)

Objective: Learn (Fold 3) — Predictor challenges assumptions against signals

  • Requires observables + assumptions register Status: BLOCKED — depends on Ship milestone

Objective: Learn (Fold 3) — Audience variation + signal detection

  • Requires observables Status: BLOCKED — depends on Ship milestone