@tacuchi/agent-workflow-cli 15.1.0 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/package.json +1 -1
  2. package/skills/w/README.md +14 -14
  3. package/skills/w/SKILL.md +96 -75
  4. package/skills/w/artifacts/README.md +6 -6
  5. package/skills/w/artifacts/artifacts-core/SESSION.md +1 -7
  6. package/skills/w/artifacts/artifacts-core/TASKS.md +1 -1
  7. package/skills/w/artifacts/artifacts-exec/TECHNICAL-NOTE.md +9 -54
  8. package/skills/w/artifacts/artifacts-research/CONCLUSIONS.md +1 -1
  9. package/skills/w/commands/README.md +22 -22
  10. package/skills/w/commands/export-diagrams.md +9 -9
  11. package/skills/w/commands/export-manuals.md +9 -9
  12. package/skills/w/commands/export-reports.md +9 -9
  13. package/skills/w/commands/export-scripts.md +9 -9
  14. package/skills/w/commands/fix-git.md +12 -12
  15. package/skills/w/commands/plan-exec.md +19 -19
  16. package/skills/w/commands/plan-new.md +18 -18
  17. package/skills/w/commands/plan-refine.md +22 -22
  18. package/skills/w/commands/quick.md +16 -16
  19. package/skills/w/commands/spec-new.md +35 -34
  20. package/skills/w/commands/spec-refine.md +16 -16
  21. package/skills/w/commands/status.md +18 -16
  22. package/skills/w/commands/workspace-init.md +14 -14
  23. package/skills/w/exports/README.md +5 -5
  24. package/skills/w/exports/export-diagrams/SKILL.md +58 -58
  25. package/skills/w/exports/export-manuals/SKILL.md +61 -61
  26. package/skills/w/exports/export-reports/SKILL.md +51 -51
  27. package/skills/w/exports/export-scripts/SKILL.md +60 -60
  28. package/skills/w/harness/SKILL.md +48 -47
  29. package/skills/w/loops/CHASSIS.md +104 -97
  30. package/skills/w/loops/CODE-POLICIES.md +21 -21
  31. package/skills/w/loops/README.md +30 -29
  32. package/skills/w/loops/plan-exec-loop/SKILL.md +77 -80
  33. package/skills/w/loops/plan-new-loop/SKILL.md +88 -58
  34. package/skills/w/loops/plan-refine-loop/SKILL.md +69 -45
  35. package/skills/w/loops/quick-loop/SKILL.md +79 -79
  36. package/skills/w/loops/spec-refine-loop/SKILL.md +93 -97
  37. package/skills/w/roles/README.md +2 -2
  38. package/skills/w/roles/diagrams/SKILL.md +50 -47
  39. package/skills/w/roles/git/SKILL.md +58 -58
  40. package/skills/w/roles/research/SKILL.md +65 -62
  41. package/skills/w/roles/sql/SKILL.md +59 -55
  42. package/skills/w/roles/ui-spec/SKILL.md +60 -74
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tacuchi/agent-workflow-cli",
3
- "version": "15.1.0",
3
+ "version": "16.0.0",
4
4
  "description": "Agnostic runtime CLI for AI development workflows — a stages + loops + artifacts harness. Bundles the universal `w` skill set under `skills/w/` (slash commands `/w:*`: spec-new/spec-refine, plan-new/plan-exec, quick, workspace-init, export-*); `self install --target <host>` copies SKILL + commands + hooks into the host. Pluggable capability skills via `.workflow/skills.toml`. Multi-empresa parametrization via `profile.json` cascade. Namespace auto-detected from any `.<ns>/sessions/` dir in CWD; default `workflow`.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,26 +1,26 @@
1
1
  # w — agent-workflow skill bundle
2
2
 
3
- > El bundle `w` (`w` = *workflow*) empaqueta el arnés agent-workflow como skills de Claude Code + slash commands `/w:`. Runtime: [`@tacuchi/agent-workflow-cli`](../../README.md) (`agent-workflow` / `aw`).
3
+ > The `w` bundle (`w` = *workflow*) packages the agent-workflow harness as Claude Code skills + `/w:` slash commands. Runtime: [`@tacuchi/agent-workflow-cli`](../../README.md) (`agent-workflow` / `aw`).
4
4
 
5
- Implementa el modelo **stages + loops + artifacts**. La fuente de diseño vive en `docs/referencias/` del hub de agent-workflow. Este README es el índice del bundle; la normativa vive en sus docs canónicos:
5
+ It implements the **stages + loops + artifacts** model. The design source lives under `docs/referencias/` in the agent-workflow hub. This README is the bundle index; the normative text lives in its canonical docs:
6
6
 
7
- - **Modelo completo** — 3 capas + zona `docs/`, los 3 flujos (SPEC/PLAN/QUICK), comandos, capacidades componibles y los 6 invariantes duros: [`SKILL.md`](SKILL.md) (la skill de orientación `workflow`).
8
- - **Motor de los loops** — objetivo persistente + verification-first, gap-driven, sessions, structured-choice, compact/resume, políticas git/BD/gate de revisión: [`loops/CHASSIS.md`](loops/CHASSIS.md) (los 5 loops son heirs).
9
- - **Binding capacidad→arnés** (Claude Code / Codex / Gemini-Antigravity / OpenCode / Crush / Warp): [`harness/SKILL.md`](harness/SKILL.md).
7
+ - **Full model** — 3 layers + `docs/` zone, the 3 flows (SPEC/PLAN/QUICK), commands, composable capabilities and the 6 hard invariants: [`SKILL.md`](SKILL.md) (the `workflow` orientation skill).
8
+ - **Loop engine** — persistent objective + verification-first, gap-driven, sessions, structured-choice, compact/resume, git/DB/review-gate policies: [`loops/CHASSIS.md`](loops/CHASSIS.md) (the 5 loops are heirs) + [`loops/CODE-POLICIES.md`](loops/CODE-POLICIES.md).
9
+ - **Capability→harness binding** (Claude Code / Codex / Gemini-Antigravity / OpenCode / Crush / Warp): [`harness/SKILL.md`](harness/SKILL.md).
10
10
 
11
11
  ## Folders
12
12
 
13
13
  | Folder | Layer | Contains |
14
14
  |---|---|---|
