Role: canonical delivery sequence and work-intake method Live status: always resolve from BACKLOG.md Product roadmap: ROADMAP.md (canonical, EN) Feature definitions: FEATURES.md Baseline: 2026-08-22, HEAD
f95ff84; re-verify before claiming work.
This document answers two questions:
- In which dependency order should SPA capabilities be delivered?
- Which bounded slice may an engineer/agent claim without colliding with another worktree?
It does not own task status. Task IDs appear here for sequencing; their current state,
owner and evidence live only in BACKLOG.md or the archive.
- Measurement truth before model optimization or autonomy.
- Finish claimed work before widening WIP.
- Deterministic/safety gates before semantic judges.
- Account isolation before persona, policy and multi-account automation.
- Accepted ADR before a feature whose decision is still
Proposed. - Side-effect-free experiments before shadow, canary or live execution.
- Direct attribution before assisted association/incrementality claims.
- Local/mock, provider, staging, manual and production evidence remain distinct.
flowchart TD
W0[Wave 0: close WIP and decisions]
W1[Wave 1: measurement and account foundation]
W2[Wave 2: dataset, baseline and persona foundation]
W3[Wave 3: lead and reviewed conversation pilot]
W4[Wave 4: orchestrator and policy GA]
W5[Wave 5: scale, media, grounding and CRM]
W6[Wave 6: learning and model optimization]
W0 --> W1 --> W2 --> W3 --> W4 --> W5 --> W6
W1 -->|evaluation baseline| W4
W2 -->|human calibration| W3
W3 -->|outcomes| W6
W4 -->|safe execution| W5
Estimated durations assume one senior engineer or one coordinated agent lane per workstream. They are planning ranges, not deadlines. External/manual gates can extend elapsed time without increasing implementation effort.
| Wave | Roadmap | Estimated build effort | Parallel lanes | Exit evidence |
|---|---|---|---|---|
| 0. Close WIP and decisions | M0/M1 stabilization | 3–7 days | 2–3 | Existing dirty slices reconciled; strategic ADRs accepted/rejected; first ready tasks claimed safely. |
| 1. Measurement/account foundation | M0 + M1 | 3–5 weeks | 3 | Truthful trace/model/prompt coverage, deterministic eval CI, account isolation, resilience integration. |
| 2. Dataset/baseline/persona | M0.7 + M1.3/M1.6 | 4–6 weeks | 3 | Hosted dataset, production-control run, durable feedback, persona/planner foundation. |
| 3. Lead/conversation pilot | M2–M3 | 4–7 weeks | 3 | Trackable live funnel, calibrated judge, reviewed Threads/X pilot, public editorial feed contract. |
| 4. Orchestrator/policy GA | M3–M4 | 2–4 weeks build + 30-day gate | 2–3 | No cron dual-path, tested recovery/watchdog, policy/reputation controls, nightly AI gate. |
| 5. Scale/visuals/grounding | M4–M5 | 6–10 weeks | 3 | Four validated networks, one image path, factual grounding, purge/tombstone and CRM boundaries. |
| 6. Learning/optimization | M5–M6, ongoing | 4–8 weeks per cycle | 2 | Human-calibrated model/cost promotion, reversible learning and honest incrementality evidence. |
Claimed 2026-08-23 by the current agent worktree (HARDEN-001). It is file-disjoint
from the account/persona/eval/policy lanes and may run beside Waves 0–2 as long as
global WIP limits hold. Task status lives in BACKLOG.md ("Platform hardening and
unification track").
H0 CI-001, CI-002, REFACTOR-100, DOCS-100 (foundation: safety net + hygiene)
H1 REFACTOR-101 → 102 → 103 → 104 → 105 (DRY core + god-class decomposition)
REFACTOR-106/107/108 trail H1, file-disjoint
H2 DESIGN-101 → DESIGN-102; DOCS-101; DOCS-102 (design primitives + single roadmap)
H3 NETWORK-101 (API-first), TGBOT-101 (features on clean architecture)
Sequencing rules:
- H0 lands first: coverage enforcement is the safety net for every later refactor.
- H1 order matters:
REFACTOR-101(network profiles) removes platform-knowledge duplication before the god-class splits so moved code lands deduplicated. - H3 features start only after
REFACTOR-105, because new posters/bot code must use the unified import convention and network-profile registry from day one. NETWORK-101transport decision (2026-08-23): free official API → API (Bluesky AT Protocol, Mastodon API); stealth browser only where no free API exists (Facebook, LinkedIn). Recorded in an ADR during implementation.
Exit gate:
- backend CI enforces configured coverage thresholds; UI suite runs in CI;
- no service class exceeds ~600 lines without a documented seam justification;
- per-network knowledge has exactly one canonical source;
- one relative-import style repo-wide, lint-enforced;
- docs: single English product roadmap; every VERIFY row carries an explicit
evidence: auto|manualtag.
- Finish or explicitly return current overlapping account work.
- Resolve product decisions before persona/policy/intelligence implementation.
- Start only file-disjoint foundational tasks.
| Lane | Tasks | How to execute |
|---|---|---|
| Account/persona owner | ACCOUNT-101, PERSONA-100, then PERSONA-101 → PERSONA-102 |
Preserve current controller/shared/orchestrator/session/reply changes; run focused and cross-module gates before archive. |
| Product owner | PLAN-002 (completed 2026-08-23) |
ADR-008 and ADR-010..014 are accepted with explicit v1 boundaries; downstream implementation and promotion evidence remains task-scoped. |
| Eval tracing | EVAL-101 → EVAL-102 |
One owner because Langfuse/LLM invocation metadata is one trace contract. |
| Eval contracts | EVAL-201 |
New evaluation contracts/digest boundary; avoid production graph changes. |
| Browser harness | BROWSER-101 |
Fixture/replay format only; no live submit and no account/session edits. |
| Documentation | PLAN-005 |
Reproduce legacy findings; do not bulk-copy old checkboxes. |
- no stale
IN_PROGRESStask without an owner/worktree; PLAN-002has explicit recorded decisions;- first claimed ready tasks have exact file ownership and test commands;
- no new parallel roadmap/backlog is created.
Sequence:
EVAL-101 → EVAL-103 → EVAL-104
EVAL-102 ───────────────┘
Deliver logical roots, propagated attributes, actual provider/model attempt identity, native prompt linkage, usage/cost coverage and redaction canaries. Do not build quality dashboards while required coverage is below the documented gate.
Sequence:
EVAL-201 → EVAL-202
→ EVAL-203 → EVAL-601
→ EVAL-204 ───────┘
This lane must work without provider secrets: schemas, manifest digest, side-effect barrier, deterministic evaluators, statistics and PR CI.
Sequence:
ACCOUNT-101 → ACCOUNT-102 → ACCOUNT-201
REL-101(done) → REL-102
REL-102 begins only after account and eval-trace owners release overlapping
LLM/browser/session/queue files.
BROWSER-101 → BROWSER-102after fixture contract review.SYND-101only if it has a dedicated owner and does not delay P0/P1 foundation.
- two same-network accounts pass selection/session/browser/limit/WorldState isolation;
- telemetry self-test meets model/prompt/usage coverage and redaction gates;
- deterministic evaluation CI cannot trigger real side effects;
- resilience integration has state-machine and failure/recovery evidence;
- browser replay evidence is labelled separately from live acceptance.
EVAL-301 → EVAL-302 ─┐
→ EVAL-303 ─┴→ EVAL-304 → EVAL-401 → EVAL-402 → EVAL-801
Deliver 120 stratified cases, hosted Langfuse dataset, bounded experiment runner, immutable report and frozen production-control candidate.
ACCOUNT-101 → EVAL-501
EVAL-101 + EVAL-501 → EVAL-502
Persist review decisions transactionally and sync scores idempotently without blocking approve/reject.
Starts only after ADR-008 acceptance:
PLAN-002 + ACCOUNT-102 + EVAL-201 → PERSONA-101
PERSONA-101 + EVAL-101 → PERSONA-102
PERSONA-102 + POLICY-101 + EVAL-203 → PERSONA-103
- hosted dataset/version/digest and production-control run are reproducible;
- feedback survives Langfuse outage and reconciles;
- every generated post can reference immutable persona revision/voice mode;
- paired persona eval distinguishes intended voices without unsupported first-person claims;
- planner does not assign contradictory/duplicate thesis across accounts.
ATTR-103contract evidence is archived DONE (2026-08-23); no further action.- Build
ATTR-104dashboard UI (local evidence exists; live-data gate remains). - Execute
ATTR-101only against deployed zodiac-back and a real post/click/funnel. - Keep UTM fallback evidence separate from canonical short-link evidence.
Backend foundations already archived:
ATTR-102trackable CTA runtime (8061a4e);- conversion summary code (
f95ff84, verification remainsATTR-103).
EVAL-304 + EVAL-501 → EVAL-503 → EVAL-504 → EVAL-505
This lane includes manual open coding and two-human labels. Missing human evidence is a blocker, not an automation pass.
PERSONA-101 → ENGAGE-101
POLICY-101 + EVAL-203 → ENGAGE-103
ENGAGE-101 + EVAL-505 → ENGAGE-102
Threads remains approval-required; X outbound remains suggest-only unless an accepted policy decision explicitly changes it.
BRIDGE-101 establishes the read-only allowlisted Soulwise feed. It can run in
parallel only with an explicit owner in both repositories and a versioned contract.
- a real trackable post produces a visible non-zero funnel event;
- direct UTM fallback works while zodiac is unavailable;
- judge trust verdict is based on held-out human labels;
- at least ten real questions pass reviewed reply/safety flow without incident;
- no user-level Soulwise field can cross the editorial contract.
ORCH-101maps remaining.forgework to canonical tasks.REL-102completes runtime recovery integrations.POLICY-101compiles evidence-backed authorization.ORCH-102removes the cron/orchestrator dual path and performs staging soak.POLICY-102adds reputation states and scoped recovery.EVAL-602,EVAL-701,EVAL-702enable trusted CI, dashboards and sampled online evaluation.ORCH-103validates posting-window recommendations after real metric volume exists.
- watchdog kill/restart and recovery are demonstrated;
- production does not register duplicate cron paths;
- seeded policy/reputation incidents produce expected scoped effects;
- sentiment-only signal cannot pause an account;
- nightly drift detects a seeded prompt/model/config change;
- 30-day uptime target is observed, not inferred from local tests.
Parallel workstreams after Wave 4 gate:
| Workstream | Tasks | External/manual evidence |
|---|---|---|
| Network validation | NETWORK-101 |
One platform per iteration; >=2-week soak. |
| Image path | MEDIA-101 |
Provider quota/cost plus real upload/post verification. |
| Grounding/memory | GROUND-101, BRIDGE-102 |
Held-out retrieval/factuality, expiry/tombstone/purge. |
| Creator relationships | INTEL-101 → CRM-101 |
Privacy review, no profiling/auto-outreach, human collaboration decisions. |
| Multi-instance | DIST-101 |
Distributed lock/cache/leader evidence. |
- at least four networks have separately labelled live evidence;
- one network publishes a verified image path;
- factual failures are blocked on held-out cases;
- stale/retracted evidence cannot be retrieved;
- CRM stores no private/sensitive enrichment and has no automated outreach path.
EVAL-801 + EVAL-505 → EVAL-802 / EVAL-803 → EVAL-804
EVAL-104 + EVAL-801 → COST-101 → COST-102
PERSONA-201evaluates approved-edit learning and execution-mode promotion.EVAL-805compares prompt/few-shot/RAG baseline with fine-tuning.INTEL-101,ATTR-201,CRM-101produce demand, assisted and collaboration evidence without claiming causality from association.
- candidate promotion passes human-aligned quality, reliability, cost and latency gates;
- rollback restores previous manifest/prompt/policy configuration;
- judge/model cannot self-promote;
- fine-tuning has an evidence-backed GO/NO-GO;
- low sample returns
NO_CONCLUSION, not a fabricated winner.
Use this algorithm:
- Open
BACKLOG.mdand excludeBLOCKED,VERIFYand already owned tasks. - Select the earliest wave containing a
READYtask whose dependencies are archived or have passed required gates. - Check file-family ownership below.
- Prefer a vertical slice that produces one independently testable outcome.
- Claim it in
BACKLOG.mdbefore editing. - Set
VERIFYwhile running evidence; move to archive only after required evidence.
| Family | Typical tasks | Do not overlap with |
|---|---|---|
| Accounts/settings/fleet | ACCOUNT-*, PERSONA-100 |
persona model, resilience session integration |
| Langfuse/LLM/generation tracing | EVAL-101..104 |
resilience LLM integration, persona trace propagation |
| Evaluation contracts/harness | EVAL-201..204, EVAL-301.. |
safe to parallel unless shared schemas are touched |
| Browser/session/replay | BROWSER-* |
account isolation, resilience browser integration |
| Link attribution/posting | ATTR-* |
posting/thread changes in another worktree |
| Orchestrator/flow control | ORCH-*, POLICY-* |
account WorldState and resilience orchestration |
| Documentation governance | PLAN-* |
safe in parallel unless a spec owner is editing the same document |
| Codebase hardening/refactor | CI-1xx, REFACTOR-1xx, DESIGN-1xx, DOCS-1xx |
coordinate with EVAL tracing (llm.port.ts consumers), account WorldState collector, and any worktree editing generation/posting files; DESIGN is UI-only |
| Operator control bot | TGBOT-1xx, CONTROL-001 |
telegram adapter, flow-control endpoints; do not run beside posting-path slices |
Every handoff reports:
- task/feature ID and owner;
- source SHA and dirty-worktree boundary;
- files/contracts changed;
- exact tests and terminal results;
- external/manual evidence or explicit blockers;
- compatibility/migration/rollback behavior;
- next newly unblocked task IDs.