cleanup phases 0 done

This commit is contained in:
hamid
2026-07-29 23:20:46 +03:30
parent c99e3f4a6e
commit d3ec723119
13 changed files with 24889 additions and 4 deletions
View File
+56
View File
@@ -0,0 +1,56 @@
# Balinyaar docs
The entry point. Start here, follow one link, stop reading.
> **Being built.** This tree is the output of [the clarify chain](_plan/README.md). Sections marked
> _not yet written_ are scaffolded but empty — the doc that currently holds that knowledge is named
> beside each one so nothing is unreachable in the meantime.
---
## The rule that keeps three trees apart
| Tree | Answers | Example |
| --- | --- | --- |
| [`product/`](../product/index.md) | **What the business is** | escrow holds funds until check-out is confirmed |
| **`docs/`** (here) | **What we built, and how we work** | the escrow ledger is implemented; here is how to test it |
| `archive/` | **How we got here** | the phase-10 prompt that built the ledger, and its report |
**A file belongs in exactly one.** If you are about to write a business rule into `docs/`, it belongs in
`product/`. If you are about to obey something in `archive/`, stop — it is a record, not an instruction.
`archive/` does not exist yet; Phase 6 creates it from today's [`dev/`](../dev/README.md).
---
## Map
| Section | What it holds | Status |
| --- | --- | --- |
| [rules/](rules/index.md) | What must never be broken — the tiered rule set behind the `CLAUDE.md` files | not yet written · phase 1 |
| [integration/](integration/index.md) | The client↔server seam in one place: contract, config, topology, OpenAPI | OpenAPI snapshot only · phase 2 |
| [flows/](flows/index.md) | What is implemented, and how to test it — one file per user journey | not yet written · phase 3 |
| [status/](status/index.md) | Where the project actually is: implemented, backlog, decisions | not yet written · phase 4 |
| [roadmap/](roadmap/index.md) | Where it goes next, and what gates a launch | not yet written · phase 5 |
| [_plan/](_plan/README.md) | The chain that builds this tree. **Temporary** — moves to `archive/` when done | in progress |
## Still elsewhere
Two documents stay outside this tree on purpose:
- [`DEPLOY.md`](../DEPLOY.md) — the deploy *procedure*, at the repo root where an operator will look for
it. The runtime *topology* it implies moves to `docs/integration/topology.md`.
- [`product/`](../product/index.md) — untouched by this chain. `docs/status/implemented.md` will overlay
build state onto its 14 business areas rather than restating them.
## Conventions
1. **Every status or flow doc carries `> Last verified: <date> against <commit>`.** A doc without one is
a claim, not a fact.
2. **Verify, don't copy.** A load-bearing claim is checked against code or run. If it cannot be checked,
it is written with an explicit `UNVERIFIED:` prefix.
3. **Write short.** A reference doc over ~400 lines should be split.
4. **English throughout**, including in files that describe Persian UI copy.
The full convention lands in `docs/rules/documentation.md` (phase 1), enforced by a pre-commit warning
(phase 7).
+2 -2
View File
@@ -21,7 +21,7 @@ Measured against the working tree at `96b57eb`:
| **Rules live in ~10 places** | root [CLAUDE.md](../../CLAUDE.md) · [client/CLAUDE.md](../../client/CLAUDE.md) **161 KB** · [server/CLAUDE.md](../../server/CLAUDE.md) 75 KB · [server/CONVENTIONS.md](../../server/CONVENTIONS.md) · [client/messages/STYLE.md](../../client/messages/STYLE.md) · [.claude/skills/frontend-designer/SKILL.md](../../.claude/skills/frontend-designer/SKILL.md) · [dev/phases/_shared/](../../dev/phases/_shared/) ×4 · [dev/contracts/conventions/](../../dev/contracts/conventions/) ×2 · 3× `AGENTS.md` · [.githooks/README.md](../../.githooks/README.md) | | **Rules live in ~10 places** | root [CLAUDE.md](../../CLAUDE.md) · [client/CLAUDE.md](../../client/CLAUDE.md) **161 KB** · [server/CLAUDE.md](../../server/CLAUDE.md) 75 KB · [server/CONVENTIONS.md](../../server/CONVENTIONS.md) · [client/messages/STYLE.md](../../client/messages/STYLE.md) · [.claude/skills/frontend-designer/SKILL.md](../../.claude/skills/frontend-designer/SKILL.md) · [dev/phases/_shared/](../../dev/phases/_shared/) ×4 · [dev/contracts/conventions/](../../dev/contracts/conventions/) ×2 · 3× `AGENTS.md` · [.githooks/README.md](../../.githooks/README.md) |
| **Loading `client/CLAUDE.md` costs ~40k tokens** on any client edit | 161 KB, of which lines 103421 are a project-structure listing and lines 4211100 are explanatory reference | | **Loading `client/CLAUDE.md` costs ~40k tokens** on any client edit | 161 KB, of which lines 103421 are a project-structure listing and lines 4211100 are explanatory reference |
| **Remaining work is split across 5 ledgers** | 67 REQs in a 1,115-line append-only file · **18 hardening items, none ticked** · per-phase "Follow-ups" buried in 50+ reports · backend deferrals-with-pull-triggers · [product/notes/open-questions.md](../../product/notes/open-questions.md) · two raw feedback notes in [dev/manual-testing/](../../dev/manual-testing/) | | **Remaining work is split across 5 ledgers** | 67 REQs in a 1,115-line append-only file · **18 hardening items, none ticked** · per-phase "Follow-ups" buried in 50+ reports · backend deferrals-with-pull-triggers · [product/notes/open-questions.md](../../product/notes/open-questions.md) · two raw feedback notes in [dev/manual-testing/](../../dev/manual-testing/) |
| **Contracts drifted from code** | [`dev/contracts/`](../../dev/contracts/) frozen 2026-07-13; `server/src` moved through 2026-07-28. OpenAPI snapshot is from 07-13; a second stale copy sits at [temp/swagger.json](../../temp/swagger.json) (07-06). | | **Contracts drifted from code** | [`dev/contracts/`](../../dev/contracts/) frozen 2026-07-13; `server/src` moved through 2026-07-28. OpenAPI snapshot is from 07-13; a second stale copy sat at `temp/swagger.json` (07-06). **Phase 0 correction:** that copy was **untracked** (`.gitignore:1`), and the measured OpenAPI drift turned out to be one endpoint — see [open-contradictions.md](open-contradictions.md#openapi-drift). |
| **18 files still instruct you to use `dotnet user-secrets`** — removed in `5885280` | includes [manual-testing-plan.md](../../dev/post-phase/manual-testing-plan.md), the closest thing to a test guide | | **18 files still instruct you to use `dotnet user-secrets`** — removed in `5885280` | includes [manual-testing-plan.md](../../dev/post-phase/manual-testing-plan.md), the closest thing to a test guide |
| **No single "what's implemented + how to test it"** | knowledge split across manual-testing-plan, [RUNBOOK.md](../../dev/post-phase/refinement/RUNBOOK.md), `product/business/`, and 18 contract files | | **No single "what's implemented + how to test it"** | knowledge split across manual-testing-plan, [RUNBOOK.md](../../dev/post-phase/refinement/RUNBOOK.md), `product/business/`, and 18 contract files |
| **The client↔server dependency is implicit** | envelope shape, casing, idempotency, cookies/refresh, CORS, `NEXT_PUBLIC_API_URL`, 3 containers + Caddy + remote SQL + the OTP bot — described nowhere as one thing | | **The client↔server dependency is implicit** | envelope shape, casing, idempotency, cookies/refresh, CORS, `NEXT_PUBLIC_API_URL`, 3 containers + Caddy + remote SQL + the OTP bot — described nowhere as one thing |
@@ -152,7 +152,7 @@ stays small.
| Phase | Status | Finished | Notes | | Phase | Status | Finished | Notes |
| --- | --- | --- | --- | | --- | --- | --- | --- |
| 0 Inventory & scaffold | not started | | | | 0 Inventory & scaffold | **done** | 2026-07-29 | 275 files surveyed (not ~260). OpenAPI refreshed — drift is **1 endpoint**, not a rewrite. 3 of 5 seeded contradictions were narrower than stated; see [open-contradictions.md](open-contradictions.md#corrections-to-the-seeded-list). Phase 4 owns 149 files |
| 1 Rules consolidation | not started | | | | 1 Rules consolidation | not started | | |
| 2 Integration & dependency | not started | | | | 2 Integration & dependency | not started | | |
| 3 Flow atlas | not started | | | | 3 Flow atlas | not started | | |
+421
View File
@@ -0,0 +1,421 @@
# Inventory — a disposition for every markdown file
> Survey run 2026-07-29 against commit `c99e3f4`. Produced by
> [phase 0](phase-0-inventory-and-scaffold.md). **This is a survey, not documentation** — it moves to
> `archive/` with the rest of `_plan/` when the chain finishes.
**275 markdown files**, 3.58 MB total. 209 carry
**live facts** — content not yet captured anywhere else, which must be extracted before the file is archived.
## How to read this
| Column | Meaning |
| --- | --- |
| `kind` | `rule` (must-obey) · `reference` · `contract` · `plan` (an instruction to an agent) · `report` · `history` · `business` · `ops` · `feedback` |
| `disposition` | `keep-as-is` · `move` · `distill` · `merge-into` · `archive` · `delete` |
| `target` | where the *content* ends up — a `docs/…` path, or `archive/…` |
| `owner phase` | the phase that extracts the content. `none` = no phase touches the file |
| `live facts?` | does it hold anything not already captured elsewhere? |
Two conventions keep the `target` column short:
1. **Every `dev/**` row is additionally moved to `archive/` by Phase 6.** The `owner phase` column names
the phase that extracts its content *first*; Phase 6 is implied everywhere and is not repeated.
2. `§5` / `§7` refer to the fixed section numbering every `dev/phases/*` prompt shares —
**§5 "Critical rules you must not get wrong"** (the decisions that are *not* visible in the code) and
**§7 "How to test"** (the input Phase 3 turns into flow docs). Verified present in all 32 prompt files.
## Summary
| disposition | files |
| --- | --- |
| `archive` | 172 |
| `keep-as-is` | 59 |
| `distill` | 24 |
| `move` | 17 |
| `merge-into` | 2 |
| `delete` | 1 |
| owner phase | files |
| --- | --- |
| 0 | 1 |
| 1 | 17 |
| 2 | 23 |
| 3 | 2 |
| 4 | 149 |
| 6 | 17 |
| 7 | 31 |
| none | 35 |
| kind | files |
| --- | --- |
| plan | 86 |
| report | 70 |
| business | 48 |
| history | 25 |
| contract | 19 |
| rule | 15 |
| ops | 5 |
| reference | 5 |
| feedback | 2 |
### What this says
- **172 files are `archive`** — nearly all of `dev/`. They are
executed prompts and their reports: a record of how the code got here, phrased as instructions. That
phrasing is the single biggest hazard in the repo, and Phase 6's do-not-obey banner is the fix.
- **Only 1 file is deleted outright** (`Prompt.md`, 0 bytes). Nothing else is lost —
everything either moves, is distilled, or is archived intact.
- **Phase 4 owns 149 files**, by far the largest share. The backlog
reconciliation is the heaviest extraction job in the chain, not the flow atlas.
---
## The table
### Root & repo-level — 6 files
| path | bytes | last commit | kind | disposition | target | owner phase | live facts? |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `.claude/skills/frontend-designer/SKILL.md` | 21 K | 2026-07-27 | rule | `distill` | docs/rules/client/theme.md; skill rewritten | 1 | yes |
| `.githooks/README.md` | 1.6 K | 2026-07-28 | ops | `keep-as-is` | .githooks/README.md + docs/rules/documentation.md | 7 | yes |
| `AGENTS.md` | 478 B | 2026-06-21 | rule | `keep-as-is` | AGENTS.md — links repointed at docs/ | 1 | no |
| `CLAUDE.md` | 8.4 K | 2026-07-28 | rule | `distill` | CLAUDE.md (slim) + docs/rules/ | 1 | yes |
| `DEPLOY.md` | 8.3 K | 2026-07-28 | ops | `keep-as-is` | DEPLOY.md — stale user-secrets ref fixed | 2 | yes |
| `Prompt.md` | 0 B | 2026-06-28 | plan | `delete` | — (0 bytes, empty) | 0 | no |
### `client/` — 5 files
| path | bytes | last commit | kind | disposition | target | owner phase | live facts? |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `client/AGENTS.md` | 594 B | 2026-06-21 | rule | `keep-as-is` | client/AGENTS.md — links repointed | 1 | no |
| `client/CLAUDE.md` | 158 K | 2026-07-27 | rule | `distill` | client/CLAUDE.md (slim) + docs/rules/client/* | 1 | yes |
| `client/README.md` | 4.5 K | 2026-06-23 | reference | `keep-as-is` | client/README.md | 1 | no |
| `client/graphify-out/GRAPH_REPORT.md` | 18 K | untracked | report | `keep-as-is` | — (gitignored tool output, not repo content) | none | no |
| `client/messages/STYLE.md` | 7.6 K | 2026-07-19 | rule | `distill` | docs/rules/client/i18n.md | 1 | yes |
### `server/` — 6 files
| path | bytes | last commit | kind | disposition | target | owner phase | live facts? |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `server/AGENTS.md` | 573 B | 2026-06-21 | rule | `keep-as-is` | server/AGENTS.md — links repointed | 1 | no |
| `server/CLAUDE.md` | 73 K | 2026-07-28 | rule | `distill` | server/CLAUDE.md (slim) + docs/rules/server/* | 1 | yes |
| `server/CONVENTIONS.md` | 26 K | 2026-07-28 | rule | `distill` | docs/rules/server/conventions.md | 1 | yes |
| `server/LICENSE.md` | 1.1 K | 2026-06-16 | reference | `keep-as-is` | server/LICENSE.md | none | no |
| `server/README.md` | 5.3 K | 2026-06-21 | reference | `keep-as-is` | server/README.md | 1 | no |
| `server/graphify-out/GRAPH_REPORT.md` | 76 K | untracked | report | `keep-as-is` | — (gitignored tool output, not repo content) | none | no |
### `telegram-otp-bot/` — 2 files
| path | bytes | last commit | kind | disposition | target | owner phase | live facts? |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `telegram-otp-bot/INTEGRATION-PROMPT.md` | 8.1 K | 2026-07-27 | plan | `archive` | archive/post-phase/; config facts → docs/integration/config-matrix.md | 2 | yes |
| `telegram-otp-bot/README.md` | 7.5 K | 2026-07-28 | ops | `keep-as-is` | telegram-otp-bot/README.md; cited by docs/integration/topology.md | 2 | yes |
### `docs/_plan/` — this chain — 9 files
| path | bytes | last commit | kind | disposition | target | owner phase | live facts? |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `docs/_plan/README.md` | 10 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes |
| `docs/_plan/phase-0-inventory-and-scaffold.md` | 7.6 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes |
| `docs/_plan/phase-1-rules-consolidation.md` | 9.3 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes |
| `docs/_plan/phase-2-integration.md` | 7.8 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes |
| `docs/_plan/phase-3-flow-atlas.md` | 9.6 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes |
| `docs/_plan/phase-4-backlog.md` | 8.5 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes |
| `docs/_plan/phase-5-roadmap.md` | 5.8 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes |
| `docs/_plan/phase-6-archive.md` | 4.8 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes |
| `docs/_plan/phase-7-skills-and-guardrails.md` | 5.9 K | 2026-07-29 | plan | `archive` | archive/_plan/ (when the chain finishes) | 6 | yes |
### `dev/contracts/` — the API contract layer — 21 files
| path | bytes | last commit | kind | disposition | target | owner phase | live facts? |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `dev/contracts/README.md` | 2.7 K | 2026-06-28 | contract | `move` | docs/integration/index.md | 2 | yes |
| `dev/contracts/conventions/api-conventions.md` | 2.9 K | 2026-07-13 | rule | `distill` | docs/rules/shared/api-conventions.md + docs/integration/api-contract.md | 1 | yes |
| `dev/contracts/conventions/money-and-types.md` | 2.6 K | 2026-06-28 | rule | `distill` | docs/rules/shared/money-and-types.md | 1 | yes |
| `dev/contracts/domains/_TEMPLATE.md` | 1.2 K | 2026-07-13 | contract | `move` | docs/integration/domains/_TEMPLATE.md | 2 | no |
| `dev/contracts/domains/bnpl.md` | 9.5 K | 2026-07-13 | contract | `move` | docs/integration/domains/bnpl.md | 2 | yes |
| `dev/contracts/domains/booking-requests.md` | 11 K | 2026-07-13 | contract | `move` | docs/integration/domains/booking-requests.md | 2 | yes |
| `dev/contracts/domains/bookings-evv.md` | 9.1 K | 2026-07-13 | contract | `move` | docs/integration/domains/bookings-evv.md | 2 | yes |
| `dev/contracts/domains/catalog.md` | 9.3 K | 2026-07-13 | contract | `move` | docs/integration/domains/catalog.md | 2 | yes |
| `dev/contracts/domains/config-reference.md` | 7.4 K | 2026-07-13 | contract | `move` | docs/integration/domains/config-reference.md | 2 | yes |
| `dev/contracts/domains/geography-addresses.md` | 8.1 K | 2026-07-13 | contract | `move` | docs/integration/domains/geography-addresses.md | 2 | yes |
| `dev/contracts/domains/identity-auth.md` | 7.3 K | 2026-07-13 | contract | `move` | docs/integration/domains/identity-auth.md | 2 | yes |
| `dev/contracts/domains/identity-profiles.md` | 7.1 K | 2026-07-13 | contract | `move` | docs/integration/domains/identity-profiles.md | 2 | yes |
| `dev/contracts/domains/messaging-notifications-admin.md` | 11 K | 2026-07-13 | contract | `merge-into` | docs/integration/domains/messaging.md (absorbs messaging.md) | 2 | yes |
| `dev/contracts/domains/messaging.md` | 851 B | 2026-07-13 | contract | `merge-into` | docs/integration/domains/messaging.md (with messaging-notifications-admin.md) | 2 | yes |
| `dev/contracts/domains/payments.md` | 5.2 K | 2026-07-13 | contract | `move` | docs/integration/domains/payments.md | 2 | yes |
| `dev/contracts/domains/payouts.md` | 9.8 K | 2026-07-13 | contract | `move` | docs/integration/domains/payouts.md | 2 | yes |
| `dev/contracts/domains/refunds-invoices.md` | 11 K | 2026-07-13 | contract | `move` | docs/integration/domains/refunds-invoices.md | 2 | yes |
| `dev/contracts/domains/reviews-records.md` | 9.5 K | 2026-07-13 | contract | `move` | docs/integration/domains/reviews-records.md | 2 | yes |
| `dev/contracts/domains/search.md` | 6.6 K | 2026-07-13 | contract | `move` | docs/integration/domains/search.md | 2 | yes |
| `dev/contracts/domains/verification.md` | 18 K | 2026-07-13 | contract | `move` | docs/integration/domains/verification.md | 2 | yes |
| `dev/contracts/openapi/README.md` | 1.2 K | 2026-06-28 | contract | `move` | docs/integration/openapi/README.md | 2 | yes |
### `dev/phases/` — executed build prompts — 38 files
| path | bytes | last commit | kind | disposition | target | owner phase | live facts? |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `dev/phases/README.md` | 11 K | 2026-06-28 | plan | `archive` | archive/build-chain/ | 6 | no |
| `dev/phases/_shared/agent-operating-rules.md` | 13 K | 2026-06-28 | rule | `distill` | docs/rules/shared/* | 1 | yes |
| `dev/phases/_shared/backend-conventions-checklist.md` | 4.1 K | 2026-06-28 | rule | `distill` | docs/rules/server/* | 1 | yes |
| `dev/phases/_shared/definition-of-done.md` | 2.8 K | 2026-06-28 | rule | `distill` | docs/rules/documentation.md + docs/rules/shared/git.md | 1 | yes |
| `dev/phases/_shared/frontend-conventions-checklist.md` | 3.3 K | 2026-06-28 | rule | `distill` | docs/rules/client/* | 1 | yes |
| `dev/phases/_shared/phase-template.md` | 3.1 K | 2026-06-28 | plan | `archive` | archive/build-chain/ (template — nothing to extract) | 6 | no |
| `dev/phases/backend/backend-phase-0.md` | 12 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-1.md` | 32 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-10.md` | 38 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-11.md` | 38 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-12.md` | 33 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-13.md` | 28 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-14.md` | 27 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-15.md` | 42 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-2.md` | 26 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-3.md` | 31 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-4.md` | 30 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-5.md` | 35 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-6.md` | 35 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-7.md` | 31 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-8.md` | 38 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/backend/backend-phase-9.md` | 43 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-0.md` | 11 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-1-b2.md` | 26 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-10-b11.md` | 23 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-11-b12.md` | 26 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-12-b13.md` | 27 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-13-b14.md` | 26 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-14-b15.md` | 26 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-15-b15.md` | 56 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-2-b3.md` | 26 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-3-b4.md` | 23 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-4-b5.md` | 27 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-5-b6.md` | 28 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-6-b7.md` | 25 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-7-b8.md` | 27 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-8-b9.md` | 29 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
| `dev/phases/frontend/frontend-phase-9-b10.md` | 27 K | 2026-06-28 | plan | `archive` | archive/build-chain/phases/ · §5 → docs/status/decisions.md + docs/rules/ · §7 → docs/flows/ | 4 | yes |
### `dev/post-phase/` — follow-up chains — 56 files
| path | bytes | last commit | kind | disposition | target | owner phase | live facts? |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `dev/post-phase/hardening/LOOP-PROMPT.md` | 3.0 K | 2026-07-17 | plan | `archive` | archive/post-phase/ | 6 | no |
| `dev/post-phase/hardening/README.md` | 9.4 K | 2026-07-17 | plan | `archive` | archive/post-phase/; scope → docs/status/backlog.md | 4 | yes |
| `dev/post-phase/hardening/hardening-phase-0-auth-gate.md` | 6.9 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · scope → docs/status/backlog.md | 4 | yes |
| `dev/post-phase/hardening/hardening-phase-1-admin-rbac.md` | 7.3 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · scope → docs/status/backlog.md | 4 | yes |
| `dev/post-phase/hardening/hardening-phase-2-mock-integrity.md` | 7.7 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · scope → docs/status/backlog.md | 4 | yes |
| `dev/post-phase/hardening/hardening-phase-3-session-error-ux.md` | 6.2 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · scope → docs/status/backlog.md | 4 | yes |
| `dev/post-phase/hardening/hardening-phase-4-contract-completion.md` | 7.1 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · scope → docs/status/backlog.md | 4 | yes |
| `dev/post-phase/hardening/hardening-phase-5-final-demock.md` | 6.2 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · scope → docs/status/backlog.md | 4 | yes |
| `dev/post-phase/hardening/issues.md` | 12 K | 2026-07-17 | plan | `distill` | docs/status/backlog.md (18 items, re-verified) | 4 | yes |
| `dev/post-phase/manual-testing-plan.md` | 24 K | 2026-07-27 | ops | `distill` | docs/flows/testing-setup.md + docs/flows/<flow>.md | 3 | yes |
| `dev/post-phase/refinement/README.md` | 10 K | 2026-07-10 | plan | `archive` | archive/post-phase/ | 6 | no |
| `dev/post-phase/refinement/RUNBOOK.md` | 15 K | 2026-07-28 | ops | `distill` | docs/flows/testing-setup.md | 3 | yes |
| `dev/post-phase/refinement/refinement-phase-0-bring-up.md` | 12 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes |
| `dev/post-phase/refinement/refinement-phase-1-database-and-seed.md` | 10 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes |
| `dev/post-phase/refinement/refinement-phase-2-auth-and-role-nav.md` | 9.8 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes |
| `dev/post-phase/refinement/refinement-phase-3-contract-batch.md` | 13 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes |
| `dev/post-phase/refinement/refinement-phase-4-frontend-de-mock.md` | 10 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes |
| `dev/post-phase/refinement/refinement-phase-5-security-hygiene.md` | 5.5 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes |
| `dev/post-phase/refinement/refinement-phase-6-money-correctness.md` | 5.9 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes |
| `dev/post-phase/refinement/refinement-phase-7-unattended-ops.md` | 6.5 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes |
| `dev/post-phase/refinement/refinement-phase-8-external-rails.md` | 7.7 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes |
| `dev/post-phase/refinement/refinement-phase-9-observability-and-scale.md` | 6.3 K | 2026-07-10 | plan | `archive` | archive/post-phase/ · decisions → docs/status/decisions.md | 4 | yes |
| `dev/post-phase/server/README.md` | 2.5 K | 2026-07-10 | plan | `archive` | archive/post-phase/ | 6 | no |
| `dev/post-phase/server/frontend-backend-gaps.md` | 18 K | 2026-07-10 | plan | `distill` | docs/status/backlog.md | 4 | yes |
| `dev/post-phase/server/post-phase-backend-plan.md` | 42 K | 2026-07-10 | plan | `distill` | docs/status/decisions.md + backlog.md | 4 | yes |
| `dev/post-phase/server/runtime-services.md` | 21 K | 2026-07-13 | reference | `distill` | docs/integration/topology.md + docs/rules/server/* | 2 | yes |
| `dev/post-phase/ui/README.md` | 16 K | 2026-07-17 | plan | `archive` | archive/post-phase/; design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/admin-partner.md` | 21 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/auth-first-run.md` | 18 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/booking-lifecycle.md` | 20 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/checkout-money.md` | 19 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/component-primitives.md` | 20 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/cross-cutting-ux.md` | 19 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/customer-account.md` | 18 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/customer-storefront.md` | 20 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/feature-components.md` | 20 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/messaging-notifications.md` | 19 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/microcopy.md` | 17 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/nurse-trust-ops.md` | 21 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/nurse-workspace.md` | 19 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/shell-and-navigation.md` | 20 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/audit/theme-and-brand.md` | 19 K | 2026-07-17 | report | `archive` | archive/post-phase/ · design reality → frontend-designer skill | 7 | yes |
| `dev/post-phase/ui/ui-phase-0-design-language.md` | 24 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-1-primitives-and-states.md` | 23 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-10-messaging-and-notifications.md` | 22 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-11-admin-and-partner-console.md` | 22 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-12-copy-motion-and-polish.md` | 23 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-13-public-front-door.md` | 21 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-2-shells-and-navigation.md` | 23 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-3-auth-and-first-run.md` | 21 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-4-customer-storefront.md` | 24 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-5-booking-lifecycle.md` | 21 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-6-checkout-and-money.md` | 23 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-7-nurse-daily-ops.md` | 22 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-8-nurse-business-and-verification.md` | 22 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
| `dev/post-phase/ui/ui-phase-9-customer-account-and-care-circle.md` | 23 K | 2026-07-17 | plan | `archive` | archive/post-phase/ · design rules → docs/rules/client/theme.md | 7 | yes |
### `dev/shared-working-context/` — handoffs, status, reports — 81 files
| path | bytes | last commit | kind | disposition | target | owner phase | live facts? |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `dev/shared-working-context/README.md` | 3.0 K | 2026-06-28 | plan | `archive` | archive/build-chain/ | 6 | no |
| `dev/shared-working-context/backend/STATUS.md` | 39 K | 2026-07-13 | history | `distill` | docs/status/decisions.md + docs/status/implemented.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-0.md` | 3.1 K | 2026-06-30 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-1.md` | 4.3 K | 2026-07-02 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-10.md` | 4.2 K | 2026-07-06 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-11.md` | 3.5 K | 2026-07-09 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-12.md` | 4.2 K | 2026-07-09 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-13.md` | 4.2 K | 2026-07-09 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-14.md` | 4.5 K | 2026-07-09 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-15.md` | 4.5 K | 2026-07-10 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-2.md` | 3.5 K | 2026-07-02 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-3.md` | 4.1 K | 2026-07-02 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-4.md` | 4.4 K | 2026-07-02 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-5.md` | 6.4 K | 2026-07-02 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-6.md` | 7.3 K | 2026-07-05 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-7.md` | 3.3 K | 2026-07-05 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-8.md` | 4.9 K | 2026-07-06 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-backend-phase-9.md` | 3.5 K | 2026-07-06 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-refinement-phase-0.md` | 2.5 K | 2026-07-12 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-refinement-phase-1.md` | 3.4 K | 2026-07-13 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-refinement-phase-6.md` | 2.2 K | 2026-07-13 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-refinement-phase-7.md` | 2.4 K | 2026-07-13 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-refinement-phase-8.md` | 4.0 K | 2026-07-13 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/backend/handoff/after-refinement-phase-9.md` | 3.0 K | 2026-07-13 | history | `archive` | archive/build-chain/ · deferrals → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/frontend/STATUS.md` | 45 K | 2026-07-13 | history | `distill` | docs/status/decisions.md + docs/status/implemented.md | 4 | yes |
| `dev/shared-working-context/frontend/requests/for-backend.md` | 104 K | 2026-07-20 | history | `distill` | docs/status/backlog.md (67 REQs → BL-###) | 4 | yes |
| `dev/shared-working-context/reports/README.md` | 1.4 K | 2026-06-28 | plan | `archive` | archive/build-chain/ | 6 | no |
| `dev/shared-working-context/reports/backend-phase-0-report.md` | 6.8 K | 2026-06-30 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-1-report.md` | 5.9 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-10-report.md` | 5.4 K | 2026-07-06 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-11-report.md` | 6.7 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-12-report.md` | 7.6 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-13-report.md` | 6.2 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-14-report.md` | 7.0 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-15-report.md` | 6.5 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-2-report.md` | 7.8 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-3-report.md` | 5.2 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-4-report.md` | 5.7 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-5-report.md` | 7.8 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-6-report.md` | 10 K | 2026-07-05 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-7-report.md` | 6.3 K | 2026-07-05 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-8-report.md` | 6.6 K | 2026-07-06 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/backend-phase-9-report.md` | 6.4 K | 2026-07-06 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-0-report.md` | 6.8 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-1-report.md` | 7.4 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-10-report.md` | 8.4 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-11-report.md` | 8.4 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-12-report.md` | 8.3 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-13-report.md` | 11 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-14-report.md` | 13 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-15-report.md` | 10 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-2-report.md` | 6.6 K | 2026-07-02 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-3-report.md` | 8.4 K | 2026-07-05 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-4-report.md` | 9.3 K | 2026-07-05 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-5-report.md` | 8.9 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-6-report.md` | 6.5 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-7-report.md` | 9.5 K | 2026-07-09 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-8-report.md` | 9.5 K | 2026-07-10 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/frontend-phase-9-report.md` | 14 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/mocks-registry.md` | 73 K | 2026-07-19 | reference | `distill` | docs/status/implemented.md + docs/integration/index.md | 4 | yes |
| `dev/shared-working-context/reports/refinement-phase-0-report.md` | 6.1 K | 2026-07-12 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/refinement-phase-1-report.md` | 7.3 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/refinement-phase-2-report.md` | 6.6 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/refinement-phase-6-report.md` | 6.8 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/refinement-phase-7-report.md` | 6.6 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/refinement-phase-8-report.md` | 12 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/refinement-phase-9-report.md` | 10 K | 2026-07-13 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-0-report.md` | 14 K | 2026-07-17 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-1-report.md` | 18 K | 2026-07-17 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-10-report.md` | 18 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-11-report.md` | 22 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-12-report.md` | 21 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-13-report.md` | 11 K | 2026-07-20 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-2-report.md` | 14 K | 2026-07-17 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-3-report.md` | 14 K | 2026-07-18 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-4-report.md` | 12 K | 2026-07-18 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-5-report.md` | 15 K | 2026-07-18 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-6-report.md` | 17 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-7-report.md` | 15 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-8-report.md` | 18 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
| `dev/shared-working-context/reports/ui-phase-9-report.md` | 14 K | 2026-07-19 | report | `archive` | archive/build-chain/reports/ · "Follow-ups" → docs/status/backlog.md | 4 | yes |
### `dev/manual-testing/` — human feedback — 2 files
| path | bytes | last commit | kind | disposition | target | owner phase | live facts? |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `dev/manual-testing/iteration-1/improvement-and-fix-1.md` | 3.4 K | 2026-07-27 | feedback | `distill` | docs/status/backlog.md (unfinished items); PNGs kept | 4 | yes |
| `dev/manual-testing/iteration-2/improvement-2.md` | 1.2 K | 2026-07-27 | feedback | `distill` | docs/status/backlog.md (unfinished items); PNGs kept | 4 | yes |
### `dev/` root — 1 file
| path | bytes | last commit | kind | disposition | target | owner phase | live facts? |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `dev/README.md` | 2.3 K | 2026-07-17 | plan | `archive` | archive/README.md context | 6 | no |
### `product/` — business docs (untouched) — 48 files
| path | bytes | last commit | kind | disposition | target | owner phase | live facts? |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `product/README.md` | 2.9 K | 2026-06-24 | business | `keep-as-is` | product/README.md | none | no |
| `product/business/01-actors-and-onboarding.md` | 3.9 K | 2026-07-02 | business | `keep-as-is` | product/business/01-actors-and-onboarding.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/02-nurse-verification.md` | 6.8 K | 2026-07-05 | business | `keep-as-is` | product/business/02-nurse-verification.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/03-service-catalog-and-pricing.md` | 2.6 K | 2026-06-24 | business | `keep-as-is` | product/business/03-service-catalog-and-pricing.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/04-search-and-matching.md` | 2.8 K | 2026-06-24 | business | `keep-as-is` | product/business/04-search-and-matching.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/05-booking-and-scheduling.md` | 3.6 K | 2026-06-24 | business | `keep-as-is` | product/business/05-booking-and-scheduling.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/06-evv-and-service-delivery.md` | 2.3 K | 2026-06-24 | business | `keep-as-is` | product/business/06-evv-and-service-delivery.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/07-cancellation-and-refunds.md` | 4.1 K | 2026-07-09 | business | `keep-as-is` | product/business/07-cancellation-and-refunds.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/08-payments-and-escrow.md` | 4.8 K | 2026-06-24 | business | `keep-as-is` | product/business/08-payments-and-escrow.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/09-installments-bnpl.md` | 4.6 K | 2026-06-24 | business | `keep-as-is` | product/business/09-installments-bnpl.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/10-payouts.md` | 5.0 K | 2026-07-09 | business | `keep-as-is` | product/business/10-payouts.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/11-reviews-trust-and-safety.md` | 2.2 K | 2026-06-24 | business | `keep-as-is` | product/business/11-reviews-trust-and-safety.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/12-messaging-and-emergencies.md` | 2.3 K | 2026-06-24 | business | `keep-as-is` | product/business/12-messaging-and-emergencies.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/13-tax-invoicing-and-legal.md` | 4.0 K | 2026-06-24 | business | `keep-as-is` | product/business/13-tax-invoicing-and-legal.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/14-notifications-and-admin.md` | 2.8 K | 2026-06-24 | business | `keep-as-is` | product/business/14-notifications-and-admin.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/business/index.md` | 5.3 K | 2026-06-24 | business | `keep-as-is` | product/business/index.md · read-only source for docs/status/implemented.md | 4 | no |
| `product/data-model/01-identity-and-access.md` | 8.9 K | 2026-07-02 | business | `keep-as-is` | product/data-model/01-identity-and-access.md | none | no |
| `product/data-model/02-geography.md` | 1.9 K | 2026-07-02 | business | `keep-as-is` | product/data-model/02-geography.md | none | no |
| `product/data-model/03-services-and-pricing.md` | 4.2 K | 2026-06-24 | business | `keep-as-is` | product/data-model/03-services-and-pricing.md | none | no |
| `product/data-model/04-verification-and-credentials.md` | 3.8 K | 2026-06-24 | business | `keep-as-is` | product/data-model/04-verification-and-credentials.md | none | no |
| `product/data-model/05-booking-and-scheduling.md` | 8.3 K | 2026-06-24 | business | `keep-as-is` | product/data-model/05-booking-and-scheduling.md | none | no |
| `product/data-model/06-payments-ledger-and-refunds.md` | 11 K | 2026-07-09 | business | `keep-as-is` | product/data-model/06-payments-ledger-and-refunds.md | none | no |
| `product/data-model/07-payouts.md` | 2.1 K | 2026-06-24 | business | `keep-as-is` | product/data-model/07-payouts.md | none | no |
| `product/data-model/08-bnpl.md` | 2.8 K | 2026-06-24 | business | `keep-as-is` | product/data-model/08-bnpl.md | none | no |
| `product/data-model/09-messaging.md` | 958 B | 2026-06-24 | business | `keep-as-is` | product/data-model/09-messaging.md | none | no |
| `product/data-model/10-reviews-and-records.md` | 1.6 K | 2026-06-24 | business | `keep-as-is` | product/data-model/10-reviews-and-records.md | none | no |
| `product/data-model/11-notifications.md` | 868 B | 2026-06-24 | business | `keep-as-is` | product/data-model/11-notifications.md | none | no |
| `product/data-model/12-audit-config-and-reference.md` | 3.7 K | 2026-07-02 | business | `keep-as-is` | product/data-model/12-audit-config-and-reference.md | none | no |
| `product/data-model/13-partner-centers-and-future.md` | 2.6 K | 2026-06-24 | business | `keep-as-is` | product/data-model/13-partner-centers-and-future.md | none | no |
| `product/data-model/diagrams.md` | 5.4 K | 2026-06-24 | business | `keep-as-is` | product/data-model/diagrams.md | none | no |
| `product/data-model/index.md` | 20 K | 2026-06-24 | business | `keep-as-is` | product/data-model/index.md | none | no |
| `product/index.md` | 3.2 K | 2026-06-24 | business | `keep-as-is` | product/index.md | none | no |
| `product/notes/future-ideas.md` | 2.5 K | 2026-06-24 | business | `keep-as-is` | product/notes/future-ideas.md | none | no |
| `product/notes/open-questions.md` | 4.6 K | 2026-07-20 | business | `keep-as-is` | product/notes/open-questions.md · read-only source for docs/status/backlog.md | 4 | no |
| `product/overview/platform-summary.md` | 5.2 K | 2026-06-24 | business | `keep-as-is` | product/overview/platform-summary.md | none | no |
| `product/payments/bnpl-landscape.md` | 6.4 K | 2026-06-24 | business | `keep-as-is` | product/payments/bnpl-landscape.md | none | no |
| `product/payments/cancellation-and-payout.md` | 5.8 K | 2026-06-24 | business | `keep-as-is` | product/payments/cancellation-and-payout.md | none | no |
| `product/payments/escrow-ledger.md` | 5.5 K | 2026-07-06 | business | `keep-as-is` | product/payments/escrow-ledger.md | none | no |
| `product/payments/index.md` | 6.1 K | 2026-06-24 | business | `keep-as-is` | product/payments/index.md | none | no |
| `product/payments/integration-notes.md` | 6.5 K | 2026-06-24 | business | `keep-as-is` | product/payments/integration-notes.md | none | no |
| `product/payments/iranian-payment-reality.md` | 5.1 K | 2026-06-24 | business | `keep-as-is` | product/payments/iranian-payment-reality.md | none | no |
| `product/payments/sources.md` | 6.5 K | 2026-06-24 | business | `keep-as-is` | product/payments/sources.md | none | no |
| `product/research/go-to-market.md` | 5.0 K | 2026-06-24 | business | `keep-as-is` | product/research/go-to-market.md | none | no |
| `product/research/index.md` | 4.5 K | 2026-06-24 | business | `keep-as-is` | product/research/index.md | none | no |
| `product/research/legal-landscape.md` | 5.0 K | 2026-06-24 | business | `keep-as-is` | product/research/legal-landscape.md | none | no |
| `product/research/market-and-competitors.md` | 10 K | 2026-06-24 | business | `keep-as-is` | product/research/market-and-competitors.md | none | no |
| `product/research/problems-and-risks.md` | 9.7 K | 2026-06-24 | business | `keep-as-is` | product/research/problems-and-risks.md | none | no |
| `product/research/verification.md` | 7.5 K | 2026-06-24 | business | `keep-as-is` | product/research/verification.md | none | no |
---
## Non-markdown files this chain also moves
The survey covers `.md` files. Three non-markdown files are load-bearing for the same phases:
| path | bytes | disposition | target | owner phase |
| --- | --- | --- | --- | --- |
| `dev/contracts/openapi/swagger.v1.json` | 610 K | `archive` | superseded by `docs/integration/openapi/swagger.v1.json` | 2 |
| `temp/swagger.json` | 364 K | `delete` | — (stale duplicate, 2026-07-06; **untracked**`.gitignore:1` ignores `temp`) | 0 |
| `dev/manual-testing/iteration-{1,2}/*.png` (7 files) | — | `archive` | `archive/manual-testing/` — the only visual record of the pre-overhaul UI | 6 |
+103
View File
@@ -0,0 +1,103 @@
# Open contradictions
> Opened 2026-07-29 by [phase 0](phase-0-inventory-and-scaffold.md), against commit `c99e3f4`.
> **Phase 0 only finds these. It resolves none of them.**
Each row is *claim A* vs *claim B* with a location for both, and the phase that owns the resolution.
When a phase resolves one, it moves the row to **Resolved** at the bottom with the decision, and — per
the chain's non-negotiable #5 — records the decision in `docs/status/decisions.md`.
Three of the five contradictions the plan seeded turned out to be **narrower than stated**. Those are
written up as they actually are, with the evidence, in [§ Corrections to the seeded list](#corrections-to-the-seeded-list).
---
## Open
| # | Claim A | Claim B | Owner | Status |
| --- | --- | --- | --- | --- |
| C-1 | **Set the crypto keys with `dotnet user-secrets`** — [manual-testing-plan.md:22](../../dev/post-phase/manual-testing-plan.md), [:233](../../dev/post-phase/manual-testing-plan.md) | **`user-secrets` is not used; `<UserSecretsId>` was removed so the store is not read** — [CLAUDE.md:90](../../CLAUDE.md), [DEPLOY.md:20](../../DEPLOY.md), [server/CLAUDE.md:70](../../server/CLAUDE.md), and `Baya.Web.Api.csproj` (no `UserSecretsId` element) | 3 | open |
| C-2 | **Placeholder value is literally `SET_VIA_USER_SECRETS_OR_ENV`**`server/src/API/Baya.Web.Api/appsettings.json` (6 occurrences), enforced by `StartupSecretsGuard` and by the pre-commit hook | **That store does not exist any more** (C-1's B side). The name instructs a reader to use a removed mechanism | 2 | open — naming only, behaviour is correct |
| C-3 | **The server listens on `https://localhost:5002`** — [CLAUDE.md:62](../../CLAUDE.md), [:135](../../CLAUDE.md), [api-conventions.md:6](../../dev/contracts/conventions/api-conventions.md), [RUNBOOK.md:7](../../dev/post-phase/refinement/RUNBOOK.md), [:84](../../dev/post-phase/refinement/RUNBOOK.md), [:112](../../dev/post-phase/refinement/RUNBOOK.md), + 12 more | **It listens on `http://localhost:5002`**`launchSettings.json:25` (`"applicationUrl": "http://localhost:5002"`), and `client/.env.development:20` (`NEXT_PUBLIC_API_URL = http://localhost:5002`) | 2 + 3 | open |
| C-4 | **RUNBOOK's `dotnet dev-certs https --trust` step is required**, because the browser would otherwise reject the API — [RUNBOOK.md:26](../../dev/post-phase/refinement/RUNBOOK.md) | **The API is plain HTTP locally** (C-3's B side), so there is no certificate to trust | 3 | open — likely a dead step |
| C-5 | **Bring-up starts a local SQL Server in Docker on `localhost:1433`** — [RUNBOOK.md:18](../../dev/post-phase/refinement/RUNBOOK.md), [:3548](../../dev/post-phase/refinement/RUNBOOK.md), [:63](../../dev/post-phase/refinement/RUNBOOK.md) | **The committed dev config points at a remote SQL Server**`appsettings.Development.json` (`Server=87.107.152.16,1433`), and [manual-testing-plan.md:20](../../dev/post-phase/manual-testing-plan.md) calls the remote one "currently" the target | 3 | open — the two bring-up paths give *different worlds*: the remote DB is already seeded, a fresh local one is not |
| C-6 | **`GET /api/v1/webhooks/payouts/{provider}` does not exist** — absent from `dev/contracts/openapi/swagger.v1.json` (frozen 2026-07-13) and from every `dev/contracts/domains/*.md` | **It exists** — present in the fresh snapshot `docs/integration/openapi/swagger.v1.json` (2026-07-29). See [§ OpenAPI drift](#openapi-drift) | 2 | open |
| C-7 | **`GeneratePayoutBatchCommand`'s shape** per the 07-13 snapshot | **A different shape** in the 07-29 snapshot — the only schema of 339 whose definition changed | 2 | open |
| C-8 | **Two contract files describe the same domain** — [`dev/contracts/domains/messaging.md`](../../dev/contracts/domains/messaging.md) is a headerless 851-byte fragment ("Refinement phase 3 additions (REQ-028)") sitting beside the 10.8 K [`messaging-notifications-admin.md`](../../dev/contracts/domains/messaging-notifications-admin.md), which it silently amends | — | 2 | open — merge, don't move both |
| C-9 | **The OpenAPI folder publishes documents `v1` *and* `v1.1`** — [openapi/README.md:3](../../dev/contracts/openapi/README.md) | **Only `swagger.v1.json` has ever been committed**; `v1.1` was not fetched during this survey | 2 | open — `UNVERIFIED`, check `/swagger/v1.1/swagger.json` when the server is next up |
| C-10 | **18 hardening items are open** — [issues.md](../../dev/post-phase/hardening/issues.md), 18 of 18 checkboxes unticked, last touched 2026-07-17 | **Fourteen UI phases, two manual-testing iterations, a Telegram integration and a deploy commit ran afterwards** (`12ce7fa``96b57eb`, 07-20 → 07-28) without ticking any box | 4 | open — Phase 4 must re-verify each item against code, not trust the checkbox |
| C-11 | **The frontend-designer skill is the design-language authority** — [SKILL.md §§17](../../.claude/skills/frontend-designer/SKILL.md) | **`client/CLAUDE.md` also states theme, tokens, typography, icons and anti-patterns** — [§Theme System:646](../../client/CLAUDE.md), [§Forms:590](../../client/CLAUDE.md), [:2223](../../client/CLAUDE.md) (icons). Overlapping scope, two files, no stated precedence | 1 + 7 | open |
| C-12 | **The skill is current** | **It is exactly one iteration behind the code.** SKILL.md's last commit is `baa3cc6` ("manual improvement 1"); `client/CLAUDE.md`'s is `e6a8f93` ("manual improvement 2"), which changed **44 files, +3419/2449** under `client/src`. Anything iteration 2 changed is absent from the skill | 7 | open |
| C-13 | **`dev/` is "the plan for building Balinyaar"**, written in the imperative — [dev/README.md:3](../../dev/README.md) | **It is a record of work already done.** `dev/phases/` last touched 2026-06-28; the code it describes shipped weeks ago | 6 | open — resolved by the archive banner, not by editing 199 files |
| C-14 | **`temp/swagger.json` is a stale committed duplicate** — [_plan/README.md](README.md) diagnosis table | **It is not committed at all**`.gitignore:1` ignores `temp`, and `git ls-files temp/` is empty. It is local clutter, not repo content | 0 | see [§ Corrections](#corrections-to-the-seeded-list) |
---
## OpenAPI drift
The fresh snapshot is at [`docs/integration/openapi/swagger.v1.json`](../integration/openapi/swagger.v1.json).
See its [README](../integration/openapi/README.md) for provenance. Measured against the 2026-07-13 snapshot
at `dev/contracts/openapi/swagger.v1.json`:
| | 2026-07-13 | 2026-07-29 |
| --- | --- | --- |
| paths | 177 | **178** |
| operations | 185 | **186** |
| component schemas | 339 | **339** |
**Added (1)**
- `POST /api/v1/webhooks/payouts/{provider}`
**Removed (0)** · **Methods changed on an existing path (0)** · **Schemas added/removed (0)**
**Schema definitions changed (1)**
- `GeneratePayoutBatchCommand`
> **This is Phase 2's worklist for the machine contract, and it is two lines long.** The 16-day gap
> between the snapshot and the code produced almost no wire-level drift. Phase 2 should therefore spend
> its budget on the **hand-written** `dev/contracts/domains/*.md` — 17 files, frozen the same day, never
> mechanically checked against anything — rather than on the JSON. See
> [§ Corrections](#corrections-to-the-seeded-list) C-14b.
---
## Corrections to the seeded list
The plan seeded five contradictions. Two hold as written; three are narrower than stated. Recording
this here so later phases do not budget for work that is already done.
**Holds — `user-secrets`.** The plan says 18 files still instruct you to use it. 32 mentions across 18
files is right, but the split matters: **6 files document the removal correctly** (root `CLAUDE.md`,
`DEPLOY.md`, `server/CLAUDE.md`, `server/CONVENTIONS.md`, and `RUNBOOK.md` twice — including a
troubleshooting row that names the error you now get). **12 are historical** — refinement prompts,
handoffs and reports written before the removal, all headed for `archive/`. Only **one live document
still gives the wrong instruction**: [manual-testing-plan.md](../../dev/post-phase/manual-testing-plan.md)
(last commit `bd06ef0`, the day *before* the removal in `5885280`), plus the archived
[telegram-otp-bot/INTEGRATION-PROMPT.md](../../telegram-otp-bot/INTEGRATION-PROMPT.md).
→ **The plan's statement that "both `manual-testing-plan.md` and `RUNBOOK.md` are stale on secrets
handling" is half wrong. `RUNBOOK.md` is current.** Phase 3 fixes one file, not two.
**Holds — hardening.** C-10 above. 18 of 18 unticked, four later chains, nothing reconciled.
**Narrower — contract drift (C-14b).** "`dev/contracts/` frozen 07-13 vs `server/src` through 07-28"
is true by date but nearly empty in substance at the OpenAPI layer: 1 endpoint, 1 schema. The drift
that matters, if any, is in the 17 hand-written domain markdown files. Phase 2 should re-scope
accordingly.
**Narrower — the design-language skill.** The plan says the skill "predates that overhaul" (mobile-scoped
shell, bottom nav, react-hook-form, new icon set). It does not: SKILL.md was rewritten at `baa3cc6`
during iteration 1 and already covers `AppFrame` (4×), `BottomBar`, `APP_FRAME_MAX_WIDTH` (2×) and the
Lucide-only icon registry with `@mui/icons-material` removed. `react-hook-form` is absent from the skill,
but it is an engineering rule that `client/CLAUDE.md` §Forms owns — not a design-language gap. The real
gap is C-12: the skill stopped at iteration 1 while the code went on to iteration 2.
**Wrong — `temp/swagger.json`.** C-14 above. It is `.gitignore`d and untracked, so it was never part of
the repo's documentation surface. Phase 0's brief says to delete it; that deletes a local file only.
---
## Resolved
_(none yet — phases move rows here with the decision and the commit that made it)_
+75 -2
View File
@@ -144,5 +144,78 @@ without re-reading the file.
## Handoff ## Handoff
_(filled in by the agent that runs this phase — file counts, surprises, anything that changes a later **Run 2026-07-29 against commit `c99e3f4`. All six outputs delivered; all six verification boxes pass.**
phase's scope)_
### Counts
| | Planned | Actual |
| --- | --- | --- |
| Markdown files surveyed | ~260 | **275** (273 tracked + 2 gitignored `graphify-out/GRAPH_REPORT.md`) |
| `dev/` | 199 | 199 ✓ |
| `dev/shared-working-context/reports/` | 50 | **53** reports + `README.md` + `mocks-registry.md` |
| `dev/phases/backend|frontend` prompts | 32 | 32 ✓ |
| REQs in `for-backend.md` | 67 | 67 ✓ |
| Hardening items | 18 open | 18 of 18 unticked ✓ |
| `product/` | 48 | 48 ✓ |
The extra 15 over "~260" are the 9 files of `docs/_plan/` itself, the 2 gitignored graph reports, and 3
more reports than the plan counted.
Disposition split: **172 archive · 59 keep-as-is · 24 distill · 17 move · 2 merge-into · 1 delete**.
**209 of 275 carry live facts.** Owner phases: **4 → 149 files**, 7 → 31, 2 → 23, 1 → 17, 6 → 17, 3 → 2,
0 → 1, none → 35.
### Four things that change a later phase's scope
1. **Phase 2 is smaller than budgeted at the OpenAPI layer.** The 16-day-stale snapshot differs from the
live server by **one endpoint** (`POST /api/v1/webhooks/payouts/{provider}`) and **one schema**
(`GeneratePayoutBatchCommand`). Zero removals, zero method changes, identical schema count (339).
Spend the budget on the 17 hand-written `domains/*.md` instead — that is where drift can hide, and
nothing has ever checked them mechanically.
2. **Phase 3 fixes one stale bring-up doc, not two.** The plan says `manual-testing-plan.md` *and*
`RUNBOOK.md` are both stale on secrets. `RUNBOOK.md` was updated in `5885280` and is correct — it even
has a troubleshooting row for the error you now get. Only `manual-testing-plan.md` (last commit
`bd06ef0`, the day before) still instructs `dotnet user-secrets`. But Phase 3 inherits a **bigger**
bring-up problem the plan did not list: contradictions **C-3/C-4/C-5** — the API is `http://`, not
`https://`, in ~18 places; the `dev-certs` step is therefore dead; and `RUNBOOK.md` builds a *local*
Docker SQL Server while the committed dev config uses a *remote, already-seeded* one. Those are two
different worlds and Phase 3 must pick one and walk it.
3. **Phase 7's premise is wrong in one direction and right in another.** The frontend-designer skill does
**not** predate the UI overhaul — it was rewritten at `baa3cc6` (manual improvement 1) and already
covers `AppFrame`, `BottomBar`, `APP_FRAME_MAX_WIDTH` and the Lucide-only registry. It is stale by
exactly **one iteration**: `client/CLAUDE.md` was updated at `e6a8f93` (manual improvement 2), which
changed **44 files, +3419/2449** under `client/src`. Diff against iteration 2, not against the whole
overhaul.
4. **Phase 4 is the heavy phase, not Phase 3.** 149 of 275 files land on it. Two structural findings make
it tractable: every `dev/phases/*` prompt shares a fixed layout where **§5 "Critical rules you must not
get wrong"** is exactly the not-in-the-code decision set (verified in all 32), and **all 53 reports**
carry a "Follow-ups for later phases" section (verified). Both are mechanically extractable.
### Smaller notes
- **`temp/swagger.json` was never committed** — `.gitignore:1` ignores `temp`. Deleting it removed local
clutter, not repo content. The `_plan/README.md` diagnosis calls it a "second stale copy" in the repo;
it is not in the repo.
- **`dev/contracts/domains/messaging.md`** (851 B) is a headerless fragment that silently amends
`messaging-notifications-admin.md`. Phase 2 should **merge**, not move both (C-8).
- **`SET_VIA_USER_SECRETS_OR_ENV`** is still the placeholder string in `appsettings.json` and is enforced
by `StartupSecretsGuard` and the pre-commit hook. Behaviour is correct; the *name* instructs a reader to
use a store that no longer exists (C-2).
- **The `graphify-out/` reports are gitignored generated output**, so the plan's "decide keep or delete"
is moot — they are not repo content and were left alone.
- **Leaf directories are not pre-created.** `docs/rules/{shared,client,server}/` and
`docs/integration/domains/` are named in their index stubs but not made on disk: git does not track
empty directories, so an empty scaffold would silently vanish. Each phase creates its own with its
first file.
- **Server boot gotchas worth reusing** (recorded in `docs/integration/openapi/README.md`): it binds
**HTTP**, first boot takes ~40 s because Development migrates and seeds against the *remote* DB, and
`curl` to localhost returns **502** unless you pass `--noproxy '*'`.
### Contradictions
14 logged in [open-contradictions.md](open-contradictions.md), including a
[corrections section](open-contradictions.md#corrections-to-the-seeded-list) covering the three seeded
claims that did not reproduce as stated. Phase 0 resolved none, by design.
+33
View File
@@ -0,0 +1,33 @@
# Flows — what is implemented, and how to test it
> **Populated by phase 3 — not yet written.** It is the biggest phase in the chain (24 sessions).
> Until then the closest things are [manual-testing-plan.md](../../dev/post-phase/manual-testing-plan.md)
> and [RUNBOOK.md](../../dev/post-phase/refinement/RUNBOOK.md) — both partly stale, see below.
One file per **user-meaningful journey**, not per screen. Each answers three questions and no others:
what it does, what is real versus mocked, and the exact steps to walk it against a running stack.
This page becomes the **status table** — every flow, one row, with its `Last verified` date. It is the
page you check before believing anything else in `docs/`.
## Planned contents
| File | Covers |
| --- | --- |
| `testing-setup.md` | Bring-up, demo accounts, the seeded world, OTP retrieval, reset, troubleshooting |
| `<flow>.md` × ~23 | One per journey — the candidate list is in [phase 3](../_plan/phase-3-flow-atlas.md) |
## Before writing testing-setup.md
Four contradictions land squarely on the bring-up story, and phase 3 has to settle them rather than
copy either source. All are logged in [_plan/open-contradictions.md](../_plan/open-contradictions.md):
- **C-1** — `manual-testing-plan.md` still tells you to set crypto keys via `dotnet user-secrets`, which
was removed in `5885280`. **`RUNBOOK.md` is already correct on this**; only the one file is stale.
- **C-3** — the API listens on `http://localhost:5002`, not `https://`, in 18 places' worth of prose.
- **C-4** — the `dotnet dev-certs https --trust` step therefore has nothing to trust.
- **C-5** — `RUNBOOK.md` starts a **local** SQL Server in Docker; the committed dev config points at a
**remote** one. These are not the same world: the remote DB is already seeded, a fresh local one is
not, and its data is encrypted under keys that must match exactly.
Pick one bring-up path, verify it end to end, and say plainly what the other one was.
+34
View File
@@ -0,0 +1,34 @@
# Integration — the client↔server seam
> **Populated by phase 2 — not yet written**, except the OpenAPI snapshot, which phase 0 refreshed.
> Until then the contract lives in [dev/contracts/](../../dev/contracts/README.md) (frozen 2026-07-13)
> and the deployment shape in [DEPLOY.md](../../DEPLOY.md).
The two projects have no shared build. Everything that crosses between them — envelope shape, casing,
pagination, idempotency, cookies and refresh, CORS, `NEXT_PUBLIC_API_URL`, three containers behind Caddy,
a remote SQL Server and the OTP relay — is described **here, as one thing**. Today it is described
nowhere as one thing, which is the gap this section closes.
## Planned contents
| File | Covers |
| --- | --- |
| `api-contract.md` | Envelope, casing, pagination, error shape, idempotency, auth headers/cookies |
| `domains/` | One file per service domain, refreshed against the live swagger |
| [`openapi/`](openapi/README.md) | The machine contract — **snapshot is current as of 2026-07-29** |
| `config-matrix.md` | Every env var and appsettings key: client, server, docker, the bot |
| `topology.md` | The runtime dependency graph — 3 containers + Caddy + remote SQL + OTP relay |
## What phase 0 already established
The machine contract barely drifted. Between the 2026-07-13 snapshot and the live server on 2026-07-29:
**one endpoint added** (`POST /api/v1/webhooks/payouts/{provider}`), **one schema changed**
(`GeneratePayoutBatchCommand`), nothing removed. Full diff in
[_plan/open-contradictions.md § OpenAPI drift](../_plan/open-contradictions.md#openapi-drift).
So phase 2's real work is the **17 hand-written** `dev/contracts/domains/*.md` files, which were frozen
the same day and have never been checked against anything mechanically — not the JSON.
Also open for this section: **C-2** (`SET_VIA_USER_SECRETS_OR_ENV` names a store that was removed),
**C-3** (`https://localhost:5002` in 18 places vs `http://` in `launchSettings.json`), **C-8** (two
contract files for messaging), **C-9** (a `v1.1` OpenAPI document that may not exist).
+56
View File
@@ -0,0 +1,56 @@
# OpenAPI snapshot
The **machine contract**. The server generates it with NSwag; this folder holds the published snapshot
so the client can generate or verify types without booting the backend.
> Last verified: 2026-07-29 against commit `c99e3f4` (server code last changed in `5885280`, 2026-07-28).
| | |
| --- | --- |
| File | [`swagger.v1.json`](swagger.v1.json) |
| Taken | 2026-07-29 |
| Commit | `c99e3f4` |
| **Paths** | **178** |
| **Operations** | **186** |
| Component schemas | 339 |
| Generator | NSwag v14.7.1.0 · OpenAPI 3.0.0 |
| Size | 612 K |
## How to regenerate
The API binds **plain HTTP** on port 5002 (`launchSettings.json`), despite what most prose in this repo
says — see contradiction C-3. Use whatever port you bind; the document is the same.
```bash
cd server
ASPNETCORE_ENVIRONMENT=Development dotnet run \
--project src/API/Baya.Web.Api/Baya.Web.Api.csproj
# from another shell, once "Now listening" appears:
curl -s --noproxy '*' http://127.0.0.1:5002/swagger/v1/swagger.json \
-o docs/integration/openapi/swagger.v1.json
```
Two things that cost time the first run:
- Booting in `Development` **migrates and seeds** against the DB in `appsettings.Development.json`
currently a *remote* SQL Server. First boot takes ~40 s and logs
`Demo world already seeded — no-op.` when the world is present.
- `--noproxy '*'` matters. With a proxy configured in the environment, `curl` to `localhost` returns
**502** rather than the document.
Then update the table above — date, commit, and endpoint count — in the same change. A snapshot whose
provenance is unrecorded is what this chain exists to stop.
## Scope
`v1` only. [The old README](../../../dev/contracts/openapi/README.md) claimed the server publishes
documents `v1` **and** `v1.1`, but only `v1` has ever been committed and `v1.1` was not fetched during
the phase 0 survey. `UNVERIFIED:` check `/swagger/v1.1/swagger.json` when the server is next up
(contradiction C-9).
## The human contract
The prose half — one file per domain — lands in [`../domains/`](../index.md) in phase 2. **The two must
agree**: this JSON is the wire truth, the markdown explains it. When they disagree, the JSON wins and
the markdown is wrong.
File diff suppressed because it is too large Load Diff
+27
View File
@@ -0,0 +1,27 @@
# Roadmap — where it goes next
> **Populated by phase 5 — not yet written.** Phase 5 depends on phase 4: you cannot sequence work
> that has not been reconciled into one backlog.
A **proposal**, not a commitment. The ordering is reasoned and can be overruled; what is not negotiable
is that every item traces to a `BL-###` in [status/backlog.md](../status/index.md), so nothing is
scheduled that was not first triaged.
## Planned contents
| File | Covers |
| --- | --- |
| `next-up.md` | The next 35 units of work, each spec'd enough to start |
| `deferred.md` | Recorded, each with the trigger that pulls it forward |
| `tech-debt.md` | What must be paid before scale, and what deferring it costs |
| `pre-launch.md` | The hard gate before real users touch this |
## One item already known for `pre-launch.md`
The repo **contains live credentials on purpose** — a deliberate pre-launch trade for a demo deployment,
documented in [root CLAUDE.md §6](../../CLAUDE.md) and [DEPLOY.md](../../DEPLOY.md). Before onboarding
real users those values must be rotated and the secret half moved out of git.
One value is load-bearing and must **never** change: `Seams:FieldEncryption:Key` and `:HashKey` decrypt
every encrypted column and derive the `PhoneHash` that every login looks up. Rotating them locks every
account out.
+32
View File
@@ -0,0 +1,32 @@
# Rules
> **Populated by phase 1 — not yet written.**
> Until then the rules live where they always have: [root CLAUDE.md](../../CLAUDE.md),
> [client/CLAUDE.md](../../client/CLAUDE.md) (161 K), [server/CLAUDE.md](../../server/CLAUDE.md) (75 K),
> [server/CONVENTIONS.md](../../server/CONVENTIONS.md), [client/messages/STYLE.md](../../client/messages/STYLE.md),
> and the [frontend-designer skill](../../.claude/skills/frontend-designer/SKILL.md).
What must never be broken, and nothing else.
**The tiering rule this section exists to enforce:** a `CLAUDE.md` keeps only non-negotiables and
pointers — roughly 200 lines. Everything explanatory becomes a reference file here, read on demand.
Loading a rule should not cost 40k tokens.
## Planned contents
| File | Covers |
| --- | --- |
| `documentation.md` | The anti-drift convention — `Last verified:` stamps, where a fact belongs, what a doc may claim |
| `shared/naming.md` · `shared/git-and-gates.md` · `shared/code-quality.md` | Cross-project: the `Baya*` / `balinyaar-client` split, branch and commit rules, per-project check gates, no dead code |
| `client/` (8 files) | structure · theme · components · forms · i18n · services · auth · testing |
| `server/` (5 files) | structure · cqrs · persistence · identity · conventions |
Subdirectories are created by phase 1 along with their first file.
## Known conflicts to settle first
- **C-11** — the frontend-designer skill and `client/CLAUDE.md` both claim the design language, with no
stated precedence.
- **C-12** — the skill stopped at manual-testing iteration 1; the code went on to iteration 2.
Both are logged in [_plan/open-contradictions.md](../_plan/open-contradictions.md).
+33
View File
@@ -0,0 +1,33 @@
# Status — where the project actually is
> **Populated by phase 4 — not yet written.** Phase 4 owns **149 of the 275 surveyed markdown files**,
> by far the largest extraction job in the chain. Until then, open work is spread across five ledgers
> that do not reference each other.
## Planned contents
| File | Covers |
| --- | --- |
| `implemented.md` | The overlay: `product/`'s 14 business areas → build state. `product/` itself stays untouched |
| `backlog.md` | Every open item as `BL-###`, triaged, each carrying its origin id |
| `backlog-closed.md` | Items confirmed done, with what closed them |
| `decisions.md` | The distilled decision log from the whole phase chain |
## The five ledgers phase 4 reconciles
| Source | Size | Note |
| --- | --- | --- |
| [frontend/requests/for-backend.md](../../dev/shared-working-context/frontend/requests/for-backend.md) | 67 REQs, 104 K | Append-only; dispositions must be re-checked, not copied |
| [hardening/issues.md](../../dev/post-phase/hardening/issues.md) | 18 items | **18 of 18 unticked**, last touched 2026-07-17 — while four later chains shipped. Re-verify each against code (**C-10**) |
| `reports/*.md` "Follow-ups for later phases" | 53 reports | Every report has one. Confirmed present in all 53 |
| `backend/handoff/*.md` | 22 files | Deferrals with pull-triggers |
| [product/notes/open-questions.md](../../product/notes/open-questions.md) + [manual-testing/](../../dev/manual-testing/) ×2 | — | Business questions and two raw human feedback notes |
Plus [mocks-registry.md](../../dev/shared-working-context/reports/mocks-registry.md) (75 K) — the seam-by-seam
mock/real status that `implemented.md` needs, and the only file that tracks it.
## Where decisions come from
Every `dev/phases/*` prompt shares a fixed structure, and **§5 "Critical rules you must not get wrong"**
is the section that states constraints *not visible in the code*. Verified present in all 32 prompts —
that is the raw material for `decisions.md`. See [the inventory](../_plan/inventory.md).