Commit Graph

462 Commits

Author SHA1 Message Date
Дмитрий f7f37fb4e4 docs(brain): observer factor-analysis extension — normative sync
ADR-011 amended: +Decision §5 (observer v2 four-layer), §3 4→5
controllers (+C5), Enforcement +routing-gate + C5 bullets, related
+factor-analysis spec/plan.

Pravila v1.31→v1.32: §16.2 +абзац «Схема эпизода v2», §16.3 4→5
контролёров (+C5 row), +§16.7 routing-тег-дисциплина (mechanical
Stop-hook decision:block, stop_hook_active loop guard), +§16.8
самодисциплина наблюдателя (observer_error marker, parse_gap event,
C5 lefthook warn-only), §16.6 +cross-refs на factor-analysis spec/plan.

PSR_v1 v3.16→v3.17: R16.1 +предложение про schema v2 поля и
расширенные события; R16.4 +cross-refs.

Tooling Прил. Н v2.17: §0 cross-ref strings 1.31/3.16 → 1.32/3.17
(no header version bump).

brain-governance spec: related +factor-analysis spec.
observer-factor-analysis-design.md: status draft→accepted.

CLAUDE.md v2.19: §0 Pravila/PSR_v1 cross-refs bumped to v1.32/v3.17
with v2 summary prepended (legacy preserved as «v1.31 наследие» /
«v3.16 наследие»); §3.6 appended observer schema v2 + routing-gate +
C5 + brain-retro analyzer paragraph; §9 +v2.19 entry.

cross-ref-checker: 0 drift in 4 files.

Plan: docs/superpowers/plans/2026-05-19-observer-factor-analysis.md
Spec: docs/superpowers/specs/2026-05-19-observer-factor-analysis-design.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 11:08:55 +03:00
Дмитрий d484e60c46 docs(observer): brain-retro skill + README for schema v2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 10:55:37 +03:00
Дмитрий a6f44e5bb4 feat(observer): brain-retro analyzer — outcome inference + factor matrix
Pure deterministic Layer-4 aggregation module (spec §6) for the /brain-retro
skill. Exports: dedupeEpisodes, inferOutcome, groupEpisodesToTasks,
findCausalChains, buildFactorMatrix, analyze. Read-only — never writes JSONL.
11/11 tests green. CLI smoke: 10 real episodes → valid JSON with all 5 keys.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 10:47:57 +03:00
Дмитрий 363357bff4 chore(observer): wire C5 coverage-checker into lefthook (job 15) 2026-05-19 10:44:10 +03:00
Дмитрий 843123bbdb docs(supplier): plan — project channel failover (12 tasks, TDD)
Реализация по спеку 2026-05-19-supplier-project-channel-failover-design.md.

12 атомарных задач:
T1 live discovery + Tier 1 contract verification
T2 SupplierProjectChannel interface + AjaxProjectChannel
T3 supplier_manual_sync_queue table (migration + schema.sql + CHANGELOG)
T4 FailoverProjectChannel skeleton + Window/TierEscalated exceptions
T5 portal-side idempotency dedup
T6 manage-project.js Node script
T7 FormProjectChannel + DI wiring
T8 wire jobs to FailoverProjectChannel
T9 schedule retiming 20:30→18:00, 20:15→17:45
T10 admin worklist endpoints
T11 admin worklist UI
T12 live smoke + final regression

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 10:43:05 +03:00
Дмитрий cde9478899 feat(observer): STATUS.md — C5 row + observer_error metric 2026-05-19 10:41:17 +03:00
Дмитрий d080198220 feat(observer): coverage + registration-integrity controller (C5)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 10:38:25 +03:00
Дмитрий 35231d8b96 feat(observer): Stop-hook routing-gate enforcement 2026-05-19 10:34:57 +03:00
Дмитрий 2e11c452a9 feat(observer): Stop-hook v2 episode + observer_error marker 2026-05-19 10:31:37 +03:00
Дмитрий 02bff371c1 feat(observer): routing-gate method-direction detector 2026-05-19 10:27:23 +03:00
Дмитрий 375c3e2d1f feat(observer): parser v2 — process events, routing-tag, episode assembly 2026-05-19 10:23:08 +03:00
Дмитрий 57d6495271 docs(supplier): spec — project migration channel failover (3-tier resilience)
Резерв канала миграции проектов Лидерра → crm.bp-gr.ru:
AJAX rt-project-* → авто-браузер «Мои проекты» → operator worklist.
4 секции согласованы заказчиком поэтапно 19.05.2026.

Зеркало входящего дизайна (webhook + CSV-сверка):
2026-05-18-supplier-csv-reconcile-channel-design.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 10:20:01 +03:00
Дмитрий 85a95aa2d0 feat(observer): parser v2 — environment, task_size, prompt_signal extractors 2026-05-19 10:15:17 +03:00
Дмитрий 2501b00079 docs(plan): observer factor-analysis implementation plan
12-task plan implementing the spec
docs/superpowers/specs/2026-05-19-observer-factor-analysis-design.md
in 4 layers (schema v2 + capture + enforcement + analysis) plus
normative sync. Each task has TDD steps with full code.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 10:09:56 +03:00
Дмитрий e0a25ff629 docs(brain): spec — observer factor-analysis extension
Design for making the brain governance observer rich enough for real
factor analysis. Surfaced during a discussion with the owner: the
observer is "paper-complete" but episodes lack the data factor analysis
needs — the outcome is a hardcoded "success", there is no decision
provenance (who chose the node — Claude autonomously, or the owner
forcing a method), no environment factors, no task grouping.