15
- | [`commands/`](commands/) | 1 | Los slash commands `/w:` que invoca el usuario |
16
- | [`loops/`](loops/) | 2 | [`CHASSIS.md`](loops/CHASSIS.md) (el motor) + los 5 loop heirs que corre la IA |
17
- | [`exports/`](exports/) | 1 | La familia `export-*` — única vía artefacto→`docs/` |
18
- | [`roles/`](roles/) | cross-cutting | Capacidades enchufables (defaults built-in; rebindeables vía `.workflow/skills.toml`) |
19
- | [`harness/`](harness/SKILL.md) | cross-cutting | Binding capacidadmecanismo por arnés |
20
- | [`artifacts/`](artifacts/) | 3 | Plantillas de artefactos de session que manejan los loops |
21
- | [`hooks/`](hooks/) | — | Plantilla de hooks del host (branch-check, sql-mutation-guard, checkpoint, …) |
22
- | [`SKILL.md`](SKILL.md) | overview | La skill de orientación `workflow` (guía del modelo completo) |
15
+ | [`commands/`](commands/) | 1 | The `/w:` slash commands the user invokes |
16
+ | [`loops/`](loops/) | 2 | [`CHASSIS.md`](loops/CHASSIS.md) (the engine) + the 5 loop heirs the AI runs |
17
+ | [`exports/`](exports/) | 1 | The `export-*` family the only artifact→`docs/` path |
18
+ | [`roles/`](roles/) | cross-cutting | Pluggable capabilities (built-in defaults; rebindable via `.workflow/skills.toml`) |
19
+ | [`harness/`](harness/SKILL.md) | cross-cutting | Capabilitymechanism binding per harness |
20
+ | [`artifacts/`](artifacts/) | 3 | Session artifact templates the loops manage |
21
+ | [`hooks/`](hooks/) | — | Host hook template (branch-check, sql-mutation-guard, checkpoint, …) |
22
+ | [`SKILL.md`](SKILL.md) | overview | The `workflow` orientation skill (guide to the full model) |
23
23
 
24
24
  ## Bootstrap
25
25
 
26
- Correr [`/w:workspace-init`](commands/workspace-init.md) una vez para convertir una carpeta en workspace (`.workflow/` + taxonomía `docs/` + bloque `WORKSPACE` + `.workflow/skills.toml`). Sin distinción project/hub — un workspace tiene 1+ fuentes.
26
+ Run [`/w:workspace-init`](commands/workspace-init.md) once to turn a folder into a workspace (`.workflow/` + `docs/` taxonomy + `WORKSPACE` block + `.workflow/skills.toml`). No project/hub distinction a workspace has 1+ sources.
package/skills/w/SKILL.md CHANGED
@@ -19,107 +19,116 @@ description: >-
19
19
 
20
20
  ## Purpose
21
21
 
22
- Explicar el **modelo completo** de agent-workflow para que un agente sepa: qué invoca el usuario, qué corre la IA, dónde aterriza cada entregable, y qué reglas no se rompen. Es el mapa; el detalle fino vive en cada loop/command/export/role.
22
+ Explain the **complete model** of agent-workflow so an agent knows: what the user invokes, what the AI runs, where every deliverable lands, and which rules never break. This is the map; the fine detail lives in each loop/command/export/role.
23
23
 
24
24
  ## Composed by
25
25
 
26
- Cualquiera que necesite orientación un loop al arrancar, un agente nuevo en el workspace, o el usuario preguntando "¿cómo funciona esto?".
26
+ Anyone needing orientationa loop at start, a new agent in the workspace, or the user asking "how does this work?".
27
27
 
28
28
  ## Knowledge
29
29
 
30
- ### Workspace (sin modos)
30
+ ### Workspace (no modes)
31
31
 
32
- Un solo concepto: **workspace**. No hay project/hub. La carpeta donde arranca el agente se vuelve workspace con `/w:workspace-init` (scaffolding `.workflow/` + `docs/` + bloque `WORKSPACE` en CLAUDE.md + `.workflow/skills.toml`). Tiene 1+ fuentes (repos); "standalone" = una sola fuente.
32
+ A single concept: **workspace**. There is no project/hub split. The folder where the agent starts becomes a workspace with `/w:workspace-init` (scaffolding `.workflow/` + `docs/` + the `WORKSPACE` block in CLAUDE.md + `.workflow/skills.toml`). It has 1+ sources (repos); "standalone" = a single source.
33
33
 
34
34
  ### The 3-layer architecture + `docs/` zone
35
35
 
36
36
  ```
37
- USUARIO invoca
38
- LAYER 1 · COMMANDS (lo único que el usuario invoca)
37
+ USER invokes
38
+ LAYER 1 · COMMANDS (the only thing the user invokes)
39
39
  FLOWS: spec-new · spec-refine · plan-new · plan-refine · plan-exec · quick
40
40
  EXPORTS: export-scripts · export-manuals · export-diagrams · export-reports
41
- arranca / delega
41
+ starts / delegates
42
42
 
43
- LAYER 2 · LOOPS (los corre la IA, gap-driven; motor: loops/CHASSIS.md)
43
+ LAYER 2 · LOOPS (the AI runs them, gap-driven; engine: loops/CHASSIS.md)
44
44
  spec-refine-loop · plan-new-loop · plan-refine-loop · plan-exec-loop · quick-loop
45
- crea / lee / escribe
45
+ creates / reads / writes
46
46
 
47
- LAYER 3 · SESSIONS + ARTIFACTS (.workflow/sessions/ — efímero, interno)
48
- los export-* leen artefactos
47
+ LAYER 3 · SESSIONS + ARTIFACTS (.workflow/sessions/ — ephemeral, internal)
48
+ the export-* read the artifacts
49
49
 
50
- ZONA docs/ — documentos permanentes, cara al usuario
51
- specs · plans (flujos) · scripts · manuals · diagrams · reports (export-*) · tools (ambiente)
50
+ docs/ ZONE permanent, user-facing documents
51
+ specs · plans (flows) · scripts · manuals · diagrams · reports (export-*) · tools (ambient)
52
52
  ```
53
53
 
54
- - **Layer 1** — alto nivel. Single-pass o arranca un loop. Sin lógica de iteración.
55
- - **Layer 2** — la IA itera entera hasta converger. Sin invocación humana directa.
56
- - **Layer 3** — efímero, interno, process-only. Nadie lo invoca a mano.
54
+ - **Layer 1** — high level. Single-pass or starts a loop. No iteration logic.
55
+ - **Layer 2** — the AI iterates end to end until convergence. No direct human invocation.
56
+ - **Layer 3** — ephemeral, internal, process-only. Nobody invokes it by hand.
57
57
 
