Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
843010c
chore(cto): substrate del ciclo chat-sim-rewrite + recon de superficie
A-PachecoT Sep 4, 2026
f69f76c
docs(cto): brief del ciclo + veredicto de pureza + cuarta superficie
A-PachecoT Sep 4, 2026
3d58030
docs(cto): capabilities de prod, fracturas de canal, y R-1 preview gate
A-PachecoT Sep 4, 2026
c387bb9
docs(cto): architecture-v1 completa + thresholds scopeados al worker
A-PachecoT Sep 4, 2026
b5d7530
docs(cto): interfaz del adapter en 16 campos — insumo de Fase 3
A-PachecoT Sep 4, 2026
c27c6f7
docs(cto): aplica las 5 enmiendas del gate de Fase 2
A-PachecoT Sep 4, 2026
6469722
docs(cto): honra el REFUTE — contrato de estilado scoped en §12
A-PachecoT Sep 4, 2026
8aec589
docs(cto): Fase 3 — contrato de API + matriz de propiedad
A-PachecoT Sep 4, 2026
eeb9538
docs(cto): Fase 5 — task graph de 8 tareas en 5 olas
A-PachecoT Sep 4, 2026
6e709a3
docs(cto): aplica las 8 enmiendas del gate de Fase 5
A-PachecoT Sep 4, 2026
19eedbf
docs(cto): re-gate Fase 5 — 4 lineas, 3 archivos
A-PachecoT Sep 4, 2026
1dd248e
docs(cto): honra el REFUTE del task graph — la capa de tipos es de T-001
A-PachecoT Sep 4, 2026
942383e
feat(chat-sim): core timeline + playhead (T-001)
A-PachecoT Sep 4, 2026
a0f7567
feat(chat-sim): skin — scoped stylesheet + <cf-chat-sim> element + Wh…
A-PachecoT Sep 4, 2026
e7037e8
test(chat-sim): static-scan Tailwind-ban test for T-002 acceptance #3…
A-PachecoT Sep 4, 2026
f0aa18f
docs(cto): demo/** gana dueno en la matriz + acepta T-001 y los gates…
A-PachecoT Sep 4, 2026
a2f899c
fix(chat-sim): core/fold.ts — draft never cleared on post + draft los…
A-PachecoT Sep 4, 2026
3f0d7b5
docs(cto): anota la enmienda Ev.draft y acepta el fix de fold
A-PachecoT Sep 4, 2026
9f3527a
fix(chat-sim): visual fidelity pass on <cf-chat-sim> — header, compos…
A-PachecoT Sep 4, 2026
e855162
fix(chat-sim): stop re-rendering on every data-step write — typing lo…
A-PachecoT Sep 4, 2026
1b265c0
docs(cto): indice de la ola 1 con lo verificado por el CTO
A-PachecoT Sep 4, 2026
701f7e2
fix(chat-sim): bottom-anchor the thread + date separator pill; pushba…
A-PachecoT Sep 4, 2026
984bc54
docs(cto): el gate de frescura acopla lanes + dos push-backs aceptados
A-PachecoT Sep 4, 2026
2745f53
docs(cto): corrige el registro — 984bc54 barrio codigo de core a un c…
A-PachecoT Sep 4, 2026
e70693f
feat(chat-sim): T-005 channel adapters — WhatsApp + Telegram values
A-PachecoT Sep 4, 2026
76a3a31
feat(chat-sim): capture/ — headless PNG capture with a real settle ga…
A-PachecoT Sep 4, 2026
1327af1
feat(chat-sim): T-006 — sound packs + AudioSink + iMessage token
A-PachecoT Sep 4, 2026
0c86277
feat(chat-sim): promote stateAtStep/draftIntervals to core + fix t0 d…
A-PachecoT Sep 4, 2026
4cfce16
docs(cto): cierra T-009 por causa raiz + registra las olas 2-4
A-PachecoT Sep 4, 2026
c1231a4
feat(chat-sim): T-007 — react renderer + mobile-first live composer
A-PachecoT Sep 4, 2026
089989f
feat(chat-sim): export ChatSim from the public chat-sim barrel
A-PachecoT Sep 4, 2026
3641616
docs(cto): los 4 bugs serios vivieron en costuras, no en tareas
A-PachecoT Sep 4, 2026
27da5b9
fix(chat-sim): react/engine.ts — import leaf modules, not the barrel
A-PachecoT Sep 4, 2026
5034fe9
fix(chat-sim): channel attribute now resolves the real adapter (bug f…
A-PachecoT Sep 4, 2026
1c656d7
qa(chat-sim): T-008 — stories, tests, MobileBaseline, COMPONENTS.md
A-PachecoT Sep 4, 2026
40c0b3d
docs(types): anota la deuda de los dos modelos de Message
A-PachecoT Sep 4, 2026
7f88aae
fix(chat-sim): T-010 — reactions never rendered via <ChatSim>, any ch…
A-PachecoT Sep 4, 2026
7c68186
qa(chat-sim): T-008 — flip it.fails tripwires now that T-010 is fixed
A-PachecoT Sep 4, 2026
7894ce5
docs(cycle): exec-summary del ciclo chat-sim-rewrite
A-PachecoT Sep 4, 2026
beddc6f
fix(chat-sim/capture): stop leaking agent-browser sessions on failure…
A-PachecoT Sep 4, 2026
85602da
docs(cto): guia de adopcion para inbox-ai + channel != provider
A-PachecoT Sep 4, 2026
84bd833
docs(cto): cierra con UNVERIFIED honesto en la repetibilidad de captura
A-PachecoT Sep 4, 2026
ea733ae
docs(cto): capability de backend != lenguaje visual — el error de met…
A-PachecoT Sep 5, 2026
193c796
docs(cto): plan de arreglo de fidelidad de Telegram
A-PachecoT Sep 5, 2026
f951c61
feat(chat-sim/core): receipt model replaces flat receiptGlyph enum (T…
A-PachecoT Sep 5, 2026
9b411fa
docs(cto): E-002 — el graph del arreglo no asignaba los consumidores …
A-PachecoT Sep 5, 2026
910e352
fix(chat-sim): real per-channel receipt values (T-012)
A-PachecoT Sep 5, 2026
2e1fc74
feat(chat-sim/react): migrate MessageThread to ReceiptModel (T-015)
A-PachecoT Sep 5, 2026
a8568ff
feat(chat-sim/skin): Telegram brand identity — pill, wallpaper, glued…
A-PachecoT Sep 5, 2026
300ac44
docs(cto): reencuadre del operador + eje chrome + los emoji rompen el…
A-PachecoT Sep 6, 2026
74960fe
core(T-016): glyph deja de ser char literal — ReceiptIconId cerrado
A-PachecoT Sep 6, 2026
3e4c903
docs(cto): E-003 — tercera vez que olvido los consumidores de un camb…
A-PachecoT Sep 6, 2026
3ace482
docs(cto): E-004 — cuarta vez, y con la regla ya escrita un turno antes
A-PachecoT Sep 6, 2026
7ca3324
fix(chat-sim/channel): adapters glyphs migrate to ReceiptIconId (T-018)
A-PachecoT Sep 6, 2026
6a3e791
fix(chat-sim/app): react/** migrates to ReceiptIconId, kills literal …
A-PachecoT Sep 6, 2026
4b23aff
feat(chat-sim/skin): SVG icon kit kills the last emoji + adds the chr…
A-PachecoT Sep 6, 2026
4b18920
fix(chat-sim): E-005 + E-006 — el gate anti-emoji cubre react/ y ya n…
A-PachecoT Sep 6, 2026
cfc100f
docs(cto): T-020 — el doodle invisible en oscuro + default de chrome …
A-PachecoT Sep 6, 2026
4e0e6c2
fix(chat-sim): doodle de WhatsApp visible en oscuro — trazo negro sob…
A-PachecoT Sep 6, 2026
8114d2d
docs(cto): T-021 — el wallpaper de Telegram debe verse, en los dos temas
A-PachecoT Sep 6, 2026
ad98025
fix(chat-sim): Telegram wallpaper visible in ambos temas (T-021)
A-PachecoT Sep 6, 2026
1fd59e4
fix(chat-sim): colores de burbuja en oscuro corregidos por el operador
A-PachecoT Sep 6, 2026
73c5059
docs(cto): audit completo — 18 hallazgos, 3 tareas de fix
A-PachecoT Sep 7, 2026
e7e3c06
fix(chat-sim): T-022 — exports resuelven de verdad + sondas vacías re…
A-PachecoT Sep 7, 2026
15d76cd
fix(chat-sim): T-023 — contraste oscuro/texto, focus-visible, gemelo …
A-PachecoT Sep 7, 2026
c2e4b73
fix(chat-sim/qa): T-024 — rojos reales, sondas que muerden, story fal…
A-PachecoT Sep 7, 2026
b048898
feat(chat-sim): T-027 — paridad con ChatDemo.astro: scroll, loop, ser…
A-PachecoT Sep 7, 2026
9b01899
feat(chat-sim): T-027 — fold in reply-in + link (team-lead: era parte…
A-PachecoT Sep 7, 2026
b851332
feat(chat-sim): T-028 — port BUTTONS/LIST capability model from inbox-ai
A-PachecoT Sep 7, 2026
e65f069
fix(chat-sim): whatsapp read-tick color routes through --channel-what…
A-PachecoT Sep 7, 2026
517bd2f
feat(chat-sim/core): T-029 — capabilities es el 17º campo de ChannelA…
A-PachecoT Sep 7, 2026
9ef295a
feat(chat-sim): T-027 — sacar card (rationalización incorrecta) + rec…
A-PachecoT Sep 7, 2026
e327664
refactor(chat-sim): T-028 — drop ChannelAdapterWithCapabilities shim,…
A-PachecoT Sep 7, 2026
44df7ff
docs(cycle): estado final — 73 commits, 302/302, y las 8 fallas que e…
A-PachecoT Sep 7, 2026
24cc99c
test(chat-sim/qa): el assert del tick read deja de exigir el rgb() re…
A-PachecoT Sep 7, 2026
819490f
test(chat-sim/qa): T-032 — baseline de fidelidad externa + contraste …
A-PachecoT Sep 7, 2026
b7775ff
feat(chat-sim): T-031 — alto fijo, rotación multi-guion, badge y etiq…
A-PachecoT Sep 7, 2026
51c119c
chore(chat-sim): T-033 — regenera ambos bundles tras T-031
A-PachecoT Sep 7, 2026
7e64b90
fix(chat-sim): T-025 — Telegram quote-author text clears WCAG AA (lig…
A-PachecoT Sep 7, 2026
b7b5017
docs(chat-sim): T-025 closing notes in skin.md
A-PachecoT Sep 7, 2026
8630678
test(chat-sim): los 2 tests-hallazgo de T-025 pasan a tests-regresión
A-PachecoT Sep 7, 2026
651b245
test(chat-sim): T-031 A — real-browser gemelo for the fixed-height ac…
A-PachecoT Sep 7, 2026
7b4d5ec
test(chat-sim): T-031 A — el alto tampoco se mueve MIENTRAS el guion …
A-PachecoT Sep 7, 2026
531eb67
docs(cycle): cierre — 361/362, preview 8+1+1, y los 3 gates del repo …
A-PachecoT Sep 7, 2026
ca8944e
docs(chat-sim): README público + LICENSE MIT + línea de prior art
A-PachecoT Sep 7, 2026
25c3cd2
feat(chat-sim): el contacto de la cabecera rota junto con el rubro
A-PachecoT Sep 7, 2026
5ee74e4
feat(chat-sim): `at` desacopla la hora impresa del tick de animación …
A-PachecoT Sep 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
170 changes: 170 additions & 0 deletions .cofoundy/archive/2026-05-16-atelier-components/brief.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
schema_version: 1.0
created_at: 2026-05-16T11:18:00-05:00
created_by: cto-loop (Andre Pacheco, Atelier-components session)
domain: software
name: atelier-components-xgodel-dogfood
title: "Atelier components — XGodel v1 dogfood (riding V2.6)"

owner:
name: André Pacheco
tier: Partner
role: CEO + CTO of this cycle

parallel_cto:
scope: V2.6 Chrome System Phase 1
repo: ~/cofoundy/products/cofoundy-platform/docs-ai/
branch: feat/v2.6-chrome-system
contract: file-ownership-matrix + serialized merge order (chrome PR first, atelier PR second)
session_kind: paralelo (otra sesión Claude fresh, mismo Andre)
handoff_file: /tmp/handoff-v2.6-chrome-cto-handoff-20260516-111230.md
coordination_collision_points:
- docs-ai/mdx-components.tsx (serializado: their PR first, mine additive single-line later)
- docs-ai/content/client/xgodel/*.mdx (naming-disjoint: they own propuesta.mdx stub,
I own personas/sitemap/moodboard/cotizacion/cronograma)

scope:
done_definition: |
XGodel client portal renderea /client/xgodel/{propuesta, cotizacion, cronograma,
personas, brand-moodboard} con Deliverable chrome (CTO #2 provee) + componentes
Atelier desde @cofoundy/ui/docs/. Cada componente exportado con Zod prop schema +
Storybook story + entry en ATELIER_COMPONENTS registry. AGENTS.md auto-generado
desde registry build script. PR mergea a packages/ui main; follow-up PR a docs-ai
main agrega single import + spread en mdx-components.tsx.

out_of_scope:
- ContractTimeline (XGodel sin contrato firmado, excluded per Andre 2026-05-16)
- UserFlow, MockupShowcase, DeployRecord, PersonaGrid, TimelineGantt,
FaqAccordion, HandoffChecklist, BeforeAfterSlider (defer al segundo cliente)
- 10 hard-floor gates production (parten con artifact-render skill, Atelier M1)
- artifact-render skill itself (XGodel v1 = MDX manual authoring)
- Promotion a otros design-system targets (focus en @cofoundy/ui/docs/)

mvp_scope:
components_new:
- { name: Sitemap, source: ~/cofoundy/projects/xgodel-landing/research/07-information-architecture.md, atelier_spec: "Tree/graph de páginas con depth, intent, nav grouping" }
- { name: QuoteCard, source: ~/cofoundy/deals/clients/XGodel/propuesta.html, atelier_spec: "Cotización pretty-render con hitos table, totals, payment terms" }
components_audit_and_patch:
- { name: PersonaCard, source: ~/cofoundy/deals/clients/XGodel/ux-research/02-user-personas.md, gap: "props existentes no incluyen jtbd/objections/journey_stage del spec Atelier §6.2" }
- { name: MoodBoard, source: ~/cofoundy/deals/clients/XGodel/visual-design/concept-*, gap: "verificar fit con concepts A/B/C/D + final" }
- { name: BuildProgress, source: ~/cofoundy/deals/clients/XGodel/cronograma.tex + Vikunja delivery_project_id=22, gap: "verificar phase model L0-L9 vs phase actual de XGodel" }
- { name: ComparisonMatrix, source: ~/cofoundy/deals/clients/XGodel/ux-research/competitive-research, gap: "audit shape" }
- { name: KPIBoard, source: ~/cofoundy/projects/xgodel-landing/research/16-cro-plan.md, gap: "audit shape" }
- { name: DesignSystemPanel, source: ~/cofoundy/deals/clients/XGodel/work/brand-paletas-v2/, gap: "audit token-display shape" }
- { name: TestimonialCard, source: deferred (XGodel sin testimonials públicos todavía), gap: "audit y skip render para XGodel v1" }
infra:
- lib/atelier-registry.ts (TypeScript Record<string, Component>)
- scripts/gen-atelier-agents-md.ts (build script → AGENTS.md auto-export del registry)
- Zod schemas por componente (props validation runtime + DX)
- Storybook stories nuevas (Sitemap, QuoteCard) + audit-update de las 7 existentes

discovery:
components_existing_in_repo:
location: packages/ui/src/components/docs/
list:
- AuthorNote, BuildProgress, ComparisonMatrix, DesignSystemPanel,
InfoBox, KPIBoard, MetadataCard, MoodBoard, NextStepCallout,
PersonaCard, ScopeList, TestimonialCard
finding: |
7 de 12 components Atelier §6.2 YA EXISTEN. AuthorNote/InfoBox/
MetadataCard/NextStepCallout/ScopeList son del mail/email skill,
útiles tangencialmente (recipient-block alternativo).

external_research_referenced:
- ~/cofoundy/products/atelier/research/track-a/R-A7-portal-documentation-ux-2026.md
- ~/cofoundy/products/atelier/research/track-a/R-A8-md-component-compiler-patterns.md
- ~/cofoundy/products/atelier/PRD.md §6.2 + §7 (artifact-render)
- ~/cofoundy/products/cofoundy-platform/docs-ai/PRD.md §V2.1 ("Atelier IS DocsAI" decision)

architecture_decisions_locked:
d1_location: |
packages/ui/src/components/docs/ (NO docs-ai/components/atelier/).
DocsAI PRD V2.1 decisión 2026-05-13 "Atelier IS DocsAI" override al
Atelier PRD §6.2 "first pass docs-ai, promote later". Ventajas:
cero substrate collision con CTO #2, Storybook auto, reusable en
landing-pages futuros.

d2_no_gates_in_this_cycle: |
10 hard-floor gates DIFERIDOS a artifact-render skill (Atelier M1).
Razón: gates protegen agent-emitted content. Sin artifact-render,
autoría MDX manual por humano = revisión humana ES el gate. Zod
prop schemas SÍ se incluyen (cheap, valor inmediato).

d3_no_atelier_subfolder: |
NO crear packages/ui/src/components/atelier/. Los Atelier-domain
components viven en docs/ junto a los existentes (consistencia con
estado actual + AuthorNote/MetadataCard etc. son tangencialmente
Atelier-style).

d4_audit_before_patch: |
Antes de tocar los 7 existentes, audit cada uno contra Atelier §6.2
spec. Output: matriz por componente {props_actuales, props_spec,
delta, plan}. Solo después patch.

interrogation:
q1_done_in_90d: |
XGodel portal renderiza /client/xgodel/{5 docs} con Deliverable chrome
+ componentes Atelier funcionando. Andre comparte URL con John
Medina, John responde con engagement (no solo "ok").

q2_real_user: |
Cliente final visible: John Medina (XGodel cofundador). Operador
inmediato: Andre dogfoodea, Percy review visual. Consumidor de mi
registry: CTO #2 (chrome) + futuro artifact-render skill.

q3_painful_workflow: |
XGodel tiene 13 ux-research docs + 17 research files + brand v2 +
cotización + cronograma — todo invisible al cliente. Hoy ve solo PDF
propuesta + WhatsApp + URL landing. Cero portal. Resto del trabajo
de profundidad estratégica = invisible.

q4_already_tried: |
docs-ai V2.1 shipped 32 componentes genéricos (StatCard, BarChart,
etc.). Sirven para reports internos, NO específicos para portal de
cliente con personas/IA/moodboard. 7 ya existen en packages/ui pero
sin Zod schemas + sin registry + sin uso en docs-ai todavía.

q5_failure_risk: |
Drift entre Atelier PRD §6.2 spec y componentes existentes (props no
calzan con shape real de ux-research artifacts) → component existe
pero unusable. Mitigación: D4 (audit antes de patch).

q6_reframe_check: |
Reframe alternativa: "saltarse Atelier components y usar solo V2.1
generic primitives (Callout + MetadataCard + table) para XGodel".
Rechazado: undersella portal, no diferencia vs Mintlify, no resuelve
central commercial gap del Atelier PRD §1.

constraints:
timeline: "5-7 días wall-clock (audit + 2 new + registry + AGENTS.md + storybook)"
iron_rule: |
Andre es CTO, no IC. Dispatch via Agent tool / TeamCreate.
IC exceptions únicas: Phase 1 substrate (este file), Phase 10 docs/bitácora.
serialization_with_cto2: |
Mi PR a docs-ai/mdx-components.tsx (single import+spread line) merge
DESPUÉS del PR de CTO #2 (chrome). Mi PR a packages/ui main puede
merge cualquier momento (sin dependencias).

success_signals:
- 9 components exportados desde @cofoundy/ui/docs/ con Zod schemas (2 new + 7 audited)
- lib/atelier-registry.ts existe como SSOT registry
- AGENTS.md auto-generado desde build script (verificable: rm AGENTS.md + run script + git diff vacío)
- 2 Storybook stories nuevas + 7 audit-updated
- **Coverage ≥80%** sobre src/components/docs/ + src/lib/atelier-registry.ts (Vitest --coverage report)
- **QA visual:** Chrome MCP screenshot diff por componente storybook ≤2% pixel delta vs baseline
- XGodel MDX v1 (5 docs) renderea sin warnings/errors en dev + prod
- **Deploy:** packages/ui PR mergea a main + docs-ai PR mergea a main + Cloudflare Worker auto-deploya + /canary-monitor verde por ventana de 30 min post-deploy
- **Post-deploy validation:** Lighthouse ≥90 sobre /client/xgodel/* (5 docs), axe-core a11y clean, smoke test E2E para los 5 URLs
- Andre share URL con John Medina dentro 48h post-merge + John responde engagement
- cycle_completed_at <ISO> registered en cto-loop.yaml

user_authorization_2026-05-16:
source: "/goal directive from Andre, 11:50 Lima"
text: "do all including deployment with proper validation (software, ceo, qa visual, etc, validate on deployment too); >80 coverage"
implications:
- Phase 4-12 ALL autonomous; no per-phase check-ins required
- Phase 11 main-branch deploy auto-approved (override default escalation_threshold)
- Phase 9 QA gate uses qa-driven-iteration + Chrome MCP visual diff
- Coverage ≥80% is HARD constraint (task acceptance fails if below)
- ceo-agent gates Phase 5 (task graph) + Phase 11 (deploy) still resolve autonomously

bant: n/a (cycle interno)
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Agent Floor — universal teammate contract

> Scaffolded into `.cofoundy/context/agent-floor.md` by `/cofoundy-init` (one-time per project).
> Read once by every teammate at spawn. Replaces the per-dispatch boilerplate copy-paste.
> If your dispatch prompt restates anything below, you're duplicating the floor — point here instead.

## Identity + substrate

- You are a teammate on team `{{team_name}}`. Your role and task are in your spawn prompt.
- **Substrate is SSOT.** Your task spec lives at `.cofoundy/tasks/T-NNN.md`. Read it first; every acceptance line is a hard gate.
- **Architecture, contracts, conventions** live in `.cofoundy/specs/*.md` and project `CLAUDE.md` / `.claude/rules/`. Read what your task's `refs:` block points at.
- **Don't re-prose what you read.** Apply it.

## Scope discipline

- **Stay in `scope.write`** from your task spec. Anything you want to touch outside that = file an escalation in `.cofoundy/state/escalation-queue.yaml` and stop. Do NOT silently expand scope.
- **`scope.read` is permissive** but doesn't authorize edits. Read freely; write only inside the matrix.
- **No new files outside scope.write.** If you need one (new module, new test file, new doc), it must already be listed in `scope.write` (glob match counts).

## Git contract

- **No commits, no push.** The orchestrator commits at Phase 8. You only mutate the working tree.
- **No branch operations.** You are on the feature branch the orchestrator created.
- **Stash is ok** if you need to checkpoint mid-task — clean up before signaling done.

## Test + quality discipline

- **Run tests yourself before signaling done.** Each acceptance line should map to a runnable check; run it.
- **Logger discipline** per `.claude/rules/backend-quality.md` (Python backend) or repo-specific rules: entry/exit/error logs with structured `extra={}`, `exc_info=True` on errors, `time.perf_counter()` around external HTTP.
- **Coverage gates** if listed in acceptance — run with `--cov-fail-under=N`, save report to `docs/qa/<cycle>/` if your role is QA.
- **`pytest | tail` deadlocks.** Always `pytest ... > /tmp/out.txt 2>&1` then `tail /tmp/out.txt`. The pipe-to-tail pattern hangs in this harness.

## Termination signal

When you've self-verified all acceptance criteria pass:

1. Append one event line to `.cofoundy/state/history.jsonl`:
```json
{"ts":"<ISO>","event":"task_completed","task":"T-NNN","agent":"<your-role>","cycle":"<cycle-id>","summary":"<one-line>"}
```
2. Return a structured summary (under 250 words):
- Files created / modified (paths)
- Acceptance criteria status (each line passed / partial / blocked)
- Coverage % if relevant
- Deviations from spec (if any) with rationale
- Flagged issues / fix-tasks filed for orchestrator

3. **Do NOT mark TaskUpdate completed yourself if you're a teammate** — the orchestrator marks based on your termination signal. (If you're a standalone subagent, you don't see TaskList anyway.)

## Escalation path

- **Substrate ambiguity** (spec contradicts itself or contract) → append to `.cofoundy/state/escalation-queue.yaml`, halt.
- **Capability gap** (you need to do X but lack tool / credential) → escalation queue + halt.
- **Blocking bug found in another role's deliverable** → file new task `.cofoundy/tasks/T-XXX.md` (role_owner = that role) + flag in your termination summary. Don't try to fix outside your scope.

## What's NOT here (because it's role/task-specific)

The dispatch prompt provides ONLY:
- Your role + task ID + branch (1 line)
- Read pointers to your task spec + relevant spec files (1 line)
- Delta-not-in-substrate: any context, debug hints, or decisions made by orchestrator that aren't in the .md files (≤2 lines)
- Termination signal reminder if non-standard (1 line)

If your dispatch prompt says more than ~80 words, the orchestrator is over-prescribing. Read the spec files; that's where the answers live.
Loading
Loading