diff --git a/.beads-sdp-mapping.jsonl b/.beads-sdp-mapping.jsonl index 975e2573..462142bd 100644 --- a/.beads-sdp-mapping.jsonl +++ b/.beads-sdp-mapping.jsonl @@ -270,7 +270,17 @@ {"sdp_id":"00-146-04","beads_id":"sdplab-m4sx","updated_at":"2026-04-26T00:00:00Z"} {"sdp_id":"00-146-05","beads_id":"sdplab-tj6g","updated_at":"2026-04-26T00:00:00Z"} {"sdp_id":"00-146-06","beads_id":"sdplab-23zc","updated_at":"2026-04-26T00:00:00Z"} +{"sdp_id":"00-147-01","beads_id":"sdplab-rp3u.1","updated_at":"2026-05-15T00:00:00Z"} +{"sdp_id":"00-147-02","beads_id":"sdplab-rp3u.2","updated_at":"2026-05-15T00:00:00Z"} +{"sdp_id":"00-147-03","beads_id":"sdplab-rp3u.3","updated_at":"2026-05-15T00:00:00Z"} +{"sdp_id":"00-147-04","beads_id":"sdplab-rp3u.4","updated_at":"2026-05-15T00:00:00Z"} +{"sdp_id":"00-147-05","beads_id":"sdplab-rp3u.5","updated_at":"2026-05-15T00:00:00Z"} +{"sdp_id":"00-147-06","beads_id":"sdplab-rp3u.6","updated_at":"2026-05-15T00:00:00Z"} +{"sdp_id":"00-147-07","beads_id":"sdplab-rp3u.7","updated_at":"2026-05-15T00:00:00Z"} +{"sdp_id":"00-147-08","beads_id":"sdplab-rp3u.8","updated_at":"2026-05-15T00:00:00Z"} +{"sdp_id":"00-147-09","beads_id":"sdplab-rp3u.9","updated_at":"2026-05-15T00:00:00Z"} {"sdp_id":"00-149-01","beads_id":"sdplab-s1rn","updated_at":"2026-04-27T00:00:00Z"} +{"sdp_id":"00-149-02","beads_id":"sdplab-t5k3","updated_at":"2026-05-15T00:00:00Z"} {"sdp_id":"00-150-01","beads_id":"sdplab-qgq1","updated_at":"2026-04-27T00:00:00Z"} {"sdp_id":"00-150-02","beads_id":"sdplab-8rk7","updated_at":"2026-04-27T00:00:00Z"} {"sdp_id":"00-150-03","beads_id":"sdplab-kcrd","updated_at":"2026-04-27T00:00:00Z"} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 043c3fd0..aa9e8e55 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -249,14 +249,12 @@ jobs: mkdir -p .sdp/findings TS=$(date -u +%Y%m%d-%H%M%SZ) RC=0 - # F143-02 minimal unblock: 130 errors (BACKLOG_WS_MISSING_IN_INDEX, - # DONE_WITH_UNCHECKED_AC, STATUS_MISMATCH, MAPPING_ACTIVE_WS_MISSING) - # are pre-existing structural drift, not blocked-by-this-PR. Demote - # to advisory until INDEX/AC reconciliation lands. Cleanup tracked - # under F143-02 follow-up. + # Repository consistency remains advisory while its broader backlog is + # reconciled. Strict doc-sync is blocking again after F149-02 retired + # the historical backlog/link debt. python3 scripts/check_repo_consistency.py --strict-ac --json > ".sdp/findings/check-repo-consistency-${TS}.json" || echo "WARN: check_repo_consistency surfaced findings (advisory while backlog reconciles)" go run ./cmd/sdp-protocol-check --format json > ".sdp/findings/_raw-sdp-protocol-check-${TS}.json" || true - go run ./cmd/sdp-doc-sync --mode check --format json > ".sdp/findings/_raw-sdp-doc-sync-${TS}.json" || true + go run ./cmd/sdp-doc-sync --mode check --format json --strict > ".sdp/findings/_raw-sdp-doc-sync-${TS}.json" || RC=1 # F078-01: version drift gate scripts/check-version-drift.sh --json > ".sdp/findings/version-drift-${TS}.json" || RC=1 # F078-02: public metadata drift gate diff --git a/AGENTS.md b/AGENTS.md index afda094d..4f17014a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -449,6 +449,11 @@ Checks include: Documentation automation for changelog and consistency checks: +After F149-02, strict doc-sync findings are blocking in CI. Do not describe +`sdp-doc-sync --mode check --strict` failures as "known repo-wide debt" unless a +new reviewed PR explicitly changes the tool or CI contract and names the +advisory class. + ```bash sdp-doc-sync --mode check # Validate docs consistency (protocol + links) sdp-doc-sync --mode check --strict # Treat docs drift as errors diff --git a/docs/plans/2026-04-25-f141-multi-harness-install-bootstrap-design.md b/docs/plans/2026-04-25-f141-multi-harness-install-bootstrap-design.md index c977cf63..b2adb7a2 100644 --- a/docs/plans/2026-04-25-f141-multi-harness-install-bootstrap-design.md +++ b/docs/plans/2026-04-25-f141-multi-harness-install-bootstrap-design.md @@ -10,7 +10,7 @@ 1. **Consumer repos копируют SDP кусками.** Агенты в downstream-проектах (Claude Code, OpenCode, Codex, Cursor) не имеют one-shot способа поставить SDP. Они вытаскивают отдельные skill-файлы, копируют команды без зависимостей, теряют hooks. Результат — каждый репозиторий получает inconsistent subset SDP. 2. **Существует proven UX-эталон.** `oh-my-openagent` (curl|bash bootstrap + структурированная установка `.opencode/`) показал, что разработчики ждут именно такой опыт: "одна команда — полный комплект". -3. **F128 убрал submodule, но drift вернётся вручную.** После [F128-01](../../.beads/index.json) (move sdp/ submodule → native) каноническим стал `.agents/skills/`, симлинки в `.claude/skills/` и т.д. Это работает в `sdp_lab`, но при копировании в чужой репо синхронизация рвётся — нет инструмента, который перегенерирует адаптеры из канонического дерева. +3. **F128 убрал submodule, но drift вернётся вручную.** После F128-01 (move sdp/ submodule → native) каноническим стал `.agents/skills/`, симлинки в `.claude/skills/` и т.д. Это работает в `sdp_lab`, но при копировании в чужой репо синхронизация рвётся — нет инструмента, который перегенерирует адаптеры из канонического дерева. 4. **Паритет сейчас держится на дисциплине документации.** [AGENTS.md](../../AGENTS.md) описывает skill discovery для четырёх harness'ов, но пути конфигурируются вручную. Любое изменение списка skills/commands требует синхронных правок в четырёх деревьях. ## 2. Goals / Non-goals diff --git a/docs/plans/2026-04-26-f145-multi-provider-dispatch-cascade-design.md b/docs/plans/2026-04-26-f145-multi-provider-dispatch-cascade-design.md index 5d094563..0aea7253 100644 --- a/docs/plans/2026-04-26-f145-multi-provider-dispatch-cascade-design.md +++ b/docs/plans/2026-04-26-f145-multi-provider-dispatch-cascade-design.md @@ -16,7 +16,7 @@ SDP `dispatch` слой имеет три задокументированных Router думает что выбрал `composer-2-fast`, харнесс запускается с дефолтом из конфига. Routing-решения не реализуются. -**1.2 Provider-каркас полупустой.** `Provider` interface ([harness.go:21](../../internal/dispatch/harness/harness.go)) задуман как абстракция над rate-limit-aware вендором, но **единственная реализация — `ZAIProvider`** с захардкоженными `glm-5/glm-4.7` и `CheckLimits` возвращающим stub. Anthropic/OpenAI/Cursor/Kimi/Ollama как `Provider` не существуют. `LocalConfig` для Ollama живёт отдельным хардкодом в [internal/dispatch/local.go](../../internal/dispatch/local.go), не интегрирован с общим `Provider`-каркасом. +**1.2 Provider-каркас полупустой.** `Provider` interface ([harness.go:21](../../internal/dispatch/harness/harness.go)) задуман как абстракция над rate-limit-aware вендором, но **единственная реализация — `ZAIProvider`** с захардкоженными `glm-5/glm-4.7` и `CheckLimits` возвращающим stub. Anthropic/OpenAI/Cursor/Kimi/Ollama как `Provider` не существуют. Historical note: old `LocalConfig`/`local.go` was removed by the F145 cleanup; current local dispatch code lives in [internal/dispatch/ollama_client.go](../../internal/dispatch/ollama_client.go) and harness/provider files. **1.3 Routing single-shot, без confidence loop.** `Router.Route` ранжирует модели **upfront** по prior'ам и выбирает одну. `DispatchingInvoker.Fallback` срабатывает **только на ошибках** (packet load fail, routing fail, invoker missing). Если cheap модель ответила, но плохо — никто не эскалирует. diff --git a/docs/plans/2026-05-15-f149-doc-sync-debt-retirement-design.md b/docs/plans/2026-05-15-f149-doc-sync-debt-retirement-design.md new file mode 100644 index 00000000..334cb7bc --- /dev/null +++ b/docs/plans/2026-05-15-f149-doc-sync-debt-retirement-design.md @@ -0,0 +1,141 @@ +# F149: strict doc-sync debt retirement + +Status: draft for review + +Owner issue: `sdplab-t5k3` + +Parent workstream: `00-149-01` + +## Problem + +`sdp-doc-sync --mode check --strict` is a local blocking check, but the same class +of findings is advisory in CI while historical backlog drift is reconciled. That +split made "known repo-wide backlog/link debt" a reusable handoff note instead +of owned work. + +Current baseline on 2026-05-15: + +- strict `sdp-doc-sync` exits 2 +- 56 findings +- buckets: broken local links, missing ROADMAP/INDEX feature rows, scaffold + workstreams without required `## Beads` or `## Acceptance Criteria`, and + workstreams whose Beads section has no concrete `sdplab-*` reference + +## Goal + +Retire the strict `sdp-doc-sync` backlog so the local strict check exits 0, then +change the repo policy so future "known debt" notes must either point at an open +owner issue or fail the relevant gate. + +This work does not add a doc-sync allowlist. That would preserve the failure +mode under a more formal name. After this branch, strict doc-sync findings are +blocking unless a future PR explicitly changes the tool or CI contract with its +own reviewed policy. + +## Non-goals + +- Reopen product design for F083/F084/F085/F101/F133/F145/F146/F147. +- Complete the F145/F146/F147 implementation workstreams. +- Rewrite historical archive docs outside the active docs checked by + `sdp-doc-sync`. +- Merge without a separate PR review and explicit merge authorization. + +## Slices + +### Slice 1: ownership and spec + +- Add this design. +- Add executable workstream `00-149-02`. +- Link `00-149-02` to `sdplab-t5k3` in the workstream and mapping. +- Run independent spec review before broad cleanup. + +Acceptance: + +- `00-149-02` has explicit scope, non-goals, acceptance criteria, and Beads link. +- Review artifacts record at least requirements, evidence/tracing, and DX/gate + review planes. +- Unusable reviewer output is recorded as `not_assessed` with reviewer, model, + attempt, and reason; it is not counted as review approval. + +### Slice 2: factual doc debt cleanup + +- Fix broken local links or intentionally mark links historical in active docs. +- Add missing ROADMAP/INDEX entries for features referenced by active backlog + files, or archive/supersede the backlog files if they are not active backlog. +- Normalize scaffold workstreams so they satisfy the current section contract + while still stating `design-pending` or non-executable status. +- Replace placeholder Beads text with concrete `sdplab-*` references where the + Beads issue exists. + +Acceptance: + +- `go run ./cmd/sdp-doc-sync --mode check --strict` exits 0. +- Before/after doc-sync evidence is recorded: + - baseline strict output with finding count; + - final strict output with exit 0; + - per-finding resolution notes grouped by bucket. +- Any non-executable scaffold keeps all concrete non-executable markers: + - frontmatter `status: design-pending` or another non-buildable status; + - an explicit `## Status` section saying it must not be built yet; + - acceptance criteria that describe design/readiness gates, not implementation + completion; + - no language that claims implementation readiness. +- No workstream is made runnable by accident: for every touched + `design-pending` workstream, reviewers must check that its status and next + action still route to `/design` or `/feature`, not `/build`. +- Archiving/superseding is allowed only when the resolution note proves the file + is not linked as active from ROADMAP/INDEX and names the replacement or reason. + +### Slice 3: rule and gate cleanup + +- Update repo policy to say strict doc-sync debt may be advisory only when it has + an explicit owner issue, expiry/revisit path, CI artifact, and a reviewed + tool/CI contract that names the advisory class. A handoff note is not enough. +- Remove stale language that treats historical backlog/doc drift as an indefinite + advisory class after Slice 2 is green. +- Keep CI advisory/reporting semantics only for newly discovered findings that + meet the advisory-eligibility criteria above, not for already-retired debt. + +Acceptance: + +- `docs/reference/ci-gates-map.md`, `docs/reference/quality-gates.md`, and + `AGENTS.md` agree on current doc-sync semantics. +- CI no longer documents the retired F143/F149 backlog debt as a standing reason + to ignore doc-sync findings. +- No new allowlist or ignore file is introduced by this remediation. + +## Review Plan + +Spec review: + +- requirements plane: does the spec resolve the real problem without inventing + product scope? +- evidence/tracing plane: does it preserve `not_assessed` and prevent accidental + green claims? +- DX/gate plane: will future agents know when doc-sync is blocking vs advisory? + +Slice review: + +- after Slice 1: review spec and ownership only +- after Slice 2: review the cleanup diff plus strict doc-sync evidence +- after Slice 3: review policy/gate diff and final PR readiness + +Review lane states: + +- `assessed`: reviewer produced specific findings or explicit approval with + citations to the embedded target. +- `not_assessed`: reviewer output is empty, asks to call tools instead of + reviewing the embedded target, is off-task, lacks findings/verdict, or depends + on unavailable artifacts. +- `degraded`: reviewer completes the plane but misses some requested evidence; + record what was and was not assessed. + +## Verification + +Minimum branch gates before PR readiness: + +- `go run ./cmd/sdp-doc-sync --mode check --strict` +- `go run ./cmd/sdp-protocol-check --format json --strict` +- `./scripts/run_go_quality_gates.sh` or documented host fallback +- PR checks matching the branch protection set are green; absent, skipped, or + advisory-only checks are recorded by name and not treated as passing evidence. diff --git a/docs/reference/ci-gates-map.md b/docs/reference/ci-gates-map.md index 2d0bce7f..8070ee55 100644 --- a/docs/reference/ci-gates-map.md +++ b/docs/reference/ci-gates-map.md @@ -147,10 +147,10 @@ states. They must not be rendered as green merge checks. ### consistency-gate - **Owner**: platform - **Triggers**: Every PR -- **Steps**: Advisory findings from `python3 scripts/check_repo_consistency.py --strict-ac --json`, `go run ./cmd/sdp-protocol-check --format json`, `go run ./cmd/sdp-doc-sync --mode check --format json`, and `go run ./cmd/sdp-protocol-check --lint-skills --format json`; blocking drift checks from `scripts/check-version-drift.sh --json` and `scripts/check-public-metadata.sh --json`. +- **Steps**: Advisory findings from `python3 scripts/check_repo_consistency.py --strict-ac --json`, `go run ./cmd/sdp-protocol-check --format json`, and `go run ./cmd/sdp-protocol-check --lint-skills --format json`; blocking drift checks from `go run ./cmd/sdp-doc-sync --mode check --format json --strict`, `scripts/check-version-drift.sh --json`, and `scripts/check-public-metadata.sh --json`. - **Never skipped** -- **Failure semantics**: Blocks merge on version drift or public metadata drift. Repository consistency, protocol-check, doc-sync, and skill-lint findings are written as advisory artifacts while historical backlog/doc drift is reconciled. -- **Local reproduce**: `scripts/check-version-drift.sh --json && scripts/check-public-metadata.sh --json`; advisory: `python3 scripts/check_repo_consistency.py --strict-ac --json` +- **Failure semantics**: Blocks merge on strict doc-sync drift, version drift, or public metadata drift. Repository consistency, protocol-check, and skill-lint findings are written as advisory artifacts. +- **Local reproduce**: `go run ./cmd/sdp-doc-sync --mode check --strict && scripts/check-version-drift.sh --json && scripts/check-public-metadata.sh --json`; advisory: `python3 scripts/check_repo_consistency.py --strict-ac --json` - **Output schema**: JSON findings file - **Artifact path**: `.sdp/findings/*.json` (uploaded as CI artifact) diff --git a/docs/reference/quality-gates.md b/docs/reference/quality-gates.md index 69eade29..55524c10 100644 --- a/docs/reference/quality-gates.md +++ b/docs/reference/quality-gates.md @@ -53,7 +53,8 @@ green. | Cognitive complexity | not_assessed | Root `.golangci.yml` does not enable `gocognit` or `gocyclo` | No gate until the linter config and thresholds are selected | | CRAP score | not_assessed | No CRAP formula/tool is selected for Go in this repo | No gate until a formula and implementation are selected | | Modern Go hygiene | evidence_only | `go vet` and `golangci-lint` run, but root lint config disables `staticcheck`, `gosimple`, and `ineffassign` | Partial evidence only; do not call this a full modern-Go gate | -| Spec drift | evidence_only | `sdp-protocol-check`, `sdp-doc-sync`, and repo consistency checks emit findings | Advisory except for version/public metadata drift | +| Doc consistency drift | pass/fail | `sdp-doc-sync --mode check --strict` locally and in CI | Blocking | +| Protocol/repo consistency drift | evidence_only | `sdp-protocol-check` and repo consistency checks emit findings | Advisory except for version/public metadata drift | | Work without spec/workstream | cannot_verify outside PR/checkpoint context | `scope-gate` verifies checkpoint workstreams when `.sdp/checkpoints/*.json` is present in PR diff | Blocking only when checkpoint evidence exists; otherwise absence of evidence is not approval | `scripts/quality-metrics.sh` prints this same state vocabulary before running diff --git a/docs/reviews/f149-doc-sync-debt/slice-2-doc-sync-resolution.md b/docs/reviews/f149-doc-sync-debt/slice-2-doc-sync-resolution.md new file mode 100644 index 00000000..854da8b6 --- /dev/null +++ b/docs/reviews/f149-doc-sync-debt/slice-2-doc-sync-resolution.md @@ -0,0 +1,80 @@ +# Slice 2 doc-sync resolution + +Date: 2026-05-15 + +Owner: `sdplab-t5k3` + +## Baseline + +Command: + +```bash +go run ./cmd/sdp-doc-sync --mode check --strict +``` + +Baseline result before Slice 2 cleanup: + +- exit status: 2 +- findings: 56 errors, 0 warnings + +Buckets: + +- broken active-doc local links +- missing ROADMAP feature records +- missing INDEX feature records +- scaffold workstreams without `## Beads` or `## Acceptance Criteria` +- workstreams with placeholder Beads text and no concrete `sdplab-*` reference + +## Resolutions + +### Broken links + +- Removed the broken `.beads/index.json` markdown link from the F141 plan. The + F128 reference remains textual because the old Beads index file no longer + exists. +- Repointed the F145 plan's old `internal/dispatch/local.go` link to the current + `internal/dispatch/ollama_client.go` context and marked the old file as + historical. +- Removed the broken markdown link in `00-145-06` while preserving the historical + deletion intent for `internal/dispatch/local.go`. + +### ROADMAP and INDEX feature records + +- Added active ROADMAP records for `F133`, `F135`, and `F163`. +- Added INDEX rows for `F131`, `F133`, and the post-F150 features `F151` through + `F160`. +- Updated F145/F146/F147 INDEX rows from stale backlog/no-ws text to the actual + shipped workstream ranges. + +### Scaffold section normalization + +- Converted inline Beads text in `00-083-01`, `00-084-01`, `00-085-01`, and + `00-101-02` into real `## Beads` sections. +- Added design-gate acceptance criteria to `00-083-01`, `00-084-01`, and + `00-085-01`; these files remain `status: design-pending` and explicitly route + to `/design` before `/build`. +- Renamed legacy `## Acceptance` headings in `00-101-02` and `00-133-01` to + `## Acceptance Criteria` and converted existing bullets into checkboxes. + +### Beads placeholders + +- Replaced F145 and F146 placeholder Beads text with their existing mapped leaf + `sdplab-*` IDs from `.beads-sdp-mapping.jsonl`. +- Replaced F147 placeholder text with historical leaf Beads `sdplab-rp3u.1` + through `sdplab-rp3u.9`, discovered during follow-up verification after the + initial review. The temporary synthetic anchor `sdplab-itzf` was superseded + and is not used in the documentation. + +## Final Evidence + +```bash +go run ./cmd/sdp-doc-sync --mode check --strict +OK: documentation consistency passed +``` + +```bash +go run ./cmd/sdp-protocol-check --format json --strict +{ + "issues": [] +} +``` diff --git a/docs/reviews/f149-doc-sync-debt/slice-2-review-synthesis.md b/docs/reviews/f149-doc-sync-debt/slice-2-review-synthesis.md new file mode 100644 index 00000000..8cd20a5a --- /dev/null +++ b/docs/reviews/f149-doc-sync-debt/slice-2-review-synthesis.md @@ -0,0 +1,47 @@ +# Slice 2 review synthesis + +Date: 2026-05-15 + +Target: + +- `docs/reviews/f149-doc-sync-debt/slice-2-doc-sync-resolution.md` +- cleanup diff after Slice 1 + +## Deterministic Evidence + +```bash +go run ./cmd/sdp-doc-sync --mode check --strict +OK: documentation consistency passed +``` + +```bash +go run ./cmd/sdp-protocol-check --format json --strict +{ + "issues": [] +} +``` + +## Review Planes + +| Plane | Reviewer | Status | Verdict | +|---|---|---:|---| +| requirements | `kimi-coding/kimi-for-coding` | assessed | APPROVE | +| evidence/tracing | `minimax/MiniMax-M2.7` | assessed | REVISE, then fixed | +| DX | `openrouter/xiaomi/mimo-v2.5-pro` | assessed | REVISE, then fixed | +| F147 focused re-review | `openrouter/qwen/qwen3.6-plus` | assessed | APPROVE | + +## Accepted Findings And Disposition + +- F147 initially looked misleading because INDEX said `Done` while all nine + workstreams used one synthetic historical anchor. Follow-up verification found + the real closed leaf Beads `sdplab-rp3u.1` through `sdplab-rp3u.9`; the docs + were corrected to use those IDs and the synthetic anchor was superseded. +- Requirements review requested that the F147 historical mapping rationale be + visible beyond the resolution note. Fixed in the INDEX note and per-workstream + Beads text. +- DX review flagged generic `Done` vs `Shipped` ambiguity. Fixed F145/F146/F147 + status labels to `Done (historical)` variants. + +## Slice 2 Verdict + +APPROVED after revision. diff --git a/docs/reviews/f149-doc-sync-debt/slice-3-review-synthesis.md b/docs/reviews/f149-doc-sync-debt/slice-3-review-synthesis.md new file mode 100644 index 00000000..3701b937 --- /dev/null +++ b/docs/reviews/f149-doc-sync-debt/slice-3-review-synthesis.md @@ -0,0 +1,52 @@ +# Slice 3 review synthesis + +Date: 2026-05-15 + +Target: + +- `.github/workflows/ci.yml` +- `AGENTS.md` +- `docs/reference/ci-gates-map.md` +- `docs/reference/quality-gates.md` + +## Deterministic Evidence + +```bash +go run ./cmd/sdp-doc-sync --mode check --strict +OK: documentation consistency passed +``` + +```bash +go run ./cmd/sdp-protocol-check --format json --strict +{ + "issues": [] +} +``` + +```bash +go run ./cmd/sdp-doc-sync --mode check --format json --strict +{ + "issues": [] +} +``` + +## Review Planes + +| Plane | Reviewer | Status | Verdict | +|---|---|---:|---| +| gate policy | `minimax/MiniMax-M2.7` | assessed | APPROVE | +| DX | `openrouter/xiaomi/mimo-v2.5-pro` | assessed | APPROVE with minor placement edit | + +## Disposition + +- CI now runs strict doc-sync as a blocking drift check via `RC=1`. +- `check_repo_consistency.py`, `sdp-protocol-check`, and skill lint remain + advisory; the docs do not overclaim them as blocking. +- AGENTS, CI gate map, and quality-gates matrix agree that strict doc-sync is + blocking after F149-02. +- Accepted the DX minor: the AGENTS warning appears before the command example. + +## Slice 3 Verdict + +APPROVED after minor edit. + diff --git a/docs/reviews/f149-doc-sync-debt/spec-review-synthesis.md b/docs/reviews/f149-doc-sync-debt/spec-review-synthesis.md new file mode 100644 index 00000000..3a5f80a4 --- /dev/null +++ b/docs/reviews/f149-doc-sync-debt/spec-review-synthesis.md @@ -0,0 +1,35 @@ +# F149 doc-sync debt spec review synthesis + +Date: 2026-05-15 + +Target: + +- `docs/plans/2026-05-15-f149-doc-sync-debt-retirement-design.md` +- `docs/workstreams/backlog/00-149-02.md` + +## Review Planes + +| Plane | Reviewer | Status | Verdict | +|---|---|---:|---| +| requirements | `kimi-coding/kimi-for-coding` | assessed | APPROVE with minor edits | +| evidence/tracing | `minimax/MiniMax-M2.7` | assessed after revision | APPROVE | +| DX/gate | `openrouter/xiaomi/mimo-v2.5-pro` | assessed after revision | APPROVE | +| requirements first attempt | `zai/glm-5.1` | not_assessed | unusable tool-call transcript | +| DX/gate first attempt | `openrouter/qwen/qwen3.6-plus` | not_assessed | unusable tool-call request | + +## Accepted Findings And Disposition + +- Evidence reviewer required explicit `not_assessed` criteria, before/after + artifacts, non-executable scaffold markers, archive guardrails, and absent CI + handling. Fixed in the design and workstream. +- DX/gate reviewer initially requested a machine-readable allowlist. Accepted + narrower: the branch must not add an allowlist; it must retire current debt and + make future strict doc-sync findings blocking unless a future PR changes the + tool/CI contract explicitly. +- Requirements reviewer requested tighter workstream/design alignment for parent + workstream, archive proof, design-pending routing, and policy file sync. Fixed. + +## Slice 1 Verdict + +APPROVED for implementation of Slice 2. + diff --git a/docs/roadmap/ROADMAP.md b/docs/roadmap/ROADMAP.md index 2c6b0105..c9a4882f 100644 --- a/docs/roadmap/ROADMAP.md +++ b/docs/roadmap/ROADMAP.md @@ -549,6 +549,9 @@ This roadmap focuses active strategy phases. Full feature coverage is maintained - **F130** — AI Harness Config Auto-Provisioning (00-130-01 ... 00-130-10). SDP analyzes any repo at any lifecycle stage and generates harness-ready config files (CLAUDE.md sections, .cursorrules, AGENTS.md language rules, codex.yaml) from actual codebase patterns. Pipeline: Scout/Index/SpecRecovery → pattern extractor → rules generator → harness adapter → bootstrap integration. go-patterns.md (2026-04-18) is the reference output format. Depends on F120, F122, F123, F124, F127. - **F131** — Workflow Skill Provisioning (00-F131-01 ... 00-F131-03). SDP generates workflow skill files (bug-fix, research, feature-delivery) tailored to a repo's tech stack during bootstrap. Extends F130 harness adapter with per-language skill templates. Manual examples shipped 2026-04-18. Depends on F130, F127. +- **F133** — Local model dispatch (00-133-01). Route low-complexity coding tasks to local Ollama when explicitly enabled, with cloud fallback and no default behavior change. +- **F135** — Happy vibecode path (00-135-01). Idea-to-prototype bridge with evidence-backed deploy gate; shipped through direct PRs before complete backlog normalization. +- **F163** — Socratic spec interrogation for sdp-trace pilot (00-163-01). Clean-context critic/judge protocol for SpecKit artifacts. ### Layer Rollout Matrix (Vision Alignment) diff --git a/docs/workstreams/INDEX.md b/docs/workstreams/INDEX.md index 228b42c7..47334a13 100644 --- a/docs/workstreams/INDEX.md +++ b/docs/workstreams/INDEX.md @@ -116,11 +116,12 @@ | Feature | Description | Workstreams | Status | Priority | |---------|-------------|-------------|--------|----------| | **F144** | Inference Confidence & Quality Control — generic `confidence.Checker` (self-check / N-sample / constraint), per-call-site profiles, replay metrics | (no ws files yet — see `sdplab-5i4q` regression) | Done (PR #131) | P1 | -| **F145** | Multi-Provider Dispatch Matrix & Confidence-Driven Cascade — escalation policy, 5 providers, heuristic short-circuit, replay corpus | (no ws files yet — see `sdplab-5i4q` regression) | In Progress | P1 | -| **F146** | Inference Decomposition Framework — pipeline pattern (Stage chain + 3 stitchers Enum/JSON/TOON), per-stage F144/F145 composition, ws-verdict adapter, A/B bench vs monolithic | 00-146-01 ... 00-146-06 | Backlog | P1 | -| **F147** | MicroFirst Inference Tier — deterministic micro-classifiers with escalation only when confidence is insufficient | 00-147-01 ... 00-147-09 | Backlog | P1 | +| **F145** | Multi-Provider Dispatch Matrix & Confidence-Driven Cascade — escalation policy, 5 providers, heuristic short-circuit, replay corpus | 00-145-01 ... 00-145-14 | Done (historical) | P1 | +| **F146** | Inference Decomposition Framework — pipeline pattern (Stage chain + 3 stitchers Enum/JSON/TOON), per-stage F144/F145 composition, ws-verdict adapter, A/B bench vs monolithic | 00-146-01 ... 00-146-06 | Done (historical) | P1 | +| **F147** | MicroFirst Inference Tier — deterministic micro-classifiers with escalation only when confidence is insufficient | 00-147-01 ... 00-147-09 | Done (historical) | P1 | -> **Source:** [F144 design](../plans/2026-04-26-f144-inference-confidence-design.md) · [F146 design](../plans/2026-04-26-f146-inference-decomposition-design.md) · [F147 design](../plans/2026-04-27-f147-microfirst-tier-design.md) · **Beads:** `sdplab-92uu` (F144 series, closed), `sdplab-ldmq` (F145 epic), `sdplab-vrnw` (F146 epic) +> **Source:** [F144 design](../plans/2026-04-26-f144-inference-confidence-design.md) · [F146 design](../plans/2026-04-26-f146-inference-decomposition-design.md) · [F147 design](../plans/2026-04-27-f147-microfirst-tier-design.md) · **Beads:** `sdplab-92uu` (F144 series, closed), `sdplab-ldmq` (F145 epic), `sdplab-vrnw` (F146 epic), `sdplab-rp3u` (F147 epic) +> **Historical note:** F145/F146/F147 were already merged before this F149 cleanup. Their workstream files now point at the historical leaf Beads found in the current DB. > **F146 DAG:** `01 → 02 → 03 → {04 ‖ 05} → 06` (parallel 04+05 after 03) > **Composition:** F144 = quality-of-one-answer (gate per inference); F145 = provider-of-one-request (cascade between models); F146 = work-split-of-one-task (decomposed pipeline). Three orthogonal axes — F146 stages can opt-in F144 confidence and F145 cascade per-stage. @@ -131,6 +132,8 @@ | **F135** | Happy vibecode path — idea → prototype with evidence-backed deploy gate | (no ws files; closed via direct PRs #115–#118) | Shipped | P1 | | **F141** | Multi-harness install bootstrap & adapter parity — `sdp.manifest.yaml` → adapter generator → `sdp init`/curl\|bash → `sdp doctor adapters` | (no ws files; closed via direct commits on `feature/F141-multi-harness-install-bootstrap`) | Shipped | P2 | | **F142** | Workstream coverage gap — picker hardening, ws backfill for orphans, `sdp doctor backlog` gate, INDEX maintenance | 00-101-02, 00-133-01, 00-082-01, 00-083-01, 00-084-01, 00-085-01 (backfilled scaffolds) | In progress | P2 | +| **F131** | Workflow Skill Provisioning — per-stack workflow skill templates generated during bootstrap | 00-131-01 ... 00-131-03 | Backlog | P2 | +| **F133** | Local model dispatch — route low-complexity coding to local Ollama when enabled | 00-133-01 | Backlog | P3 | > **Source:** [F141 design](../plans/2026-04-25-f141-multi-harness-install-bootstrap-design.md) · **Beads:** `sdplab-o4sp` (F141, closed), `sdplab-85ji` (F142, open) > **Coverage gap closes when:** every open beads feature has either a matching ws file or non-zero `dependency_count`; enforced by `sdp doctor backlog` (F142-05) and `scripts/deliver-pick.sh` v2 (F142-04). @@ -200,10 +203,20 @@ | Feature | Description | Workstreams | Status | Priority | |---------|-------------|-------------|--------|----------| -| **F149** | Product docs rebaseline — install/setup, feature map, multiple happy paths, ready/tooling/experimental boundaries | 00-149-01 | In Progress | P1 | +| **F149** | Product docs rebaseline — install/setup, feature map, multiple happy paths, ready/tooling/experimental boundaries, strict doc-sync debt retirement | 00-149-01 ... 00-149-02 | In Progress | P1 | | **F150** | Product layering and release readiness — layer taxonomy, release surface, module path migration, experimental isolation, coverage policy, telemetry consent, formula rehearsal, and debt ledger | 00-150-01 ... 00-150-10 | Done | P1 | - -> **Source:** [product-surface.md](../reference/product-surface.md) · **Beads:** `sdplab-s1rn` +| **F151** | `sdp-pr-gate` design v1 — schema, evidence provider API, decision record, override, GitHub App flow, and pilot measurement plan | 00-151-01 ... 00-151-06 | Backlog | P2 | +| **F152** | Pricing Hypothesis — Operator Mode and sdp-pr-gate pricing/discovery instruments | 00-152-01 ... 00-152-03 | Backlog | P2 | +| **F153** | SDP Brand Architecture — family map, naming policy, and trademark/domain check | 00-153-01 ... 00-153-03 | In Progress | P2 | +| **F154** | Shared Substrates v1 — semver contracts for evidence, policy, model gateway, context, and eval cores | 00-154-01 ... 00-154-05 | Backlog | P2 | +| **F155** | Evidence Persistence Architecture — storage backend decision, retention, backup, and privacy posture | 00-155-01 | Backlog | P3 | +| **F156** | `arch-snap` IIP Hypothesis — promotion gate before active implementation | 00-156-01 | Backlog | P3 | +| **F157** | `doc-tracer` IIP Hypothesis — promotion gate before active implementation | 00-157-01 | Backlog | P3 | +| **F158** | Go Import-Path Contamination Decision — namespace decision blocking IIP promotion | 00-158-01 | Backlog | P3 | +| **F159** | Competitive Positioning Artifact — positioning and battle card | 00-159-01 | Backlog | P3 | +| **F160** | Procurement / Compliance Install Profile — regulated-industry install posture | 00-160-01 | Backlog | P3 | + +> **Source:** [product-surface.md](../reference/product-surface.md), [strict doc-sync debt retirement](../plans/2026-05-15-f149-doc-sync-debt-retirement-design.md) · **Beads:** `sdplab-s1rn`, `sdplab-t5k3` > **F150 Source:** [F150 Design](../plans/2026-04-27-f150-product-layering-release-readiness-design.md) · **Beads:** `sdplab-nyr0` > **F150 DAG:** `01 → {02,07,09}; 02 → {03,04,05,06,08}; {03,04} → 08; {03,04,05,06,07,08,09} → 10` diff --git a/docs/workstreams/backlog/00-083-01.md b/docs/workstreams/backlog/00-083-01.md index 1413c82a..509ae920 100644 --- a/docs/workstreams/backlog/00-083-01.md +++ b/docs/workstreams/backlog/00-083-01.md @@ -11,7 +11,9 @@ depends_on: [F074, F082] Feature: F083 (Policy Engine Enforcement Pack) -Beads: sdplab-xdtx +## Beads + +- sdplab-xdtx Backfilled 2026-04-26 under F142-03 as a **scaffold only**. Beads description ends with "WS: TBD"; depends on F074 + F082 which are themselves design-pending. This file exists to prevent picker selection of an unscaffolded feature. @@ -35,6 +37,12 @@ Backfilled 2026-04-26 under F142-03 as a **scaffold only**. Beads description en Wait for F074 + F082 designs to land, then run `/design F083`. +## Acceptance Criteria + +- [ ] F074 and F082 decisions are landed or explicitly replaced. +- [ ] `/design F083` produces a real design and decomposed executable leaf workstreams. +- [ ] This scaffold remains non-executable until the design exists. + ## Notes - Long-horizon trust per backlog triage 2026-04-18. diff --git a/docs/workstreams/backlog/00-084-01.md b/docs/workstreams/backlog/00-084-01.md index 20ec856e..43b3dedd 100644 --- a/docs/workstreams/backlog/00-084-01.md +++ b/docs/workstreams/backlog/00-084-01.md @@ -11,7 +11,9 @@ depends_on: [] Feature: F084 (Enterprise Runtime Hardening) -Beads: sdplab-o9mo +## Beads + +- sdplab-o9mo Backfilled 2026-04-26 under F142-01 as a **scaffold only**. The beads description marks scope as "WS: TBD" and notes a possible merge with F075 (Enterprise K8s Runtime Pack). This file exists to prevent picker selection of an unscaffolded feature; it is not yet an executable workstream. @@ -30,6 +32,12 @@ Backfilled 2026-04-26 under F142-01 as a **scaffold only**. The beads descriptio Run `/design F084` (or `/feature F084`) to produce a real design + decomposed workstreams. Until that lands, this scaffold should be treated as a placeholder. +## Acceptance Criteria + +- [ ] Scope decision records whether F084 merges with F075 or stays independent. +- [ ] `/design F084` produces a real design and decomposed executable leaf workstreams. +- [ ] This scaffold remains non-executable until the design exists. + ## Notes - Long-horizon trust feature per backlog triage 2026-04-18 (see `docs/workstreams/INDEX.md`). diff --git a/docs/workstreams/backlog/00-085-01.md b/docs/workstreams/backlog/00-085-01.md index 4f96acc2..6488e49d 100644 --- a/docs/workstreams/backlog/00-085-01.md +++ b/docs/workstreams/backlog/00-085-01.md @@ -11,7 +11,9 @@ depends_on: [F074, F082] Feature: F085 (Platform Productization Kit) -Beads: sdplab-ds7b +## Beads + +- sdplab-ds7b Backfilled 2026-04-26 under F142-03 as a **scaffold only**. Beads description ends with "WS: TBD" and notes "blocks on full trust lane F074–F084". This file exists to prevent picker selection of an unscaffolded feature. @@ -36,6 +38,12 @@ Backfilled 2026-04-26 under F142-03 as a **scaffold only**. Beads description en Wait for trust lane decisions (F074–F084) AND post-F141 productization review, then `/design F085`. +## Acceptance Criteria + +- [ ] Trust lane decisions F074-F084 are landed or explicitly replaced. +- [ ] `/design F085` produces a real design and decomposed executable leaf workstreams. +- [ ] This scaffold remains non-executable until the design exists. + ## Notes - Long-horizon per backlog triage 2026-04-18. diff --git a/docs/workstreams/backlog/00-101-02.md b/docs/workstreams/backlog/00-101-02.md index 1fdd670d..e43f03b0 100644 --- a/docs/workstreams/backlog/00-101-02.md +++ b/docs/workstreams/backlog/00-101-02.md @@ -11,7 +11,9 @@ depends_on: [] Feature: F101 (UX consistency — write-plan everywhere stateful) -Beads: sdplab-k2ce +## Beads + +- sdplab-k2ce Backfilled 2026-04-26 under F142-01. Auto-generated scaffold from beads description; refine via `/feature` regen if scope expands. @@ -30,12 +32,12 @@ F101-01 wired the Write Plan UX into the 9 primary stateful skills. Six follow-u Reference: F101-01 review finding F10. -## Acceptance +## Acceptance Criteria -- Each of the six skills emits a Write Plan immediately before its first `Write` call. -- Plan format matches F101-01 (path, intent, justification per file). -- Snapshot tests cover at least one happy-path emission per skill. -- No regression in F101-01-covered skills. +- [ ] Each of the six skills emits a Write Plan immediately before its first `Write` call. +- [ ] Plan format matches F101-01 (path, intent, justification per file). +- [ ] Snapshot tests cover at least one happy-path emission per skill. +- [ ] No regression in F101-01-covered skills. ## Notes diff --git a/docs/workstreams/backlog/00-133-01.md b/docs/workstreams/backlog/00-133-01.md index 75d50476..6cc62f42 100644 --- a/docs/workstreams/backlog/00-133-01.md +++ b/docs/workstreams/backlog/00-133-01.md @@ -31,13 +31,13 @@ Add a `local` tier to the dispatch pipeline so SDP can route low-complexity codi - `configs/dispatch.example.yaml` — document the `local` tier and how to enable it. - `cmd/sdp/cmd_dispatch.go` — wire `--prefer-local` flag (or env) for opt-in. -## Acceptance +## Acceptance Criteria -- A task classified as `(Complexity=low, RequiredCap=coding)` dispatches to local Ollama when enabled, falls back to cloud on local error. -- Disabled by default (no behaviour change for users without Ollama installed). -- Unit test on classifier: low+coding → local tier when enabled. -- Integration test stubbed (real Ollama not required in CI). -- Documentation describes setup, fallback behaviour, and how to disable. +- [ ] A task classified as `(Complexity=low, RequiredCap=coding)` dispatches to local Ollama when enabled, falls back to cloud on local error. +- [ ] Disabled by default (no behaviour change for users without Ollama installed). +- [ ] Unit test on classifier: low+coding → local tier when enabled. +- [ ] Integration test stubbed (real Ollama not required in CI). +- [ ] Documentation describes setup, fallback behaviour, and how to disable. ## Notes diff --git a/docs/workstreams/backlog/00-145-01.md b/docs/workstreams/backlog/00-145-01.md index b83f7469..9057c5f6 100644 --- a/docs/workstreams/backlog/00-145-01.md +++ b/docs/workstreams/backlog/00-145-01.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §4 ## Beads -- (assigned during epic creation) +- sdplab-0261 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-02.md b/docs/workstreams/backlog/00-145-02.md index 8c49572d..892e14a2 100644 --- a/docs/workstreams/backlog/00-145-02.md +++ b/docs/workstreams/backlog/00-145-02.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §4 ## Beads -- (assigned during epic creation) +- sdplab-y93k (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-03.md b/docs/workstreams/backlog/00-145-03.md index 56676e00..76e9bb27 100644 --- a/docs/workstreams/backlog/00-145-03.md +++ b/docs/workstreams/backlog/00-145-03.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §4 ## Beads -- (assigned during epic creation) +- sdplab-w4ru (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-04.md b/docs/workstreams/backlog/00-145-04.md index 8f2efcc0..082f82aa 100644 --- a/docs/workstreams/backlog/00-145-04.md +++ b/docs/workstreams/backlog/00-145-04.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §4 ## Beads -- (assigned during epic creation) +- sdplab-bg69 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-05.md b/docs/workstreams/backlog/00-145-05.md index 49a05cf8..faccc907 100644 --- a/docs/workstreams/backlog/00-145-05.md +++ b/docs/workstreams/backlog/00-145-05.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §4 ## Beads -- (assigned during epic creation) +- sdplab-60ia (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-06.md b/docs/workstreams/backlog/00-145-06.md index b9acdc5e..76eea423 100644 --- a/docs/workstreams/backlog/00-145-06.md +++ b/docs/workstreams/backlog/00-145-06.md @@ -15,11 +15,11 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §4 ## Goal -Формализовать Ollama как Provider, удалить хардкод-каркас `LocalConfig` из [internal/dispatch/local.go](../../../internal/dispatch/local.go) и [internal/dispatch/route.go](../../../internal/dispatch/route.go) special-case. Один PR, чистый break, никаких deprecation aliases. +Формализовать Ollama как Provider, удалить хардкод-каркас `LocalConfig` из historical `internal/dispatch/local.go` и [internal/dispatch/route.go](../../../internal/dispatch/route.go) special-case. Один PR, чистый break, никаких deprecation aliases. ## Beads -- (assigned during epic creation) +- sdplab-5lve (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-07.md b/docs/workstreams/backlog/00-145-07.md index b88b5bdb..76bead08 100644 --- a/docs/workstreams/backlog/00-145-07.md +++ b/docs/workstreams/backlog/00-145-07.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §1 ## Beads -- (assigned during epic creation) +- sdplab-s686 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-08.md b/docs/workstreams/backlog/00-145-08.md index 7df08e48..503ab52e 100644 --- a/docs/workstreams/backlog/00-145-08.md +++ b/docs/workstreams/backlog/00-145-08.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §4 ## Beads -- (assigned during epic creation) +- sdplab-noiq (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-09.md b/docs/workstreams/backlog/00-145-09.md index abad6c39..d3d93de4 100644 --- a/docs/workstreams/backlog/00-145-09.md +++ b/docs/workstreams/backlog/00-145-09.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §4 ## Beads -- (assigned during epic creation) +- sdplab-3lva (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-10.md b/docs/workstreams/backlog/00-145-10.md index 6fa3e9dc..42512352 100644 --- a/docs/workstreams/backlog/00-145-10.md +++ b/docs/workstreams/backlog/00-145-10.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §4 ## Beads -- (assigned during epic creation) +- sdplab-5ii8 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-11.md b/docs/workstreams/backlog/00-145-11.md index f92290f9..6d8809e2 100644 --- a/docs/workstreams/backlog/00-145-11.md +++ b/docs/workstreams/backlog/00-145-11.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §4 ## Beads -- (assigned during epic creation) +- sdplab-fco9 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-12.md b/docs/workstreams/backlog/00-145-12.md index 2c8272c0..23b68159 100644 --- a/docs/workstreams/backlog/00-145-12.md +++ b/docs/workstreams/backlog/00-145-12.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §6 ## Beads -- (assigned during epic creation) +- sdplab-uamt (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-13.md b/docs/workstreams/backlog/00-145-13.md index 507c2eb9..935ca933 100644 --- a/docs/workstreams/backlog/00-145-13.md +++ b/docs/workstreams/backlog/00-145-13.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §4 ## Beads -- (assigned during epic creation) +- sdplab-135g (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-145-14.md b/docs/workstreams/backlog/00-145-14.md index d8aa8072..e1685400 100644 --- a/docs/workstreams/backlog/00-145-14.md +++ b/docs/workstreams/backlog/00-145-14.md @@ -19,7 +19,7 @@ Design reference: [2026-04-26-f145-multi-provider-dispatch-cascade-design.md §8 ## Beads -- (assigned during epic creation) +- sdplab-2p8g (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-146-01.md b/docs/workstreams/backlog/00-146-01.md index 6c42d57d..a73eae32 100644 --- a/docs/workstreams/backlog/00-146-01.md +++ b/docs/workstreams/backlog/00-146-01.md @@ -19,7 +19,7 @@ Ship the generic `decompose` library kernel: `Pipeline[Final]`, `Stage[In, Out]` ## Beads -- (created in this session — pending mapping update) +- sdplab-ilyv (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-146-02.md b/docs/workstreams/backlog/00-146-02.md index 78b03423..93cf1033 100644 --- a/docs/workstreams/backlog/00-146-02.md +++ b/docs/workstreams/backlog/00-146-02.md @@ -22,7 +22,7 @@ Ship the three built-in inter-stage `Stitcher` implementations enforcing strict ## Beads -- (created in this session — pending mapping update) +- sdplab-wwie (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-146-03.md b/docs/workstreams/backlog/00-146-03.md index d05699c4..24e3724b 100644 --- a/docs/workstreams/backlog/00-146-03.md +++ b/docs/workstreams/backlog/00-146-03.md @@ -19,7 +19,7 @@ Wire optional per-stage F144 `confidence.Checker` and forward-compatible F145 `c ## Beads -- (created in this session — pending mapping update) +- sdplab-ass2 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-146-04.md b/docs/workstreams/backlog/00-146-04.md index 79d3f143..df97d345 100644 --- a/docs/workstreams/backlog/00-146-04.md +++ b/docs/workstreams/backlog/00-146-04.md @@ -19,7 +19,7 @@ Ship the first F146 adapter — ws-verdict as a 3-stage decomposed pipeline (ext ## Beads -- (created in this session — pending mapping update) +- sdplab-m4sx (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-146-05.md b/docs/workstreams/backlog/00-146-05.md index 0cf44c95..1fb852fe 100644 --- a/docs/workstreams/backlog/00-146-05.md +++ b/docs/workstreams/backlog/00-146-05.md @@ -19,7 +19,7 @@ Ship the single-prompt monolithic ws-verdict adapter — the honest A/B baseline ## Beads -- (created in this session — pending mapping update) +- sdplab-tj6g (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-146-06.md b/docs/workstreams/backlog/00-146-06.md index 3f988433..9a56df89 100644 --- a/docs/workstreams/backlog/00-146-06.md +++ b/docs/workstreams/backlog/00-146-06.md @@ -19,7 +19,7 @@ Ship the A/B benchmarking command and the evidence report. For each fixture in t ## Beads -- (created in this session — pending mapping update) +- sdplab-23zc (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-147-01.md b/docs/workstreams/backlog/00-147-01.md index 189902e2..43909d46 100644 --- a/docs/workstreams/backlog/00-147-01.md +++ b/docs/workstreams/backlog/00-147-01.md @@ -19,7 +19,7 @@ Ship the generic Stage-композитор `WithEscalation[In, Out](micro, llm ## Beads -- (created in this session — pending mapping update) +- sdplab-rp3u.1 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-147-02.md b/docs/workstreams/backlog/00-147-02.md index def9c757..ea777fb5 100644 --- a/docs/workstreams/backlog/00-147-02.md +++ b/docs/workstreams/backlog/00-147-02.md @@ -19,7 +19,7 @@ Deterministic micro-classifier для ws-verdict extract stage: парсит tes ## Beads -- (created in this session — pending mapping update) +- sdplab-rp3u.2 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-147-03.md b/docs/workstreams/backlog/00-147-03.md index 7a34bff4..bf5e769e 100644 --- a/docs/workstreams/backlog/00-147-03.md +++ b/docs/workstreams/backlog/00-147-03.md @@ -19,7 +19,7 @@ Shared infrastructure for embedding-based micro-classifiers: Ollama embeddings c ## Beads -- (created in this session — pending mapping update) +- sdplab-rp3u.3 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-147-04.md b/docs/workstreams/backlog/00-147-04.md index ecfaa55b..d397f2f4 100644 --- a/docs/workstreams/backlog/00-147-04.md +++ b/docs/workstreams/backlog/00-147-04.md @@ -19,7 +19,7 @@ Embedding-based k-NN classifier для bd issue severity (`P0/P1/P2/P3`). Кор ## Beads -- (created in this session — pending mapping update) +- sdplab-rp3u.4 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-147-05.md b/docs/workstreams/backlog/00-147-05.md index c5f806c8..4d836562 100644 --- a/docs/workstreams/backlog/00-147-05.md +++ b/docs/workstreams/backlog/00-147-05.md @@ -19,7 +19,7 @@ Embedding-based k-NN classifier для bd issue type (`bug/task/feature`). Па ## Beads -- (created in this session — pending mapping update) +- sdplab-rp3u.5 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-147-06.md b/docs/workstreams/backlog/00-147-06.md index 7eaae3b7..cd37038e 100644 --- a/docs/workstreams/backlog/00-147-06.md +++ b/docs/workstreams/backlog/00-147-06.md @@ -19,7 +19,7 @@ Embedding-based k-NN classifier для cold-start routing в `internal/dispatch/ ## Beads -- (created in this session — pending mapping update) +- sdplab-rp3u.6 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-147-07.md b/docs/workstreams/backlog/00-147-07.md index fcfe67a6..469773cf 100644 --- a/docs/workstreams/backlog/00-147-07.md +++ b/docs/workstreams/backlog/00-147-07.md @@ -19,7 +19,7 @@ Integrate `WsVerdictMicro` (00-147-02) as the micro-side of `WithEscalation` (00 ## Beads -- (created in this session — pending mapping update) +- sdplab-rp3u.7 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-147-08.md b/docs/workstreams/backlog/00-147-08.md index 0d874cd5..33c25dff 100644 --- a/docs/workstreams/backlog/00-147-08.md +++ b/docs/workstreams/backlog/00-147-08.md @@ -19,7 +19,7 @@ CLI command `bd suggest` (implemented как `cmd/sdp-bd-suggest`) — read-only ## Beads -- (created in this session — pending mapping update) +- sdplab-rp3u.8 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-147-09.md b/docs/workstreams/backlog/00-147-09.md index 9fe58c88..d1a9cb4b 100644 --- a/docs/workstreams/backlog/00-147-09.md +++ b/docs/workstreams/backlog/00-147-09.md @@ -19,7 +19,7 @@ End-to-end bench harness прогоняющий все 4 micro-classifier'а (Ws ## Beads -- (created in this session — pending mapping update) +- sdplab-rp3u.9 (historical leaf issue) ## Scope Files diff --git a/docs/workstreams/backlog/00-149-02.md b/docs/workstreams/backlog/00-149-02.md new file mode 100644 index 00000000..b9102c00 --- /dev/null +++ b/docs/workstreams/backlog/00-149-02.md @@ -0,0 +1,63 @@ +--- +ws_id: 00-149-02 +feature_id: F149 +status: open +priority: P2 +size: M +depends_on: [00-149-01] +--- + +# 00-149-02: strict doc-sync debt retirement + +Feature: F149 (Product Documentation Rebaseline) + +Design reference: [2026-05-15-f149-doc-sync-debt-retirement-design.md](../../plans/2026-05-15-f149-doc-sync-debt-retirement-design.md) + +## Goal + +Make strict documentation consistency real again: retire the current +`sdp-doc-sync --mode check --strict` backlog and update repo policy so residual +doc-sync debt cannot be normalized as an unowned handoff note. + +## Beads + +- sdplab-t5k3 (F149 follow-up: clear sdp-doc-sync strict warning backlog) + +## Scope Files + +- `docs/plans/2026-05-15-f149-doc-sync-debt-retirement-design.md` — owner spec, + slice plan, and review plan. +- `docs/workstreams/backlog/00-149-02.md` — executable workstream for this + remediation. +- `.beads-sdp-mapping.jsonl` — direct WS to Beads mapping. +- Active docs and workstreams reported by `sdp-doc-sync --mode check --strict`. +- `AGENTS.md`, `docs/reference/ci-gates-map.md`, and + `docs/reference/quality-gates.md` — policy/gate wording after cleanup. + +## Acceptance Criteria + +- [ ] Spec review has separate requirements, evidence/tracing, and DX/gate review + planes; unusable reviewer output is recorded as `not_assessed`. +- [ ] `go run ./cmd/sdp-doc-sync --mode check --strict` exits 0. +- [ ] Before/after strict doc-sync evidence and per-bucket resolution notes are + recorded in the review artifact. +- [ ] Broken active-doc local links are fixed or explicitly marked historical. +- [ ] ROADMAP and INDEX contain required feature records for active backlog files, + or the corresponding backlog files are archived/superseded with proof that + they are not linked as active from ROADMAP/INDEX and with replacement or + rationale recorded. +- [ ] Workstream `## Beads` and `## Acceptance Criteria` gaps are resolved without + changing `design-pending` scaffolds into buildable workstreams; every + touched `design-pending` file still routes next action to `/design` or + `/feature`, not `/build`. +- [ ] `AGENTS.md`, `docs/reference/ci-gates-map.md`, and + `docs/reference/quality-gates.md` agree on strict doc-sync semantics. +- [ ] Repo policy no longer treats retired F149 doc-sync debt as a standing reason + to ignore doc-sync findings. + +## Out of Scope + +- Completing implementation work for the affected historical workstreams. +- Rewriting archived plans not checked by `sdp-doc-sync`. +- Publishing to the distilled `sdp` repo. +- Merging without PR review and explicit merge authorization.