58
58
  ### The 3 flows
59
59
 
60
- | Flow | Commands | docs/ propio | Loops |
60
+ | Flow | Commands | Own docs/ | Loops |
61
61
  |---|---|---|---|
62
- | **SPEC** (el *qué*) | `spec-new` *(single-pass)* · `spec-refine` | `docs/specs` | `spec-refine-loop` |
63
- | **PLAN** (el *cómo* + ejecutar) | `plan-new` · `plan-refine` *(aux, opcional)* · `plan-exec` | `docs/plans` | `plan-new-loop` · `plan-refine-loop` · `plan-exec-loop` |
64
- | **QUICK** (atajo liviano) | `quick` | — | `quick-loop` |
62
+ | **SPEC** (the *what*) | `spec-new` *(single-pass)* · `spec-refine` | `docs/specs` | `spec-refine-loop` |
63
+ | **PLAN** (the *how* + execute) | `plan-new` · `plan-refine` *(aux, optional)* · `plan-exec` | `docs/plans` | `plan-new-loop` · `plan-refine-loop` · `plan-exec-loop` |
64
+ | **QUICK** (lightweight shortcut) | `quick` | — | `quick-loop` |
65
65
 
66
- Cadena típica: prompt → `spec-new` genera `docs/specs/NNN-spec-<slug>.md` → `spec-refine` corre el loop y refina **ese mismo spec in place** → `plan-new` → `docs/plans/PPP-plan-<slug>.md` → *(opcional)* `plan-refine` ajusta **ese mismo plan in place** si hay cambios antes de ejecutar → `plan-exec` ejecuta y actualiza el plan (living doc) + artefactos en sesiones. La promoción del resto a `docs/` es **siempre** un paso aparte vía `export-*`.
66
+ Typical chain: prompt → `spec-new` generates `docs/specs/NNN-spec-<slug>.md` → `spec-refine` runs the loop and refines **that same spec in place** → `plan-new` → `docs/plans/PPP-plan-<slug>.md` → *(optional)* `plan-refine` adjusts **that same plan in place** if changes arise before executing → `plan-exec` executes and updates the plan (living doc) + artifacts in sessions. Promoting anything else to `docs/` is **always** a separate step via `export-*`.
67
67
 
68
- QUICK puede **escalar en vivo a SPEC** si el objetivo excede un quick (gate de tamaño a la entrada) o la tarea crece mid-loop: con consentimiento vía structured-choice, la línea de trabajo pasa al flujo SPEC (borrador por procedimiento `spec-new` + `spec-refine-loop` directo); a PLAN la escalación queda **diferida** (siembra + puntero). Ver `loops/quick-loop/SKILL.md` § *Delta QUICK*.
68
+ QUICK can **escalate live to SPEC** when the objective exceeds a quick (entry size gate) or the task grows mid-loop: with consent via structured-choice, the work line moves to the SPEC flow (draft via the `spec-new` procedure + `spec-refine-loop` directly); escalation to PLAN stays **deferred** (seed + pointer). See `loops/quick-loop/SKILL.md` § *QUICK delta*.
69
69
 
70
- ### Contexto operativodónde aterriza cada cosa
70
+ ### Operating contextwhere everything lands
71
71
 
72
- Antes de cualquier loop, la IA resuelve su **contexto operativo** en **cada prompt** con dos detecciones: **¿workspace?** (existe `.<ns>/sessions/`) + **¿sesión a continuar?** (una activa, o una reciente que este prompt continúa). Eso decide el comportamiento y **dónde aterrizan los artefactos** (SQL, scripts, decisiones, …):
72
+ Before any loop, the AI resolves its **operating context** on **every prompt** with two detections: **workspace?** (`.<ns>/sessions/` exists) + **session to continue?** (an active one, or a recent one this prompt continues). That decides the behavior and **where artifacts land** (SQL, scripts, decisions, …):
73
73
 
74
- | ¿Workspace? | Trigger | → Comportamiento + ruteo |
74
+ | Workspace? | Trigger | → Behavior + routing |
75
75
  |---|---|---|
76
- | **Sí** | **comando de flujo** (`quick`·`spec-*`·`plan-*`) | **nueva línea de trabajo** → crea sesión **nueva** (salvo re-run del mismo flujo sobre la misma entrada: `create_or_resume` reabre la existente), arranca el loop → artefactos a **esa** sesión (`SCRIPTS.sql`, …) |
77
- | **Sí** | **prompt sin comando** (relacionado) | **continúa/reabre la sesión más reciente** → los scripts editan **su** `SCRIPTS.sql` (no crea otra) |
78
- | **Sí** | **prompt sin comando** (no-relacionado / sin sesión) | **sin flujo**: trabajo directoescribe en `docs/` por convención + numeración (`aw next-number`) |
79
- | **No** | cualquiera | **vanilla** — sin workspace ni flujo, la IA es libre (nativo) |
76
+ | **Yes** | **flow command** (`quick`·`spec-*`·`plan-*`) | **new work line** → creates a **new** session (except re-running the same flow over the same input: `create_or_resume` reopens the existing one), starts the loop → artifacts go to **that** session (`SCRIPTS.sql`, …) |
77
+ | **Yes** | **prompt with no command** (related) | **continues/reopens the most recent session** → scripts edit **its** `SCRIPTS.sql` (no new session) |
78
+ | **Yes** | **prompt with no command** (unrelated / no session) | **no flow**: direct workwrites into `docs/` by convention + numbering (`aw next-number`) |
79
+ | **No** | anything | **vanilla** — no workspace, no flow; the AI is free (native) |
80
80
 