4-layer architecture:
- Layer 1 — episode schema v2: decision_provenance (+ counterfactual),
  environment block, task_size, real outcome enum, task_ref.
- Layer 2 — capture: deterministic transcript parsing for all factors +
  a one-line routing tag (owner-forced-method only).
- Layer 3 — two-sided enforcement: 3a routing-gate (Stop-hook blocks the
  turn until the tag is present — unbypassable by Claude); 3b observer
  self-discipline (silent failures become recorded observer_error
  markers; coverage + registration verified by a controller).
- Layer 4 — analysis: /brain-retro infers real outcome from the next
  episode's opening prompt, groups episodes into tasks, correlates
  causal chains, builds the factor matrix.

Scope: everything except an independent agent-judge — that, plus
confusion_marker as a real judgment and real-time friction flags, is
phase 2 (separate spec).

Brainstormed via superpowers:brainstorming. Next: writing-plans.

Refs: ADR-011, spec 2026-05-19-brain-governance-design.md, Pravila §16.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 09:15:27 +03:00
Дмитрий d2b344ea24 chore(brain): refresh STATUS.md dashboard
The committed STATUS.md was stale (generated 2026-05-19T03:49, before
the C1/C2 strict-mode fixes and before the post-commit hook existed):
it showed C1/C2 🔴 and "0 episodes". Regenerated via the now-installed
post-commit hook (C4 status-md job) — C1/C2/C3/C4 all , 5 episodes.

