00 — SYNTHESIS: Executive Recommendation on Atlas
2026-07-19. Anchor doc (fulfills executive-recommendation.md). Inputs: docs 01–14 (21-agent research workflow: 2 ground-truth readers, 6 web sweeps, 10 writers, PRD chain; 2.02M tokens), plus two independent Fable audit passes (evidence integrity: substrate claims verified 8/8 against code, 10/10 sampled citations backed; judgment coherence: 2 critical + 5 lesser findings, all fixed or ruled on below). Readable standalone in 5 minutes.
The decision
PIVOT, then BUILD a limited, gated MVP. Confidence: high on the pivot, medium on the MVP surviving its own gates — which is the point of the gates.
Atlas as pitched — “the intelligence and communication layer” doing five jobs (explain change, document legacy + monorepo, glossary, team updates, question triage) — is not approved. The research is unusually unanimous (advisory board, competitive graveyard, sibling-plan overlap): that framing bundles three products, two of which have no customer here (audience is two humans; every adjacent standalone comms/status product died or was absorbed — Atlassian retired its own Atlas 2025-05-21 despite captive distribution; Friday.app dead 2022; DailyBot ships digests as a commodity) and one of which (legacy documentation) is already owned by plan 001’s audit extractor, with DeepWiki-class auto-docs carrying documented hallucination problems.
What IS approved: the answer loop. One system plus three generated renderings:
An agent hits ambiguity → searches past answers (hit = no interrupt) → miss = structured question → dedup merges into a canonical question → ONE routed human task → one answer resumes every attached agent → answer becomes a durable artifact (glossary line, decision record, docs diff) with provenance, scope, expiry → the next asker self-serves. Glossary, decision log, digest rows are renderings of this ledger, never hand-maintained systems.
This is real: R3’s sweep found no product or OSS project anywhere that fan-in-dedups agent questions, resumes N workflows off one answer, and persists the answer durably. The nearest things are 1:1 inboxes (LangGraph agent-inbox: thin, single-vendor, zero tagged releases; HumanLayer: pivoted away). It is also thin: the substrate already provides capture, queueing, assignment, blocking, and resume (verified in code: INFORMATION_REQUEST TaskType, assigneeGroupSlug queues, Temporal signal-resume). The delta Atlas builds is dedup + fan-out + write-back contract + renderings — a module, not a platform.
Sourcing verdict (11-build-vs-buy, 44/50): build thin on substrate + OSS components, zero PRs to Tomas’s code in v1. Buy is disqualified twice over (nothing does the loop; confidential Groupon data cannot leave the boundary to a SaaS index). Build-from-scratch is ruled out (recreates what Temporal/tasks already prove). LightRAG deferred until a measured search miss-rate demands it; Postgres pg_trgm first.
Concept → verdict, per bundled job
| Job in the pitch | Verdict | Where it lands |
|---|---|---|
| Capture, dedup, rate-limit, route questions | BUILD (the core) | Atlas service, internal plane, gated per phases below |
| One answer resumes all askers | BUILD, spike first | Atlas-owned fan-out (the single riskiest technical assumption — see crux) |
| Write-back into docs/skills | BUILD, gated + human-gated | PRs to factory-lane docs/atlas/, never core _documentation/ in v1 |
| Shared glossary | RENDERING | Generated docs/atlas/GLOSSARY.md from answer ledger |
| “Explains what is changing”, progress updates | PROCESS + RENDERING | Capped rows into fleet monitor’s digest (plan 004 owns the channel); no Atlas send |
| Document legacy systems | NOT ATLAS | Plan 001 audit extractor owns; Atlas links to evidence |
| Document the new monorepo | NOT ATLAS | Zaruba’s _documentation/ + conventions; future ask at most |
| Keep “teams” updated | DEFERRED | No teams exist; revisit when a third human reader appears |
The technical crux (found by this research, not assumed)
Dedup collapses N asks into ONE Core task, but the tasks service holds one TaskWorkflowStamp per task and sends exactly one resume signal on completion (verified: tasks.interfaces.ts:39-63, tasks.service.ts:174-187). So “one answer resumes every agent” has zero native code path — Atlas must own fan-out, and the PRD’s documented fallback was itself incoherent (it completes per-duplicate tasks that FR-7 never mints). Ruling: the VA-6 resume spike runs before anything is built, and respec’ing the fallback is an explicit deliverable of that spike. Related blocker: Claude Code subagents cannot natively ask humans (AskUserQuestion auto-denied in subagents; hook bug #59908), so the asker in v1 is the orchestrating session via skill/HTTP, not subagents.
The phased MVP (supersedes 12-prd §25’s flat cutline — coherence-audit CRITICAL-2)
The PRD’s cutline built the write-back worker and digest rows before the numbers justifying them exist. Corrected order — each phase gated on the previous phase’s measurement:
- Phase 0 — spikes, no product code (≈2 days): (a) VA-6 fan-out/resume spike: N workflows blocked, one canonical answer, all resume — includes fallback respec; (b) SEC-1 red-team: PII/confidentiality path for question text (write-back turns transient chat exposure into permanent searchable exposure); (c) ask-path check: internal-plane reachability of
_taskCreateFromWorkflow(fallback = plan-001 A-lite proxy). - Phase 1 — concierge wave (week 1, zero build):
agent-questionsqueue live on bare substrate (zero-PR), Robert hand-merges duplicates (wizard-of-oz matcher), hand-written 5-line digest to Tomas for 3 days. Instrumented from day one with SIX counters: questions filed, duplicate rate, interrupts/day, time-to-unblock, loop token cost (VA-8 — no silent spend) and downstream fidelity (VA-10 — did the consuming agent apply the answer correctly). Raw pre-dedup ask volume read at day 3, not week 4. - Phase 2 — gated builds: dedup service (exact-key auto-attach; identical unexpired re-ask auto-resolve, logged; fuzzy = human-confirmed only — MINJA-class memory poisoning and the irreversible-merge consensus make fuzzy auto-merge a rejected story, not a setting) + Atlas fan-out iff dup-rate ≥15%. Write-back worker (human-gated PRs to
docs/atlas/) iff ≥5 persist-worthy answers/week. Digest rows into plan-004’s channel per its own build order.
Kill/pivot criteria (ratified from 12-prd, numerically aligned with 14): collapse Atlas to plan-001 bare triage if after 2 waves ALL of: dup-rate <15%, persist-worthy answers <5/week, re-ask rate not falling. Hard-kill the loop if human-interrupts-per-merged-unit is flat/rising after 4 weeks with no fixable cause. Safety-kill (zero tolerance): confirmed corpus poisoning or a sensitive-data leak past the gate.
Rulings on the audits’ open points
- Write-back destination + digest ownership ratified: FR-19 (
docs/atlas/), FR-25 (fleet monitor sends, Atlas renders).10-architecture.mdcarries a superseded-decisions banner; its body remains as the implementer’s map otherwise (its substrate reading was verified correct: reconcile viatasksListpolling, mint via_taskCreateFromWorkflow, no Core topics exist to subscribe to). - MVP re-phased as above; write-back and digest are gated builds, not cutline items.
- Fallback respec folded into the VA-6 spike.
- Tomas conversation is ONE bundle: baseline is the single already-sent ask (OWNERSHIP.md + directory convention). Atlas adds up to three candidate asks — ADM-2 (scoped core-plane service identity for fan-out), future docs-search/
_documentation/inclusion, PII/write-back security sign-off — plus one question: the notifications service README documents Sherlock’s GChat gateway as “a different domain, deliberately not ported”; confirm digest rows through plan-004’s channel don’t fall under the same exclusion. Nothing goes to Tomas before the Phase-1 numbers exist (receipts, not adjectives). - VA-8 and VA-10 counters adopted into Phase-1 instrumentation (they were missing from the PRD’s own analytics section — without them the wave runs financially and epistemically blind).
- The name. Evidence recommends against “Atlas” (Atlassian’s retired Atlas, MongoDB/Apache collisions, and the name itself smuggles the rejected “platform” framing back in). Ruling: directory/service name stays neutral (
answersorqa-loopsuggested); “Atlas” survives, if at all, as Robert’s informal codename. Robert’s call.
Top-5 risk mass (from 13-pre-mortem) and the day-one tripwires
- RA-1 never measured before scope grows → tripwire: raw ask volume at day 3.
- Tomas answers in GChat out of habit (single-point adoption failure) → tripwire: out-of-band answer rate from day one; mitigation: curl/CLI answer fallback, digest carries task links.
- Write-back trust collapse (doc-rot at machine speed; stale answer served as fresh) → tripwire: ANY single stale/false-serve is an alarm, not a weekly average; provenance + expiry mandatory fields from the first artifact.
- Silent dedup false-merge (fails by being believed) → mitigation baked in: no fuzzy auto-merge, supersede-and-notify on answer revision.
- Premature expansion cannibalizing siblings → guardrail: weekly hours-on-Atlas logged against the other three factory-app plans; scope-boundary diagram in 09 is normative.
First steps (test-first, inside the 2–4 day pre-gate envelope)
- Write the VA-6 spike as a failing test: create canonical task, attach 3 dummy workflows, complete once, assert 3 resumes (this test decides the fan-out design).
- SEC-1 red-team checklist on a synthetic question quoting fake legacy PII; assert redaction path and digest exclusion.
- Stand up the
agent-questionsqueue + counters (config only, zero-PR); dry-run one scripted asker. - Run the wave. Read the six counters. Then — and only then — decide Phase 2 per the gates.
Status: draft. Flip to active on Robert’s acceptance of this synthesis. Full reasoning: 02 (discovery + advisory board + steelman), 05/06 (market + OSS), 10 (architecture, with banner), 12 (PRD), 13 (pre-mortem), 14 (validation). Raw evidence: evidence/r1–r8.