Skip to content
GRPNR.

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-questions queue 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

  1. Write-back destination + digest ownership ratified: FR-19 (docs/atlas/), FR-25 (fleet monitor sends, Atlas renders). 10-architecture.md carries a superseded-decisions banner; its body remains as the implementer’s map otherwise (its substrate reading was verified correct: reconcile via tasksList polling, mint via _taskCreateFromWorkflow, no Core topics exist to subscribe to).
  2. MVP re-phased as above; write-back and digest are gated builds, not cutline items.
  3. Fallback respec folded into the VA-6 spike.
  4. 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).
  5. 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).
  6. 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 (answers or qa-loop suggested); “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

  1. RA-1 never measured before scope grows → tripwire: raw ask volume at day 3.
  2. 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.
  3. 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.
  4. Silent dedup false-merge (fails by being believed) → mitigation baked in: no fuzzy auto-merge, supersede-and-notify on answer revision.
  5. 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)

  1. 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).
  2. SEC-1 red-team checklist on a synthetic question quoting fake legacy PII; assert redaction path and digest exclusion.
  3. Stand up the agent-questions queue + counters (config only, zero-PR); dry-run one scripted asker.
  4. 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.