ADR-0002 Phase B. Makes postgres/iac, argocd, and the conventions docs
multi-environment-capable WITHOUT activating any sandbox yet — every app
stays prod-only, so this change is behaviour-neutral:
- postgres/iac `tofu plan` is a no-op (proven: the elision flatten keys
are bare app names, db=<app>, role=<app>_role — identical addresses)
- the argocd apps.yaml render is byte-identical (181→181 lines, diff
empty) since no app declares `envs`
postgres/iac:
- variables.tf: `applications` becomes set(object({name, envs=optional(["prod"])}))
- main.tf: a `local.app_instances` flatten of applications × envs keyed by the
elided instance id (env=prod → "<app>"); per-app resources iterate it and
reference each.key / each.value.{database,role}. For prod-only apps every
resource address + attribute is unchanged. (main.tf also got a full
`tofu fmt` pass — the pgbouncer function block reindents 4→2 spaces, which
is cosmetic; the correctness gate is the CI tofu plan, not the text diff.)
- terraform.tfvars: string entries → { name = "..." } objects.
argocd/templates/apps.yaml:
- after the prod Application, a `range $app_attr.envs` loop renders one extra
Application per non-prod env: name/namespace `<app>-<env>`, shared repoURL,
helm.valueFiles [values.yaml, values-<env>.yaml], per-env syncPolicy override.
Renders nothing while no app sets `envs` → prod render unchanged.
docs:
- doc/runbooks/new-web-app/conventions.md (FR, authoritative): new section
"Plusieurs environnements pour une même app" — elision rule, suffix rule,
snake-case owner-role exception, erp/erp-sandbox table, ADR-0002 link.
- vibe/guidebooks/lab-ecosystem/naming-conventions.md (EN mirror): the env
coordinate section + a "Two sandbox models" section reconciling the
separate-cluster (ADR-0001, names repeat) vs in-cluster sibling (ADR-0002,
<env> suffix) strategies; Last Updated bumped; ADR-0002 cross-links.
Activation (erp gets envs=["prod","sandbox"] in postgres tfvars + argocd
values + erp/iac) is Phase D, gated by its own plan review.
Refs ADR-0002 (factory#15). Phase A = tools#2 (merged). Phase C = erp#11 (merged).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
vibe/ — Arcodange Knowledge Base
You-are-here: the root of the vibe/ knowledge tree — the front door for every doc agents write and read.
Up: factory / AGENTS.md
Status: Active Last Updated: 2026-06-23
What is vibe/?
vibe/ is the knowledge base dedicated to LLM agents working on the Arcodange lab. It collects the why (ADRs), the what/when (PRDs), the what-we-found (investigations), the how-it-fits-together (guidebooks), the how-to-do-it (runbooks), and the what-we-told-humans (shareouts). Everything here is written in English — the single exception is shareouts handouts, which are FRENCH. Operating rules (no-tombstone, mermaid prefs, tree-docs, ADR/PRD/investigation conventions, PR crosslinking, language policy) are defined authoritatively in AGENTS.md; this page summarizes them and points there.
Folder map
| Folder | When to use it | Status |
|---|---|---|
| ADR | Recording an architecture decision (MADR-lite; body immutable once Accepted). Canonical home going forward. | ⬜ |
| PRD | Specifying a product/project: Problem → … → QA strategy → STATUS.md (mandatory, kept current). |
⬜ |
| investigations | Capturing a finding/analysis — single INV-NNN-slug.md, or stub + notebooks when data-heavy. |
⬜ |
| guidebooks | Mapping a component or the ecosystem as navigable tree-docs (the lab cartography). | ⬜ |
| runbooks | Documenting an operational procedure step-by-step with [AGENT] / [HUMAN] markers. |
⬜ |
| shareouts | Producing handouts/presentations for humans (FRENCH). | ⬜ |
Status legend: ✅ done · 🟡 beta · 🔴 critical · ⚠️ known issue · ❌ disabled · ⬜ not started.
Conventions at a glance
- No-tombstone rule (foremost) — write each file as currently true; never leave "previously X, now Y", changelogs, or "updated to …" notes. Git history is the audit trail. Only exception: a forward-looking
> [!CAUTION]about a live risk. - Breadcrumb spine — every non-root file starts with a breadcrumb: ancestors as relative links, current page bold-unlinked, separator
>. This root has no breadcrumb (it uses the you-are-here + up-link above instead). - README hub per folder — each folder's
README.mdis an index table of its children (link + one-line summary + status), sorted by importance/sequence. - Bidirectional links — if A references B as related, B references A. Use descriptive link text (never "here"/"this").
- Mermaid prefs —
theme base/forestinit directive; legibleclassDefpalette (dark fills + light text);<br>not\n; leading space before slash-labels; validate with the Mermaid MCP; a numbered ordered list restating the flow after every diagram. - GitHub alert legend —
[!NOTE]info/forward-looking ·[!TIP]aside ·[!IMPORTANT]inherent constraint ·[!WARNING]degraded-but-working ·[!CAUTION]data-loss/breaking. - Status emoji legend — ✅ done · 🟡 beta · 🔴 critical · ⚠️ known issue · ❌ disabled · ⬜ not started.
- Language policy — English throughout
vibe/; FRENCH only for shareouts handouts.
Authority for all of the above: AGENTS.md.
Maintenance policy
- Adding a page → also add its row to the parent folder's
README.mdindex table. - Keep links bidirectional → when you link A→B, add B→A.
- Stamp
Last Updated:at each tree root (this file and every guidebook/big-PRD root) after any structural change. - Never tombstone → edit content in place; let git carry the history.
- Guidebook coupling → changing a documented component means updating its guidebook page in the same change.
- PR crosslinks → every PR references the ADR/PRD it advances; that ADR's References and the PRD's
STATUS.mdlink back.
Cohort + workflow (recap)
Docs here are produced by a cohort of persona subagents — Lab Cartographer, ADR Scribe, PRD Architect, Runbook Engineer, Investigator, Diagram Smith, Continuity Warden — spawned via the Agent tool or a Workflow. The recommended pipeline for substantial contributions is Scaffold → Author → Validate → Review → Assemble. Full descriptions and responsibilities live in AGENTS.md.