Skip to content

Commit f37817a

Browse files
authored
docs: sync glossary + Russian README to image system (PRD-030 follow-up) (#124)
## Summary Tactical follow-up to #121 (PR #122). Three doc files still described the legacy `dist/` + `dist-experimental/` shape — bring them in line with what `develop` actually ships post-PR-#122. - `README.ru.md` — new "Образы (images): `stable` (по умолчанию) и `nightly`" section mirroring `README.md`; updated "Что получаешь" line to mention the per-image bundle. - `docs/agents/domain.md` — replace **legacy `dist/`** + **opt-in `dist-experimental/`** entries with **Image** + **Feature flag** definitions, and document `--experimental` as a deprecated alias. - `docs/agents/paths.md` — top-level table swaps `dist-experimental/` for `dist-nightly/` + `config/`; tarball inventory now references `config/images.json` for the canonical image list. ## Why `docs/agents/*.md` are auto-loaded by the `fpl-skills` skill set. Stale terms there mean every future agent invocation starts with an inaccurate mental model of the package shape — exactly the kind of drift rule 11 (Forgeplan as single source of truth) is meant to prevent. PRD-030 already activated; this PR closes the doc gap without re-opening the artifact discipline. ## Scope No code changes — `bin/`, `scripts/`, `template/` untouched. Smoke status from PR #122 still applies. Tactical depth per rule 11 (docs without behaviour change), so no new Forgeplan artifact required. ## Test plan - [x] `grep -rn 'dist-experimental\|--experimental' docs/` shows only the `--experimental` *deprecated alias* mention in `domain.md`. - [x] `git diff --stat` is bounded to the three doc files. - [x] No code paths touched → smoke unaffected. - [ ] CI: docs-only PRs still trigger the smoke matrix; expected green since no source changed. Refs: PRD-030, RFC-026, ADR-005, #121 🤖 Generated with [Claude Code](https://claude.com/claude-code)
2 parents 563b067 + 2f59842 commit f37817a

3 files changed

Lines changed: 64 additions & 18 deletions

File tree

README.ru.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,34 @@ forgeplan-web start
9898
наличие `.forgeplan/` в текущей директории. Полная справка —
9999
[`docs/USAGE.md`](docs/USAGE.md).
100100

101+
### Образы (images): `stable` (по умолчанию) и `nightly`
102+
103+
```bash
104+
npx @forgeplan/web init -y # stable (по умолчанию)
105+
npx @forgeplan/web init -y --image nightly # pre-release ветка
106+
```
107+
108+
Каждый релиз шипит два именованных **образа** (image) скаффолда. Байты
109+
у обоих одинаковые — self-contained ~1.8 MB single-file bundle (без
110+
`node_modules/`, никакого `npm install` на стороне пользователя);
111+
разница в наборе фичефлагов, которые несёт каждый образ. v1 шипит оба
112+
образа с **нулём** флагов — фреймворк готов к опт-ин фичам без того
113+
чтобы пользователи `stable` за них платили.
114+
115+
- **`stable`** — дефолт для `init` / `update`. Шипит только флаги, чей
116+
rollout достиг stable.
117+
- **`nightly`** — early-access ветка. Шипит все флаги, включая
118+
alpha/beta. Используй когда хочешь pre-release поведение и не против
119+
изменений между minor-версиями.
120+
121+
Сменить ветку: `npx @forgeplan/web update --image <name>`. Выбор
122+
запоминается в `forgeplan-web.json` для будущих обновлений.
123+
124+
`--experimental` — устаревший alias для `--image nightly` (живёт ещё
125+
один minor-релиз; удаляется в 0.3.0).
126+
127+
Maintainer-вью на образы и флаги: [`config/IMAGES.md`](config/IMAGES.md).
128+
101129
## Демо за 60 секунд
102130

103131
```console
@@ -130,7 +158,7 @@ kind, status, диапазону `R_eff`; кликни узел — увидиш
130158

131159
| | |
132160
| :---------------------------------- | :--------------------------------------------------------------------------------------------------------------- |
133-
| **📦 Без установок у пользователя** | Пакет содержит `dist/` с уже собранным `node_modules/`. `init` — это `cp -r`. У пользователя ничего не ставится. |
161+
| **📦 Без установок у пользователя** | Пакет содержит один self-contained ~1.8 MB single-file bundle на каждый объявленный образ (`dist/` для `stable`, `dist-nightly/` для `nightly`). `init` — это `cp -r`. У пользователя ничего не ставится. |
134162
| **🪟 По-настоящему cross-platform** | Smoke-матрица `ubuntu-latest` / `macos-latest` / `windows-latest` × Node 22, зелёная на каждом push с v0.1.3. |
135163
| **🔒 Read-only by design** | `/api/*` дёргает только read-only подкоманды `forgeplan` (правило 22). Вьювер **не может** изменить воркспейс. |
136164
| **🌐 Пять видов графа** | Force, Lanes, Matrix, Radial, Tree. Каждый отвечает на свой вопрос — поток, смежность, иерархия, parent/child. |

docs/agents/domain.md

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,34 @@ repo. Slang and synonyms get rejected at audit.
99
scaffolds a pre-built SvelteKit viewer into the user's project.
1010
- **`forgeplan-web`** — the unscoped name of the bin script (also
1111
reachable as `npx @forgeplan/web …`).
12-
- **`init`** — copies `dist/``<cwd>/.forgeplan-web/`, writes
13-
`forgeplan-web.json`, appends `.forgeplan-web/` to host's
14-
`.gitignore`. Idempotent.
12+
- **`init`** — copies the chosen image (`dist/` for `stable` by default,
13+
`dist-<name>/` for `--image <name>`) → `<cwd>/.forgeplan-web/`,
14+
writes `forgeplan-web.json` (recording `image`, `scope`, `version`,
15+
`workspaceRoot`), appends `.forgeplan-web/` to host's `.gitignore`
16+
(project scope only). Idempotent.
1517
- **`update`** — refreshes `<cwd>/.forgeplan-web/` to the version
16-
bundled with the currently-resolved `@forgeplan/web`. Preserves
17-
`workspaceRoot` + `createdAt`.
18+
bundled with the currently-resolved `@forgeplan/web`. The image is
19+
**sticky**: read from `forgeplan-web.json#image` unless overridden
20+
with `--image <name>`. Preserves `workspaceRoot` + `createdAt`.
1821
- **`start`**`spawn('node', '.forgeplan-web/index.js')` with
19-
`PORT` / `HOST` / `FORGEPLAN_CWD` / `FORGEPLAN_BIN` env.
20-
- **`dist/`** — the **legacy** pre-built artifact (SvelteKit server +
21-
client + bundled `node_modules/`). Default for `init`. ~14 MB
22-
unpacked.
23-
- **`dist-experimental/`** — the **opt-in** single-file esbuild
24-
bundle (no `node_modules/`). ~1.5 MB. Selected via `init
25-
--experimental`. PRD-014 / RFC-013.
22+
`PORT` / `HOST` / `FORGEPLAN_CWD` / `FORGEPLAN_BIN` env. Image-agnostic
23+
(does not branch on the image name).
24+
- **Image** — a named build artifact of the scaffold. v1 ships
25+
`stable` (default) and `nightly`. Each image is one `dist*/` directory
26+
in the published tarball: `stable``dist/`, every other →
27+
`dist-<name>/` (e.g. `dist-nightly/`). All images share the same
28+
bundle shape (single esbuild ESM file, ~1.8 MB, no `node_modules/`,
29+
capped at 3 MB); they differ in the feature-flag set declared in
30+
`forgeplan-web-build.json`. Source of truth: `config/images.json`.
31+
PRD-030 / RFC-026 / ADR-005.
32+
- **Feature flag** — entry in `config/features.json` with
33+
`{ id, description, addedIn, expiresIn, owner, rollout }`. The build
34+
pipeline fails fast when any flag has `expiresIn ≤ currentVersion`
35+
or when its lifetime exceeds 3 minor versions. Flags MUST graduate
36+
(promoted into mainline behaviour or dropped) before expiry. v1
37+
ships an empty registry — framework only. See `config/IMAGES.md`.
38+
- **`--experimental`***deprecated*. Alias for `--image nightly`
39+
with a stderr warning. Removed in 0.3.0.
2640

2741
## Forgeplan terms (do not paraphrase)
2842

docs/agents/paths.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,22 @@ Where things live. Authoritative tree — [`../../CLAUDE.md`](../../CLAUDE.md)
88
| Path | Purpose | Published? |
99
| --------------------- | ---------------------------------------------------------------- | ---------- |
1010
| `bin/` | Zero-dep Node CLI (`forgeplan-web.mjs` — init / update / start) | ✅ yes |
11-
| `dist/` | Pre-built SvelteKit app (legacy, default) | ✅ yes |
12-
| `dist-experimental/` | Single-file esbuild bundle (opt-in via `init --experimental`) | ✅ yes |
13-
| `template/` | SvelteKit source — the thing `dist/` is built from | ❌ no |
11+
| `dist/` | Pre-built scaffold for the `stable` image (default for `init`) | ✅ yes |
12+
| `dist-nightly/` | Pre-built scaffold for the `nightly` image (`init --image nightly`) | ✅ yes |
13+
| `config/` | Image + feature-flag registries (`images.json`, `features.json`, `IMAGES.md`) | ❌ no |
14+
| `template/` | SvelteKit source — the thing every `dist*/` is built from | ❌ no |
1415
| `scripts/` | `build.mjs`, `smoke.mjs`, `test/forgeplan-shim.mjs` | ❌ no |
1516
| `playground/` | Seeded ~123-artifact Forgeplan workspace for HMR-driven testing | ❌ no |
1617
| `.forgeplan/` | This repo's **own** Forgeplan workspace (PRD/RFC/ADR/Evidence) | ❌ no |
1718
| `.claude/` | Hooks, rules, project skills, settings | ❌ no |
1819
| `docs/` | `USAGE.md`, `CONTRIBUTING.md`, `agents/` (this file) | ❌ no |
1920
| `guides/` | Methodology guides (CLAUDE-MD, Git Flow) | ❌ no |
2021

21-
The npm tarball ships `bin/`, `dist/`, `dist-experimental/`, and
22-
`README.md`. Everything else is repo-internal.
22+
The npm tarball ships `bin/`, `dist/`, every `dist-<image>/` declared
23+
in `config/images.json`, and `README.md`. Everything else is
24+
repo-internal. Adding a new image means: add it to `config/images.json`
25+
and add the directory to `package.json#files` (PRD-030 / RFC-026 /
26+
ADR-005).
2327

2428
## Inside `template/` — Feature-Sliced Design
2529

0 commit comments

Comments
 (0)