## encoding_rule - All source/code/config/docs files must be saved and edited in UTF-8 without BOM; never write mojibake placeholders or replacement characters. ## commit_message_rule - After applying fixes, always provide the user with a ready commit title in Russian. ## graphify This project has a graphify knowledge graph at graphify-out/. Rules: - Before answering architecture or codebase questions, read graphify-out/GRAPH_REPORT.md for god nodes and community structure - If graphify-out/wiki/index.md exists, navigate it instead of reading raw files - After modifying code files in this session, run `python -c "from graphify.watch import _rebuild_code; from pathlib import Path; _rebuild_code(Path('.'))"` to keep the graph current ## codex_domain_loop - Project-scoped Codex orchestration lives under `.codex/`. - Use `.codex/skills/domain-case-loop` for repeatable domain hardening loops on one concrete case. - Prefer `docs/orchestration/active_domain_contract.json` as the single mutable source of truth for the current domain/scenario pack; keep the agent canon stable and swap only this file when the active domain changes. - The same skill/launcher also supports multi-step domain scenarios with shared assistant session state under `artifacts/domain_runs//steps/`. - For full domain question pools, use pack mode and aggregate artifacts under `artifacts/domain_runs//scenarios/`. - Preserve current architecture: domain loop may automate capture, review, rerun, and artifact storage, but must not rewrite runtime foundations. - Prefer machine-readable case artifacts in `artifacts/domain_runs//`, especially `baseline_turn.json` / `rerun_turn.json`, over ad hoc prose-only summaries. - For cascading user questions in one domain, prefer scenario artifacts (`scenario_manifest.json`, `scenario_state.json`, per-step `turn.json`) over separate unlinked case folders. - For follow-up-heavy domains, treat acceptance as scenario-tree coverage: root node, critical child nodes, critical edges, and the primary user path must be validated explicitly. - Do not accept a domain when only the root snapshot works but selected-object or drilldown follow-up edges still fail. - For critical branches, validate at least canonical wording, colloquial wording, and UI-generated selected-object wording when that UX exists. - Treat temporal carryover, selected-object carryover, answer-shape match, and ordering semantics as first-class acceptance invariants rather than optional polish. - Treat direct-answer-first behavior, business usefulness, selected-object memory, and field truthfulness as first-class analyst criteria rather than optional presentation polish. - Treat stable `focus_object`, reusable bundles such as `provenance_bundle`, and pronoun-style follow-up resolution (`по ней`, `по этой позиции`) as first-class analyst criteria in follow-up-heavy domains. - Treat action-first selected-object follow-ups, layered answer shape, stable `answer_object`, and temporal honesty about out-of-window evidence as first-class analyst criteria rather than optional polish. - If a case falls outside the current routed contour because the route/intent/capability is not wired yet, treat it as domain enablement work for this project, not as automatic out-of-scope rejection. - For new unmarked domains, `needs_exact_capability` means "bootstrap or extend the contour" rather than "close the case as unsupported". - A case can be marked `accepted` only when analyst verdict is at least `80/100`, no unresolved `P0` remains, and the rerun does not mask heuristic output as confirmed.