diff --git a/.forgeplan/evidence/EVID-015-prd-020-decision-contracts-verified.md b/.forgeplan/evidence/EVID-015-prd-020-decision-contracts-verified.md index d10cb1ba..d1a6e0b0 100644 --- a/.forgeplan/evidence/EVID-015-prd-020-decision-contracts-verified.md +++ b/.forgeplan/evidence/EVID-015-prd-020-decision-contracts-verified.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PRD-017 relation: informs -status: draft +status: active title: PRD-020 Decision Contracts verified --- @@ -20,3 +20,4 @@ evidence_type: test - Contract validation: 5 ADR rules + 2 RFC rules - Drift detection: forgeplan drift работает (git log --since) - LanceDB migration system: idempotent column additions + diff --git a/.forgeplan/evidence/EVID-016-prd-019-codebase-awareness-verified-scan-coverage-quality-fixes-24-e2e.md b/.forgeplan/evidence/EVID-016-prd-019-codebase-awareness-verified-scan-coverage-quality-fixes-24-e2e.md index 946a9652..34ccbcf7 100644 --- a/.forgeplan/evidence/EVID-016-prd-019-codebase-awareness-verified-scan-coverage-quality-fixes-24-e2e.md +++ b/.forgeplan/evidence/EVID-016-prd-019-codebase-awareness-verified-scan-coverage-quality-fixes-24-e2e.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PRD-016 relation: informs -status: draft +status: active title: PRD-019 Codebase Awareness verified — scan, coverage, quality fixes, 24 E2E --- @@ -21,3 +21,4 @@ evidence_type: test - 14 manual negative/corner case tests — 0 crashes, 0 silent failures - Quality fixes: FPF search ranking, scan filter, CL default, empty input handling - All 13 features verified on live workspace + diff --git a/.forgeplan/evidence/EVID-017-prd-012-scan-import-verified-20-tests-3-tier-detection-e2e.md b/.forgeplan/evidence/EVID-017-prd-012-scan-import-verified-20-tests-3-tier-detection-e2e.md index 413e44cf..34b6911d 100644 --- a/.forgeplan/evidence/EVID-017-prd-012-scan-import-verified-20-tests-3-tier-detection-e2e.md +++ b/.forgeplan/evidence/EVID-017-prd-012-scan-import-verified-20-tests-3-tier-detection-e2e.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PRD-012 relation: informs -status: draft +status: active title: PRD-012 scan-import verified — 20 tests, 3-tier detection, E2E --- @@ -31,3 +31,4 @@ verdict: supports congruence_level: 3 evidence_type: test + diff --git a/.forgeplan/evidence/EVID-018-prd-008-cli-ux-unified-helpers-json-for-get-score-search-styled-output.md b/.forgeplan/evidence/EVID-018-prd-008-cli-ux-unified-helpers-json-for-get-score-search-styled-output.md index aedbb76f..446b1187 100644 --- a/.forgeplan/evidence/EVID-018-prd-008-cli-ux-unified-helpers-json-for-get-score-search-styled-output.md +++ b/.forgeplan/evidence/EVID-018-prd-008-cli-ux-unified-helpers-json-for-get-score-search-styled-output.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PRD-008 relation: informs -status: draft +status: active title: PRD-008 CLI UX — unified helpers, --json for get/score/search, styled output --- @@ -36,3 +36,4 @@ verdict: supports congruence_level: 3 evidence_type: test + diff --git a/.forgeplan/evidence/EVID-019-prd-009-data-safety-verified-export-import-with-roundtrip-file-size-limit.md b/.forgeplan/evidence/EVID-019-prd-009-data-safety-verified-export-import-with-roundtrip-file-size-limit.md index 7108c764..d25cb773 100644 --- a/.forgeplan/evidence/EVID-019-prd-009-data-safety-verified-export-import-with-roundtrip-file-size-limit.md +++ b/.forgeplan/evidence/EVID-019-prd-009-data-safety-verified-export-import-with-roundtrip-file-size-limit.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PRD-009 relation: informs -status: draft +status: active title: PRD-009 Data Safety verified — export/import with roundtrip, file size limit --- @@ -15,3 +15,4 @@ verdict: supports congruence_level: 3 evidence_type: test + diff --git a/.forgeplan/evidence/EVID-020-prd-010-agent-hooks-verified-forge-safety-hook-skill-activation-hook.md b/.forgeplan/evidence/EVID-020-prd-010-agent-hooks-verified-forge-safety-hook-skill-activation-hook.md index 50abf670..c2c4b656 100644 --- a/.forgeplan/evidence/EVID-020-prd-010-agent-hooks-verified-forge-safety-hook-skill-activation-hook.md +++ b/.forgeplan/evidence/EVID-020-prd-010-agent-hooks-verified-forge-safety-hook-skill-activation-hook.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PRD-010 relation: informs -status: draft +status: active title: PRD-010 Agent Hooks verified — forge-safety-hook, skill-activation-hook --- @@ -15,3 +15,4 @@ verdict: supports congruence_level: 3 evidence_type: test + diff --git a/.forgeplan/evidence/EVID-021-prd-011-adversarial-validation-verified-devil-advocate-review-vague-word-detection.md b/.forgeplan/evidence/EVID-021-prd-011-adversarial-validation-verified-devil-advocate-review-vague-word-detection.md index b918b330..2bb9599e 100644 --- a/.forgeplan/evidence/EVID-021-prd-011-adversarial-validation-verified-devil-advocate-review-vague-word-detection.md +++ b/.forgeplan/evidence/EVID-021-prd-011-adversarial-validation-verified-devil-advocate-review-vague-word-detection.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PRD-011 relation: informs -status: draft +status: active title: PRD-011 Adversarial Validation verified — devil advocate review, vague word detection --- @@ -15,3 +15,4 @@ verdict: supports congruence_level: 3 evidence_type: test + diff --git a/.forgeplan/evidence/EVID-022-adr-001-verified-no-adapter-traits-ai-orchestrates-via-mcp.md b/.forgeplan/evidence/EVID-022-adr-001-verified-no-adapter-traits-ai-orchestrates-via-mcp.md index 1ef36fee..4eb3f298 100644 --- a/.forgeplan/evidence/EVID-022-adr-001-verified-no-adapter-traits-ai-orchestrates-via-mcp.md +++ b/.forgeplan/evidence/EVID-022-adr-001-verified-no-adapter-traits-ai-orchestrates-via-mcp.md @@ -5,7 +5,7 @@ kind: evidence links: - target: ADR-001 relation: informs -status: draft +status: active title: ADR-001 verified — no adapter traits, AI orchestrates via MCP --- @@ -18,3 +18,4 @@ evidence_type: audit ## Evidence Decision validated by 4-agent audit + FPF analysis. Forgeplan core has 0 external adapter traits. LLMProvider is the only external dep. AI agent orchestrates via MCP (28 tools). Architecture confirmed working across v0.10-v0.11. + diff --git a/.forgeplan/evidence/EVID-023-rfc-002-phase-1-verified-forgeplan-tree-command-petgraph-392-tests.md b/.forgeplan/evidence/EVID-023-rfc-002-phase-1-verified-forgeplan-tree-command-petgraph-392-tests.md index 74843dd2..a4b83ae8 100644 --- a/.forgeplan/evidence/EVID-023-rfc-002-phase-1-verified-forgeplan-tree-command-petgraph-392-tests.md +++ b/.forgeplan/evidence/EVID-023-rfc-002-phase-1-verified-forgeplan-tree-command-petgraph-392-tests.md @@ -5,7 +5,7 @@ kind: evidence links: - target: RFC-002 relation: informs -status: draft +status: active title: RFC-002 Phase 1 verified — forgeplan tree command, petgraph, 392 tests --- @@ -15,3 +15,4 @@ verdict: supports congruence_level: 3 evidence_type: test + diff --git a/.forgeplan/evidence/EVID-025-prob-012-integrity-remediation-5-fixes-verified.md b/.forgeplan/evidence/EVID-025-prob-012-integrity-remediation-5-fixes-verified.md index a6ede181..de2780f2 100644 --- a/.forgeplan/evidence/EVID-025-prob-012-integrity-remediation-5-fixes-verified.md +++ b/.forgeplan/evidence/EVID-025-prob-012-integrity-remediation-5-fixes-verified.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-012 relation: informs -status: draft +status: active title: PROB-012 integrity remediation — 5 fixes verified --- @@ -37,3 +37,4 @@ evidence_type: test - 16 files, +388/-10 LOC - PR #53: fix/prob-012-integrity-remediation → dev + diff --git a/.forgeplan/evidence/EVID-026-prob-006-routing-ux-scope-solved-by-keyword-expansion.md b/.forgeplan/evidence/EVID-026-prob-006-routing-ux-scope-solved-by-keyword-expansion.md index a7d4d50b..7822e7ab 100644 --- a/.forgeplan/evidence/EVID-026-prob-006-routing-ux-scope-solved-by-keyword-expansion.md +++ b/.forgeplan/evidence/EVID-026-prob-006-routing-ux-scope-solved-by-keyword-expansion.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-006 relation: informs -status: draft +status: active title: PROB-006 routing UX scope — solved by keyword expansion --- @@ -22,3 +22,4 @@ PROB-006 flagged that routing missed UX-related tasks. Fixed in PROB-012 sprint: - Added keyword:integrity trigger ("inconsistency", "divergence") - Route now correctly escalates UX-adjacent tasks - Verified: forgeplan route 'Fix 5 P0 issues' → Deep (was Tactical) + diff --git a/.forgeplan/evidence/EVID-027-prob-010-markdown-projections-documented-design-decision.md b/.forgeplan/evidence/EVID-027-prob-010-markdown-projections-documented-design-decision.md index 4c55382c..b2ff20b1 100644 --- a/.forgeplan/evidence/EVID-027-prob-010-markdown-projections-documented-design-decision.md +++ b/.forgeplan/evidence/EVID-027-prob-010-markdown-projections-documented-design-decision.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-010 relation: informs -status: draft +status: active title: PROB-010 markdown projections — documented design decision --- @@ -23,3 +23,4 @@ Markdown projections are NOT auto-synced on update by design: - forgeplan update only modifies LanceDB - Tracked as P2 in TODO.md for future improvement - This is a known limitation, not a bug + diff --git a/.forgeplan/evidence/EVID-029-llm-first-routing-level-0-1-implementation-tests.md b/.forgeplan/evidence/EVID-029-llm-first-routing-level-0-1-implementation-tests.md index 3a0a6388..ab0b9be4 100644 --- a/.forgeplan/evidence/EVID-029-llm-first-routing-level-0-1-implementation-tests.md +++ b/.forgeplan/evidence/EVID-029-llm-first-routing-level-0-1-implementation-tests.md @@ -7,7 +7,7 @@ links: relation: informs - target: PRD-020 relation: informs -status: draft +status: active title: LLM-first routing Level 0→1 implementation tests --- @@ -56,3 +56,4 @@ evidence_type: test 2. FPF KB not injected into route prompt → fixed: route_with_llm_and_context() 3. CLI didn't auto-detect Level 1 → fixed: auto-detect when config available + diff --git a/.forgeplan/evidence/EVID-030-rfc-003-phase-1-storagedriver-traits-implemented.md b/.forgeplan/evidence/EVID-030-rfc-003-phase-1-storagedriver-traits-implemented.md index 35681d59..535ebb5b 100644 --- a/.forgeplan/evidence/EVID-030-rfc-003-phase-1-storagedriver-traits-implemented.md +++ b/.forgeplan/evidence/EVID-030-rfc-003-phase-1-storagedriver-traits-implemented.md @@ -5,7 +5,7 @@ kind: evidence links: - target: RFC-003 relation: informs -status: draft +status: active title: RFC-003 Phase 1 — StorageDriver traits implemented --- @@ -39,3 +39,4 @@ verdict: supports congruence_level: 3 evidence_type: test + diff --git a/.forgeplan/evidence/EVID-031-prob-014-p0-sprint-embed-body-gaps-command-relation-types.md b/.forgeplan/evidence/EVID-031-prob-014-p0-sprint-embed-body-gaps-command-relation-types.md index 0b7d5aff..db0725e6 100644 --- a/.forgeplan/evidence/EVID-031-prob-014-p0-sprint-embed-body-gaps-command-relation-types.md +++ b/.forgeplan/evidence/EVID-031-prob-014-p0-sprint-embed-body-gaps-command-relation-types.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-014 relation: informs -status: draft +status: active title: PROB-014 P0 sprint — embed body, gaps command, relation types --- @@ -42,3 +42,4 @@ verdict: supports congruence_level: 3 evidence_type: test + diff --git a/.forgeplan/evidence/EVID-032-prd-019-layer-3-methodology-enforcement-implemented.md b/.forgeplan/evidence/EVID-032-prd-019-layer-3-methodology-enforcement-implemented.md index e0c742f0..aefc8e04 100644 --- a/.forgeplan/evidence/EVID-032-prd-019-layer-3-methodology-enforcement-implemented.md +++ b/.forgeplan/evidence/EVID-032-prd-019-layer-3-methodology-enforcement-implemented.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PRD-019 relation: informs -status: draft +status: active title: PRD-019 Layer 3 — methodology enforcement implemented --- @@ -24,3 +24,4 @@ verdict: supports congruence_level: 3 evidence_type: test + diff --git a/.forgeplan/evidence/EVID-076-prd-056-mini-x-verification-1287-tests-audit-round-1-hotfix.md b/.forgeplan/evidence/EVID-076-prd-056-mini-x-verification-1287-tests-audit-round-1-hotfix.md index c19251cf..7a74acee 100644 --- a/.forgeplan/evidence/EVID-076-prd-056-mini-x-verification-1287-tests-audit-round-1-hotfix.md +++ b/.forgeplan/evidence/EVID-076-prd-056-mini-x-verification-1287-tests-audit-round-1-hotfix.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PRD-056 relation: informs -status: draft +status: active title: PRD-056 Mini-X verification — 1287 tests + audit Round 1 hotfix --- @@ -143,3 +143,4 @@ Mini-X is shippable to v0.23.0-alpha: | PRD-056 | informs (primary target — this evidence validates PRD-056 implementation) | | EPIC-005 | informs (Mini-X is first child; evidence feeds Epic progress) | + diff --git a/.forgeplan/evidence/EVID-077-prd-057-multi-agent-dispatcher-r3-audit-closed-1391-tests-full-pipeline-e2e.md b/.forgeplan/evidence/EVID-077-prd-057-multi-agent-dispatcher-r3-audit-closed-1391-tests-full-pipeline-e2e.md index 23332ba8..6bcbf5ea 100644 --- a/.forgeplan/evidence/EVID-077-prd-057-multi-agent-dispatcher-r3-audit-closed-1391-tests-full-pipeline-e2e.md +++ b/.forgeplan/evidence/EVID-077-prd-057-multi-agent-dispatcher-r3-audit-closed-1391-tests-full-pipeline-e2e.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PRD-057 relation: supports -status: draft +status: active title: PRD-057 multi-agent dispatcher — R3 audit closed, 1391 tests, full pipeline E2E --- @@ -149,3 +149,4 @@ locations) are all traceable in-repo. | PRD-057 | supports | | EPIC-005 | informs | + diff --git a/.forgeplan/evidence/EVID-078-prd-058-scan-import-fix-critical-double-fm-closed-3-high-audit-fixes-40-scan-tests.md b/.forgeplan/evidence/EVID-078-prd-058-scan-import-fix-critical-double-fm-closed-3-high-audit-fixes-40-scan-tests.md index c96ead86..cf5dfcb8 100644 --- a/.forgeplan/evidence/EVID-078-prd-058-scan-import-fix-critical-double-fm-closed-3-high-audit-fixes-40-scan-tests.md +++ b/.forgeplan/evidence/EVID-078-prd-058-scan-import-fix-critical-double-fm-closed-3-high-audit-fixes-40-scan-tests.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PRD-058 relation: supports -status: draft +status: active title: PRD-058 scan-import fix — CRITICAL double-FM closed + 3 HIGH audit fixes, 40 scan tests --- @@ -146,3 +146,4 @@ paths named by file:line. | PRD-058 | supports | | ADR-003 | informs (PRD-058 enforces the invariant) | + diff --git a/.forgeplan/evidence/EVID-080-prob-041-fix-verified-cli-loads-forgeplan-env-via-workspace-walk-up-3-e2e-scenarios-pass.md b/.forgeplan/evidence/EVID-080-prob-041-fix-verified-cli-loads-forgeplan-env-via-workspace-walk-up-3-e2e-scenarios-pass.md index 6a3cb57f..1718b95a 100644 --- a/.forgeplan/evidence/EVID-080-prob-041-fix-verified-cli-loads-forgeplan-env-via-workspace-walk-up-3-e2e-scenarios-pass.md +++ b/.forgeplan/evidence/EVID-080-prob-041-fix-verified-cli-loads-forgeplan-env-via-workspace-walk-up-3-e2e-scenarios-pass.md @@ -6,7 +6,7 @@ kind: evidence links: - target: PROB-041 relation: supports -status: draft +status: active title: PROB-041 fix verified — CLI loads .forgeplan/.env via workspace walk-up, 3 E2E scenarios PASS updated: 2026-04-20 --- @@ -74,3 +74,4 @@ Penalty CL3 = 0.0 (exact match). | PROB-022 | Problem | informs (brownfield onboarding unblocked) | + diff --git a/.forgeplan/evidence/EVID-081-adr-009-orchestrator-pivot-research-from-c4-architecture-autoresearch-ddd-expert-plugins.md b/.forgeplan/evidence/EVID-081-adr-009-orchestrator-pivot-research-from-c4-architecture-autoresearch-ddd-expert-plugins.md index 71e19ea2..bd660613 100644 --- a/.forgeplan/evidence/EVID-081-adr-009-orchestrator-pivot-research-from-c4-architecture-autoresearch-ddd-expert-plugins.md +++ b/.forgeplan/evidence/EVID-081-adr-009-orchestrator-pivot-research-from-c4-architecture-autoresearch-ddd-expert-plugins.md @@ -10,7 +10,7 @@ links: relation: supports - target: PROB-042 relation: supports -status: draft +status: active title: ADR-009 orchestrator pivot — research from c4-architecture + autoresearch + ddd-expert plugins updated: 2026-04-20 --- @@ -144,3 +144,4 @@ Penalty CL3 = 0.0 (exact match). + diff --git a/.forgeplan/evidence/EVID-084-prob-043-prd-054-activity-log-shipped-v0-21-0-ac-4-5-done-ci-flush-fix-landed.md b/.forgeplan/evidence/EVID-084-prob-043-prd-054-activity-log-shipped-v0-21-0-ac-4-5-done-ci-flush-fix-landed.md index eb57c2cb..9e5be694 100644 --- a/.forgeplan/evidence/EVID-084-prob-043-prd-054-activity-log-shipped-v0-21-0-ac-4-5-done-ci-flush-fix-landed.md +++ b/.forgeplan/evidence/EVID-084-prob-043-prd-054-activity-log-shipped-v0-21-0-ac-4-5-done-ci-flush-fix-landed.md @@ -7,7 +7,7 @@ links: relation: informs - target: PROB-043 relation: informs -status: draft +status: active title: PROB-043 + PRD-054 activity log shipped — v0.21.0, AC 4/5 done, CI flush fix landed --- @@ -64,3 +64,4 @@ CL3: same context — measurements taken on the actual binary built from the sam | PROB-043 | informs | + diff --git a/.forgeplan/evidence/EVID-088-spike-1-c4-to-forge-mapping-concept-validated-on-scoring-module.md b/.forgeplan/evidence/EVID-088-spike-1-c4-to-forge-mapping-concept-validated-on-scoring-module.md index 7355ae55..2670e03b 100644 --- a/.forgeplan/evidence/EVID-088-spike-1-c4-to-forge-mapping-concept-validated-on-scoring-module.md +++ b/.forgeplan/evidence/EVID-088-spike-1-c4-to-forge-mapping-concept-validated-on-scoring-module.md @@ -11,7 +11,7 @@ links: relation: informs - target: PRD-066 relation: informs -status: draft +status: active title: Spike-1 c4-to-forge mapping concept validated on scoring module --- @@ -104,3 +104,4 @@ ADR-009 DoR Spike-1 — **DONE**. Mapping primitive validated на real C4 outpu + diff --git a/.forgeplan/evidence/EVID-089-phase-5-playbook-runtime-ingest-engine-plugin-detection-shipped-prd-065-066-067.md b/.forgeplan/evidence/EVID-089-phase-5-playbook-runtime-ingest-engine-plugin-detection-shipped-prd-065-066-067.md index d517f051..c402aa5c 100644 --- a/.forgeplan/evidence/EVID-089-phase-5-playbook-runtime-ingest-engine-plugin-detection-shipped-prd-065-066-067.md +++ b/.forgeplan/evidence/EVID-089-phase-5-playbook-runtime-ingest-engine-plugin-detection-shipped-prd-065-066-067.md @@ -17,7 +17,7 @@ links: relation: informs - target: EVID-088 relation: based_on -status: draft +status: active title: Phase 5 — Playbook runtime + Ingest engine + Plugin detection shipped (PRD-065/066/067) --- @@ -173,3 +173,4 @@ Implementation gate **passed** через 4 wave gates + Round 1 fix wave; relea - `docs/operations/INGEST-MAPPINGS.ru.md` — mapping-author guide - CHANGELOG.md v0.26.0 — release notes + diff --git a/.forgeplan/evidence/EVID-090-spike-2-tokio-process-subprocess-invocation-validated-for-phase-6-dispatchers.md b/.forgeplan/evidence/EVID-090-spike-2-tokio-process-subprocess-invocation-validated-for-phase-6-dispatchers.md index 756c8609..c4e946b2 100644 --- a/.forgeplan/evidence/EVID-090-spike-2-tokio-process-subprocess-invocation-validated-for-phase-6-dispatchers.md +++ b/.forgeplan/evidence/EVID-090-spike-2-tokio-process-subprocess-invocation-validated-for-phase-6-dispatchers.md @@ -13,7 +13,7 @@ links: relation: informs - target: EVID-088 relation: based_on -status: draft +status: active title: Spike-2 tokio::process subprocess invocation validated for Phase 6 dispatchers --- @@ -96,3 +96,4 @@ Spike-2 closes ADR-010 DoR Pre-condition #4. R_eff PRD-072/RFC-007/ADR-010 ready + diff --git a/.forgeplan/evidence/EVID-091-phase-6-real-dispatchers-init-wiring-greenfield-shipped-prd-072.md b/.forgeplan/evidence/EVID-091-phase-6-real-dispatchers-init-wiring-greenfield-shipped-prd-072.md index 00146b10..01099546 100644 --- a/.forgeplan/evidence/EVID-091-phase-6-real-dispatchers-init-wiring-greenfield-shipped-prd-072.md +++ b/.forgeplan/evidence/EVID-091-phase-6-real-dispatchers-init-wiring-greenfield-shipped-prd-072.md @@ -13,7 +13,7 @@ links: relation: informs - target: EVID-089 relation: based_on -status: draft +status: active title: Phase 6 — Real dispatchers + init wiring + greenfield shipped (PRD-072) --- @@ -150,3 +150,4 @@ Phase 6 PRD-072 — **implementation closed** для FR-1, FR-2, FR-3 (stub), FR + diff --git a/.forgeplan/evidence/EVID-095-phase-3c-sprint-closure-typed-mutationresult-migration-with-2-round-audit-wave-1-2-r1-r2-fixes.md b/.forgeplan/evidence/EVID-095-phase-3c-sprint-closure-typed-mutationresult-migration-with-2-round-audit-wave-1-2-r1-r2-fixes.md index 37bedb94..7140c5d7 100644 --- a/.forgeplan/evidence/EVID-095-phase-3c-sprint-closure-typed-mutationresult-migration-with-2-round-audit-wave-1-2-r1-r2-fixes.md +++ b/.forgeplan/evidence/EVID-095-phase-3c-sprint-closure-typed-mutationresult-migration-with-2-round-audit-wave-1-2-r1-r2-fixes.md @@ -9,7 +9,7 @@ links: relation: informs - target: ADR-003 relation: informs -status: draft +status: active title: Phase 3c sprint closure — typed MutationResult migration with 2-round audit (Wave 1+2 + R1+R2 fixes) --- @@ -153,3 +153,4 @@ gap. | PROB-049 | informs (Phase 3d follow-up tracker, created from these audits) | + diff --git a/.forgeplan/evidence/EVID-096-phase-b-wave-1-closure-claude-print-dispatcher-rewrite-4-lens-r1-audit.md b/.forgeplan/evidence/EVID-096-phase-b-wave-1-closure-claude-print-dispatcher-rewrite-4-lens-r1-audit.md index 3e5a1387..4e70b04f 100644 --- a/.forgeplan/evidence/EVID-096-phase-b-wave-1-closure-claude-print-dispatcher-rewrite-4-lens-r1-audit.md +++ b/.forgeplan/evidence/EVID-096-phase-b-wave-1-closure-claude-print-dispatcher-rewrite-4-lens-r1-audit.md @@ -7,7 +7,7 @@ last_modified_by: claude-code/2.1.121 links: - target: ADR-011 relation: informs -status: draft +status: active title: Phase B Wave 1 closure — claude --print dispatcher rewrite + 4-lens R1 audit --- @@ -177,3 +177,4 @@ EVID-096 (this evidence) measures the implementation closing it. | EVID-093 | informs (spike validation, pre-Phase-B baseline) | | PROB-050 | informs (Phase B follow-up tracker, created from R1 audit deferrals) | + diff --git a/.forgeplan/evidence/EVID-097-phase-b-track-4-a8-real-e2e-closure-measurement.md b/.forgeplan/evidence/EVID-097-phase-b-track-4-a8-real-e2e-closure-measurement.md index a2e82e8b..339c10a1 100644 --- a/.forgeplan/evidence/EVID-097-phase-b-track-4-a8-real-e2e-closure-measurement.md +++ b/.forgeplan/evidence/EVID-097-phase-b-track-4-a8-real-e2e-closure-measurement.md @@ -13,7 +13,7 @@ links: relation: informs - target: EVID-096 relation: informs -status: draft +status: active title: Phase B + Track 4-A8 real E2E closure measurement --- @@ -191,3 +191,4 @@ that's an honest accounting choice not a measurement artefact. + diff --git a/.forgeplan/evidence/EVID-098-release-v0-28-0-readiness-measurement.md b/.forgeplan/evidence/EVID-098-release-v0-28-0-readiness-measurement.md index dae92c3c..8a57f0d3 100644 --- a/.forgeplan/evidence/EVID-098-release-v0-28-0-readiness-measurement.md +++ b/.forgeplan/evidence/EVID-098-release-v0-28-0-readiness-measurement.md @@ -13,7 +13,7 @@ links: relation: informs - target: PRD-073 relation: informs -status: draft +status: active title: Release v0.28.0 readiness measurement --- @@ -198,3 +198,4 @@ only doc + version bump). + diff --git a/.forgeplan/evidence/EVID-099-v0-28-0-quality-sweep-audit-closure-measurement.md b/.forgeplan/evidence/EVID-099-v0-28-0-quality-sweep-audit-closure-measurement.md index 2a76d63c..9a0497e0 100644 --- a/.forgeplan/evidence/EVID-099-v0-28-0-quality-sweep-audit-closure-measurement.md +++ b/.forgeplan/evidence/EVID-099-v0-28-0-quality-sweep-audit-closure-measurement.md @@ -13,7 +13,7 @@ links: relation: informs - target: PROB-050 relation: informs -status: draft +status: active title: v0.28.0 quality sweep audit closure measurement --- @@ -165,3 +165,4 @@ No proxies, no synthetic measurements. Audit cost: $0 (sub-agent invocations + diff --git a/.forgeplan/evidence/EVID-133-prob-009-hybrid-multi-agent-architecture-realized-as-prd-057-dispatcher-v0-24-0.md b/.forgeplan/evidence/EVID-133-prob-009-hybrid-multi-agent-architecture-realized-as-prd-057-dispatcher-v0-24-0.md index 46c593f8..fea6c8fb 100644 --- a/.forgeplan/evidence/EVID-133-prob-009-hybrid-multi-agent-architecture-realized-as-prd-057-dispatcher-v0-24-0.md +++ b/.forgeplan/evidence/EVID-133-prob-009-hybrid-multi-agent-architecture-realized-as-prd-057-dispatcher-v0-24-0.md @@ -7,7 +7,7 @@ last_modified_by: claude-code/2.1.149 links: - target: PROB-009 relation: informs -status: draft +status: active title: PROB-009 Hybrid multi-agent architecture realized as PRD-057 dispatcher (v0.24.0) --- @@ -61,3 +61,4 @@ PROB-009 в мае 2026 предложил 5 архитектурных подх - `Refs: PRD-057, EVID-077, ADR-003, project_v0_24_0_prd057_sprint memory` - CLAUDE.md sections: "Multi-agent (v0.24.0+)", "AgentTeams orchestration patterns", "Multi-agent worktree pattern" + diff --git a/.forgeplan/evidence/EVID-134-prob-044-brownfield-shape-audit-2026-04-19-resolution-snapshot.md b/.forgeplan/evidence/EVID-134-prob-044-brownfield-shape-audit-2026-04-19-resolution-snapshot.md index c239eab9..2d99fef5 100644 --- a/.forgeplan/evidence/EVID-134-prob-044-brownfield-shape-audit-2026-04-19-resolution-snapshot.md +++ b/.forgeplan/evidence/EVID-134-prob-044-brownfield-shape-audit-2026-04-19-resolution-snapshot.md @@ -7,7 +7,7 @@ last_modified_by: claude-code/2.1.149 links: - target: PROB-044 relation: informs -status: draft +status: active title: PROB-044 brownfield Shape audit 2026-04-19 resolution snapshot --- @@ -90,3 +90,4 @@ TOTAL 41 → 4 resolved + 1 partial + 35 deferred-with-owner + 1 pending - `Refs: ADR-008, ADR-009, EPIC-006, EPIC-007, EPIC-008, PRD-059..064, PRD-066, PRD-067, PRD-069, PRD-070, EVID-079, EVID-081, EVID-082` - PROB-040 (historical, superseded by PROB-044 on closed PR #200) + diff --git a/.forgeplan/evidence/EVID-135-prob-070-v0-33-0-wave-9-leftovers-bounded-tracked-for-sprint-closure.md b/.forgeplan/evidence/EVID-135-prob-070-v0-33-0-wave-9-leftovers-bounded-tracked-for-sprint-closure.md index 03fbd5fd..469d417f 100644 --- a/.forgeplan/evidence/EVID-135-prob-070-v0-33-0-wave-9-leftovers-bounded-tracked-for-sprint-closure.md +++ b/.forgeplan/evidence/EVID-135-prob-070-v0-33-0-wave-9-leftovers-bounded-tracked-for-sprint-closure.md @@ -7,7 +7,7 @@ last_modified_by: claude-code/2.1.149 links: - target: PROB-070 relation: informs -status: draft +status: active title: PROB-070 v0.33.0 Wave 9 leftovers bounded + tracked for sprint closure --- @@ -73,3 +73,4 @@ Per memory `project_v033_planning.md` (2026-05-22): "Recommended 2-week scope: P - `Refs: PROB-051, PROB-072, PROB-073, PROB-075, EVID-122, project_v033_planning memory, docs/v0.33-plan.md` - Wave 9 audit reviewers: security-expert + code-reviewer (combined report) + diff --git a/.forgeplan/evidence/EVID-139-prd-078-adversarial-audit-2-agent-security-architecture-verdict-concerns-fix-first.md b/.forgeplan/evidence/EVID-139-prd-078-adversarial-audit-2-agent-security-architecture-verdict-concerns-fix-first.md index 734f2b2e..7c67d51d 100644 --- a/.forgeplan/evidence/EVID-139-prd-078-adversarial-audit-2-agent-security-architecture-verdict-concerns-fix-first.md +++ b/.forgeplan/evidence/EVID-139-prd-078-adversarial-audit-2-agent-security-architecture-verdict-concerns-fix-first.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PRD-078 relation: informs -status: draft +status: active title: PRD-078 adversarial audit — 2-agent (security + architecture) verdict CONCERNS/fix-first --- @@ -96,3 +96,4 @@ MED-4/5/6 + LOW-7/8/9 — fold into fix round or explicit follow-up issue. + diff --git a/.forgeplan/evidence/EVID-140-prd-078-closure-7-layer-verify-3130-tests-layer-7-audit-0-high-all-real-findings-fixed.md b/.forgeplan/evidence/EVID-140-prd-078-closure-7-layer-verify-3130-tests-layer-7-audit-0-high-all-real-findings-fixed.md index ac4fcf92..f26aace0 100644 --- a/.forgeplan/evidence/EVID-140-prd-078-closure-7-layer-verify-3130-tests-layer-7-audit-0-high-all-real-findings-fixed.md +++ b/.forgeplan/evidence/EVID-140-prd-078-closure-7-layer-verify-3130-tests-layer-7-audit-0-high-all-real-findings-fixed.md @@ -11,7 +11,7 @@ links: relation: informs - target: PROB-072 relation: informs -status: draft +status: active title: 'PRD-078 closure: 7-layer verify (3130 tests) + Layer-7 audit (0 HIGH+) + all real findings fixed' --- @@ -91,3 +91,4 @@ Beyond the in-process e2e, the **compiled `forgeplan-mcp` binary** was driven ov Explicit e2e replay (by name, 2× identical green): **18 tests** across `worktree_routing_e2e` (4) + `worktree_read_e2e` (12) + `worktree_error_e2e` (2): AC-1 `ac1_worktree_workspace_param_routes_correctly`, AC-2 `ac2_single_worktree_backward_compat`, AC-3 `ac3_multi_worktree_no_workspace_returns_32602` + `ac3b_explicit_param_bypasses_gate`, AC-4 `ac4_ci_strict_mode_via_env_var`, Journey-1 `p1_journey1_write_then_read_in_worktree`, negatives n1-n3, edges e1-e3, phase3c list/search/score. + diff --git a/.forgeplan/evidence/EVID-141-prob-073-sc-2-detect-multi-worktree-latency-bench-p95-12-13ms-steady-weakens-but-gated-to-cold-start-not-per-call.md b/.forgeplan/evidence/EVID-141-prob-073-sc-2-detect-multi-worktree-latency-bench-p95-12-13ms-steady-weakens-but-gated-to-cold-start-not-per-call.md index 4f363f3e..efebf070 100644 --- a/.forgeplan/evidence/EVID-141-prob-073-sc-2-detect-multi-worktree-latency-bench-p95-12-13ms-steady-weakens-but-gated-to-cold-start-not-per-call.md +++ b/.forgeplan/evidence/EVID-141-prob-073-sc-2-detect-multi-worktree-latency-bench-p95-12-13ms-steady-weakens-but-gated-to-cold-start-not-per-call.md @@ -9,7 +9,7 @@ links: relation: informs - target: ADR-015 relation: informs -status: draft +status: active title: 'PROB-073/SC-2: detect_multi_worktree latency bench — p95 ~12-13ms steady, WEAKENS but gated to cold-start (not per-call)' --- @@ -72,3 +72,4 @@ PROB-073's actual user complaint ("медленно через MCP, file-first + diff --git a/.forgeplan/evidence/EVID-142-prob-077-350-fix-mcp-filepath-expansion-in-forgeplan-update-discover-finding-4-e2e-pass.md b/.forgeplan/evidence/EVID-142-prob-077-350-fix-mcp-filepath-expansion-in-forgeplan-update-discover-finding-4-e2e-pass.md index 64c1e81e..3b7dce9a 100644 --- a/.forgeplan/evidence/EVID-142-prob-077-350-fix-mcp-filepath-expansion-in-forgeplan-update-discover-finding-4-e2e-pass.md +++ b/.forgeplan/evidence/EVID-142-prob-077-350-fix-mcp-filepath-expansion-in-forgeplan-update-discover-finding-4-e2e-pass.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-077 relation: informs -status: draft +status: active title: 'PROB-077/#350 fix: MCP @filepath expansion in forgeplan_update + discover_finding — 4 e2e PASS' --- @@ -51,3 +51,4 @@ Gate: forgeplan-mcp **259 passed / 0 failed**, clippy 0 (`--all-targets`), fmt 0 - Files: `crates/forgeplan-mcp/src/server.rs` (helper + 2 handler call-sites), `crates/forgeplan-mcp/tests/mcp_update_filepath_e2e.rs` (new) + diff --git a/.forgeplan/evidence/EVID-143-prob-073-broad-create-roundtrip-profile-13ms-p50-lancedb-commit-hot-spot.md b/.forgeplan/evidence/EVID-143-prob-073-broad-create-roundtrip-profile-13ms-p50-lancedb-commit-hot-spot.md index 1da7dfa6..144ae259 100644 --- a/.forgeplan/evidence/EVID-143-prob-073-broad-create-roundtrip-profile-13ms-p50-lancedb-commit-hot-spot.md +++ b/.forgeplan/evidence/EVID-143-prob-073-broad-create-roundtrip-profile-13ms-p50-lancedb-commit-hot-spot.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-073 relation: informs -status: draft +status: active title: 'PROB-073 broad: create-roundtrip profile — 13ms p50, LanceDB commit hot spot' --- @@ -58,3 +58,4 @@ The detection slice of PROB-073 was closed separately (EVID-141, SC-2 via gating - Branch: `chore/prob-073-roundtrip-profile` (off `origin/dev`) + diff --git a/.forgeplan/evidence/EVID-144-prob-075-closure-f-2-f-3-f-4-verified-implemented-tests-green-in-v0-32-hardening-f-6-deferred-per-v0-33-plan.md b/.forgeplan/evidence/EVID-144-prob-075-closure-f-2-f-3-f-4-verified-implemented-tests-green-in-v0-32-hardening-f-6-deferred-per-v0-33-plan.md index f9d07f77..c57a1519 100644 --- a/.forgeplan/evidence/EVID-144-prob-075-closure-f-2-f-3-f-4-verified-implemented-tests-green-in-v0-32-hardening-f-6-deferred-per-v0-33-plan.md +++ b/.forgeplan/evidence/EVID-144-prob-075-closure-f-2-f-3-f-4-verified-implemented-tests-green-in-v0-32-hardening-f-6-deferred-per-v0-33-plan.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-075 relation: informs -status: draft +status: active title: 'PROB-075 closure: F-2/F-3/F-4 verified implemented + tests green in v0.32 hardening; F-6 deferred per v0.33 plan' --- @@ -46,3 +46,4 @@ PROB-075 is closed as **resolved (F-2/F-3/F-4)** with **F-6 deferred**. F-6 is a - Code: `crates/forgeplan-core/src/db/store.rs` (with_retry_on_stale, is_stale_manifest_error, should_skip_refresh), `crates/forgeplan-core/src/projection/error.rs` (MutationError::RetryExhausted), `crates/forgeplan-mcp/src/server.rs` (RetryExhausted hint). + diff --git a/.forgeplan/evidence/EVID-145-prob-070-closure-sec-001-004-005-arch-003-verified-done-sec-003-windows-deferred-per-v0-33-plan-scope-cut.md b/.forgeplan/evidence/EVID-145-prob-070-closure-sec-001-004-005-arch-003-verified-done-sec-003-windows-deferred-per-v0-33-plan-scope-cut.md index d70b88ef..fe88ff9f 100644 --- a/.forgeplan/evidence/EVID-145-prob-070-closure-sec-001-004-005-arch-003-verified-done-sec-003-windows-deferred-per-v0-33-plan-scope-cut.md +++ b/.forgeplan/evidence/EVID-145-prob-070-closure-sec-001-004-005-arch-003-verified-done-sec-003-windows-deferred-per-v0-33-plan-scope-cut.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-070 relation: informs -status: draft +status: active title: 'PROB-070 closure: SEC-001/004/005 + ARCH-003 verified done; SEC-003 Windows deferred per v0.33 plan scope-cut' --- @@ -49,3 +49,4 @@ PROB-070 closed as **resolved** (SEC-001/CR-*, SEC-004, SEC-005, ARCH-003) with - Test: `crates/forgeplan-core/tests/verdict_boundary_test.rs` (ARCH-003). + diff --git a/.forgeplan/evidence/EVID-146-prob-078-refuted-mcp-read-after-write-correct-across-7-tests-incl-real-binary-subprocess.md b/.forgeplan/evidence/EVID-146-prob-078-refuted-mcp-read-after-write-correct-across-7-tests-incl-real-binary-subprocess.md index 939cddb9..7f7a2282 100644 --- a/.forgeplan/evidence/EVID-146-prob-078-refuted-mcp-read-after-write-correct-across-7-tests-incl-real-binary-subprocess.md +++ b/.forgeplan/evidence/EVID-146-prob-078-refuted-mcp-read-after-write-correct-across-7-tests-incl-real-binary-subprocess.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-078 relation: informs -status: draft +status: active title: 'PROB-078 refuted: MCP read-after-write correct across 7 tests incl real-binary subprocess' --- @@ -96,3 +96,4 @@ on Linux CI once the branch is pushed. Residual risk is low and, regardless, carries no breaking-change surface (tests only; no product code changed). + diff --git a/.forgeplan/evidence/EVID-147-adr-017-claude-code-provider-guardian-pass-2-audits-resolved-ac-1-7-verified.md b/.forgeplan/evidence/EVID-147-adr-017-claude-code-provider-guardian-pass-2-audits-resolved-ac-1-7-verified.md index 9afc67ea..567d8784 100644 --- a/.forgeplan/evidence/EVID-147-adr-017-claude-code-provider-guardian-pass-2-audits-resolved-ac-1-7-verified.md +++ b/.forgeplan/evidence/EVID-147-adr-017-claude-code-provider-guardian-pass-2-audits-resolved-ac-1-7-verified.md @@ -5,7 +5,7 @@ kind: evidence links: - target: ADR-017 relation: informs -status: draft +status: active title: 'ADR-017 claude-code provider: guardian PASS + 2 audits resolved + AC-1..7 verified' --- @@ -56,3 +56,4 @@ All seven satisfied: AC-1 disclosure (runtime `Once` + `LLM-PROVIDERS.md` + CHAN - Prior art: Hindsight `HINDSIGHT_LLM_PROVIDER=claude-code` (personal/local-only). + diff --git a/.forgeplan/evidence/EVID-148-space-mesh-5-4-h3-h4.md b/.forgeplan/evidence/EVID-148-space-mesh-5-4-h3-h4.md index d9ee250c..5cfc3396 100644 --- a/.forgeplan/evidence/EVID-148-space-mesh-5-4-h3-h4.md +++ b/.forgeplan/evidence/EVID-148-space-mesh-5-4-h3-h4.md @@ -9,7 +9,7 @@ links: relation: informs - target: ADR-018 relation: informs -status: draft +status: active title: 'Ресёрч space-mesh: 5 досье движков + 4 гипотезы, композиция H3+H4 выбрана' --- @@ -228,3 +228,4 @@ realtime / группировка (ergonomics) и события (reactivity). `shape/space-mesh` от `origin/dev`, версия 0.33.0 (ресёрч делался на 0.32.1 — ни один из затронутых choke-point'ов между версиями не менялся, но это проверяется чтением кода перед реализацией, а не считается доказанным здесь). + diff --git a/.forgeplan/evidence/EVID-157-adr-021-evidence-not-a-dependency-red-green-regression-measured-before-after-across-7-edges.md b/.forgeplan/evidence/EVID-157-adr-021-evidence-not-a-dependency-red-green-regression-measured-before-after-across-7-edges.md new file mode 100644 index 00000000..780c5481 --- /dev/null +++ b/.forgeplan/evidence/EVID-157-adr-021-evidence-not-a-dependency-red-green-regression-measured-before-after-across-7-edges.md @@ -0,0 +1,164 @@ +--- +depth: tactical +id: EVID-157 +kind: evidence +links: +- target: PROB-086 + relation: informs +- target: ADR-021 + relation: informs +status: active +title: 'ADR-021 evidence-not-a-dependency: red-green regression + measured before/after across 7 edges' +--- + +--- +assigned_number: 157 +predicted_number: 157 +slug: evid-adr-021-evidence-not-a-dependency-red-green-regression-measured-before +--- + +## Summary + +Дефект PROB-086 воспроизведён, исправлен и проверен парой красный-зелёный, а эффект правки измерен +на всех семи затронутых рёбрах сборкой бинаря в обоих состояниях. Прогноз был записан **до** +внесения правки и сошёлся по всем четырём фальсификаторам. + +## Structured Fields + +verdict: supports +congruence_level: 3 +evidence_type: test + +CL3: измерения выполнены на той самой кодовой базе и тем самым бинарём, о которых говорит решение +ADR-021, в рабочем графе этого репозитория. + +## Red-green проверка + +Восемь E2E-тестов в `crates/forgeplan-cli/tests/cli_score_evidence_semantics.rs`, каждый — реальный +запуск CLI на чистом временном workspace. + +``` +# исходники возвращены к родительскому коммиту, тесты новые +git checkout e924ae5 -- <пять файлов правки> +cargo test --test cli_score_evidence_semantics +→ test result: FAILED. 1 passed; 7 failed + +# правка на месте +cargo test --test cli_score_evidence_semantics +→ test result: ok. 8 passed; 0 failed +``` + +**Падают 7 из 8.** Единственный проходящий — +`non_evidence_dependency_still_caps_the_score`, и он проходит правильно: он проверяет не правку, +а то, что обход зависимостей вообще жив. Записывать его в красную сторону было бы приписыванием. + +Обе редакции этого раздела до текущей были неверны, и обе — по методической причине: + +1. «0 из 5»: первый откат делался через `git checkout --`, который **после коммита** правки + восстанавливает файлы из HEAD, то есть уже исправленные. Тот прогон дал ложные 6 из 6 и был + отброшен; корректный откат идёт от родительского коммита. +2. «5 из 6»: на тот момент шестым тестом был + `dangling_evidence_reference_is_still_walked_and_still_visible`, который **ничего не проверял** + — у артефакта в нём не было эвиденции, поэтому 0.00 получался сам собой, безотносительно + висячей ссылки. Тест удалён, а вместе с ним и утверждение, которое он якобы закреплял: висячая + ссылка отбрасывается при построении индекса и до скоринга не доходит вовсе. + +Покрываемые свойства: + +| Тест | Что закрепляет | +|---|---| +| `outgoing_informs_into_active_evidence_does_not_zero_the_score` | ребро `решение --informs--> активный пак` не обнуляет | +| `outgoing_based_on_into_active_evidence_does_not_zero_the_score` | то же для `based_on` | +| `activating_evidence_must_not_destroy_the_score_it_backs` | активация пака не понижает оценку подкреплённого артефакта | +| `skipping_evidence_as_a_dependency_is_recorded_in_factors` | пропуск виден в `factors`, а не молчит | +| `confidence_interval_brackets_the_reported_r_eff` | интервал содержит отчитанную величину | +| `confidence_interval_tracks_the_recursive_score_not_the_flat_one` | единственный случай, где плоский и рекурсивный счётчики расходятся — только он видит дефект интервала | +| `audit_evidence_breakdown_reports_the_score_actually_used` | `score == score_raw − type_modifier`, и это равно R_eff | +| `non_evidence_dependency_still_caps_the_score` | обход зависимостей жив: единственный тест, падающий при его удалении целиком | + +## Измерение эффекта + +Бинарь собран отдельно в состоянии «до» и «после»; `forgeplan score ` прогнан по каждому +идентификатору в обоих состояниях. + +| Артефакт | статус пака на другом конце ребра | до | после | +|---|---|---|---| +| PROB-047 | active | 0.00 | 0.80 | +| PROB-071 | active | 0.00 | 0.50 | +| PROB-026 | active | 0.00 | 0.80 | +| PROB-027 | active | 0.00 | 0.90 | +| NOTE-049 | **draft** | 0.90 | 0.90 | +| NOTE-050 | **draft** | 0.80 | 0.80 | +| ADR-016 | **draft** | 0.30 | 0.30 | +| аномалии графа | — | 51 | 49 | +| blindspots | — | 0 | 0 | + +Разделение по статусу пака объясняет всю таблицу без остатка: дефект срабатывал ровно там, где пак +активен, и молчал там, где пак черновой, потому что черновые зависимости пропускаются отдельным, +уже существовавшим фильтром. Три «не изменившихся» строки — не устойчивость к дефекту, а отложенное +его срабатывание. + +`score --all` по активным артефактам: изменились ровно две строки из 89 (PROB-047 и PROB-071); +остальные 87 не сдвинулись. Черновые PROB-026/PROB-027 в этот отчёт не попадают по построению +команды, поэтому измерялись поимённо. + +## Прогноз против факта + +Прогноз зафиксирован до правки, с явными фальсификаторами: + +| Предсказано | Получено | Итог | +|---|---|---| +| PROB-047 → 0.80 | 0.80 | сошлось | +| PROB-071 → 0.50 | 0.50 | сошлось | +| ADR-016 не сдвинется | 0.30 → 0.30 | сошлось | +| прочие активные не сдвинутся | 87 из 89 без изменений | сошлось | + +Прогноз был **неполон** в одном: он опирался на скан только активных артефактов и потому насчитал +три затронутых ребра вместо семи, пропустив черновые PROB-026/PROB-027 (реальные нули) и +NOTE-049/NOTE-050. Ошибка найдена адверсариальной линзой и исправлена до коммита. + +## Гейты + +``` +cargo fmt --check → 0 diffs +cargo check --workspace --all-targets → 0 errors, 0 warnings +cargo clippy --workspace --all-targets -- -D warnings → 0 warnings +cargo test --workspace → зелёный +``` + +Известное исключение: `git::tests` (5 тестов) падают при параллельном прогоне и дают 51/51 при +`--test-threads=1`. Это PROB-085 (гонка через `std::env::set_current_dir` в тестах конфигурации), +не регрессия данной правки — затронутый код лежит в `scoring/`, падения в `git/`, и подпись +дифференциального прогона совпадает с ранее зафиксированной. + +## Что опровергла адверсариальная проверка + +Четыре независимые линзы разбирали правку, одна из них была нанята специально её опровергнуть. +Механизм устоял, но **три моих утверждения оказались ложными**, два из них уже были вписаны в +комментарии кода: + +1. «У пака эвиденции нет собственной эвиденции по построению, обход всегда возвращает 0.0» — + опровергнуто: существует шесть рёбер `EVID → EVID`, и такие паки оцениваются 0.7…1.0. +2. «Исключение эвиденции не теряет достижимого доверия, распространялся только ноль» — + опровергнуто как общее утверждение: цепочки `EVID → EVID` действительно перестают + распространяться. Но приведённый в опровержении пример (`NOTE-049` якобы наследовал 0.8) тоже + неверен — см. пункт 4. В этом графе потери не случилось ни разу. +3. «Любое исходящее ребро в пак принудительно даёт 0.00» — завышено: потолок равен + `pack_score − cl_penalty` и схлопывается в ноль лишь когда пак сам оценён не выше штрафа. +4. «NOTE-049 и NOTE-050 спасло обнаружение цикла» — опровергнуто проверкой статусов: EVID-096 и + EVID-097 находятся в статусе `draft`, поэтому их пропускал статусный фильтр зависимостей. + Механизм тот же, что маскировал ADR-016, и никакого отношения к циклам не имеет. +5. «Красный прогон: 0 из 6» — опровергнуто повторными прогонами дважды подряд; итоговая измеренная + цифра — 7 из 8. Разбор в разделе выше. +6. «Висячая ссылка продолжает ронять оценку, и тест это закрепляет» — опровергнуто эмпирически: + неразрешимая цель отбрасывается при построении индекса, до скоринга не доходит, и артефакт + считается так, будто строки нет. Тест, якобы это проверявший, проходил по другой причине — + у артефакта в нём не было эвиденции вовсе. Тест удалён, утверждение убрано из кода и ADR. +7. «Правка достаточно покрыта шестью тестами» — опровергнуто мутационным доводом аудита: обход + зависимостей можно было удалить целиком, и все шесть остались бы зелёными. Добавлен тест, + который это ловит, и ещё один, изолирующий дефект доверительного интервала. + +Пункты 1-3 нашла адверсариальная разведка до коммита, 4-7 — аудит после него. Правка каждый раз +оставалась верной; неверным оказывалось объяснение или покрытие рядом с ней. Это и есть причина, +по которой и то, и другое проверяется отдельно от результата. + diff --git a/.forgeplan/evidence/EVID-164-prob-093-fix-verified-stale-vectors-retired-embed-incremental-gap-made-visible.md b/.forgeplan/evidence/EVID-164-prob-093-fix-verified-stale-vectors-retired-embed-incremental-gap-made-visible.md index e53b8f96..2f99927a 100644 --- a/.forgeplan/evidence/EVID-164-prob-093-fix-verified-stale-vectors-retired-embed-incremental-gap-made-visible.md +++ b/.forgeplan/evidence/EVID-164-prob-093-fix-verified-stale-vectors-retired-embed-incremental-gap-made-visible.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-093 relation: informs -status: draft +status: active title: 'PROB-093 fix verified: stale vectors retired, embed incremental, gap made visible' --- @@ -94,3 +94,4 @@ JSON несёт `unindexed_artifacts: 2`. После `embed` — предупр - **EVID-160** — замер 13м18с, из которого следовала цена полного пересчёта + diff --git a/.forgeplan/evidence/EVID-165-cli-surface-revision-82-commands-exercised-on-a-real-binary-three-defects-found.md b/.forgeplan/evidence/EVID-165-cli-surface-revision-82-commands-exercised-on-a-real-binary-three-defects-found.md index 4388d341..98bea368 100644 --- a/.forgeplan/evidence/EVID-165-cli-surface-revision-82-commands-exercised-on-a-real-binary-three-defects-found.md +++ b/.forgeplan/evidence/EVID-165-cli-surface-revision-82-commands-exercised-on-a-real-binary-three-defects-found.md @@ -7,7 +7,7 @@ links: relation: informs - target: PROB-095 relation: informs -status: draft +status: active title: 'CLI surface revision: 82 commands exercised on a real binary, three defects found' --- @@ -98,3 +98,4 @@ EXTERNAL печатается отдельно от PASS намеренно: « + diff --git a/.forgeplan/evidence/EVID-166-adi-timing-measured-18s-floor-237s-prompt-303s-end-to-end-against-a-120s-budget.md b/.forgeplan/evidence/EVID-166-adi-timing-measured-18s-floor-237s-prompt-303s-end-to-end-against-a-120s-budget.md index fe5d08b9..f29ab9b3 100644 --- a/.forgeplan/evidence/EVID-166-adi-timing-measured-18s-floor-237s-prompt-303s-end-to-end-against-a-120s-budget.md +++ b/.forgeplan/evidence/EVID-166-adi-timing-measured-18s-floor-237s-prompt-303s-end-to-end-against-a-120s-budget.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-096 relation: informs -status: draft +status: active title: 'ADI timing measured: 18s floor, 237s prompt, 303s end-to-end against a 120s budget' --- @@ -88,3 +88,4 @@ ADI-разбор: 4 гипотезы, дедукции, evidence-needed, рек - **PRD-020** — LLM-first routing, где живёт провайдерный слой + diff --git a/.forgeplan/evidence/EVID-167-git-hooks-verified-on-three-clones-a-plain-git-pull-now-retires-the-stale-vector-by-itself.md b/.forgeplan/evidence/EVID-167-git-hooks-verified-on-three-clones-a-plain-git-pull-now-retires-the-stale-vector-by-itself.md index f1f3a717..501db818 100644 --- a/.forgeplan/evidence/EVID-167-git-hooks-verified-on-three-clones-a-plain-git-pull-now-retires-the-stale-vector-by-itself.md +++ b/.forgeplan/evidence/EVID-167-git-hooks-verified-on-three-clones-a-plain-git-pull-now-retires-the-stale-vector-by-itself.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-097 relation: informs -status: draft +status: active title: 'Git hooks verified on three clones: a plain git pull now retires the stale vector by itself' --- @@ -109,3 +109,4 @@ Carol ставит хуки, Alice переписывает NOTE-002 (было - **PRD-071** — контракт подсказок, нарушенный #348 + diff --git a/.forgeplan/evidence/EVID-168-prob-100-7-of-8-drift-findings-were-false-get-now-reports-edges.md b/.forgeplan/evidence/EVID-168-prob-100-7-of-8-drift-findings-were-false-get-now-reports-edges.md index 2cacebe2..caa859a4 100644 --- a/.forgeplan/evidence/EVID-168-prob-100-7-of-8-drift-findings-were-false-get-now-reports-edges.md +++ b/.forgeplan/evidence/EVID-168-prob-100-7-of-8-drift-findings-were-false-get-now-reports-edges.md @@ -5,7 +5,7 @@ kind: evidence links: - target: PROB-100 relation: informs -status: draft +status: active title: 'PROB-100: 7 of 8 drift findings were false; get now reports edges' --- @@ -96,3 +96,4 @@ result_sha: 9dd7242 changed_paths: crates/forgeplan-cli/src/commands/get.rs, crates/forgeplan-cli/src/commands/validate.rs, crates/forgeplan-cli/tests/cli_get_links.rs, crates/forgeplan-core/src/db/store.rs, crates/forgeplan-core/src/lifecycle/mod.rs, crates/forgeplan-core/src/validation/checks.rs, crates/forgeplan-core/src/validation/rules.rs, crates/forgeplan-mcp/src/convert.rs, crates/forgeplan-mcp/src/server.rs, crates/forgeplan-mcp/src/types.rs, .gitignore + diff --git a/.forgeplan/evidence/EVID-170-prd-086-five-trust-layer-defects-measured-before-and-after.md b/.forgeplan/evidence/EVID-170-prd-086-five-trust-layer-defects-measured-before-and-after.md index 6b030fc7..ec8b8c39 100644 --- a/.forgeplan/evidence/EVID-170-prd-086-five-trust-layer-defects-measured-before-and-after.md +++ b/.forgeplan/evidence/EVID-170-prd-086-five-trust-layer-defects-measured-before-and-after.md @@ -7,7 +7,7 @@ links: relation: informs - target: PROB-101 relation: informs -status: draft +status: active title: 'PRD-086: five trust-layer defects measured before and after' --- @@ -120,3 +120,4 @@ verdict: supports congruence_level: 3 evidence_type: measurement + diff --git a/.forgeplan/prds/PRD-054-activity-log-append-only-jsonl-log-of-mcp-tool-calls-with-query-tool.md b/.forgeplan/prds/PRD-054-activity-log-append-only-jsonl-log-of-mcp-tool-calls-with-query-tool.md index adce582e..ec5ac04c 100644 --- a/.forgeplan/prds/PRD-054-activity-log-append-only-jsonl-log-of-mcp-tool-calls-with-query-tool.md +++ b/.forgeplan/prds/PRD-054-activity-log-append-only-jsonl-log-of-mcp-tool-calls-with-query-tool.md @@ -5,7 +5,7 @@ kind: prd links: - target: PROB-043 relation: informs -status: draft +status: active title: Activity log — append-only JSONL log of MCP tool calls with query tool --- @@ -299,3 +299,4 @@ And the tool does not panic or return RPC_ERROR > **Next step**: После approve → создать RFC (архитектура: single writer task, tokio channel, dispatch wrapper). + diff --git a/.forgeplan/prds/PRD-056-phase-state-machine-advisory-per-artifact-current-phase-visibility.md b/.forgeplan/prds/PRD-056-phase-state-machine-advisory-per-artifact-current-phase-visibility.md index 424016f2..f5350309 100644 --- a/.forgeplan/prds/PRD-056-phase-state-machine-advisory-per-artifact-current-phase-visibility.md +++ b/.forgeplan/prds/PRD-056-phase-state-machine-advisory-per-artifact-current-phase-visibility.md @@ -5,7 +5,7 @@ kind: prd links: - target: EPIC-005 relation: based_on -status: draft +status: active title: Phase state machine (advisory) — per-artifact current_phase visibility --- @@ -317,3 +317,4 @@ And health does not fail (exit 0, advisory only) > **Next step**: validate PRD-056 → ADI (3+ hypotheses, Standard recommended) → Code. + diff --git a/.forgeplan/prds/PRD-065-playbook-yaml-schema-runtime-executor.md b/.forgeplan/prds/PRD-065-playbook-yaml-schema-runtime-executor.md index a39620ea..0f986e7c 100644 --- a/.forgeplan/prds/PRD-065-playbook-yaml-schema-runtime-executor.md +++ b/.forgeplan/prds/PRD-065-playbook-yaml-schema-runtime-executor.md @@ -8,7 +8,7 @@ links: relation: refines - target: ADR-009 relation: based_on -status: draft +status: active title: Playbook YAML schema + runtime executor updated: 2026-04-20 --- @@ -83,3 +83,4 @@ updated: 2026-04-20 + diff --git a/.forgeplan/prds/PRD-066-ingest-engine-mapping-yaml-format-c4-to-forge-autoresearch-to-forge-git-to-forge-ddd-to-forge-spec-to-forge.md b/.forgeplan/prds/PRD-066-ingest-engine-mapping-yaml-format-c4-to-forge-autoresearch-to-forge-git-to-forge-ddd-to-forge-spec-to-forge.md index 0335166d..4fec4bf5 100644 --- a/.forgeplan/prds/PRD-066-ingest-engine-mapping-yaml-format-c4-to-forge-autoresearch-to-forge-git-to-forge-ddd-to-forge-spec-to-forge.md +++ b/.forgeplan/prds/PRD-066-ingest-engine-mapping-yaml-format-c4-to-forge-autoresearch-to-forge-git-to-forge-ddd-to-forge-spec-to-forge.md @@ -8,7 +8,7 @@ links: relation: refines - target: ADR-009 relation: based_on -status: draft +status: active title: Ingest engine + mapping YAML format (c4-to-forge autoresearch-to-forge git-to-forge ddd-to-forge spec-to-forge) updated: 2026-04-20 --- @@ -82,3 +82,4 @@ updated: 2026-04-20 + diff --git a/.forgeplan/prds/PRD-067-plugin-detection-self-describing-hints-playbook-recommendations.md b/.forgeplan/prds/PRD-067-plugin-detection-self-describing-hints-playbook-recommendations.md index c7185bb1..db62271b 100644 --- a/.forgeplan/prds/PRD-067-plugin-detection-self-describing-hints-playbook-recommendations.md +++ b/.forgeplan/prds/PRD-067-plugin-detection-self-describing-hints-playbook-recommendations.md @@ -8,7 +8,7 @@ links: relation: refines - target: ADR-009 relation: based_on -status: draft +status: active title: Plugin detection + self-describing hints playbook recommendations updated: 2026-04-20 --- @@ -83,3 +83,4 @@ Forgeplan сейчас не знает какие плагины установ + diff --git a/.forgeplan/prds/PRD-070-cli-parity-for-v0-21-v0-24-features-full-first-class-cli-commands-for-activity-undo-last-restore-phase-dispatch-claim-release.md b/.forgeplan/prds/PRD-070-cli-parity-for-v0-21-v0-24-features-full-first-class-cli-commands-for-activity-undo-last-restore-phase-dispatch-claim-release.md index e14994e7..c7e957f1 100644 --- a/.forgeplan/prds/PRD-070-cli-parity-for-v0-21-v0-24-features-full-first-class-cli-commands-for-activity-undo-last-restore-phase-dispatch-claim-release.md +++ b/.forgeplan/prds/PRD-070-cli-parity-for-v0-21-v0-24-features-full-first-class-cli-commands-for-activity-undo-last-restore-phase-dispatch-claim-release.md @@ -9,7 +9,7 @@ links: relation: based_on priority: P1 projectType: cli_tool -status: draft +status: active title: CLI parity for v0.21-v0.24 features — full first-class CLI commands for activity, undo-last, restore, phase, dispatch, claim, release updated: 2026-04-26 --- @@ -125,3 +125,4 @@ Full detail in PROB-045. | PRD-056 | informs (source of phase, phase-advance) | | PRD-057 | informs (source of dispatch, claim, claims, release) | + diff --git a/.forgeplan/prds/PRD-072-real-subprocess-dispatchers-init-recommendation-wiring-greenfield-playbook.md b/.forgeplan/prds/PRD-072-real-subprocess-dispatchers-init-recommendation-wiring-greenfield-playbook.md index 87a40034..75a5cf2f 100644 --- a/.forgeplan/prds/PRD-072-real-subprocess-dispatchers-init-recommendation-wiring-greenfield-playbook.md +++ b/.forgeplan/prds/PRD-072-real-subprocess-dispatchers-init-recommendation-wiring-greenfield-playbook.md @@ -13,7 +13,7 @@ links: relation: refines - target: ADR-009 relation: based_on -status: draft +status: active title: Real subprocess dispatchers + init recommendation wiring + greenfield playbook --- @@ -129,3 +129,4 @@ Phase 5 (PRD-065/066/067, merged 2026-04-28) shipped Playbook runtime, Ingest en + diff --git a/.forgeplan/prds/PRD-073-adr-003-file-first-migration-phase-out-direct-lancestore-mutations-from-commands-and-mcp-handlers.md b/.forgeplan/prds/PRD-073-adr-003-file-first-migration-phase-out-direct-lancestore-mutations-from-commands-and-mcp-handlers.md index cbe4c39a..9e2a77a1 100644 --- a/.forgeplan/prds/PRD-073-adr-003-file-first-migration-phase-out-direct-lancestore-mutations-from-commands-and-mcp-handlers.md +++ b/.forgeplan/prds/PRD-073-adr-003-file-first-migration-phase-out-direct-lancestore-mutations-from-commands-and-mcp-handlers.md @@ -7,9 +7,7 @@ links: relation: based_on - target: ADR-003 relation: based_on -- target: PROB-048 - relation: based_on -status: draft +status: active title: ADR-003 file-first migration — phase out direct LanceStore mutations from commands and MCP handlers --- @@ -113,3 +111,4 @@ Total: ~9-12h focused work across 5 PRs / 1 sprint. - [ ] Phase 3d — drift detection in `sync_metadata_from_file` / `sync_relation_from_file` + `HashSet` dedup in `add_links_batch_with_projection` (Wave 1B audit LOW-4) - [ ] Phase 5 — EVID-094 supplement: clone reproducibility at CL3 + closure + diff --git a/.forgeplan/prds/PRD-080-blog-navigation-visual-seo-foundation-pr-2a.md b/.forgeplan/prds/PRD-080-blog-navigation-visual-seo-foundation-pr-2a.md index 158322ec..6ed9190d 100644 --- a/.forgeplan/prds/PRD-080-blog-navigation-visual-seo-foundation-pr-2a.md +++ b/.forgeplan/prds/PRD-080-blog-navigation-visual-seo-foundation-pr-2a.md @@ -7,7 +7,7 @@ last_modified_by: claude-code/2.1.149 links: - target: PRD-079 relation: based_on -status: draft +status: active title: Blog navigation + visual + SEO foundation (PR-2A) --- @@ -117,3 +117,4 @@ PR-2A заполняет эти 12 primitive'ов **до того как** PR-2B + diff --git a/.forgeplan/prds/PRD-083-semantic-search-in-distributed-binaries-measure-decide-document-the-contract.md b/.forgeplan/prds/PRD-083-semantic-search-in-distributed-binaries-measure-decide-document-the-contract.md index d14afda7..79003a52 100644 --- a/.forgeplan/prds/PRD-083-semantic-search-in-distributed-binaries-measure-decide-document-the-contract.md +++ b/.forgeplan/prds/PRD-083-semantic-search-in-distributed-binaries-measure-decide-document-the-contract.md @@ -153,3 +153,4 @@ binaries». - `CHANGELOG.md:102` — прецедент падения публикации из-за одного таргета (v0.32.0) + diff --git a/.forgeplan/problems/PROB-085-core-tests-mutate-the-process-cwd-config-tests-race-git-tests-under-parallel-runs.md b/.forgeplan/problems/PROB-085-core-tests-mutate-the-process-cwd-config-tests-race-git-tests-under-parallel-runs.md index 2d350670..42b232f7 100644 --- a/.forgeplan/problems/PROB-085-core-tests-mutate-the-process-cwd-config-tests-race-git-tests-under-parallel-runs.md +++ b/.forgeplan/problems/PROB-085-core-tests-mutate-the-process-cwd-config-tests-race-git-tests-under-parallel-runs.md @@ -54,3 +54,4 @@ cargo test -p forgeplan-core --features test-helpers --lib -- --test-threads=1 g + diff --git a/.forgeplan/problems/PROB-090-flaky-git-tests-under-parallel-env-mutation-path-lost-mid-run.md b/.forgeplan/problems/PROB-090-flaky-git-tests-under-parallel-env-mutation-path-lost-mid-run.md index 7d1ed625..8af35db6 100644 --- a/.forgeplan/problems/PROB-090-flaky-git-tests-under-parallel-env-mutation-path-lost-mid-run.md +++ b/.forgeplan/problems/PROB-090-flaky-git-tests-under-parallel-env-mutation-path-lost-mid-run.md @@ -4,6 +4,11 @@ id: PROB-090 kind: problem last_modified_at: 2026-09-02T14:53:27.283511+00:00 last_modified_by: claude-code/2.1.220 +links: +- target: PRD-083 + relation: references +- target: PROB-085 + relation: references status: draft title: Flaky git tests under parallel env mutation — PATH lost mid-run --- @@ -91,3 +96,5 @@ git-тест вызывает `Command::new("git")` и получает пуст описано - `crates/forgeplan-core/src/embed/mod.rs` — образец тестирования без мутации окружения + + diff --git a/TODO.md b/TODO.md index b921c37e..7f6ab6be 100644 --- a/TODO.md +++ b/TODO.md @@ -1,591 +1,125 @@ # TODO — Forgeplan -> **Roadmap**: see [`docs/ROADMAP.md`](docs/ROADMAP.md) for full gap analysis by category -> (Architecture 85%, UX 70%, Performance 80%, Distribution 65%, Docs 60%, Integrations 55%). - -## Current: v0.34.0 (released 2026-08-17 — Cargo.toml workspace = 0.34.0) - -Recent releases (authoritative: `git tag --sort=-v:refname | head` + `Cargo.toml`): - -- **v0.34.0** (released 2026-08-17) — artifact integrity: R_eff scores current evidence only (ADR-020, breaking) + git-delta provenance for code-claiming Evidence (PRD-082/#360) + identity/collision hardening (`update --status` gated, `reindex` duplicate-id detection, `unbacked_displacement` detector, anomalies 140 → 34). Security: RUSTSEC-2026-0204 + quinn-proto HIGH + serde_with. -- **v0.33.0** (released 2026-06-04) — MCP worktree-aware routing (PRD-078) + CRITICAL #350 `@file` expansion + PROB-078 refuted. -- **v0.32.1 / v0.32.0** (released 2026-05-21) — Windows binary hotfix; Epic #287 brownfield surface + PROB-074 stale-handle hardening. -- **v0.31.0** (released 2026-05-12, sync PR #285) — Wave 9 quality closure. - -- **v0.30.0** (released 2026-05-06, sync PR #262) — PROB-060 slug-canonical identity marathon (PR #255..#274) + Phase 2.5 resolver wire-up. -- **v0.29.0** (released 2026-05-05, sync PR #250) — verdict aggregator typed errors (PROB-049 H-class), claude --print dispatch refactor (PROB-050 A-4..A-15), CWE-426 binary substitution closed. -- **v0.28.0** (released 2026-05-04, sync PR #223) — file-first invariant compile-enforced (PRD-073) + claude --print dispatchers (ADR-011) + canonical playbooks (release/brownfield-docs). - -**In-flight на `dev` к v0.31.0** (PRs merged after v0.30.0 tag): - -- PR #275 — PROB-060 Phase 2.5 test coverage extension — **merged 2026-05-10**. -- PR #277 — PROB-063 verdict aggregator excludes `advisory_phase_mismatches` (Closes #276) — **open**, awaiting CI green at время этой записи. - -## Released: v0.28.0 — file-first invariant compile-enforced + claude --print + canonical playbooks - -Bundles 14 merge-PR (#224..#237) since v0.27.0 (2026-04-28). Three load-bearing -themes: - -1. **PRD-073 file-first invariant compile-enforced** (ADR-003) — `LanceStore::*` - mutating methods stали `pub(crate)`, file-first projection wrappers — единственная - mutation surface. EVID-094 R_eff=0.80 grade A. PROB-048 deprecated. -2. **ADR-011 Phase B Wave 1** — Plugin/Agent dispatchers shell out to `claude --print` - на real `claude` 2.1.126. Replaces fictional task-tool из ADR-010. EVID-093 + EVID-096 + EVID-097, R_eff=0.70 grade B. Real-E2E verified. -3. **Track 4-A8 canonical playbooks** — `release.yaml` + `brownfield-docs.yaml` ship - как REFERENCE templates для marketplace skill/mapping authors. `audit.yaml` - migrated к Plugin variant + budget_usd=$5 (PROB-050 A-28 closed). - -### PRD-073 — file-first invariant compile-enforced -- [x] Phase 3a: 15 projection helpers -- [x] Phase 3b: 16 mutation helpers migrated к `MutationResult` -- [x] Phase 3c: typed errors (R1 + R2 audit closures) -- [x] Phase 4: `LanceStore::*` mutating methods → `pub(crate)` lockdown -- [x] EVID-094 (PRD-073 closure) + EVID-095 (Phase 3c sprint closure) -- [x] PROB-048 deprecated as resolved - -### ADR-011 — Phase B Wave 1 (claude --print dispatchers) -- [x] PluginDispatcher + AgentDispatcher rewritten для `claude --print` -- [x] Step.budget_usd + Step.allowed_tools fields (SPEC-003 1.2) -- [x] R1 audit closure (4 CRITICAL + 18 HIGH/MEDIUM) -- [x] EVID-093 spike + EVID-096 closure measurement -- [x] PR 1 (NOTE-049 + EVID-097) — real-E2E на production binary, 5 invocations, ~$0.98 -- [x] A-28 closure (audit.yaml type:agent → type:plugin) + real chain run ~$3.50 - -### Release v0.28.0 (this sprint) -- [x] CHANGELOG `[Unreleased]` → `[0.28.0]` promotion -- [x] Cargo.toml workspace 0.27.0 → 0.28.0 + 4 internal crate refs -- [x] Pre-flight: cargo fmt + cargo clippy `-D warnings` + cargo test (1940 PASS) -- [x] Audit (architect + code-analyzer adversarial): 11 findings closed inline -- [x] Audit round 2 (security + code-analyzer на PR 1 verification): 11 findings closed -- [x] Dependabot triage round 3 (18 alerts unchanged from round 2) -- [x] EVID-098 readiness measurement (R_eff propagation to PRD-073 grade A) -- [x] AI docs accessibility: robots.txt + llms.txt -- [x] MCP tool count drift swept (63 canonical, 18 doc locations updated) -- [x] Push `release/v0.28.0 → main` (PR #238 merged 2026-05-04) -- [x] Tag v0.28.0 + cargo-dist + brew publish (released 2026-05-04) -- [x] Post-release sync PR `chore/sync-main-to-dev-after-v0.28.0` (PR #223 merged 2026-04-28 — predecessor; v0.28.0 sync через cascade) - -### Follow-ups (deferred к PR 3 / PR 4) -- [ ] PR 3: PROB-049 top-4 (StoreError split, # Errors rustdoc, MutationContext, let-else) -- [ ] PR 4: PROB-050 top-5 (SPEC-003 1.2 doc, claude_print::invoke() extract, - cross-file ENV lock, API surface tighten, integration test gated by - CLAUDE_BIN_AVAILABLE) -- [ ] PROB-050 A-21..A-29: real-E2E findings (discovery, exit codes already-OK, - version disambiguation, budget tier, audit.yaml budget=$5, methodology - hardening) - -## Previous: v0.27.0 — PRD-072 Phase 6 real dispatchers + init wiring + greenfield playbook - -EPIC-007 Phase 6 — engine layer (v0.26.0) переходит в **user-facing activation**. -PRD-072 / RFC-007 / ADR-010 закрывают Phase 5 deferral: 5 production -`Dispatcher` impls (real subprocess через tokio::process + ForgeplanCore -direct call), `forgeplan init` теперь эмитит recommendation hints, и -greenfield-kickoff.yaml доступен в marketplace. 3 waves × 8 agents, -~5000 LOC, +60 unit + 5 integration tests. - -### PRD-072 — Phase 6 real subprocess dispatchers -- [x] FR-1 `PluginDispatcher` (claude-code-plugin subprocess, default 600s) -- [x] FR-2 `AgentDispatcher` (task-tool agent-invoke, default 300s) -- [x] FR-3 `SkillDispatcher` (in-process v1 stub — Wave 5 real registry) -- [x] FR-4 `CommandDispatcher` (security-hardened: env_clear, no shell, --yes) -- [x] FR-5 `ForgeplanCoreDispatcher` (direct internal call) -- [x] FR-6 `commands::init::run` recommendation wiring -- [x] FR-7 `marketplace/playbooks/greenfield-kickoff.yaml` canonical (7 steps) -- [x] FR-9 Subprocess lifecycle (tokio::process + kill_on_drop + Stdio::piped + 10 MiB cap) -- [x] FR-10 Security (env_clear, allow-list, no shell expansion, --yes gate) -- [x] AC-3..AC-7 init recommendation hints (закрывает PRD-067) -- [x] AC-7 + AC-8 greenfield-kickoff validate + dry-run pass -- [x] AC-9 regression-free (1384+ lib + 372+ integration tests PASS) -- [ ] FR-8 Per-step `timeout_seconds` override (schema landed; executor wiring partial — Wave 5) -- [ ] AC-1, AC-2 real brownfield E2E run on real c4-architecture installed plugin (Wave 5) -- [ ] AC-10 kill -9 mid-step resumability E2E (Wave 5) - -### Documentation + Marketplace (Phase 6) -- [x] `docs/operations/PLAYBOOK-AUTHORING.ru.md` Subprocess lifecycle section (Wave 4) -- [x] `docs/operations/INGEST-MAPPINGS.ru.md` Workflow integration update (Wave 4) -- [x] `marketplace/playbooks/greenfield-kickoff.yaml` canonical (Wave 3) -- [x] CHANGELOG.md v0.27.0 section (Wave 4) -- [x] EVID-091 — Phase 6 closure evidence pack (Wave 4) - -### Follow-up backlog (Phase 6 → Wave 5) -- [ ] Per-step `timeout_seconds` override fully wired through executor -- [ ] Real `SkillDispatcher` registry (replace trace-only stub) -- [ ] Per-step `env:` allow-list with whitelist mapping -- [ ] AC-1/AC-2/AC-10 real brownfield-code E2E + kill -9 resumability -- [ ] /audit Round 1+2 на Phase 6 (security focus subprocess execution surface) -- [ ] Activate PRD-072 / RFC-007 / ADR-010 (post-audit, R_eff ≥ 0.7 with EVID-090 + EVID-091) -- [ ] Tag v0.27.0 + cargo-dist Release workflow -- [ ] PR feat/phase6-real-dispatchers → dev (after audit) - -## Previous: v0.26.0 — PRD-065/066/067 Playbook + Ingest + Plugin detection (Phase 5) - -EPIC-007 Phase 2 — Forgeplan становится оркестратором. ADR-009 implementation-complete: playbook runtime + ingest engine + plugin detection + canonical marketplace mapping/playbook. 4-wave sprint, 9 agents, ~9000 LOC. - -### PRD-065 — Playbook runtime + YAML schema -- [x] FR-1 Rust module `forgeplan-core::playbook::{types,loader,executor,dispatch,journal}` -- [x] FR-2 JSON Schema `docs/schemas/playbook.schema.yaml` -- [x] FR-3 CLI `forgeplan playbook {list|show|run|validate}` -- [x] FR-4 5-variant typed Delegation enum -- [x] FR-5 Step output capture via `produces_at` + `mapping` -- [x] FR-6 Journal `.forgeplan/journal/playbook-runs.jsonl` -- [x] FR-7 Progress reporting (TTY-aware stderr) -- [x] FR-8 Hint contract integration (PRD-071) -- [x] AC-1..AC-6 acceptance criteria covered (Wave 4 E2E) -- [x] Real Plugin/Agent/Skill subprocess dispatchers (closed by Phase 6 / PRD-072 FR-1..FR-5) - -### PRD-066 — Ingest engine + mapping YAML -- [x] FR-1 Rust module `forgeplan-core::ingest::{types,sources,template,engine,idempotency}` -- [x] FR-2 JSON Schema `docs/schemas/mapping.schema.yaml` -- [x] FR-3 CLI `forgeplan ingest --mapping --source --dry-run` -- [x] FR-4 Source-ref format `{path}:{line_start}-{line_end}` -- [x] FR-5 Idempotency via `source_hash` -- [x] FR-6 Canonical `marketplace/mappings/c4-to-forge.yaml` (Wave 4) -- [x] FR-7 `forgeplan doctor --sources` invariant validation -- [x] AC-1..AC-6 acceptance criteria covered (Wave 4 E2E) -- [ ] MCP `forgeplan_ingest` wrapper (deferred — CLI cover via `forgeplan serve`) -- [ ] 4 additional canonical mappings (autoresearch/git/ddd/spec → forge) — follow-up - -### PRD-067 — Plugin detection + self-describing hints -- [x] FR-1 Rust module `forgeplan-core::plugins::{detection,registry,hints}` -- [x] FR-2 Detection scanner paths (`.claude/plugins/cache/`, `.agentskills/`, etc.) -- [x] FR-3 Plugin registry с known plugins -- [x] FR-4 Project signal detector -- [x] FR-5 Playbook recommendation engine (signals × plugins → applicable) -- [x] FR-6 CLI `forgeplan plugins {list|doctor|info}` -- [x] FR-7 Hint extension (ADR-008 pattern + `recommended_playbook`) -- [x] AC-1, AC-2, AC-6 закрыты в Phase 5 -- [x] AC-3 — `forgeplan init` empty repo → `recommended: greenfield-kickoff` (closed by Phase 6 / PRD-072 FR-6) -- [x] AC-4 — `forgeplan init` `.obsidian/` → `recommended: brownfield-docs` (closed by Phase 6) -- [x] AC-5 — `forgeplan init` legacy code >100 commits → `recommended: brownfield-code` (closed by Phase 6) -- [x] AC-7 — backward compat (FORGEPLAN_HINTS=0 / non-TTY) (closed by Phase 6) - -### Documentation + Marketplace -- [x] `docs/operations/PLAYBOOK-AUTHORING.ru.md` (Wave 4 W4B) -- [x] `docs/operations/INGEST-MAPPINGS.ru.md` (Wave 4 W4B) -- [x] `marketplace/mappings/c4-to-forge.yaml` canonical (Wave 4 W4B) -- [x] `marketplace/playbooks/brownfield-code.yaml` canonical (Wave 4 W4B) -- [x] `docs/README.md` + `docs/README.ru.md` index entries (Wave 4 W4B) -- [x] CHANGELOG.md v0.26.0 section -- [x] EVID-089 — Phase 5 evidence pack - -### Follow-up backlog (Phase 5 — partially closed by Phase 6) -- [x] Real subprocess dispatch for `delegate_to: plugin/agent/skill` (closed by PRD-072 FR-1..FR-3 / Phase 6 Wave 1) -- [x] Canonical playbook `greenfield-kickoff.yaml` (closed by PRD-072 FR-7 / Phase 6 Wave 3) -- [ ] MCP `forgeplan_ingest` wrapper (still deferred — CLI cover via `forgeplan serve`) -- [ ] Canonical mappings: autoresearch / git-log / ddd / sparc → forge (still backlog) -- [ ] Canonical playbooks: `brownfield-docs.yaml`, `audit.yaml`, `release.yaml` (3 of 4 still backlog) -- [ ] Parallel step execution (DAG planner) — Non-Goals v1 -- [ ] Tag v0.26.0 + cargo-dist Release workflow (released in branch — pending tag) - -## Previous: v0.25.0 — PRD-071 hint contract (PR #212, 2026-04-27) - -PRD-071 unified 5-rule hint contract shipped. Audit coverage 0% → 100% (70/70 CLI). 36 integration tests + drift-prevention audit script. Awaiting PR #212 review. - -- [x] PRD-071 5-cycle multi-agent sprint complete (9 agents, 90 files) -- [x] EVID-086 linked, PRD-071 + PROB-046 active -- [x] CHANGELOG.md + docs/README + SKILL.md + agent-protocol.md updated -- [ ] PR #212 merged to dev (awaiting review) -- [ ] Tag v0.25.0 after release PR - -### Deferred from PRD-071 (low priority) -- [ ] FR-013: `forgeplan health` add "Hint coverage" metric (audit script sufficient for now) -- [ ] FR-011: separate `forgeplan-mcp/tests/hint_contract.rs` integration test file (covered via unit tests + dogfood) -- [ ] FR-014: RU localization for hints (backlog) - -### Follow-up items -- [ ] PROB-047 (potential): `scan-import` should dedupe by title/content hash — current behavior creates duplicate PRDs from doc files - -## Previous: v0.24.0 released 2026-04-19 — PRD-057 multi-agent dispatcher - -### Next priorities (from ROADMAP) -- [ ] Sprint A: Public Presence — Website (PRD-024) + README + crates.io + Docker -- [ ] Sprint B: CI/CD Integration — validate/health --ci + GH Action -- [ ] Sprint C: Desktop App — EPIC-004 (Tauri + React) -- [ ] Sprint D: Ecosystem — VS Code ext + GitHub Issues bridge - -### Open bugs -- [ ] PROB-026: tag canonicalization (PR #169 pending merge) -- [ ] PROB-027: reindex without lance/ (PR #169 pending merge) -- [ ] PROB-035 remainder: code-fence awareness in extract_field +> **История релизов**: `CHANGELOG.md` — единственный источник правды по тому, что +> уже вышло. Этот файл больше не дублирует релизный лог (дублировал до +> 2026-09-08 и не обновлялся два релиза подряд, пока CHANGELOG.md уходил вперёд). +> **Roadmap**: [`docs/ROADMAP.md`](docs/ROADMAP.md) — gap-анализ по категориям, обновлён 2026-09-08. +> **Текущая версия**: не верь заголовку этого файла — смотри +> `Cargo.toml [workspace.package].version` + `git tag --sort=-v:refname | head`. +> На 2026-09-08 это v0.37.0. + +Этот файл — список приоритетов: что делать дальше, а не что уже сделано. +Раньше он был реверс-хронологическим логом релизов, который обновлялся только +в момент релиза — и в последний раз обновился на v0.34.0, пока репозиторий +ушёл на три релиза вперёд (v0.35/v0.36/v0.37). Теперь это отдельный список, +живущий своей жизнью между релизами. --- -## Previous: v0.17.2 quality hotfix 2026-04-09 — E2E verification sprint - -### v0.17.2 hotfix P0 -- [x] PROB-030 BM25 prefix fallback (smart.rs `max(bm25_norm, kw)`) -- [x] PROB-031 score.rs imports core parser (deleted local duplicate with CL0 default) -- [x] PROB-032 breakdown display (auto-fixed by PROB-030) -- [x] PROB-033 `new evidence` phase-agnostic (no session warning) -- [x] **PROB-034 CRITICAL** multi-line HTML comment state machine in extract_field -- [x] F1 fail-closed on unclosed ` -- Workspace: 0 warnings on both default and `--features semantic-search` -- ~13.8K LOC added across EPIC-003 (Sprints 13.0 → 13.7 + post-closeout hotfix) -- PRs #141-#156 -- E2E: sprint-13.6-regression.sh (16 checks) + sprint-13.7-regression.sh (16 + SEMANTIC_E2E opt-in), 0 failures -- LLM: gemini-3-flash-preview -- Distribution: cargo-dist v0.31.0, 5 targets, brew + install.sh + checksums -- Pipeline: Shape→Validate→ADI→Code→Test→Fmt→Lint→Audit→Fix→Re-audit→Manual UX→Closeout -- **Sprint Checklist Framework (NOTE-044)** landed 2026-04-08 as reusable quality gate -- ADI mandatory for Standard+ depth (CLAUDE.md methodology update) - -### v0.17.0 done — EPIC-003 Search, Discovery, Intelligence ✅ - -- [x] **Sprint 13.0** Security + ADR-007 (2h, no artifact) -- [x] **Sprint 13.1** PRD-043 Methodology Integrity — EVID-058, PR #145 -- [x] **Sprint 13.1.5/.7** Hardening + integrity config wiring — EVID-059 -- [x] **Sprint 13.2** PRD-039 Smart Search v2 (BM25 + filter DSL + graph expansion) — EVID-065 (backfill during final audit) -- [x] **Sprint 13.3** PRD-035 p1 Tags + Source Tier — EVID-060 -- [x] **Sprint 13.4** PRD-035 p2 Discover MCP tools + CLI — EVID-061 -- [x] **Sprint 13.5** PRD-040 Scoring Intelligence (Skills Memory + R_eff CI) — EVID-062, PR #153 -- [x] **Sprint 13.6** PRD-041 FPF Rules CLI + MCP — EVID-063, PR #154 -- [x] **Sprint 13.7** PRD-042 FPF KB Vector Search (supersedes PRD-018) — EVID-064, PR #155 -- [x] **Sprint 13.7 post-closeout hotfix** — 19 debts triaged, 11 fixed, NOTE-044/045 (PR #156) -- [x] **Final release audit** — 4 parallel auditors, version bump, CHANGELOG, bugfix agent -- [x] **PRD-018 superseded** by PRD-042, **EPIC-003 activated** - -### P0: Release v0.17.0 tag -- [x] Cargo.toml version bump 0.16.0 → 0.17.0 (workspace + 3 path deps) -- [x] CHANGELOG.md created with full v0.17.0 entry -- [x] 7 EVIDs activated (058..064) + EVID-065 backfill for Sprint 13.2 -- [x] PRD-039 activated (R_eff=1.00, F-G-R=0.88 A) -- [x] EPIC-003 activated -- [x] Title validation bugfix (fa97f10, tag-prep-bugfix agent) -- [x] Commit tag-prep changes (6a1904f) - -### P1: After release PR merged -- PR release/v0.17.0 → main (merge commit) -- Tag v0.17.0 + push -- Sync main → dev -- Hindsight memory_retain EPIC-003 finale - -### P0: FPF Engine v2 Phase 2 — Sprint 12 (RFC-001) ✅ -- [x] ADI reasoning: H2 Two-tier Rules selected (FPF B.5.2 Abductive Loop) -- [x] ext/rules.rs: Rule engine with expressions, graph-aware, time-aware (~600 LOC) -- [x] Dashboard integration: rule engine replaces explore::suggest, HashMap O(N+R) -- [x] Bounded context in reason output (CLI + MCP) -- [x] Config template with rule examples in forgeplan init -- [x] FpfConfig.rules field (empty = default 5 rules) -- [x] 4 audit agents: code review, bounded context, Rust expert, security -- [x] Audit fixes: NaN rejection, empty condition guard, circular scoring, TOCTOU, O(N+R) -- [x] 38 rule engine tests (unit + scenario + negative + corner), 829 total -- [x] EVID-057 linked, R_eff=1.00, PRs #133 + #135 merged -- [x] KB vector search — deferred to Phase 3+ (keyword works, NOTE-039 DSL idea) - -### P0: FPF Engine v2 Phase 1 — Sprint 11 (RFC-001) ✅ -- [x] EPIC-002 shaped + activated (PR #128) -- [x] RFC-001 shaped: 3 options, ADI confirmed Option C (Layered Core+Ext) -- [x] fpf/core/ module: config.rs, trust.rs, adi.rs, model.rs (34 tests) -- [x] FpfConfig wired into CLI scoring (score, fgr, context, dashboard) -- [x] Config templates in init + current config.yaml (all 6 sections) -- [x] Audit: 3 agents, 3H + 1M fixed, NaN validation, reliability clamp -- [x] EVID-055, R_eff=1.00, RFC-001 activated -- [x] Housekeeping: 12 orphans linked, SPRINTS.md updated -- [x] 1.5: AdiRecord wiring — reason --save creates structured JSON in Note body -- [x] 11.3: CI/CD Linter — health --ci + validate --ci + GH Actions workflow (PR #132) -- [x] PR #131 merged + progress synced - -### P0: Distribution Pipeline — Sprint 10 (PRD-023) ✅ -- [x] PRD-023 shaped + validated (8 FR, 4 journeys, 4 AC, Deep depth) -- [x] ADI reasoning: 3 hypotheses → H1 cargo-dist selected (High confidence) -- [x] cargo-dist v0.31.0 integrated (dist-workspace.toml, release.yml generated) -- [x] 5 targets: macOS arm64/x86, Linux x86/musl, Windows x86 -- [x] Installers: shell (install.sh) + Homebrew (AiDogfood/homebrew-tap) -- [x] Cargo.toml metadata: homepage, keywords, categories for crates.io -- [x] 2-agent audit: 4C + 3H + 3M findings → all fixed -- [x] Action versions @v6/@v7 → @v4 (cargo-dist v0.31.0 bug) -- [x] .gitignore: dist manifest files added -- [x] Embed fix resolved: fastembed v5.13.0 compiles (upstream fixed) -- [x] EVID-050 active, R_eff=0.80, PR #97 merged -- [x] 753 tests, 0 failures, project healthy - -### P0: ADI Quality + LLM + E2E + Cleanup — Sprint 9 (PROB-021) ✅ -- [x] PROB-021: ADI prompt enriched (metadata, relations+titles, architecture hint) -- [x] System prompt: justified confidence, project context awareness -- [x] reason_temperature config field, architecture hint from file -- [x] evidence_needed → CLI "Next steps" UX -- [x] Model benchmark: 4 models × 7 artifacts → gemini-3-flash-preview selected -- [x] E2E Wave 8 (LLM): 10/10 pass (generate, reason, decompose, capture, context) -- [x] Draft cleanup: 34→12 (7 deleted, 15 deprecated) -- [x] cargo fmt entire codebase (122 files) + pre-commit-fmt.sh hook -- [x] Pipeline updated: +Fmt step, ADI mandatory for Standard+ -- [x] 6 new E2E integration tests (cascade delete, lifecycle, deprecated blocking) -- [x] EVID-048 active, R_eff=0.90, PR #96 merged -- [x] 753 tests, 0 failures, project healthy - -### P0: Graph Integrity — Sprint 8 (PROB-020) ✅ -- [x] BUG-1 (P1): blocked/order treated deprecated as blockers → resolved_ids -- [x] BUG-2 (P1): delete cascade relations + phantom PROB-013 cleanup -- [x] BUG-2b: unlink resilient for phantom relations -- [x] 5-agent audit: 2 critical + 5 warnings → all fixed -- [x] 2 new MCP tools: forgeplan_blocked + forgeplan_order -- [x] validate_id_for_filter() whitelist, DRY common::resolved_ids() -- [x] O(n²)→O(n) order.rs, double scan eliminated, TOCTOU fixed -- [x] route "" rejects empty, memory excluded from orphan detection -- [x] 83 E2E commands tested, E2E-TEST-PLAN.md created -- [x] PROB-020 active, EVID-047 linked, R_eff=1.00, PR #95 - -### P0: E2E Bug Fixes — Sprint 2 (PROB-018) -- [x] **BUG-001 (P1 Security):** `scan --path /tmp` path traversal — added project root boundary validation (coverage.rs) -- [x] **BUG-002 (P2):** `unlink` не проверяет существование связи — added existence check (link.rs) -- [x] **BUG-003 (P3):** lifecycle transition message "draft → active" hardcoded — uses old_status (activate.rs) -- [x] 2 new unit tests for delete_relation (store.rs) -- [x] Create Evidence EVID-040 + link to PROB-018 -- [x] Audit (4-agent: logic+security+rust+task) + PR #85 merged - -### P0: Lifecycle v2 — Sprint 3 (ADR-005) ✅ -- [x] ADR-005 shaped + validated (new state machine design) -- [x] Phase 1: stale status + terminal deprecated/superseded (transitions.rs, 15 tests) -- [x] Phase 2: renew() + reopen() core logic (lifecycle/mod.rs, 10 tests) -- [x] Phase 3: CLI commands (renew.rs, reopen.rs) -- [x] PROB-019: self-link guard (store.rs + in_memory.rs, 4 tests) -- [x] 5-agent audit: 8 findings fixed (date validation, reason sanitization, atomicity) -- [x] EVID-041 (PROB-019) + EVID-042 (ADR-005) linked + activated -- [x] ADR-005 activated, R_eff = 0.80 -- [x] PR #85 merged - -### P0: Estimate Engine (PRD-022) ✅ -- [x] PRD-022 shaped + validated (8 FR, 3 journeys) -- [x] RFC-005 architecture (3 phases, 12 tasks) -- [x] ADR-004 hybrid approach (rule-based L0 + LLM L1) -- [x] Phase 1: types, extractor, scorer, calculator, display (35 tests) -- [x] Phase 2: confidence, CLI estimate command (39 tests) -- [x] 2-agent audit: 2 CRITICAL + 4 HIGH fixed (50 tests) -- [x] Config integration: grade_profile, multipliers, --my-grade -- [x] FORGEPLAN-GUIDE: Estimate Engine section -- [x] Evidence EVID-036 linked, PRD-022 + RFC-005 + ADR-004 activated - -### P0: MemoryDriver (RFC-003 Phase 2) ✅ -- [x] remember/recall CLI commands -- [x] ArtifactKind::Memory with mem- prefix -- [x] DRY helpers in common.rs + 3 tests - -### P0: Quality Cycle Sprint (v0.12.0) ✅ -- [x] 17 MUST gaps → 0 (enable --depth update) -- [x] Evidence parser: ignores template placeholders (CL0→CL3) -- [x] LLM scorer (RFC-005 Phase 3): --llm-score flag, PR #79 -- [x] Hints system: 9 commands, 11 tests, shared hints.rs -- [x] Domain inference: frontmatter → keywords → LLM (3-level) -- [x] Manual complexity override: --complexity "FR-001=8" -- [x] Spec/Evidence confidence boost: +15%/+20% -- [x] forgeplan link body reset fix (PR #75) -- [x] dotenvy for .env API keys -- [x] Template FR filtering, keyword TaskType improvements -- [x] 40 commands smoke-tested -- [x] Release v0.12.0 tagged + installed - -### P0: Integrity Issues (PROB-012 dogfood audit) ✅ -- [x] **Semantic search broken** — feature flag propagated CLI→core via Cargo.toml -- [x] **R_eff divergence** — update_r_eff_score() persists to LanceDB, NaN guard -- [x] **health vs journal inconsistency** — expanded blind spots + decision kinds aligned -- [x] **coverage 0%** — Affected Files section added to templates + backfilled 18 active PRD/RFC/ADR -- [x] **route underestimates** — 4 keyword triggers + 2 heuristics added - -Fixed in commit d84bc69 (fix/prob-012-integrity-remediation). 2 audit rounds, 403 tests. +- [ ] **At-risk (R_eff ниже 0.3)**: `PRD-005 "Depth-Aware Validation"` (R_eff=0.00), `RFC-004 "Files-First Architecture"` (R_eff=0.10). Разобраться, почему — `forgeplan score PRD-005` / `forgeplan score RFC-004`. +- [ ] **Сирота без связей**: `PROB-090` — `forgeplan link PROB-090 based_on `. +- [ ] **Рассогласование фазы** (10 артефактов, включая `PRD-082`, `PRD-083`, `PROB-083`) — `forgeplan phase ` для каждого. +- [ ] **EvidencePack без структурных полей** — `EVID-033`, `EVID-034`, `EVID-035` оценены в CL0 (0.1) вместо реального вердикта. Это тот же класс дефекта, что был описан в апреле 2026 под другими ID (EVID-015/025/026/027, backlog "F6") — тогда почтили точечно, класс не закрыли. Стоит не просто дописать три файла, а решить, нужен ли `validate`-гейт, который ловит EvidencePack без `## Structured Fields` до того, как он попадёт в граф. --- -## Known Issues -- [ ] **changelog commit_hash**: LanceDB schema migration — old workspaces lack `commit_hash` column. `forgeplan update` logs warning. Fix: reinit workspace or add column migration. -- [x] **RFC-005 3.2**: estimate MCP tool — grade param wired (Sprint 1 housekeeping). -- [ ] **1 STUB artifact**: unidentified, low priority. -- [ ] **e2e_coverage_backfill test**: pre-existing failure, unrelated to v0.12 changes. -- [x] **Self-link guard** (PROB-019): `link X X` rejected with "Self-link not allowed" (Sprint 3). -- [x] **Runbook outdated** (NOTE-031): deprecated — file doesn't exist in repo, discrepancies noted in TODO. -- [x] **LLM tests**: Wave 8 (10 commands) passed with gemini-3-flash-preview. Wave 10 edge cases still pending. -- [ ] **--semantic feature flag**: `search --semantic` fails at runtime if not compiled with `semantic-search`. +## Backlog по приоритету + +### P1 — дёшево, высокий эффект (Distribution) + +Из `docs/ROADMAP.md`: этот раздел не двигался пять месяцев, при этом самый +дорогой пункт из апрельского списка (публичный сайт) уже закрыт. Стоит +перевернуть порядок. + +- [ ] `cargo publish` — метаданные в Cargo.toml (homepage/keywords/categories) на месте, публикации на crates.io нет (проверено: `GET crates.io/api/v1/crates/forgeplan` → 404). 🔴 `cargo publish` — RED LINE в safety hook, делать вручную и осознанно. +- [ ] Docker-образ — `Dockerfile` в репозитории отсутствует. +- [ ] Опубликовать переиспользуемый GitHub Action (`forgeplan/action@v1`) для внешних репозиториев — сейчас `validate --ci` / `health --ci --fail-on --strict` работают только как внутренние workflow этого репо (`ci.yml`, `forgeplan-health.yml`). + +### P2 — CLI UX polish (старые пункты NOTE-029/030, подтверждены всё ещё открытыми) + +Проверено по `Commands` enum в `crates/forgeplan-cli/src/main.rs` — этих +команд по-прежнему нет: + +- [ ] `forgeplan doctor` — общая диагностика workspace. **Не путать** с существующим `forgeplan plugins doctor` — тот проверяет только plugin detection/hints, не workspace целиком. +- [ ] `forgeplan links ` — визуализация связей одного артефакта. +- [ ] `forgeplan diff ` — сравнение артефактов. +- [ ] Уточнить, соответствует ли существующий `forgeplan watch` пункту «watch v2 hot-reload» из старого backlog, или это разные вещи. + +### P2 — Performance (из ROADMAP, категория 3) + +- [ ] Background embedding при первом запуске — по коду не найдено (`grep background.*embed` в `forgeplan-core/src` — 0 совпадений). +- [ ] Новый пункт (не было в апреле): холодный старт `search --semantic` вырос до ~2.0–2.7s (было ~1.5s), до 8.3s при вытесненных из кеша весах — плата за переход на `tract` (v0.35.0). Оценить, стоит ли кэшировать граф модели между запусками. +- [ ] `forgeplan reindex` (не `embed`) — не проверялось, инкрементальный ли он сейчас; `embed` уже пропускает актуальные записи по content-hash (v0.36.0). + +### P3 — Architecture (низкий приоритет, без изменений с апреля) + +- [ ] Pluggable storage drivers (RFC-003 Phase 3-4: SQLite driver + config-driven selection) — модуля `StorageDriver` в `crates/forgeplan-core/src/db/` не найдено, по-прежнему не вживлено. +- [ ] DSL-скриптинг для кастомных правил (NOTE-039 — Lua/Rhai). +- [ ] Delta-specs (OpenSpec pattern, из PRD-015) — по-прежнему отложено. + +### P3 — Ecosystem (без изменений с апреля) + +- [ ] VS Code / JetBrains расширение. +- [ ] GitHub Issues bridge — артефакт ↔ issue автосинхронизация (сейчас `gh issue list` используется вручную как трекер, автосинка нет). +- [ ] Linear/Jira export adapter. +- [ ] Slack/Teams-уведомления. + +### P3 — Desktop (без изменений с апреля, 5 месяцев без движения) + +- [ ] EPIC-004: Tauri 2.0 + React UI. Приоритет ниже Distribution по эффекту/трудозатратам — если решение остаётся в силе, стоит переспросить, актуален ли ещё спрос на десктоп-клиент. + +### Очень старые пункты — актуальность не подтверждена, требуют ревизии перед взятием в работу + +- [ ] NOTE-027 Ruflo/Gastown Integration — пункт из апреля 2026, не проверялся, может быть неактуален. +- [ ] PROB-022 Brownfield onboarding improvements — вероятно частично закрыт Epic #287 (brownfield surface, v0.32.0), детально не сверялось. +- [ ] PRD-025 Nx Monorepo Migration — не проверялось. --- -## Open Problems - -| ID | Priority | Title | Status | -|----|----------|-------|--------| -| PROB-001 | Done | Data loss → solved by PRD-009 export/import | ✅ | -| PROB-002 | P2 | Auth reuse — separate API key barrier | Open | -| PROB-003 | Done | Dead statuses → solved by PRD-007 lifecycle | ✅ | -| PROB-004 | Done | Agent drift → solved by PRD-010 hooks | ✅ | -| PROB-005 | Done | Cold start → solved by PRD-012 init --scan | ✅ | -| PROB-006 | Deprecated | Routing misses UX scope → fixed v0.11, keywords expanded | ✅ | -| PROB-009 | Deprecated | F-G-R Granularity → future PRD scope | ⚠️ | -| PROB-010 | Deprecated | Markdown projections → fixed by RFC-004 files-first | ✅ | -| PROB-012 | Deprecated | Feature integrity gap → 5 fixes, 2 audit rounds | ✅ | -| PROB-013 | Deleted | R_eff skip non-active → implemented in ADR-002, deleted | ✅ | -| PROB-014 | Deprecated | Smart search gaps → fixed v0.12, real cosine | ✅ | -| PROB-016 | Deprecated | CLI quality → 13 fixes, 6-agent audit | ✅ | -| PROB-018 | Done | E2E Smoke Test Findings — 3 bugs fixed, 4-agent audit, PR #85 | ✅ | -| PROB-019 | Deprecated | Self-link guard added — case-insensitive check, 4 tests | ✅ | -| PROB-020 | Done | Graph integrity — 10 bugs, 5-agent audit, cascade delete, PR #95 | ✅ | -| PROB-021 | Done | ADI quality — enriched prompt, model benchmark, fmt hooks, PR #96 | ✅ | +## GitHub Issues (живой backlog, не дублируется здесь построчно) + +На 2026-09-08 открыто **29** issue (`gh issue list --state open`). Часть — +свежие находки после релиза v0.37.0 (#488, #485, #484, #483, #482, #479, +#475, #474), часть — накопленный technical debt с мая-июня (#454, #411, +#397, #375, #374, #364, #363, #362, #353, #335, #334, #332, #329, #328, +#318, #307, #304, #301, #298, #297, #296, #287). Список меняется каждый +день — смотри `gh issue list --state open` напрямую, а не копию здесь. --- -## Backlog (приоритизированный) - -### P1: Release v0.13.0 (Distribution) -- [ ] Tag v0.13.0 → trigger first automated release via GH Actions -- [ ] Verify brew install + install.sh on clean machine -- [ ] `cargo publish` (manual, safety hook blocks) - -### ~~P1: Embed & Distribution~~ ✅ -- [x] **Embed feature fix** — fastembed v5.13.0 compiles, upstream resolved -- [x] **Distribution** — cargo-dist v0.31.0, PR #97 merged (Sprint 10) - -### P2: Integrity Follow-up (from FPF audit) ✅ -- [x] **Read-back verify** in update_r_eff_score — pre-check with get_record before update -- [x] **DRY decision_kinds** — DECISION_KINDS_EVIDENCE + DECISION_KINDS_JOURNAL in types.rs -- [x] **Coverage batch-update** — `forgeplan coverage --backfill` (18 artifacts updated) -- [x] **PROB-013** — R_eff skip deprecated/draft in recursive chain (ADR-002) -- [x] **Tree visual** — evidence/note show `··` instead of `0.00` -- [x] **METHODOLOGY-COURSE.md** — Chapter 8 added (tree, coverage, hooks, R_eff rules) -- [ ] **PRD-019 Layer 3** — MCP session state machine (backlog, PRD-019 activated) - -### P2: Route & Enforcement (from usability testing) -- [x] **Route gap**: added "new command/feature" keywords (English) -- [x] **Batch score CLI**: `forgeplan score --all` implemented -- [x] **LLM-first route**: 3-level routing (L0 keywords, L1 LLM classify, L2 FPF ADI reasoning) — PRD-020, 444 tests -- [ ] **PRD-019 Layer 3**: MCP session state machine — агент не может пропустить Shape phase -- [x] **Duplicate notes cleanup**: NOTE-004 deprecated (duplicate of NOTE-005) - -### P1: Smart Search (PROB-014, v0.12) -- [x] **F1 (P0)**: Embed title + body snippet — embedding_text() + forgeplan embed command -- [x] **F2 (P0)**: Graph walk shows relation types — neighbors_with_relations() -- [x] **F3 (P1)**: `forgeplan embed` — batch embed all artifacts (persistent in LanceDB) -- [x] **F4 (P1)**: Smart search — text-first + boosters (Algolia-style, not weighted sum). EVID-033. -- [x] **F5 (P1)**: `forgeplan gaps` — 18 MUST gaps found on real data! Audit: 4 fixes. -- [ ] **F6 (P2)**: Fix evidence blind spots (EVID-015, EVID-025, EVID-026, EVID-027) -- [x] `forgeplan search --semantic` — vector-only search -- [x] `forgeplan search` — smart by default (keyword + semantic + R_eff + status + graph boosters) -- [x] `forgeplan search --keyword` — forced keyword grep -- [x] Configurable embedding model via config.yaml (BGE-M3 default) -- [x] Configurable chunk_size via config.yaml (default 2000) -- [ ] **Future**: Reciprocal Rank Fusion (RRF) for production-grade hybrid search - -### P0: CLI Quality Remediation (PROB-016, 3-agent deep audit) ✅ -**Wave 1 — BROKEN** (6-agent team sprint, PR #65): -- [x] **B1**: `deprecate --reason` stores reason in body (## Deprecation section) -- [x] **B2**: `update --status active` blocked — must use `forgeplan activate` -- [x] **B3**: 4 LLM commands — pre-flight API key check via `require_llm_config()` -- [x] **B4**: `review` checks evidence+stub gates (same as activate) - -**Wave 2 — SAFETY**: -- [x] **N1**: `delete` checks dependents, warns + requires --yes -- [x] **N7**: `supports` added to VALID_RELATIONS -- [x] **N8**: `init --force` warns about data loss -- [x] **N9**: `unlink` updates projection - -**Wave 3 — CORRECTNESS**: -- [x] **N2**: `new` depth=tactical for note/evidence/problem/solution/refresh -- [x] **N3**: `supersede` warns if replacement already superseded/deprecated -- [x] **N4**: `score --all --json` clean JSON output -- [x] **N5**: `update --depth` bails with error -- [x] **N6**: `order/blocked` structural relations only (informs doesn't block) - -EVID-034. 532 tests. **Deferred**: fgr/blindspots redundancy, graph filtering, drift adoption, export embeddings - -### P1: Driver Abstraction — RFC-003 -- [x] **Phase 1**: StorageDriver trait + LanceDriver + InMemoryStore + factory — PR #61 merged -- [x] **Phase 1 audit**: 3 agents, 13 findings, 7 fixed (C1-C3, H1, H3, M1, M2) -- [ ] **Phase 1 deferred** (PROB-015): H2 EmbedDriver, H4 ISP split, M3-M5, test gaps -- [x] **Phase 2**: MemoryDriver (remember/recall) — PR #72 merged -- [ ] **Phase 3**: SQLite driver + feature flags -- [ ] **Phase 4**: Config-driven selection + forgeplan init shows drivers - -### P2: Architecture — Files as Source of Truth (ADR-003, RFC-004) ✅ -- [x] Invert direction: .md files = truth, LanceDB = index (RFC-004 Phase 1, PR #67) -- [x] File watcher (notify crate) for auto-reindex (RFC-004 Phase 2, PR #69) -- [x] `forgeplan reindex` — one-time full re-sync from .md files (PR #71) -- [x] R_eff computed on-the-fly from evidence files (not stored) -- [x] Links in frontmatter `related:` field (RFC-004 Phase 1) -- [x] Change log tracking (RFC-004 Phase 3, PR #69) -- [x] Git-sync integration (RFC-004 Phase 4, PRs #80-#81) - -### P2: Polish -- [x] Binary size optimization — release profile 163MB→41MB (-75%) -- [ ] fpf.rs миграция на common::store() (6 functions) -- [ ] coverage.rs, scan_import.rs миграция на common::open_store() - -### P2: CLI UX Polish (NOTE-029, from E2E findings) -- [ ] `forgeplan links PRD-001` — show all relations for an artifact (1 day) -- [ ] `forgeplan validate --ci` — exit 1 on MUST errors for CI/CD (1 day) -- [ ] `forgeplan doctor` — check workspace, LLM key, feature flags (2 days) -- [ ] Document `capture` as LLM-dependent in --help -- [ ] Error consistency: choose idempotent vs strict philosophy -- [ ] Document case-sensitive IDs - -### P2: Agent Memory Engine (NOTE-025, Direction A — HIGH R_eff) -- [ ] Test `forgeplan serve` as MCP server in Claude Code -- [ ] Claude Code plugin: /fp-validate, /fp-context, /fp-score skills -- [ ] `capture` offline mode (create Note/ADR without LLM) -- [ ] `forgeplan watch --emit-events` — JSON event stream for agents - -### P2: CI/CD Architecture Linter (NOTE-026, Direction B) -- [ ] `forgeplan health --fail-on` — configurable thresholds -- [ ] GitHub Action: `uses: forgeplan/action@v1` - -### P3: Ruflo/Gastown Integration (NOTE-027) -- [ ] MCP config example for Ruflo (.agents/config.toml) -- [ ] Architecture-guardian custom agent YAML -- [ ] Gastown directive template - -### P3: Task Tracker Bridges (NOTE-028) -- [ ] Bidirectional sync with task trackers (Linear, Jira, Orchestra) -- [ ] Export to GitHub Issues / Linear tasks -- [ ] Webhook on activate/supersede events - -### Phase 5: Desktop App -- [ ] Tauri 2.0 + React frontend (shared Rust core) +## Known Issues + +- [ ] **1 STUB artifact** — `forgeplan health` показывал 2 STUB на момент этого измерения (было "1 STUB, unidentified" в старой версии файла); не идентифицирован, низкий приоритет. +- [x] ~~**changelog commit_hash**: LanceDB schema migration для старых workspace~~ — похоже устарело: миграция v2→v3 (`crates/forgeplan-core/src/db/migrate.rs`) уже добавляет колонку `commit_hash`. Не переоткрывать без нового репродьюсера на свежем клоне. +- [ ] **`--semantic` feature flag**: `search --semantic` требует сборки с фичей `semantic-search` — не проверялось, актуально ли это ограничение после перехода на `tract` (v0.35.0, который встроен во все 5 релизных бинарей по умолчанию). --- -## Done ✅ - -- [x] **v0.10.1** — Hotfix: bidirectional R_eff evidence lookup -- [x] **v0.10.0** — scan-import, --json x14, CLI UX, audit fixes, security hardening -- [x] **v0.9.0** — PRD-016..021: R_eff recursive, BMAD v2, OpenSpec DAG, FPF KB, codebase awareness, decision contracts -- [x] **v0.8.0** — CLI UX: cliclack init, styled output, setup-skill -- [x] **v0.7.0** — EPIC-001 complete, FPF engine, lifecycle, /forge skill -- [x] **v0.6.0** — Methodology Engine: routing, lifecycle, F-G-R -- [x] **v0.5.0** — Health, Journal, Validation v2 -- [x] **Phase 4** — MCP Server + AI Features + CRUD -- [x] **Phase 3** — Core CLI + LanceDB Primary -- [x] **Phase 1** — Schemas, Templates & Docs -- [x] **Phase 0** — Foundation & Research - -### v0.10.x detailed -- [x] PRD-012: Project Onboarding — init --scan, scan-import, 3-tier detection -- [x] PRD-008: CLI UX — 8 ui helpers, --json for 14 commands, common::store() (-128 LOC) -- [x] 4-agent Rust audit: UTF-8 safety, symlink protection, file size limits, import validation -- [x] R_eff bidirectional evidence fix (get_incoming_relations) -- [x] All blind spots (3), orphans (8), at risk (11) → resolved -- [x] 14 draft evidence → activated +## Как проверить актуальность этого файла в следующий раз + +Не верь ни одному числу здесь без проверки. Способ измерения: + +```bash +# версия +grep -A2 '^\[workspace.package\]' Cargo.toml +git tag --sort=-v:refname | head -5 + +# артефакты + health signals + health + +# тесты/команды/MCP-tools — счётчик на главной странице README.md +grep -A5 'tracked artifacts' README.md + +# живой backlog +gh issue list --state open --limit 100 +``` + +Использовать **опубликованный** бинарь нужной версии, не тот, что на PATH — +он может отставать (см. `feedback_verify_version_state_not_todo` в памяти +агента: TODO.md исторически лагает релизам, доверять нужно +Cargo.toml + git tags, не старым записям в этом файле). diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index e9a17cab..62751264 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,158 +1,168 @@ # Forgeplan Roadmap — Gap Analysis & Priorities -> Generated 2026-04-11 after v0.18.0 release. Based on /fpf DECOMPOSE -> analysis of 193 artifacts, 3 completed EPICs, and 16 draft IDEAS. +> Обновлено 2026-09-08 после релиза v0.37.0. Предыдущая версия этого файла +> была датирована 2026-04-11 (после v0.18.0) — почти пять месяцев и ~19 minor +> релизов назад, а её базовые цифры (193 артефакта, 76 CLI-команд, 1940 +> тестов) на момент этого обновления разошлись с реальностью в 2 раза. +> Каждое число ниже — с указанием, откуда оно взято, а не переписано из +> предыдущей версии файла. -## Current State +## Текущее состояние (измерено 2026-09-08) -- **v0.18.0** released (Production BM25 + Russian morphology + quality gates) -- **193 artifacts**, 112 active, health: "Project looks healthy!" -- **1940 tests**, 76 CLI commands, 73 MCP tools -- **3 EPICs complete**: EPIC-001 (foundation), EPIC-002 (v2.0 vision), EPIC-003 (search+intelligence) +| Показатель | Значение | Источник измерения | +|---|---|---| +| Версия | v0.37.0 | `Cargo.toml [workspace.package].version` + `git tag --sort=-v:refname \| head` (последние теги: v0.37.0, v0.36.0, v0.35.0, v0.34.0) | +| Артефактов всего | 437 | `forgeplan health` (бинарь v0.37.0) | +| Активных | 263 | `forgeplan health` — по статусам: active 263, draft 101, deprecated 68, superseded 5 | +| Тестов | 3331 | Замерено прогоном по трём крейтам 2026-09-08 (core 2243 + cli 814 + mcp 274); `README.md` и CHANGELOG v0.37.0 обновлены из этого же замера, поэтому не являются независимым подтверждением | +| CLI-команд | 82 | `README.md`; полный список — `Commands` enum в `crates/forgeplan-cli/src/main.rs` | +| MCP-инструментов | 73 | `README.md`; число не менялось с v0.18.0 — единственная цифра из старой версии этого файла, которая совпала | +| EPIC завершено | 3 (EPIC-001/002/003) + brownfield Epic #287 в работе | `forgeplan health` по kind=epic (9 всего, часть активна, часть — черновики новых направлений) | + +**На что стоит обратить внимание прямо сейчас** (из `forgeplan health` на момент этого измерения): +- 2 артефакта at-risk: `PRD-005` и `RFC-004` — R_eff = 0.00/0.10, ниже порога 0.3. +- 1 сирота без связей: `PROB-090`. +- 10 артефактов с рассогласованием фазы (`phase mismatch`) — включая `PRD-082`, `PRD-083`, `PROB-083`. +- 3 EvidencePack без структурных полей (`EVID-033`, `EVID-034`, `EVID-035`) — оценены в CL0 (0.1) автоматически. Это тот же класс дефекта, что в апреле 2026 был описан как «F6: Fix evidence blind spots (EVID-015/025/026/027)» — тогда закрыли конкретные ID, но не класс: спустя пять месяцев проблема воспроизвелась на новых ID. Стоит завести правило-проверку (`validate` или CI-гейт), а не чинить точечно в третий раз. + +Это не праздные наблюдения ради полноты — это самые дешёвые следующие шаги, дешевле любого пункта из списка ниже. --- -## Categories +## Категории -### 1. Architecture (Core Engine) — 85% +### 1. Архитектура (Core Engine) — предположительно ~85%, детально не пересчитывалось -| Done | Gap | +| Готово | Разрыв | |---|---| -| LanceDB embedded (ADR-003 files-first) | Code-fence awareness in extract_field (PROB-035 remainder) | -| 10 artifact types + lifecycle state machine | DSL scripting for custom rules (NOTE-039 — Lua/Rhai) | -| R_eff weakest-link + CL penalty + fail-closed | Pluggable storage drivers (RFC-003 planned, not wired) | -| FPF engine v2 (rule engine + bounded contexts) | Delta-specs (OpenSpec pattern, deferred from PRD-015) | +| LanceDB embedded (ADR-003, files-first) | Code-fence awareness в extract_field (PROB-035 remainder) — **не перепроверено**, возможно уже закрыто позже | +| 10 типов артефактов + state machine | DSL-скриптинг для кастомных правил (NOTE-039 — Lua/Rhai) — по коду не найдено, разрыв реальный | +| R_eff weakest-link + CL penalty + fail-closed, ADR-020 (терминальные паки исключены из min) | Pluggable storage drivers (RFC-003) — модуля `StorageDriver` в `crates/forgeplan-core/src/db/` не найдено, по-прежнему не вживлено | +| FPF engine v2 (rule engine + bounded contexts) | Delta-specs (OpenSpec pattern) — по-прежнему отложено | | Graph (petgraph, topological sort, blocked/order) | | -| Production BM25 + Russian stemming (v0.18.0) | | -| Semantic search BGE-M3 (feature-gated) | | -| Trust calculus hardening (F1/F2 fail-closed, v0.17.2) | | +| Production BM25 + русская морфология | | +| **Semantic search на `tract` (чистый Rust) — теперь во ВСЕХ 5 релизных бинарях** (v0.35.0, RFC-013). До этого релиза функция не попадала ни в один опубликованный бинарь вообще — старая версия файла ошибочно писала «feature-gated» как готовое | | +| Git-delta provenance gate для code-claiming Evidence (PRD-082, v0.34.0) | | -**Assessment:** Core is solid. Remaining gaps are extensibility and hardening. +**Оценка:** ядро по-прежнему крепкое, самое заметное движение с апреля — semantic search реально доехал до пользователя, а не только до исходников. -### 2. UX / Usability — 70% +### 2. UX / Usability — было 70%, часть закрыта, часть — нет -| Done | Gap | +| Готово | Разрыв | |---|---| -| 56 CLI commands with clap derive | **Desktop App** (Tauri + React) — Phase 5, not started | -| `--json` output on most commands | `forgeplan doctor` — workspace diagnostics (NOTE-029) | -| Styled terminal (colors, progress bars, unicode) | `forgeplan links` — visual relationship graph (NOTE-029) | -| `health` + `tree` + `blocked` dashboards | `forgeplan diff` — artifact comparison (NOTE-030) | -| Error hints with suggested next commands | `forgeplan watch` v2 — hot-reload (NOTE-030) | -| Duplicate guard + stub detection (PRD-043) | VS Code extension (NOTE-030) | -| 73 MCP tools for AI agents | **Website** — landing + docs portal (PRD-024) | +| 82 CLI-команды (было 56) | **Desktop App** (Tauri + React) — по-прежнему 0%, следов работы в репозитории нет | +| Стилизованный терминал, `health`/`tree`/`blocked`/`order` дашборды | `forgeplan doctor` — верхнеуровневой команды по-прежнему нет; есть только `forgeplan plugins doctor` (диагностика detection/hints, не workspace в целом) — **другая функция под похожим именем**, легко перепутать | +| Duplicate guard + stub detection (PRD-043) | `forgeplan links ` — визуализация связей артефакта — команды нет (проверено по `main.rs`) | +| 73 MCP tools для AI-агентов | `forgeplan diff` — сравнение артефактов — команды нет | +| `forgeplan watch` существует (проверено в CLI enum) — но не проверялось, соответствует ли он «v2 hot-reload» из старого пункта | VS Code расширение — не найдено | +| **Website — landing + docs + blog, RU/EN** (385 markdown-файлов в `website/src/content/`) — это была помечена как «HIGH-impact, не начато» в апрельской версии; на деле это самый большой закрытый разрыв за пять месяцев | | +| `health --ci --fail-on --strict` — конфигурируемые пороги для CI (см. категорию Integrations) | | -**Assessment:** CLI is mature, MCP is excellent. No GUI. Website and Desktop are the main gaps for user adoption. +**Оценка:** CLI и MCP по-прежнему сильная сторона. Публичный сайт закрыл главный UX/маркетинговый разрыв. Desktop и точечные CLI-утилиты (doctor/links/diff) остаются нетронутыми — это тот же список, что и пять месяцев назад. -### 3. Performance — 80% +### 3. Производительность — было 80%, смешанная картина -| Done | Gap | +| Готово | Разрыв | |---|---| -| O(N) batch BM25 search (v0.18.0) | Lazy loading for large workspaces (1000+ artifacts) | -| 43 MB binary (strip+lto+codegen-units optimized) | Incremental reindex (currently full scan) | -| 0.23s search on 193 artifacts | Background embedding (BGE-M3 blocks ~60s on first run) | -| LanceDB columnar + Arrow (fast reads) | | +| O(N) batch BM25 | Background embedding на первом запуске — не найдено в исходниках (`grep` по `background.*embed` в `forgeplan-core/src` — 0 совпадений), разрыв реальный | +| LanceDB columnar + Arrow | Lazy loading для крупных workspace (1000+ артефактов) — не тестировалось на таком масштабе, сейчас 437 артефактов; **unverified**, не «готово» и не «разрыв» — просто не измерено | +| `forgeplan embed` теперь пропускает уже проиндексированные записи по content-hash (v0.36.0, часть исправления PROB-093) — это закрывает половину старого пункта «Incremental reindex» | **Новый пункт, не было в апреле**: холодный старт `search --semantic` вырос до ~2.0–2.7s (было ~1.5s), в одном из трёх прогонов с вытесненными из кеша весами — до 8.3s. Плата за переход на `tract` (v0.35.0, CHANGELOG). Полноценный `forgeplan reindex` (не `embed`) по-прежнему делает полное пересканирование — не проверялось, чинили ли инкрементальность и для него | +| Бинарь 56.5 MB (было заявлено 43 MB в апреле) — рост объясним: движок эмбеддингов `tract` теперь встроен во все бинари вместо внешнего ONNX-рантайма | | -**Assessment:** Fast for current scale (100-500 artifacts). Gaps matter only for scale-up to enterprise. +**Оценка:** не ухудшение, а честная цена за то, что semantic search наконец доехал до пользователя — это ожидаемый trade-off, а не регресс без причины. -### 4. Distribution — 65% +### 4. Дистрибуция — было 65%, почти без изменений -| Done | Gap | +| Готово | Разрыв | |---|---| -| `brew install forgeplan` (Homebrew tap) | **crates.io** (`cargo install forgeplan`) | -| cargo-dist (macOS arm/x86, Linux, Windows) | **npm/npx wrapper** (JS ecosystem) | -| GitHub Releases with prebuilt binaries | **Docker image** | -| install.sh script | **Linux native** (apt, snap, flatpak) | -| CI pipeline (fmt + clippy + tests + health gate) | **Auto-update** notification mechanism | +| `brew install forgeplan` | **crates.io** — проверено напрямую: `GET https://crates.io/api/v1/crates/forgeplan` → 404. Пакет не опубликован | +| cargo-dist (macOS arm/x86, Linux, Windows) | **npm/npx-обёртка** — не найдено ни файлов, ни упоминаний в README/docs | +| GitHub Releases с готовыми бинарями | **Docker-образ** — `Dockerfile` в корне репозитория отсутствует | +| `install.sh` | **Linux native** (apt/snap/flatpak) — не найдено | +| CI-пайплайн (fmt + clippy + test + health gate) | **Auto-update** — не найдено | +| `forgeplan setup` (v0.35.0) — модель эмбеддингов + `fpl`-алиас, идемпотентно | | -**Assessment:** macOS excellent. Linux/Windows via GH releases but not via native package managers. +**Оценка:** этот раздел не двигался пять месяцев. Самый маленький по трудозатратам и самый недооценённый разрыв — `cargo install forgeplan` и Docker-образ оба небольшие по объёму работы относительно эффекта на охват аудитории. -### 5. Documentation — 60% +### 5. Документация — было 60%, главный пункт закрыт -| Done | Gap | +| Готово | Разрыв | |---|---| -| CLAUDE.md (full AI agent guide) | **Public website** (landing + docs portal) | -| docs/methodology/ (10 files) | **Public README.md** (current one is internal-focused) | -| FORGEPLAN-GUIDE.md (full CLI + methodology ref) | **MCP tools API reference** | -| CHANGELOG (v0.17.0 → v0.18.0) | **Video/tutorial** walkthrough | -| FPF KB (204 sections, searchable) | **man pages** | -| 8-point verification checklist (v0.18.0) | | +| CLAUDE.md (полный гайд для AI-агента) | **MCP tools API reference** — отдельного документа не искал целенаправленно, статус **unverified** | +| `docs/methodology/` | Видео/tutorial walkthrough — не найдено | +| **Публичный сайт (landing + docs + blog, RU/EN)** — был флагманским пунктом «HIGH impact» в апреле, теперь реализован: `website/src/content/docs/` (RU+EN) и `website/src/content/blog/` (RU+EN), 385 файлов суммарно | man pages — не найдено | +| README.md — судя по фрагменту с таблицей метрик (437 артефактов / 3331 тестов / 82 команды / 73 MCP), файл уже user-facing, не «internal-focused», как было написано в апреле — **эта строка апрельской версии была неверной уже тогда или устарела первой** | | +| CHANGELOG (актуален по v0.37.0) | | +| FPF KB (204+ секций, ищется через `fpf search`) | | -**Assessment:** Internal docs are excellent. Public-facing documentation is the biggest gap for adoption. +**Оценка:** самый большой разрыв из пяти категорий закрыт. Оставшиеся пункты (API reference, видео, man pages) — низкий приоритет, разово оценивались ниже остальных ещё в апреле. -### 6. Integrations — 55% +### 6. Интеграции — было 55%, CI/CD-часть закрыта -| Done | Gap | +| Готово | Разрыв | |---|---| -| MCP server (73 tools, stdio transport) | **Linear/Jira sync** (NOTE-028) | -| LLM integration (Gemini, configurable provider) | **GitHub Issues bridge** | -| git-sync (frontmatter to LanceDB) | **Slack/Teams notifications** | -| Claude Code hooks (safety, forge-mode) | **CI/CD pipeline gates** (NOTE-026) | -| Orchestra integration (task management) | **VS Code / JetBrains extension** | +| MCP-сервер (73 tools, stdio) | **Linear/Jira sync** (NOTE-028) — не найдено | +| LLM-интеграция (настраиваемый провайдер) | **GitHub Issues bridge** (артефакт ↔ issue, автоматический) — не найдено; вручную роль трекера сейчас играет `gh issue list` (29 открытых issue на момент измерения), но это не автосинхронизация | +| git-sync теперь **задокументирован и автоматизирован** — хуки `post-merge`/`post-checkout` через `forgeplan setup` (v0.36.0); в апреле это тоже числилось «готово», но задним числом выяснилось, что реально нигде не документировалось (PROB-097) | **Slack/Teams-уведомления** — не найдено | +| Claude Code hooks (safety, forge-mode) | Переиспользуемый публичный **GitHub Action** (`forgeplan/action@v1`) — не найдено; есть только внутренние workflow этого репозитория (`ci.yml`, `forgeplan-health.yml`, `security.yml`, `perf.yml`, `release.yml`, `assign-id.yml`) | +| Orchestra integration | VS Code / JetBrains расширение — не найдено | +| **CI/CD pipeline gates — реализовано.** `validate --ci` и `health --ci --fail-on --strict` существуют и используются в этом репозитории (проверено флагами в `main.rs`). Апрельская версия файла числила это как HIGH-impact разрыв — на деле было реализовано ещё в Sprint 11 (2026-04), до самой предыдущей версии этого документа | | -**Assessment:** MCP-first approach is strong. Ecosystem integrations are the gap. +**Оценка:** MCP-подход по-прежнему сильный. CI/CD-гейты внутри репозитория работают — просто это не было замечено при последней ревизии файла. Внешние трекеры и уведомления остаются нетронутым разрывом. --- -## Priority Matrix +## Priority Matrix (обновлено) -| Category | Maturity | Biggest Gap | User Impact | Effort | +| Категория | Состояние | Главный разрыв | Влияние на пользователя | Трудозатраты | |---|---|---|---|---| -| Architecture | 85% | Code-fence, DSL | Low | Small | -| **UX** | **70%** | **Desktop + Website** | **HIGH** | Large | -| Performance | 80% | Incremental reindex | Medium | Medium | -| **Distribution** | **65%** | **crates.io + Docker** | **HIGH** | Small | -| **Documentation** | **60%** | **Public website + README** | **HIGH** | Medium | -| **Integrations** | **55%** | **CI/CD gates + trackers** | **MEDIUM** | Medium | +| Архитектура | стабильно | Pluggable storage drivers, DSL | Низкое | Среднее | +| UX | сайт закрыт, CLI-утилиты и Desktop — нет | `doctor`/`links`/`diff`, Desktop App | Среднее (сайт снял давление) | Desktop — большое, утилиты — малое | +| Производительность | стабильно, новый холодный старт | Background embedding, cold-start `tract` | Низкое-среднее | Среднее | +| **Дистрибуция** | **без изменений 5 месяцев** | **crates.io + Docker** | **Высокое, дёшево** | **Малое** | +| Документация | главный разрыв закрыт | API reference, видео | Низкое | Малое | +| Интеграции | CI/CD закрыт | Linear/Jira, публичный GH Action | Среднее | Среднее | ---- +**Главный вывод этой ревизии:** самый дешёвый разрыв (Distribution: `cargo install forgeplan` + Docker) не двигался с апреля, при этом Website — самый дорогой разрыв из апрельского списка — уже закрыт. Стоит поменять порядок: Distribution вперёд Desktop. -## Recommended Next Sprints +--- -### Sprint A: Public Presence (3-5 days) -> Close the "people can't find us" gap. +## Рекомендуемые следующие спринты (пересмотрено) -- [ ] Website landing page (PRD-024, Astro + Starlight) -- [ ] Public README.md rewrite (user-facing, not internal) -- [ ] crates.io publish (`cargo install forgeplan`) -- [ ] Docker image (Dockerfile + GH Actions publish) +### Sprint A′: Distribution добивка (1-3 дня, было частью Sprint A) +> Website и public README уже сделаны. Осталось дешёвое и высоковидимое. -### Sprint B: CI/CD Integration (1-2 days) -> Make Forgeplan part of the dev workflow, not a separate tool. +- [ ] `cargo publish` — Cargo.toml метаданные (homepage/keywords/categories) уже на месте по TODO-истории, публикация не выполнена. Красная линия репозитория требует ручного шага (`RED LINE`: safety hook блокирует `cargo publish`) — делать осознанно, с человеком у клавиатуры +- [ ] Docker-образ (Dockerfile + публикация через GH Actions) +- [ ] Проверить, не устарели ли инструкции install.sh/brew относительно v0.37.0 бинарей (56.5 MB) -- [ ] `forgeplan validate --ci` exit code for pipeline gates -- [ ] `forgeplan health --ci` with structured JSON output -- [ ] GitHub Action reusable workflow (`forgeplan/action`) -- [ ] CI/CD setup guide in docs +### Sprint B: CI/CD — уже сделано, закрыть формально +> `validate --ci`, `health --ci --fail-on --strict` реализованы. Осталось единственное: -### Sprint C: Desktop App (2-4 weeks) -> For users who don't live in the terminal. +- [ ] Опубликовать переиспользуемый `forgeplan/action@v1` для внешних репозиториев (сейчас гейты работают только внутри этого репо) -- [ ] EPIC-004: Tauri 2.0 + React UI -- [ ] Shared Rust core (forgeplan-core) -- [ ] Dashboard view (health, tree, search) -- [ ] Artifact editor with live validation +### Sprint C: Desktop App (оценка не менялась: 2-4 недели) +> Не начато, как и в апреле. Приоритет ниже Distribution по эффекту/трудозатратам. -### Sprint D: Ecosystem (1-2 weeks) -> Connect Forgeplan to existing tools. +- [ ] EPIC-004: Tauri 2.0 + React UI (если решение остаётся в силе — почти 5 месяцев без движения стоит переспросить, актуален ли спрос) -- [ ] VS Code extension (tree view + search + score) -- [ ] GitHub Issues bridge (artifact ↔ issue sync) +### Sprint D: Ecosystem (без изменений) +- [ ] VS Code extension +- [ ] GitHub Issues bridge (артефакт ↔ issue) - [ ] Linear/Jira export adapter -- [ ] Slack notification hooks --- -## Backlog (IDEAS — no commitment) +## Backlog (IDEAS — без обязательств, не пересчитывался детально) -| ID | Idea | Category | -|---|---|---| -| NOTE-025 | Agent Memory Engine | Integrations | -| NOTE-026 | CI/CD Architecture Linter | Integrations | -| NOTE-027 | Ruflo/Gastown Integration | Integrations | -| NOTE-028 | Task Tracker Bridges | Integrations | -| NOTE-029 | CLI UX Polish (doctor, links) | UX | -| NOTE-030 | Tier 2-3 features (diff, watch, dashboard) | UX | -| NOTE-039 | DSL scripting (Lua/Rhai) | Architecture | -| NOTE-042 | TECH DEBT: update --body file-first | Architecture | -| PROB-022 | Brownfield onboarding improvements | UX | -| PRD-025 | Nx Monorepo Migration | Architecture | +| ID | Идея | Категория | Статус на 2026-09-08 | +|---|---|---|---| +| NOTE-025 | Agent Memory Engine | Integrations | не проверено повторно | +| NOTE-027 | Ruflo/Gastown Integration | Integrations | очень старый пункт (апрель), актуальность не подтверждена | +| NOTE-028 | Task Tracker Bridges | Integrations | всё ещё открыт (см. категорию 6) | +| NOTE-029/030 | CLI UX Polish (doctor, links, diff, watch v2) | UX | всё ещё открыт, подтверждено выше | +| NOTE-039 | DSL scripting (Lua/Rhai) | Architecture | всё ещё открыт | +| PROB-022 | Brownfield onboarding improvements | UX | вероятно частично закрыт Epic #287 (brownfield surface, v0.32) — не проверялось детально | +| PRD-025 | Nx Monorepo Migration | Architecture | не проверялось | + +Живой источник для более мелких находок — `gh issue list --state open` (29 штук на момент этого измерения) и `forgeplan health` — оба меняются каждый день, в отличие от этого файла.