81
- **Regla de continuidad:** el **comando** señala "nueva línea de trabajo" (sesión nueva)**salvo re-correr el mismo comando sobre la misma entrada** (ej. `/w:spec-refine` sobre el mismo spec), que **no** abre otra línea: `create_or_resume` localiza la sesión de ese flujo (por descriptor + `## Origin`) y la **reanuda o reabre** (quita `.closed`), sin duplicarla; un **prompt sin comando** es "sigo en la misma" → por default continúa/reabre la más reciente (la *última iniciada*); solo si es claramente no-relacionado ofrece elegir (`continuar NNN` | `trabajo nuevo`) o cae a "sin flujo". Convergencia cierra la sesión; un prompt relacionado posterior la **reabre** (el resume quita `.closed`). Es la cara **inter-turno** del *objetivo persistente* (mismo `CHECKPOINT`+resume, aplicado al próximo prompt) — **doctrina agnóstica**, no un hook del host. Aplica a **todo artefacto** (`SCRIPTS.sql` es el ejemplo trabajado); ver `loops/quick-loop/SKILL.md` para el caso QUICK. **Excepción consentida:** la **escalación aceptada** dentro de un loop (ej. quick → SPEC) también abre una **nueva línea de trabajo** sin comando — la señal es el **consentimiento explícito** del usuario en la structured-choice, equivalente a haber invocado el comando del flujo destino.
81
+ **Continuity rule** (single sourcethe chassis and the loops reference here):
82
+
83
+ 1. **Flow command** = **new work line** → new session.
84
+ 2. **Exception — re-run:** the same command over the **same input** (e.g. `/w:spec-refine` over the same spec) does **not** open another line: `create_or_resume` locates that flow's session (descriptor + `## Origin`) and **resumes or reopens** it (removes `.closed`), never duplicating it.
85
+ 3. **Consented exception — escalation:** an **accepted escalation** inside a loop (e.g. quick → SPEC) opens a **new work line without a command**; the signal is the user's **explicit consent** in the structured-choice, equivalent to having invoked the destination flow's command.
86
+ 4. **Prompt with no command** = "same line" → continue/reopen the **most recent** session (the *last started*).
87
+ 5. Only if the prompt is clearly **unrelated**: offer choosing (`continuar NNN` | `trabajo nuevo`) or fall to "no flow".
88
+ 6. **Convergence closes** the session; a later related prompt **reopens** it (resume removes `.closed`).
89
+
90
+ It is the **inter-turn** face of the *persistent objective* (same `CHECKPOINT`+resume, applied to the next prompt) — agnostic doctrine, not a host hook. It applies to **every artifact** (`SCRIPTS.sql` is the worked example; QUICK case: `loops/quick-loop/SKILL.md`).
82
91
 
83
92
  ### The commands (`/w:` namespace)
84
93
 
85
- - `/w:workspace-init` — inicializa el workspace.
86
- - `/w:spec-new` — genera un spec inicial (single-pass, sin loop).
87
- - `/w:spec-refine` — arranca `spec-refine-loop` para refinar el spec.
88
- - `/w:plan-new` — arranca `plan-new-loop` para derivar un plan ejecutable del spec refinado.
89
- - `/w:plan-refine` — arranca `plan-refine-loop` para refinar el plan in place (auxiliar, **no obligatorio**) antes de ejecutar.
90
- - `/w:plan-exec` — arranca `plan-exec-loop` para ejecutar y mantener el plan.
91
- - `/w:quick` — arranca `quick-loop` (atajo, sin `docs/`; escala en vivo a SPEC si el objetivo excede un quick).
92
- - `/w:export-scripts` · `/w:export-manuals` · `/w:export-diagrams` · `/w:export-reports` — promueven artefactos a `docs/`.
94
+ - `/w:workspace-init` — initializes the workspace.
95
+ - `/w:spec-new` — generates an initial spec (single-pass, no loop).
96
+ - `/w:spec-refine` — starts `spec-refine-loop` to refine the spec.
97
+ - `/w:plan-new` — starts `plan-new-loop` to derive an executable plan from the refined spec.
98
+ - `/w:plan-refine` — starts `plan-refine-loop` to refine the plan in place (auxiliary, **not mandatory**) before executing.
99
+ - `/w:plan-exec` — starts `plan-exec-loop` to execute and maintain the plan.
100
+ - `/w:quick` — starts `quick-loop` (shortcut, no `docs/`; escalates live to SPEC when the objective exceeds a quick).
101
+ - `/w:export-scripts` · `/w:export-manuals` · `/w:export-diagrams` · `/w:export-reports` — promote artifacts to `docs/`.
93
102
 
94
103
  ### Transversal skills (no flow) — `/w:status` · `/w:fix-git`
95
104
 
96
- Skills **invocables independientes de flujo**: se disparan con `/w:` igual que un comando, pero **no** pertenecen a SPEC/PLAN/QUICK, **no** manejan `docs/`, y **no** entran en el conteo **6 comandos de flow / 5 loops**. (En el diseño son su propia categoría —`workflow-skills/`, aparte de los comandos de flow—; en el bundle se empaquetan bajo `commands/` para que `/w:` las invoque.)
105
+ **Flow-independent invocable** skills: triggered with `/w:` like any command, but they do **not** belong to SPEC/PLAN/QUICK, do **not** manage `docs/`, and do **not** count in **6 flow commands / 5 loops**. *(In the bundle they are packaged under `commands/` so `/w:` can invoke them; in the design they are the `workflow-skills/` category.)*
97
106
 