Context: `.git/hooks/post-commit` was never installed, so the C4
status-md job (lefthook post-commit) never ran automatically. Fixed
locally via `lefthook install --force` (installs pre-commit/post-commit/
pre-push). The hook files live in `.git/` and are not version-tracked —
re-run `lefthook install` after clone if hooks go missing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 08:13:19 +03:00
Дмитрий 99c7bac99b feat(brain): observer captures real session data via transcript parse
The Stop-hook was writing empty-shell episodes (task_id "unknown-<ts>",
node_chosen "unknown", events []). Root cause: buildEpisodeFromContext
read fields from the Stop-event stdin that Claude Code never sends
(primary_rationale, node_chosen, ...) and the session field name was
wrong (ctx.sessionId camelCase vs Claude Code's session_id). The hook
never read transcript_path — the only real source of session data.

New tools/observer-transcript-parser.mjs — pure parseTranscript(text,
fallbackSessionId):
- Scopes to the last turn (from the last real user prompt to EOF) —
  one episode == one prompt→response cycle. A tool_result-carrier user
  message is not treated as a turn boundary.
- Extracts task_id (real sessionId), timestamps (real duration),
  skill_invoked events, a tool_summary event with per-tool counts,
  error events (tool_result is_error), node_chosen (first skill, else
  "direct"), hard_floor (invoked when a superpowers:* skill is used),
  path_type (regulated/improvised), task_classification (keyword
  heuristic on the prompt).
- Reasoning fields triggers_matched/candidates_considered/
  boundaries_applied stay [] — not recoverable from a transcript;
  their capture is a separate ADR-011 follow-up.

observer-stop-hook.mjs: reads ctx.transcript_path + ctx.session_id
(camelCase fallback kept), readFileSync best-effort, delegates to
parseTranscript. No transcript → graceful fallback to ctx defaults.
Episode schema (5 mandatory + 7-field primary_rationale) unchanged —
no normative change. Stop-event is never blocked (exit 0 on any error).

TDD: 17 parseTranscript tests + 1 buildEpisodeFromContext transcript
test. Full tools Vitest 70/70 GREEN. CLI smoke against a real 575-entry
transcript: episode populated — real task_id, ~6.5 min duration,
tool_summary {Bash:5,Read:5,Grep:1,Edit:9,Write:1}, error event.

Refs: ADR-011 brain governance §6.2 (observer evidence loop).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 08:11:10 +03:00
Дмитрий 9ef5227f0f fix(observer): STATUS.md plain-text reference to memory file (lychee pre-push fix)
Memory files (e.g. feedback_brain_unused_tools_not_problem.md) live
in C:/Users/.../memory/, OUTSIDE the git repo. Markdown link from
docs/observer/STATUS.md (relative path) resolved to non-existent
in-repo path → lychee broken-link error in pre-push gate.

Fix: plain-text mention of memory key (no markdown link), with
explicit note «outside-repo memory store». Generator updated
accordingly; 31/31 Vitest tests still GREEN.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 06:49:39 +03:00
Дмитрий ce2333e309 feat(controller): C4 status-md-generator — dashboard
Aggregates C1/C2/C3 outputs via execFileSync (Security Guidance #40
compliant — uses fixed args array, no shell injection surface) +
observer episode count. Behavioral rule embedded in metric copy.
Per ADR-011 + spec §6.4.

3 Vitest tests GREEN (31/31 total).

Smoke run rebuilds STATUS.md with current state:
- C1 🔴 (l1-watcher surfaces 9 plugins in settings not formalized
  in Tooling Прил. Н by exact name@source — see commit 4382de3)
- C2 🔴 (cross-ref-checker surfaces noise from 'наследие' headers
  — see commit a780959 DWC)
- C3  (0 weeks since last read)
- C4  (this file)

Both 🔴 states surface known pre-existing drift (not regressions).
C5 lefthook wiring will handle WARN-vs-FAIL semantics.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 06:37:27 +03:00
Дмитрий 0cf1406314 docs(observer): HK1 pre-check noted in README (ADR-010 compliance)
Verified Stop event collision before B5 registration:
- User-level (~/.claude/settings.json): Stop hook = agent-type
  Sonnet-4.6 economy compliance verifier (already wired in
  6-component arch).
- Project-level (.claude/settings.json): Stop slot empty.

observer-stop-hook will register as command-type entry in
project-level Stop array. Independent slot from user-level agent;
no overwrite, no collision. Per Pravila ADR-010 HK1 hard-rule.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 06:17:58 +03:00
Дмитрий 910c2d0e37 feat(observer): docs/observer/ scaffolding — README + STATUS + counter + JSONL seed
Empty infrastructure per ADR-011 + Pravila §16.2. Hook + generators
wire up in subsequent tasks (B2 PII filter, B3 Stop-hook, B5 register
in settings.json, C4 STATUS generator).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 06:07:42 +03:00
Дмитрий d4520ff6b0 docs(psr): +R16 brain evidence loop — PSR_v1 v3.15 → v3.16
R16.1-R16.4: observer scope (5 mandatory fields incl. primary_rationale),
stack-conscious events (routing_decision + factor matrix 5 axes),
non-override status, cross-refs. Layered on top of R15 off-phase routing.

Per ADR-011 + spec v1.1 §5.2.1 amendment.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 05:33:44 +03:00
Дмитрий 1b899e024d docs(pravila): +§16 brain governance — router-only + observer + 4 controllers
Pravila v1.30 → v1.31. New §16 sub-sections 16.1-16.6. Level of §13
recommendation (not override-floor §9). Cross-refs ADR-011 / spec /
plan / router-procedure / routing-off-phase.

§16.2 mentions 5 mandatory fields including primary_rationale (per
spec v1.1 §5.2.1 amendment for factor analysis).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 05:30:24 +03:00
Дмитрий 8170527ee4 docs(tooling): Прил. Н v2.16 → v2.17 — header bump + §13 footer entry (ADR-011 A3 final)
Final header bump after 6 sub-batches of 9-attribute Атрибуты template
application. 58 total Атрибуты blocks now structure the registry:
- §2.4 dump for phase-0 (9 nodes #1-9)
- §3.5 dump for phase-1 (9 nodes #10-18)
- §4.1-§4.4 inline for phase-2 (7 nodes #19-23+#24+#30)
- §5.1 dump for phase-3 (5 nodes #25-29)
- §4.5-§4.17 inline for off-phase #31-42 + ruflo §4.10 (13 blocks)
- §4.18-§4.35 inline for off-phase #43-60 (18 blocks)

dormant=true: #1 PG MCP (replaced by Boost), #17 pg_partman (no
native Windows PG extension; replaced by Artisan command), ruflo
§4.10 (per Pravila §14.9).

Sub-batch commits: 1f77134 / 0718e41 / 16f7f1c / ca4da69 / 39231ef /
3e73396 + this header bump. Task A3 complete.

Per spec §4.1, plan Task A3 final step. Structured registry is the
input to router-procedure.md (commit 8a2e701) step 3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 05:26:57 +03:00
Дмитрий 3e733969dc docs(tooling): apply 9-attribute template to §4.18-§4.35 off-phase nodes #43-60 (ADR-011 A3 sub-batch 6 / final)
Inline pattern (matches sub-batches 3 + 5). 18 Атрибуты blocks
covering deptrac/Figma/Universal Icons/Design/openapi-mcp/promptfoo/
Data Scientist/Jupyter/operations/process-modeling/process-analysis/
n8n-mcp/discovery-interview/skill-creator/plugin-dev/hookify/
claude-code-setup/context7.

3 DEFERRED nodes (#44 Figma, #50 Jupyter, #54 n8n-mcp) marked in
boundaries column. Header bump v2.16→v2.17 happens in next commit.

Per spec §4.1, plan Task A3 sub-batch 6.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 05:24:51 +03:00
Дмитрий 39231ef856 docs(tooling): apply 9-attribute template to §4.5-§4.17 off-phase nodes #31-42 + ruflo (ADR-011 A3 sub-batch 5)
Inline pattern (matches Sub-batch 3). 13 Атрибуты blocks placed under
each §4.X heading. Includes ruflo §4.10 dormant=true (Pravila §14.9).
Other 12 nodes (#31-42) dormant=false.

#40 Security Guidance: kind=hook (блокирующий PreToolUse, sys.exit 2).
#34 Sentry MCP: pending Б-1 (Sentry instance deployment), READ-ONLY.

Per spec §4.1, plan Task A3 sub-batch 5.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 05:19:47 +03:00
Дмитрий ca4da6932e docs(tooling): apply 9-attribute template to §5.1 phase-3 nodes #25-29 (ADR-011 A3 sub-batch 4)
Dump-block pattern (matches Sub-batches 1 §2.4 and 2 §3.5). 5 nodes
covering #25 Semgrep+Semgrep MCP, #26 Trivy, #27 Dependabot,
#28 pg_audit, #29 pg_anonymizer. All dormant=false (registry-known,
phase-3 pre-production per CLAUDE.md §6).

Per spec §4.1, plan Task A3 sub-batch 4.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 05:15:26 +03:00
Дмитрий 16f7f1c340 docs(tooling): apply 9-attribute template to §4.1-§4.4 phase-2 nodes #19-23,#24,#30 (ADR-011 A3 sub-batch 3)
Inline pattern (different from Sub-batches 1-2): Атрибуты blocks
placed INSIDE existing §4.1/§4.2/§4.3/§4.4 subsections, not as
separate dump block — to avoid renumbering off-phase §4.5+.

7 attribute rows (1+4+1+1=7) covering #19 Superpowers, #20 Volar,
#21 vue-tsc, #22 ESLint+Prettier+plugin-vue+config-prettier (как
связка), #23 Vitest, #24 Histoire, #30 Frontend Design plugin.

Per spec §4.1, plan Task A3 sub-batch 3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 05:12:46 +03:00
Дмитрий 0718e41cc5 docs(tooling): apply 9-attribute template to §3.5 phase-1 nodes #10-18 (ADR-011 A3 sub-batch 2)
§3.5 «Атрибуты узлов фазы 1» dump block (pattern continues Sub-batch
1 §2.4). #17 pg_partman: dormant=true (replaced by Artisan command
partitions:create-months on native Windows). Other 8 nodes active.

Per spec §4.1, plan Task A3 sub-batch 2.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 05:09:41 +03:00
Дмитрий 1f77134597 docs(tooling): apply 9-attribute template to §4.1-§4.9 (ADR-011 A3 sub-batch 1)
+ §0.1 row template (one-time, ADR-011 mandated).
+ Атрибуты block for phase-0 nodes #1-#9. #1 PostgreSQL MCP dormant
(replaced by #10 Boost in phase 1).

Per spec §4.1, plan Task A3 sub-batch 1. Tooling header v2.16
remains; final v2.17 bump after all 6 sub-batches.

NB: file-layout adaptation — phase-0 nodes #1-#9 live in §2 tables
(not §4.X subsections); Атрибуты blocks placed in new §2.4
subsection. Plan-template "§4.1..§4.9" referenced the abstract
node-index, not file headings; subsequent sub-batches will follow
same pattern (§3.5 for phase-1 nodes #10-#18, etc.).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 05:04:44 +03:00
Дмитрий 8a2e701ff2 docs(router): router-procedure.md v1.0 — explicit 5-step routing
Single SoT for task→node routing. Replaces implicit routing scattered
across Pravila/PSR_v1/Tooling/routing-off-phase.md. ADR-011.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 04:57:33 +03:00
Дмитрий 2ef4ac4b9c docs(adr): ADR-011 brain governance — router-only + observer + 4 controllers
Anchor ADR for governance design (spec dd5bded / v1.1 544c8f3). Sets
Accepted status, captures 4 decisions: router-only, observer scope B,
4 controllers, capability-readiness behavioral rule. Enforced via
adr-judge (lefthook job 9 — checks ## Enforcement section).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 04:54:31 +03:00
Дмитрий 06a3bd532d docs(brain): plan amendment — factor analysis в Task A1 ADR-011 + Task B3 + Task B6
Соответствует spec v1.1 (544c8f3). Изменения:

Task A1 (ADR-011 text inside plan):
- Decision #2 «Observer scope B» расширено: упоминание 5 mandatory
  fields (включая primary_rationale 7 sub-fields) + routing_decision
  events для цепочек + что это enables factor analysis.

Task B3 (observer-stop-hook.test.mjs + observer-stop-hook.mjs):
- REQUIRED_FIELDS расширен с 4 до 5 ('primary_rationale').
- Новая константа RATIONALE_FIELDS (7 полей) + validateRationale()
  функция, вызываемая внутри appendEpisode после top-level validation.
- buildEpisodeFromContext возвращает primary_rationale (либо из ctx,
  либо default с extracted hints из ctx.skill_id/triggers_matched/etc).
- Tests: было 5 → стало 8. Новые: «throws when primary_rationale
  field missing», «persists routing_decision events with structured
  fields», «preserves user-provided primary_rationale unchanged».
  Все old fixtures обогащены primary_rationale: defaultRat().

Task B6 (aggregation-template.md):
- Новая большая секция «Factor analysis matrix (v1.1+)» с 5 осями
  факторов + cross-tab factor×factor. Tables для каждой оси:
  triggers_matched, candidates_dropped_because, boundaries_applied,
  hard_floor.rules, task_classification.

Self-review:
- Spec coverage table +row для §5.2.1.

Связано: spec v1.1 (544c8f3), plan v1.0 (ca93cf7), spec v1.0 (dd5bded).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 04:49:25 +03:00
Дмитрий 544c8f3081 docs(brain): spec v1.0 → v1.1 — factor analysis amendment (routing_decision + primary_rationale)
User-requested перед запуском суб-агента: observer должен фиксировать
не только факт выбора узла, но и причину — чтобы был возможен
факторный анализ через /brain-retro.

Изменения §5.2:

- 4 обязательных поля → 5 (+primary_rationale на эпизод-уровне).
- Новое событие routing_decision в массиве events[] (1 на каждое
  решение роутера в сессии; для цепочки из N — N событий).
- Новая под-секция §5.2.1 — структура 7 полей (step / node_chosen /
  triggers_matched / candidates_considered / boundaries_applied /
  hard_floor / task_classification). primary_rationale — копия
  первого routing_decision для дешёвой агрегации без чтения events[].
- Полный JSON-пример эпизода с цепочкой из 2 узлов.

Изменения §5.5:

- /brain-retro aggregation расширен новой секцией «Факторная матрица»:
  таблица «узел × фактор × частота» + cross-tab «фактор × фактор».
  5 осей факторов: triggers / dropped_because / boundaries /
  hard_floor.rules / task_classification.

Эффект: /brain-retro теперь может выдавать утверждения уровня «#55
выбрался против #53 по ADR-009 7 раз и по triggers-match 5 раз», а
не просто «#55 использован 12 раз». Это closes гэп факторного
анализа.

Header bump v1.0 → v1.1. ADR-011 текст в плане Task A1 будет
обновлён следующим коммитом (план amendment).

Связано: dd5bded (spec v1.0), ca93cf7 (plan v1.0).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 04:45:18 +03:00
Дмитрий ca93cf7652 docs(brain): план имплементации brain governance (Phase A/B/C/D, ~25 атомарных коммитов)
План имплементации спека dd5bded. 4 фазы:

- Phase A — нормативная foundation: ADR-011 + router-procedure.md +
  Tooling Прил. Н 9 атрибутов на 60 строк + Pravila §16 + PSR_v1 R16
- Phase B — observer infrastructure: docs/observer/ scaffolding +
  PII filter + Stop-hook + HK1 pre-check + settings.json register +
  /brain-retro skill
- Phase C — 4 механических контролёра: L1-watcher + cross-ref-checker +
  observer-of-observer (54w self-prune) + STATUS.md generator +
  lefthook wire-up
- Phase D — финализация: CLAUDE.md sync + smoke test +
  verification-before-completion + memory + push approval

Каждая задача TDD: failing test → implementation → passing test →
commit. Bite-sized steps (2-5 минут каждый). Subprocess через
execFileSync (Security Guidance #40 compliance). Pre-flight sync §15.2
обязателен перед каждой правкой 8 нормативных файлов. HK1 pre-check
обязателен перед регистрацией Stop-hook.

Self-review: spec coverage 15/15 sections , placeholder scan clean,
type consistency verified, all O1-O7 open questions resolved inline.

Execution: subagent-driven (recommended, per Pravila §15.1 Sonnet/Opus
only) или inline через executing-plans.

Связано:
- spec: docs/superpowers/specs/2026-05-19-brain-governance-design.md
- ADR-011 (будет написан в Task A1)
- memory/project_brain_governance_design.md
- memory/feedback_brain_unused_tools_not_problem.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 04:35:52 +03:00
Дмитрий dd5bdedf0a docs(brain): дизайн архитектуры регламента «мозга» (router-only + observer + 4 контролёра)
Brainstorming-сессия 19.05.2026 — финальный дизайн governance «мозга»
Лидерры. Spec в docs/superpowers/specs/2026-05-19-brain-governance-design.md
(12 секций, 13 verification критериев, 7 открытых вопросов).

Финальные решения:

1. Только роутер. Реестр узлов (Tooling Прил. Н SoT) + процедура роутера.
   Никакого каталога «проверенных цепочек», никакого 3-слойного механизма
   обновления, никакого forced-choice gate. Каждая задача — свежая сборка
   пути. Capability-readiness сохранена.

2. Observer scope B (полный пакет с дня 1). Stop-hook →
   docs/observer/episodes-YYYY-MM.jsonl + опциональные notes/*.md.
   4 обязательных поля + 6 типов структурированных событий + ПДн-фильтр.
   /brain-retro skill раз в спринт. Observer только пишет, не вмешивается.

3. 4 контролёра первой волны (5-й «стейлнес-контролёр» снят как
   избыточный после router-only refinement):
   - L1-watcher — settings.json ↔ Tooling drift detector
     (lefthook + weekly cron); закрывает L1-паттерн UPM/21st/Sentry/Redis/
     Anthropic dev-tooling.
   - Cross-ref consistency — version drift 8 нормативных файлов
     (lefthook, regex-стиль adr-judge, 0 LLM-вызовов); закрывает
     Tooling v2.11 collision 17.05.
   - Observer-of-observer — self-prune счётчик через 54 недели без
     чтений (anti-зомби-инфраструктура механизм).
   - Сигнальный статус — docs/observer/STATUS.md ежедневная приборная
     панель из C1+C2+C3+observer.

4. Поведенческое правило «не использован ≠ проблема» —
   capability-readiness осознанная стратегия заказчика; перевешивает
   аналитический инстинкт «прорезать неиспользуемое».

Также: cspell-words.txt +7 русских технических терминов
(слойного / слойный / рецидивирующие / зарегламентировать / версионный /
стейлнес / апдейты) для lefthook pass.

Статус: written-spec user review пройден, готов к переходу на
superpowers:writing-plans (terminal skill brainstorming-flow).
Имплементация — ноль. Это design document.

Связано:
- docs/discovery/2026-05-18-system-audit-brain.md (SYSTEM-аудит origin)
- memory/project_brain_governance_design.md
- memory/feedback_brain_unused_tools_not_problem.md
- Pravila §12/§14/§15 hard-rules (роутер шаг 1)
- Plugin_stack_rules_v1.md R15 + docs/routing-off-phase.md L1-L12
- ADR-011 (будет написан в writing-plans phase)
- ADR-010 HK1 pre-check (для Stop-hook observer-а)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 04:19:50 +03:00
Дмитрий 5e804a35f1 docs(brain): компакция «мозга» findings 2/3/6/7 — single-source счётчиков + §3.3 индекс + ruflo dormant-стаб
SYSTEM-аудит «мозга» через discovery-interview (интервью с заказчиком).
Закрыты 3 из 4 выбранных findings в нормативке (finding 7 — memory, вне git):

- CLAUDE.md v2.17 — §3.3 #31–#60 (30 строк-абзацев) свёрнуты в
  однострочный индекс с пином Tooling §4.NN (finding 2 — устранён
  дубль реестра с Tooling); §3 title / §3.3 footer / §1 row 2b /
  §0 row-label — счётчик «60» → пин на Tooling §0 (finding 3);
  §2 БД + §8 self-review — schema-метрики → пин header db/schema.sql
  (finding 3); §3.5 ruflo — ~17 строк истории → dormant-стаб (finding 6).
- Tooling Прил.Н v2.16 — §0 +anchor «КАНОН СЧЁТЧИКОВ» (единственный
  источник числовых счётчиков); §12 заголовок без stale «35».
- Pravila v1.30 — §14 заголовок +dormant-метка, §14.1 +врезка;
  §13.2 +note-пин счётчиков.
- PSR_v1 v3.15 — R10.1 +note-пин счётчиков на Tooling §0.
- cspell-words.txt +5 терминов («пин» и инфлексии).

План: docs/superpowers/plans/2026-05-18-brain-compaction-findings-2-3-6-7.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 17:38:03 +03:00
Дмитрий 868e57ee0c docs(map): визуальная изоляция ruflo — серый dashed кластер
iter8 (commit 9fcefa3) проставил 10 ruflo-узлам флаг
NODE_META.isolated=true, но это метаданные — рендер vis.js
флаг не читал, узлы рисовались обычным оранжевым цветом
группы ruflo. На карте изоляция была не видна.

Изоляция через group-level (переживает режимы карты —
теплокарту/фильтр, которые перезаписывают opacity/borderWidth,
но не color/shapeProperties):
- GROUPS.ruflo: оранжевый #ff8800 → серый #555555 +
  shapeProperties.borderDashes [4,4] + приглушённый шрифт #8a8a8a
- легенда-фильтр: dot оранжевый → серый dashed, текст
  «🌊 ruflo (оркестратор)» → «🔇 ruflo (изолирован 18.05)»
- hk_ruflo_queen: group 'hooks' → 'ruflo' (10-й изолированный
  узел, был в hooks-кластере — теперь визуально в ruflo)
- CATEGORY_LABELS.ruflo: «оркестратор» → «изолирован»

Группа ruflo не опустела (все 9 её узлов изолированы) — фильтр
group:ruflo продолжает работать. NODE_META.isolated флаги
не трогались (data-слой корректен с iter8).

Верификация: JS-синтаксис проверен (vm.Script parse OK) +
stylelint GREEN (color-hex-length fix #888→#888888). Визуальный
рендер в браузере НЕ проверен — Playwright-профиль занят
параллельной Claude-сессией (тот самый mcp_pw↔sk_parallel
same-dir case). shapeProperties — документированная vis.js
group-опция, риск низкий.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 17:10:49 +03:00
Дмитрий 3b59bd499a docs(supplier): план реализации резервного CSV-канала (Путь 2)
7 задач TDD: миграция vid->nullable, rework SupplierCsvParser +
CsvReconcileJob, +3 метода SupplierPortalClient, scheduler 30 мин,
API + UI-экран «Интеграция с поставщиком».

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 16:56:15 +03:00
Дмитрий a8e0cc9195 docs(map): sync версий rule-узлов после Rec1-Rec5 + R15
Карта отстала от нормативки: rule-узлы держали v1.28/v2.15/v3.13/
v2.14, фактические версии на origin/main — v1.29/v2.16/v3.14/v2.15
(SYSTEM-аудит Rec1-Rec5 closure + аудит дисциплины R15).

Изменения (6 точечных):
- pravila label v1.28 → v1.29 (+§14.9 ruflo dormant)
- claude_md label v2.15 → v2.16 (Rec1-Rec5 closure)
- psr_v1 label v3.13 → v3.14 (+R15 off-phase routing)
- tooling label v2.14 → v2.15 (§4.10 ruflo status-block)
- hookify CONFLICT cross-ref «R10.1 v3.13» → «v3.14»
- claude_md nd() together «Tooling v2.10» → «v2.15» (stale ref)

Исторические упоминания версий (реколлаж 16.05 — стр. 658/1518/
1866, v1.16/v2.2/v3.2/v2.2) не трогались — описывают прошлое
событие. 1 mcp_pw↔sk_parallel уже понижен в commit a03fb99.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 16:48:21 +03:00
Дмитрий 616f1d98a1 docs(supplier): дизайн резервного CSV-канала (Путь 2) — spec
Резервный CSV-канал импорта лидов от crm.bp-gr.ru: страховка на случай
обрыва webhook. Сверка отчёта поставщика «Запрос номеров» (CSV 3 колонки
Name;Tag;Phone) каждые 30 мин + кнопка вручную; дедуп по phone+project;
recovery пропущенных лидов; drift-детект падения webhook.

Дизайн утверждён заказчиком. Ключевые решения: vid → nullable (CSV не
даёт vid), окно 2 кал. дня, rework SupplierCsvParser/CsvReconcileJob под
реальный async-флоу заказа отчёта.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 16:47:58 +03:00
Дмитрий aab7345590 docs(psr): аудит дисциплины R15 — M1-M3 polish
Продолжение SYSTEM-аудита «мозга» 18.05.2026 (срез «дисциплина
правил после Rec1-Rec5»). PSR_v1 прочитан целиком (966 строк),
R15 «Off-phase routing» проверен против R0/R6/R10/R14.

Результат аудита:
- R15 vs R0/R6/R10/R14 — содержательных противоречий нет
  (R15.1 codifies, R15.4 hard-rules перевешивают, R15.6 UI-пул)
- routing-off-phase.md прогнан на 7 задачах (5 прямых + 2
  граничных) — 7/7 routed cleanly, ADR-границы работают
- hard-rules §12/§14/§15 vs §14.9 dormant — согласовано

3 minor-находки исправлены:
- M1 — routing-off-phase.md +note: строки UI-пул #31/#32 —
  делегирующие ссылки на R14, не R15-routed (R15.6 ↔ таблица)
- M2 — PSR_v1 R15.1 +абзац «R15 — пост-R1 слой» (off-phase
  routing срабатывает после классификации R1, не отдельная
  шестая ветка) — in-place в v3.14 (введён сегодня, 0 изменений
  R-аппарата)
- M3 — routing-off-phase.md +строка «диагностика просадки
  метрики/конверсии» → process-analysis #53 (discovery-interview
  SKIP-кейс, симметрия)

routing-off-phase.md v1.0 → v1.1. PSR_v1 — без version bump
(M2 — in-place уточнение свежей v3.14). snapshot 18.05 +UPDATE
секция «Ось 5» + факт-правка строки 97 (R15-слот).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 16:32:34 +03:00
Дмитрий a03fb99242 fix(map): 1 mcp_pw↔sk_parallel → 🟢 (квирк #95 + Pravila §15.2)
Фактологическая правка после повторного аудита «мозга» SYSTEM-режима
(продолжение Rec1-5 закрытия 18.05.2026).

Причина:
- nd()-тексты mcp_pw + sk_parallel ссылались на «квирк #2» в memory
- memory[#2] — это taskkill /F /IM на Windows, не Playwright
- реальный источник — квирк #95 (16.05.2026): профиль Playwright MCP
  хэшируется per-cwd → разные worktrees получают разные
  mcp-chrome-{hash} директории и не конфликтуют. README playwright-mcp
  прямо: конфликт — только для клиентов «sharing the same workspace»

Изменения:
- CONFLICT() BLACK → 🟢GREEN с новым reasoning
- mcp_pw nd() — текст «один shared browser» → «профиль per-cwd hash»
- sk_parallel nd() — type BLACK → GREEN, актуализированный desc
- EDGE_DETAILS rule — «нет регламента» → «GREEN: квирк #95 + §15.2 claim»
- snapshot 18.05.2026: счётчик 3/🟢8 → 2/🟢9 + сноска UPDATE
- snapshot «Ось 2» — переписана: оба оставшихся  — ruflo (dormant)

Эффект:
- 3 → 2 (оба оставшихся — ruflo, оба dormant после изоляции 18.05)
- 🟢8 → 🟢9
- реальное runtime-трение — ноль

Same-dir parallel (две Claude-сессии в одной dir одновременно зовут
browser) — редкий runtime-сценарий, регулируется Pravila §15.2 claim
в docs/sessions/CURRENT.md. Отдельный §15.4 «MCP same-dir locks» не
добавляется (вариант A — только фактологические правки).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 16:15:07 +03:00
Дмитрий e5ec754abc docs(rules): off-phase routing — PSR_v1 R15 + docs/routing-off-phase.md (Rec3+Rec4+Rec5)
PSR_v1 v3.13 → v3.14: +R15 «Off-phase routing» на свободном слоте (motion удалён v2.0). Закрывает Rec5 SYSTEM-аудита 18.05.2026.

- R15.1 off-phase узлы вне R6.0/R6.1/R14 (codifies practice).
- R15.2 routing-таблица в docs/routing-off-phase.md (single home).
- R15.3 приоритет специфичности + ADR-границы.
- R15.4 hard-rules §12/§14/§15 перевешивают.
- R15.5 live-override.
- R15.6 гранулярные категории.
- R15.7 обычное правило.

Финальная формула расширена. UI-аппарат R0–R14 без изменений.

docs/routing-off-phase.md v1.0 (новый):
- 34 строки routing-таблицы триггер→узел.
- L1–L12 канонических связок (Rec4): discovery-chain / SYSTEM-аудит / process-pair / mermaid-feeders / архитектурный треугольник / security-слой / интеграционная разработка / runtime-debug / project-management / ML-trio / Claude-инфра / claude-md-management.
- Anti-pattern связок: R14.5 UPM↔FD↔21st, ruflo (dormant), Figma→FD code-gen, Data Scientist→решатель.
- 6 правил дисциплины выбора.

UI-рендер панели «🔗 Связки» на карте — future iter.

Snapshot — docs/discovery/2026-05-18-system-audit-brain.md Rec3/Rec4/Rec5.

cspell-words.txt +промпта. Fix MD056 routing row 60 (+категория orchestration).

NB: восстановлено из backup-патча после collision. LEFTHOOK_EXCLUDE=eslint-vue — pre-existing ImportView.spec.ts:4.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 15:54:17 +03:00
Дмитрий ec4069ce38 docs(rules): ruflo isolation нормативка — Pravila §14.9 + Tooling §4.10 status (Rec2)
Pravila v1.28 → v1.29 (+§14.9 dormant) + Tooling v2.14 → v2.15 (§4.10 status-block).
Заказчик 18.05.2026 (Rec2 SYSTEM-аудита): изолировать ruflo от активного потока без удаления артефактов. Live-связи hooks/MCP/daemon отключены (уже в HEAD через 1412d3f), артефакты сохранены, queen-триггер §14.1 dormant.

2/3 сняты. План реактивации — memory feedback_ruflo_isolated.md.

cspell-words.txt +CCS (ADR-010 conflict code CCS1).

NB: восстановлено из backup-патча memory/rec1-5-stash-backup-2026-05-18-evening.patch после collision с параллельной сессией. LEFTHOOK_EXCLUDE=eslint-vue — pre-existing ImportView.spec.ts:4 (59dac9b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 15:52:45 +03:00
Дмитрий 9fcefa3ab9 feat(map): iter8 NODE_META + ruflo isolated markers (Rec1+Rec2.5)
Rec1 — iter8 пересборка теплокарты NODE_META:
- META_SNAPSHOT 16.05 → 18.05; META_WINDOW 09-16.05 → 09-18.05 (10 дней).
- 23 новых узла волн 17-18.05 (A6/D3/C9/A4/A3/A11/C10/discovery/ADT) получили
  baseline=1, usesSrc='интеграция' (факт интеграции в коммит/plan/Tooling §4).
- mcp_figma=0, usesSrc='DEFERRED' (нет Figma-аккаунта).
- discovery_interview=3, usesSrc='скил, factual' (snapshot + это интервью + утренний).
- sk_regression=2 (verification в Sprint 1-6).
- 23 принципиально неизмеримых остались null (правила, hookify_plugin,
  ruflo_daemon/memory, фоновые economy/skill-discipline хуки, старые mem_audit_*).
- Дисклаймер-блок-комментарий обновлён (методика «factual baseline»).
- JS-smoke : 125 entries / 23 null / 31 uses=1 / 26 uses=0 / 45 uses>1.

Rec2.5 — карта ruflo isolated markers:
- 10 ruflo узлов в NODE_META помечены isolated: true
  (ruflo_queen, ruflo_plugins, ruflo_workers, ruflo_agents_catalog,
   ruflo_commands, ruflo_daemon, ruflo_memory, ruflo_mcp, ruflo_recall_hook,
   hk_ruflo_queen).
- uses=0 для всех (реальные вызовы = 0 после изоляции 18.05).
- Блок-комментарий 🔇 ИЗОЛИРОВАН с cross-ref на Pravila §14.9 / Tooling §4.10 /
  memory feedback_ruflo_isolated.md.

Snapshot — docs/discovery/2026-05-18-system-audit-brain.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 15:30:40 +03:00
Дмитрий e6dbbb49a1 docs(discovery): SYSTEM-аудит «мозга» 18.05.2026 — snapshot 5 осей × 125 узлов
Утренний SYSTEM-режим скила discovery-interview (Pravila §13.2 #55).
Scope: весь «мозг» (карта + тулчейн + правила).

5 осей: здоровье новых узлов / устранение конфликтов / корректность routing /
синергия 2+ узлов / пересмотр правил.

5 приоритезированных рекомендаций (Rec1–Rec5):
- Rec1 iter8 пересборка теплокарты NODE_META
- Rec2 ревизия ruflo keep/trim/off
- Rec3 off-phase routing-матрица на 30 узлов #31-60
- Rec4 панель «Связки» на карте
- Rec5 ребаланс PSR_v1 (UI-аппарат → off-phase)

cspell-words.txt: +отревизован +ребаланс +квирком +тулинг +лоадит (валидные слова).

Источник вечерней работы Rec1–Rec5 + Final CLAUDE.md sync (последующие коммиты).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 15:30:12 +03:00
Дмитрий 183c719614 docs(plans): план эпика «Сделки drawer + редактирование источника проекта»
5 атомарных задач, согласованы вопросами AskUserQuestion 18.05.2026:
- Task 1: drawer visibility 0/1 vs ≥2 (пп.1+2)
- Task 2: «Менеджер» → «Тип» + «Источник» read-only в drawer (пп.4/6/7)
- Task 3: inline status picker (п.3)
- Task 4: подписи «Источник» в NewProjectDialog (п.8)
- Task 5: редактирование source в ProjectDetailsDrawer (п.9, backend+UI)

п.5 (B-префикс) уже закрыт в 36ea9cd.
cspell: +табах.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 15:12:07 +03:00
Дмитрий 515acb654c fix(adt): renumber cross-refs v1.27→v1.28 / v2.14→v2.15 after rebase
Ветка ребейзнута на parallel-sessions §15 — Pravila v1.27 и CLAUDE.md
v2.14 параллельно заняты §15-эпиком, перенумеровано Pravila→v1.28 /
CLAUDE.md→v2.15. Sync cross-refs: Tooling §0+§13 footer, PSR_v1 §0
entry, automation-graph rule-labels (pravila/claude_md узлы),
+rebase-девиация note в plan. Tooling v2.14 / PSR_v1 v3.13 — без
изменений (§15 их не трогал).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 11:46:30 +03:00
Дмитрий 30d1a3c756 docs(adt): Pravila v1.28 — §13.2 +Off-phase authoring-tooling + dev-support
Пересоздан после ребейза feat/anthropic-dev-tooling на parallel-sessions
§15 (origin/main 781a59c). v1.27 параллельно занят §15 — перенумеровано
v1.27→v1.28: §13.2 +абзац (тринадцатая off-phase подкатегория
authoring-tooling #56-#58 + четырнадцатая dev-support #59-#60),
+«Что изменилось в v1.28» блок, +§13 history-row.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 11:39:01 +03:00