98
- - `/w:status` — dashboard read-only del workspace (Hecho/Falta/Descartó, con fechas en español). No escribe nada; se apoya en `aw status`.
99
- - `/w:fix-git` — resuelve conflictos de un merge en curso en cualquier repo (identifica origendestino, analiza intención, *structured-choice* ante ambigüedad). No crea session, no toca `docs/`; git-safe; se apoya en `aw merge-state`.
107
+ - `/w:status` — read-only workspace dashboard (Done/Missing/Discarded, dates humanized in the user's language). Writes nothing; backed by `aw status`.
108
+ - `/w:fix-git` — resolves an in-progress merge's conflicts in any repo (identifies origindestination, analyzes intent, *structured-choice* on ambiguity). No session, never touches `docs/`; git-safe; backed by `aw merge-state`.
100
109
 
101
110
  ### The loops (Layer 2)
102
111
 
103
- Un loop es una skill que enseña a la IA **cómo iterar** hasta un entregable: detecta huecos, los resuelve (humano vía structured-choice, research inline o una capacidad compuesta), integra y repite hasta converger. Los 5 loops corren el mismo **motor común** — objetivo persistente + verification-first, gap-driven convergente, session única por run, structured-choice + control `flow` (`Compactar`/`Cerrar`), compact/resume, artefactos como log vivo, convergence gate — cuyo canon vive en [`loops/CHASSIS.md`](loops/CHASSIS.md); cada loop es un **heir** que agrega solo sus deltas.
112
+ A loop is a skill that teaches the AI **how to iterate** to a deliverable: detect gaps, resolve them (human via structured-choice, inline research or a composed capability), integrate and repeat until convergence. The 5 loops run the same **common engine** — persistent objective + verification-first, gap-driven convergent, single session per run, structured-choice + `flow` control (`Compactar`/`Cerrar`), compact/resume, artifacts as a live log, convergence gate — whose canon lives in [`loops/CHASSIS.md`](loops/CHASSIS.md); each loop is an **heir** adding only its deltas.
104
113
 
105
- Los loops que **editan código** (`plan-exec-loop`, `quick-loop`) aplican además las *Políticas de loops que editan código*: git seguro, BD solo-scripts y el **gate de revisión de cierre** pre-commit (nada llega a un commit propuesto sin revisar) — ver [`loops/CODE-POLICIES.md`](loops/CODE-POLICIES.md) (doc hermano del chasis; los loops de documento no lo cargan).
114
+ The **code-editing** loops (`plan-exec-loop`, `quick-loop`) additionally apply the *code-editing loop policies*: safe git, DB scripts-only and the pre-commit **closing review gate** (nothing reaches a proposed commit unreviewed) — see [`loops/CODE-POLICIES.md`](loops/CODE-POLICIES.md) (the chassis' sibling doc; document loops do not load it).
106
115
 
107
- `spec-new` no tiene loop (single-pass): **6 comandos / 5 loops**.
116
+ `spec-new` has no loop (single-pass): **6 commands / 5 loops**.
108
117
 
109
- ### The `export-*` family (única vía artefacto → `docs/`)
118
+ ### The `export-*` family (the only artifact → `docs/` path)
110
119
 
111
- | Export | Lee | Produce |
120
+ | Export | Reads | Produces |
112
121
  |---|---|---|
113
- | `export-scripts` | `SCRIPTS.sql` (migraciones) de N sesiones | `docs/scripts/` (forwards numerados + `00-ROLLBACK.sql`) |
114
- | `export-manuals` | sesiones + decisiones + plan + código | `docs/manuals/` |
115
- | `export-diagrams` | código de las fuentes + plan (AS-IS/TO-BE) | `docs/diagrams/` (C4 / mermaid) |
116
- | `export-reports` | corpus de sesiones + plan + `docs/` | `docs/reports/` (informe ejecutivo/funcional) |
122
+ | `export-scripts` | `SCRIPTS.sql` (migrations) from N sessions | `docs/scripts/` (numbered forwards + `00-ROLLBACK.sql`) |
123
+ | `export-manuals` | sessions + decisions + plan + code | `docs/manuals/` |
124
+ | `export-diagrams` | source code + plan (AS-IS/TO-BE) | `docs/diagrams/` (C4 / mermaid) |
125
+ | `export-reports` | session corpus + plan + `docs/` | `docs/reports/` (executive/functional report) |
117
126
 
118
- Comunes: Capa 1, explícitos (los invoca el usuario, nunca un loop) · single-pass, read-only sobre sesiones · cross-session (consolidan N sesiones + `docs/`) · sin loop ni sessions internas (opciones por args).
127
+ Common: Layer 1, explicit (user-invoked, never by a loop) · single-pass, read-only over sessions · cross-session (consolidate N sessions + `docs/`) · no loop, no internal sessions (options via args).
119
128
 
120
129
  ### Capability skills + `.workflow/skills.toml`
121
130
 
122
- Un loop **no** compone una skill concreta; compone una **capacidad por su rol** (ej. `ui-design`). Qué skill cumple el rol lo decide la config, no el loop. Cambiar de implementación = una línea del config.
131
+ A loop does **not** compose a concrete skill; it composes a **capability by its role** (e.g. `ui-design`). Which skill fulfills the role is decided by config, never by the loop. Swapping implementations = one config line.
123
132
 
124
133
  ```toml
125
134
  [skills]
@@ -127,54 +136,66 @@ ui-design = "ui-spec" # built-in default
127
136
  sql = "sql"
128
137
  git = "git"
129
138
  research = "research"
130
- # diagrams = "off" # ← capacidad desactivada
131
- # ui-design = "acme/figma-spec" # ← skill de tercero (vía skills.sh)
139
+ # diagrams = "off" # ← capability disabled
140
+ # ui-design = "acme/figma-spec" # ← third-party skill (via skills.sh)
132
141
  ```
133
142
 
134
- **Cascada de resolución**: built-in default → `~/.workflow/skills.toml` (global, PC) → `.workflow/skills.toml` (workspace). El workspace pisa al global; el global al default. Rol sin binding → built-in default. `off` → desactivada (el loop sigue sin ella; si era necesaria, lo dice o pregunta).
143
+ **Resolution cascade**: built-in default → `~/.workflow/skills.toml` (global, machine) → `.workflow/skills.toml` (workspace). Workspace overrides global; global overrides default. Unbound role → built-in default. `off` → disabled (the loop continues without it; if it was needed, it says so or asks).
135
144
 
136
- Catálogo de roles y su default:
145
+ Role catalog and defaults:
137
146
 
138
147
  | Role | Default | Tier | Composed by |
139
148
  |---|---|---|---|
140
149
  | `ui-design` | `ui-spec` | must | `spec-refine-loop` (UI) · `plan-new-loop` / `plan-refine-loop` (design SPECs) |
141
150
  | `sql` | `sql` | must | research · `plan-exec-loop` · `quick-loop` · `export-scripts` |
142
151
  | `git` | `git` | must | `plan-exec-loop` · `quick-loop` |
143
- | `research` | `research` | should | todos los loops (capacidad inline) |
152
+ | `research` | `research` | should | every loop (inline capability) |
144
153
  | `diagrams` | `diagrams` | should | `export-diagrams` |
145
- | `overview` | `workflow` | should | cualquiera (orientación) |
154
+ | `overview` | `workflow` | should | anyone (orientation) |
146
155
 
147
- > **Convenciones ambientes (no roles):** estándares de código/testing/redacción y `creating-tools` son skills standalone que el host auto-descubre por su `description` — el workflow no las bindea ni depende de ellas. Doctrina completa: [roles/README.md](roles/README.md).
156
+ > **Ambient conventions (not roles):** code/testing/writing standards and `creating-tools` are standalone skills the host auto-discovers by `description` — the workflow neither binds nor depends on them. Full doctrine: [roles/README.md](roles/README.md).
148
157
 
149
- El **chasis del loop** NO se bindea: es el motor común de los 5 loops ([`loops/CHASSIS.md`](loops/CHASSIS.md), un doc referenciado), no una capacidad enchufable.
158
+ The **loop chassis** is NOT bound: it is the common engine of the 5 loops ([`loops/CHASSIS.md`](loops/CHASSIS.md), a referenced doc), not a pluggable capability.
150
159
 
151
- ### Harness (agnóstico al arnés)
160
+ ### Harness (harness-agnostic)
152
161
 
153
- La doctrina nombra **capacidades** abstractas, no tools concretos de un arnés. Un solo doc —`harness/SKILL.md`— liga cada capacidad al mecanismo de cada arnés (Claude Code, Codex, Gemini/Antigravity, OpenCode, Crush, Warp, genérico). Dos principios: **capacidad-no-tool** (los loops/comandos referencian la capacidad por nombre) y **progressive-enhancement** (usar el mecanismo más rico del arnés; degradar a un fallback universal cuando no exista).
162
+ The doctrine names abstract **capabilities**, never a concrete harness tool. A single doc —`harness/SKILL.md`— binds each capability to each harness's mechanism (Claude Code, Codex, Gemini/Antigravity, OpenCode, Crush, Warp, generic). Two principles: **capability-not-tool** (loops/commands reference the capability by name) and **progressive-enhancement** (use the harness's richest mechanism; degrade to a universal fallback when it does not exist).
154
163
 
155
- Capacidades clave:
164
+ Key capabilities:
156
165
 
157
- - **structured-choice** — preguntar al humano ≤3 preguntas de contenido + 1 control `flow`. Claude Code: `AskUserQuestion`. Fallback: markdown numerado.
158
- - **compaction** — encoger el contexto sin perder el hilo. Claude Code: `/compact`. Fallback: `CHECKPOINT` + resume.
166
+ - **structured-choice** — ask the human ≤3 content questions + 1 `flow` control. Claude Code: `AskUserQuestion`. Fallback: numbered markdown.
167
+ - **compaction** — shrink the context without losing the thread. Claude Code: `/compact`. Fallback: `CHECKPOINT` + resume.
159
168
  - **command-invocation** · **procedure-loading** · **subagent-dispatch** (opt.) · **persistent-context** · **external-data** (MCP) · **dry-run/preview**.
160
169
 
161
- Las únicas `must` para el ciclo de un loop son **structured-choice** y **compaction**, y ambas degradan a textocualquier arnés con chat + archivos corre el modelo completo. Detalle, matriz de binding y distribución (`AGENTS.md` canónico + symlink `CLAUDE.md`): ver `harness/SKILL.md`.
170
+ The only `must` capabilities for a loop's cycle are **structured-choice** and **compaction**, and both degrade to textany harness with chat + files runs the full model. Detail, binding matrix and distribution (canonical `AGENTS.md` + `CLAUDE.md` symlink): see `harness/SKILL.md`.
171
+
172
+ ### Language policy (per surface)
173
+
174
+ One language per plane — never mix them:
175
+
176
+ | Surface | Language |
177
+ |---|---|
178
+ | Doctrine (this bundle: chassis, loops, commands, roles, exports, harness) | **English** |
179
+ | **Section headings** of artifacts and docs (`## Requirement`, `## Completed`, …) | **English** (parse contract) |
180
+ | Everything **user-facing**: structured-choice questions, reports, dashboards, the **content** the AI writes into artifacts and `docs/` deliverables, commit messages | **the user's language** (this product: Spanish) |
181
+ | Literal option labels (`Compactar`, `Cerrar`, `Guardar plan`, …) | canonical product strings — use them **verbatim** |
182
+ | Domain terms (class/route/table names, e.g. the QTC fleet) | the domain's ubiquitous language (Spanish) — never translated |
162
183
 
163
184
  ### The 6 hard invariants
164
185
 
165
- 1. **Sin auto-export** — los loops nunca graduan/exportan a `docs/`. Solo `export-*` lo hace, explícito.
166
- 2. **Cada flujo toca solo sus carpetas `docs/`** — SPEC→`specs` · PLAN→`plans` · QUICK→ninguna · resto→`export-*`. (`docs/tools` no es de un flujo: lo escribe la skill ambiente `creating-tools`.)
167
- 3. **El spec y el plan son documentos** (`docs/`), no artefactos de sesión. *(No confundir con los **design SPECs** `NNN-SPEC-<SLUG>.md`: artefactos de diseño de UI **por pantalla** que las sesiones de PLAN producen vía la capacidad `ui-design` cuando el plan incluye UI — ver `artifacts/artifacts-design/` — no son el requirement-spec.)*
168
- 4. **BD solo-scripts** — la IA nunca ejecuta DML/DDL; las migraciones quedan en `SCRIPTS.sql` y las aplica el usuario. Solo lecturas read-only vía MCP.
169
- 5. **Git seguro** — rama esperada verificada antes de editar; commits propuestos por fuente; nunca `push`/`--amend`/`--no-verify`.
170
- 6. **Chasis de loops** — los 5 loops corren el mismo **motor común**; cada loop es un heir que agrega solo sus deltas, nada del motor se re-declara. Detalle: `loops/CHASSIS.md`.
186
+ 1. **No auto-export** — loops never graduate/export to `docs/`. Only `export-*` does, explicitly.
187
+ 2. **Each flow touches only its `docs/` folders** — SPEC→`specs` · PLAN→`plans` · QUICK→none · rest→`export-*`. (`docs/tools` belongs to no flow: the ambient skill `creating-tools` writes it.)
188
+ 3. **The spec and the plan are documents** (`docs/`), not session artifacts. *(Not to be confused with the **design SPECs** `NNN-SPEC-<SLUG>.md`: **per-screen** UI design artifacts that PLAN sessions produce via the `ui-design` capability when the plan includes UI — see `artifacts/artifacts-design/` — they are not the requirement-spec.)*
189
+ 4. **DB scripts-only** — the AI never executes DML/DDL; migrations stay in `SCRIPTS.sql` and the user applies them. Only read-only reads via MCP.
190
+ 5. **Safe git** — expected branch verified before editing; proposed commits per source; never `push`/`--amend`/`--no-verify`.
191
+ 6. **Loop chassis** — the 5 loops run the same **common engine**; each loop is an heir adding only its deltas, nothing of the engine is re-declared. Detail: `loops/CHASSIS.md`.
171
192
 
172
- > **Alcance de #1/#2:** gobiernan el plano **sesión → `docs/`** (solo `export-*` lo cruza). El *authoring directo sin flujo* (ver § *Contexto operativo*) es **otro plano**: sin sesión activa, `docs/` es la única superficie gestionadala IA escribe ahí por convención + numeración. No es auto-export (no hay sesión de la cual graduar).
193
+ > **Scope of #1/#2:** they govern the **session → `docs/`** plane (only `export-*` crosses it). *Direct no-flow authoring* (see § *Operating context*) is **another plane**: with no active session, `docs/` is the only managed surfacethe AI writes there by convention + numbering. It is not auto-export (there is no session to graduate from).
173
194
 
174
195
  ## Output
175
196
 
176
- Ninguno. Es orientación pura: no escribe documentos ni artefactos.
197
+ None. Pure orientation: it writes no documents or artifacts.
177
198
 
178
199
  ## Source
179
200
 
180
- Autorada del modelo de diseño (`docs/referencias/`): README de arquitectura (3 capas + 6 invariantes), `workflow-commands/`, `workflow-loops/`, `workflow-artifacts/`, `workflow-exports/`, `workflow-roles/`, `workflow-skills/`, `workflow-harness/`. Modelo actual, desplegado. (Compat: reemplaza la orientación del bundle legacy `session` + flows dev/design/analyze.)
201
+ Authored from the design model (`docs/referencias/`): architecture README (3 layers + 6 invariants), `workflow-commands/`, `workflow-loops/`, `workflow-artifacts/`, `workflow-exports/`, `workflow-roles/`, `workflow-skills/`, `workflow-harness/`. Current, deployed model. (Compat: replaces the legacy `session` bundle orientation + dev/design/analyze flows.)
@@ -19,7 +19,7 @@ Central distinction of the model:
19
19
 
20
20
  > An artifact may be **promoted** to a `docs/` document (e.g. `SCRIPTS.sql` → `docs/scripts/`) — but **only via dedicated `export-*` skills**, **never** automatically by the loops. The spec and the plan **are not** artifacts: they are documents.
21
21
 
22
- > **Routing by operating context.** *Where* an artifact is written is decided by the operating context (see [`../SKILL.md`](../SKILL.md) § *Contexto operativo*): **inside a flow** → the **active/continued** session a prompt with no command edits the `SCRIPTS.sql` (or `DECISION`, …) of the **most recent** session, it does not spawn a new one; **in a workspace but with no flow**directly into `docs/` by convention + numbering (`aw next-number`), since there is no session to hold it (and it is **not** auto-export); **no workspace**the AI is free (vanilla). Session→`docs/` promotion is still **only** via `export-*`.
22
+ > **Routing by operating context** (canonical rules: [`../SKILL.md`](../SKILL.md) § *Contexto operativo*): inside a flow → the **active/continued** session (a prompt with no command edits the most recent session's artifacts); workspace without flow → `docs/` by convention + numbering; no workspace → vanilla. Session→`docs/` promotion is still **only** via `export-*`.
23
23
 
24
24
  ---
25
25
 
@@ -58,9 +58,9 @@ Sessions are created by the loops as needed — **one session per run**. The ses
58
58
 
59
59
  ---
60
60
 
61
- ## Invariants (hard rules — do not break)
61
+ ## Invariants (hard rules — canonical list: [`../SKILL.md`](../SKILL.md) § *The 6 hard invariants*)
62
62
 
63
- 1. **No auto-export**: loops **never** graduate/export to `docs/`. Only `export-*` does, explicitly.
64
- 2. **Each flow touches only its `docs/` folders**: SPEC→`specs` · PLAN→`plans` · QUICK→none · rest→`export-*`. (`docs/tools` is ambient — `creating-tools`, not a flow.)
65
- 3. **Spec and plan are documents** (`docs/`), not artifacts — they never live inside a session. *(Do not confuse with the **design SPECs** `NNN-SPEC-<SLUG>.md`: per-screen UI design artifacts of PLAN sessions — see [`artifacts-design/`](artifacts-design/) — which are not the requirement-spec.)*
66
- 4. **DB scripts-only**: the AI **never executes DML/DDL**; migrations stay in `SCRIPTS.sql` (type B) and are delivered via `export-scripts`. Only read-only queries (type A) are executed via MCP.
63
+ 1. **No auto-export**: only `export-*` promotes to `docs/`, explicitly.
64
+ 2. **Each flow touches only its `docs/` folders**: SPEC→`specs` · PLAN→`plans` · QUICK→none.
65
+ 3. **Spec and plan are documents**, never session artifacts. *(Design SPECs `NNN-SPEC-<SLUG>.md` are a different thing: per-screen UI artifacts of PLAN sessions — [`artifacts-design/`](artifacts-design/).)*
66
+ 4. **DB scripts-only**: never execute DML/DDL; migrations (type B) stay in `SCRIPTS.sql` and ship via `export-scripts`; only read-only queries (type A) run via MCP.
@@ -21,10 +21,4 @@ Session type, **set by the parent loop** (not the user). Authoritative catalog:
21
21
  > `research` is **not** a session type the loops create. Research is an **inline** activity: ANALYSIS-FILE / CONCLUSIONS are written into whatever session is active (`refine`/`exec`/`quick`) when it does investigation.
22
22
 
23
23
  ## Success criteria
24
- The run's **done-condition**, seeded when the session is created (**verification-first** — generalized TDD; see [`../../loops/CHASSIS.md`](../../loops/CHASSIS.md) § Verification-first): a checklist `[ ]` of **falsifiable** items (that *can* fail) defining "done". The loop **persists until they are all green** (it is the *persistent-objective* condition); `CHECKPOINT.Pending/Completed` tracks the **red→green** progress. Two forms:
25
-
26
- - **Executable** (code/script/fix): **runnable** tests/checks (unit, build, lint, bug repro) — literal TDD. May **reference** the repo's tests rather than copy them.
27
- - **Rubric** (analysis/design and other non-executable deliverables): items checked by **inspection** (e.g. "identifies every affected site with `file:line`"; "each decision: rationale + ≥1 alternative"). For **subjective** deliverables the AI **proposes** the rubric and the **human ratifies** it before pursuing it.
28
-
29
- > **Spec/plan** may **reference** the document's acceptance criteria instead of duplicating them. **Research** is the original particular case: its checklist marks the research concluded.
30
- > **If an item cannot be met** (no evidence, DB unavailable, irresolvable): it closes as `inconcluso` with a reason and the loop **degrades** (asks the human or defers to `Open questions`/`BACKLOG`) — never spinning in place.
24
+ The run's **done-condition**, seeded at session creation: a checklist `[ ]` of **falsifiable** items. Executable deliverable runnable tests/checks; non-executable inspection rubric (the human ratifies it if subjective). Spec/plan sessions may **reference** the doc's acceptance criteria instead of duplicating them. Full doctrine: [`../../loops/CHASSIS.md`](../../loops/CHASSIS.md) § *Verification-first*.
@@ -1,6 +1,6 @@
1
1
  # TASKS.md — internal task breakdown (optional, common)
2
2
 
3
- > What it is: an internal phases/tasks breakdown for sessions that need their own desglose. **Optional artifact** — in the PLAN flow, phases and tasks live in the **plan-doc** (`docs/plans/PPP-plan.md`, living). Use this only when a session needs a breakdown that is not covered by the plan-doc.
3
+ > What it is: an internal phases/tasks breakdown for sessions that need their own split. **Optional artifact** — in the PLAN flow, phases and tasks live in the **plan-doc** (`docs/plans/PPP-plan.md`, living). Use this only when a session needs a breakdown that is not covered by the plan-doc.
4
4
 
5
5
  ## Phases
6
6
  Grouping phases. Phases should have a complexity between XS and S.
@@ -1,62 +1,24 @@
1
1
  # TECHNICAL-NOTE.md — technical design note (schema reference)
2
2
 
3
- > **Model note:** in PLAN these sections live **inline in the plan-doc** (`docs/plans/PPP-plan.md`, rich plan, in `plan-new-loop`), not as an exec-session artifact. This file is kept as a reference of the technical schema that the plan absorbs — in PLAN **it is not created** as a session artifact (the plan-doc carries it). It remains available only for a `quick` session that needs scoped technical context without a plan-doc.
3
+ > **Model note:** in PLAN these sections live **inline in the plan-doc** (rich plan `plan-new-loop` § *Delta 1*); this artifact **is not created** in PLAN sessions. It remains only for a `quick` session that needs scoped technical context without a plan-doc.
4
4
 
5
5
  ## Solution
6
- Technical/functional explanation of how the solution will be implemented.
6
+ How it will be implemented (technical/functional).
7
7
 
8
8
  ## Impacted
9
- Impacted components:
10
- - Frontend
11
- - Backend
12
- - Database (schemas/tables/functions)
13
- - APIs (controllers/endpoints)
14
- - Integrations with external systems
9
+ Frontend · Backend · Database (schemas/tables/functions) · APIs · external integrations.
15
10
 
16
11
  ## Dependencies
17
- Dependencies: sessions / documents / projects / sources / databases, etc.
12
+ Sessions / documents / sources / databases.
18
13
 
19
14
  ## Current State
20
- Simple representation of the wiring or cabling (interfaces and methods) — AS-IS behavior.
21
-
22
- Example:
23
- ```
24
- ContratoEfectivoData.demo()
25
-
26
-
27
- ContratoTemplateRenderer
28
- (iface)
29
- │ @Service impl
30
-
31
- ThymeleafContratoTemplateRenderer ──── reads ──> templates/contratos/efectivo.html
32
- │ (returns String HTML)
33
-
34
- PreviewController.efectivoHtml() ──> respond TEXT_HTML
35
-
36
- └─> efectivoPdf() ─> PdfRenderer (iface @Qualifier("chromePdfRenderer"))
37
- │ @Service impl
38
-
39
- CdpPdfRenderer ──> Chrome headless via CDP
40
-
41
-
42
- respond APPLICATION_PDF
43
- ```
15
+ AS-IS wiring (interfaces and methods), brief.
44
16
 
45
17
  ## Target State
46
- Simple representation of the wiring or cabling (interfaces and methods) — TO-BE behavior.
18
+ TO-BE wiring, brief.
47
19
 
48
20
  ## Final Behavior
49
- How the entire flow should behave at the end (must be aligned with the requirements and acceptance/success criteria in SESSION.md).
50
-
51
- Example:
52
- The user must be able to recover their password via OTP to their mobile number and the mobile number must be saved in the user's data:
53
- 1. [User] Accesses the login screen
54
- 2. [User] Clicks [Forgot Password]
55
- 3. [System] Shows a window to enter mobile number
56
- 4. [User] Enters mobile number
57
- 5. [System] Sends OTP via SMS
58
- 6. [System] Confirms OTP
59
- 7. [System] Saves the mobile number and associates it with the [User]
21
+ How the flow behaves end-to-end aligned with the acceptance/success criteria in `SESSION.md`.
60
22
 
61
23
  ## Impact / Risks
62
24
  Technical impacts and risks.
@@ -65,17 +27,10 @@ Technical impacts and risks.
65
27
  Assumptions.
66
28
 
67
29
  ## Estimated Time
68
- Time estimates for [Development] and [Internal Testing].
69
- The work week has 5 days (Monday–Friday only).
70
- Size scale XS/S/M/L/XL:
71
- - XS -> 1 day or less
72
- - S -> 1 to 2 days
73
- - M -> 3 to 5 days
74
- - L -> 6 to 10 days
75
- - XL -> More than 10 days
30
+ XS–XL sizing (development + internal testing); scale defined in the plan schema (`plan-new-loop` § *Delta 1*).
76
31
 
77
32
  ## Validations
78
33
  Validations, constraints, business-specific logic.
79
34
 
80
35
  ## Open Questions
81
- Pending items, doubts, open questions.
36
+ Pending items, doubts.
@@ -1,6 +1,6 @@
1
1
  # CONCLUSIONS.md — research conclusions
2
2
 
3
- > What it is: the conclusions of an **inline research** activity, written into the active session (`refine`/`exec`/`quick`). Produced when the research concludes (success or `inconcluso`). The parent loop reads this to resolve the gap that triggered the research.
3
+ > What it is: the conclusions of an **inline research** activity, written into the active session (`refine`/`exec`/`quick`). Produced when the research concludes (success or `inconclusive`). The parent loop reads this to resolve the gap that triggered the research.
4
4
 
5
5
  ## Conclusion
6
6
  Direct answer to the initial question.