Тема
Компоненты
Сгенерировано 2026-09-15 из HEAD 0afeb6bb63a3f0ba6b77d5c8e8954631a8a56952. Страница порождается scripts/components-page.sh из закоммиченного состояния репозитория — не редактируется руками.
Релиз (манифест VPS)
| Артефакт | Коммит | Выкачено |
|---|---|---|
| observability-dashboards | 79b6bf0a5b8c4d2dc03be80f493d9ddce9373b3f | 2026-08-27T22:41:21Z |
| pm-cli | 9cb8b51f14e968d3fcfa90ddd3526922556ac054 | 2026-09-14T20:23:51Z |
| pm-engine | 9cb8b51f14e968d3fcfa90ddd3526922556ac054 | 2026-09-14T20:23:51Z |
| pm-engine-dashboard | 9cb8b51f14e968d3fcfa90ddd3526922556ac054 | 2026-09-14T20:23:51Z |
| spa-engine | 9cb8b51f14e968d3fcfa90ddd3526922556ac054 | 2026-09-14T20:23:51Z |
Торговые правила
Готовность: открыты P0/P1: 10
В бою: pm-engine@9cb8b51f14e968d3fcfa90ddd3526922556ac054 (выкачено 2026-09-14T20:23:51Z)
Открытые карточки ROADMAP
| # | Карточка | Приоритет | Статус | Прогресс |
|---|---|---|---|---|
| 49 | composable-portfolio-strategy-domain | P3 | proposed | нет tasks.md |
| 4 | exit-sizing-from-sellable-balance | P0 | in-progress | нет tasks.md |
| 6 | lossless-stop-confirm-trade-window | P1 | in-progress | нет tasks.md |
| 11 | stop-execution-price-floor | P1 | in-progress | нет tasks.md |
| 13 | directional-dca-fill-progress-and-dust-terminal | P2 | blocked | нет tasks.md |
| 17 | entry-observation-stage | P1 | in-progress | нет tasks.md |
| 22 | listing-fast-path-admission | P2 | in-progress | нет tasks.md |
| 23 | entry-band-on-prospective-order-price | P2 | in-progress | нет tasks.md |
| 27 | stop-breach-character-and-depth | P1 | in-progress | нет tasks.md |
| 28 | flow-imbalance-stop-confirmation | P1 | blocked | нет tasks.md |
| 29 | entry-protection-threshold-derivation | P2 | in-progress | нет tasks.md |
| 30 | directional-entry-quality-confirmation | P2 | in-progress | нет tasks.md |
| 31 | stop-confirm-evidence-vs-book-liquidity | P2 | proposed | нет tasks.md |
| 32 | rank-price-schedule-gate | P3 | proposed | нет tasks.md |
| 33 | stop-rank-coupled-exit | P3 | proposed | нет tasks.md |
| 45 | orders-table-quote-rank-liquidity-columns | P2 | in-progress | 0/42 |
| 100 | paired-merge-strategy-archival | P1 | deployed | нет tasks.md |
| 103 | entry-observation-dashboard-table | P2 | proposed | нет tasks.md |
| 108 | spread-aware-buy-price-improvement | P1 | merged | 23/25 |
| 51 | spread-mm-strategy | P3 | blocked | нет tasks.md |
| 62 | self-custodial-combo-rfq-maker | P3 | proposed | нет tasks.md |
| 77 | rtds-consumer-driven-activation | P2 | deployed | 15/16 |
| 111 | entry-price-decision-analytics | P1 | planned | нет tasks.md |
| 112 | rank-exit-config-cohesion | P2 | planned | нет tasks.md |
| 114 | dca-skip-observability | P2 | merged | нет tasks.md |
| 118 | entry-admission-rank-blocked-after-reset | P1 | proposed | нет tasks.md |
Известные недоработки
DECISION_BOOK_LEVELS = 128 (strategy.rs:138) — константа движка, не настройка (см. storage.md §«Улики решений уехали из SQLite»); не выводить её в config.db. Заголовок mod.rs («Фаза skeleton... stub hooks») устарел — не ориентироваться на него, ориентироваться на код. Стоп-подтверждение как контур ДВИЖКА (не стратегии) — docs/target/engine.md §«Кадр стоп-подтверждения»; правила самого порога — только в directional-harvester.md. Канонический ранг — единственная власть трёх денежных потребителей.canonical_rank.rs::read_canonical_rank фиксирует ctx.monotonic_ms(), один раз читает ConditionContextLookup и возвращает owned снимок с полной RevisionIdentity, total-order rank, own No, возрастом либо закрытой причиной недоступности. Вето входа, resting_entry_rank_wall и V2 rank-exit используют только этот adapter; compute_probability_rank и evaluate_held_rank остаются V1-совместимостью и не вызываются из денежных consumer-путей. Вход передаёт тот же снимок в вето и entry_probability_rank, поэтому публикация посередине оценки не может смешать две ревизии. signals.context_json.entry_observation_admission_rank хранит долговечную базу для entry_observation.max_rank_slip; SignalRegistry::hydrate_state возвращает тот же контекст после рестарта. rank_wall.rs задаёт чистый предикат и закрытые исходы. Вызов StrategyContext::cancel_order остаётся в strategy.rs, выполняется до on_market_data_direct и withdraw_stale_entry_order и разбирает закрытый CancelOrderOutcome. Process-local ожидания или подтверждения у стены нет. Единственная новая причина снятия — StrategyCancelCause::RestingEntryRankWall; отдельного клиента заявок, расчёта остатка и резервации стратегия не вводит. — см. crates/pm-engine/src/strategies/directional/AGENTS.md
Наблюдаемость
Готовность: открыты P0/P1: 3
В бою: pm-engine@9cb8b51f14e968d3fcfa90ddd3526922556ac054 (выкачено 2026-09-14T20:23:51Z)
Открытые карточки ROADMAP
| # | Карточка | Приоритет | Статус | Прогресс |
|---|---|---|---|---|
| 16 | metrics-series-store | P1 | in-progress | нет tasks.md |
| 18 | outcome-liquidity-profile-recording | P2 | in-progress | нет tasks.md |
| 19 | entry-funnel-domain-rollup | P2 | in-progress | нет tasks.md |
| 20 | order-reject-taxonomy-observability | P2 | in-progress | нет tasks.md |
| 24 | directional-entry-pattern-dataset | P2 | in-progress | нет tasks.md |
| 25 | analytics-mcp-read-surface | P2 | in-progress | нет tasks.md |
| 53 | trustworthy-verdict-foundation | P2 | in-progress | нет tasks.md |
| 107 | orderbook-stale-diagnostics | P1 | merged | нет tasks.md |
| 111 | entry-price-decision-analytics | P1 | planned | нет tasks.md |
| 114 | dca-skip-observability | P2 | merged | нет tasks.md |
| 120 | admission-rank-unavailable-metric-missing | P2 | proposed | нет tasks.md |
| 121 | histogram-metrics-missing-bucket-schemes | P2 | proposed | нет tasks.md |
Известные недоработки
История применённого бюджета живёт в budget_hourly и описана в docs/target/observability.md; старого capital_hourly в текущей реализации нет. Пара base/effective не восстанавливается из PnL на frontend. — см. crates/pm-engine/src/observability/AGENTS.mdscripts/deploy-vps.sh:74-75: «The pm-analytics BINARY is not deployed: its harvester-ev oracle runs locally» — standalone release-сборка (cargo build --release -p pm-analytics) ЗАПРЕЩЕНА (корневой CLAUDE.md §pm-analytics), инструмент только для локального прогона оператором. Офлайн-бэктест (replay/sweep/what-if) снят целиком 2026-08-21 (cli.rs:4-5) — не восстанавливать без решения оператора. — см. crates/pm-analytics/AGENTS.md
Дашборд
Готовность: открыты P0/P1: 1
В бою: pm-engine-dashboard@9cb8b51f14e968d3fcfa90ddd3526922556ac054 (выкачено 2026-09-14T20:23:51Z); spa-engine@9cb8b51f14e968d3fcfa90ddd3526922556ac054 (выкачено 2026-09-14T20:23:51Z)
Открытые карточки ROADMAP
| # | Карточка | Приоритет | Статус | Прогресс |
|---|---|---|---|---|
| 41 | exit-reason-overlay-on-fills-chart | P2 | in-progress | нет tasks.md |
| 42 | position-order-local-midnight-column | P2 | in-progress | нет tasks.md |
| 44 | open-positions-redeem-pending-tabs | P3 | in-progress | нет tasks.md |
| 45 | orders-table-quote-rank-liquidity-columns | P2 | in-progress | 0/42 |
| 100 | paired-merge-strategy-archival | P1 | deployed | нет tasks.md |
| 103 | entry-observation-dashboard-table | P2 | proposed | нет tasks.md |
| 46 | frontend-component-pipeline | P3 | proposed | нет tasks.md |
| 47 | harden-secrets-and-dashboard-auth | P3 | proposed | нет tasks.md |
| 73 | capital-first-dashboard-overview | P2 | planned | 0/38 |
| 74 | engine-unrealized-pnl-valuation | P2 | proposed | нет tasks.md |
| 87 | midnight-column-human-duration | P2 | proposed | нет tasks.md |
| 113 | position-closed-size-live-seed-parity | P2 | merged | нет tasks.md |
| 115 | redeem-status-live-projection | P2 | merged | нет tasks.md |
| 116 | frontend-typecheck-errors | P2 | merged | нет tasks.md |
| 117 | redeem-no-payout-event | P2 | merged | нет tasks.md |
Известные недоработки
wire-contract.mdописывает маршрутыGET /api/local/positions,/orders,/signals,/metrics,/metrics/rejects— их нет в фактическом роутере: соответствующие данные едут одним куском внутри/api/local/seed. Ориентироваться на список маршрутов ВЫШЕ, не на этот документ.seed.rs:unrealized_usdв снимке позиции — всегда0.0с прямым комментарием «фронт пересчитывает сам»; это расходится с инвариантом «одна правда — один источник» того же wire-контракта. Не читать полеunrealized_usdиз/seedкак реальную величину.seed.rs: ошибка чтенияrank_exit_statesгаситсяunwrap_or_default()— на сбое БД все позиции покажутся «без ранговой защиты» неотличимо от штатного состояния. Новый код на этом месте обязан пробрасывать ошибку. — см.crates/pm-engine/src/sse/AGENTS.mdbot_event_map.rsнесёт две функции-заглушки (to_bot_event_ lifecycle_state_changed,to_bot_event_lifecycle_halted) с телом, вызывающим панику по построению, — вызывающих ни у одной нет нигде в крейте. НастоящиеBotEvent::LifecycleStateChanged/LifecycleHaltedстроятся не здесь, а прямо вlifecycle/fsm.rs, минуя этот мост целиком. Не подключать эти функции «как есть» — сверить поля с тем, что реально собираетfsm.rs, и либо привести мост в соответствие, либо снять заглушки как мёртвые.- Не заводить в этом слое чтение
events.event_type— колонка не предназначена для восстановленияBotEvent, толькоpayload_jsonнесёт полную форму. — см.crates/pm-engine/src/wire/AGENTS.mdНе расширять прямой импортpm_engine::вstrategies.rsбез решения оператора (R7 — известный долг, не одобренный паттерн). Не заводить второй источник данных портфеля в обходpolymarket_client.rs/cache.rs. Правки фронтенда — только поfrontend/DESIGN.md, гейт соответствия —design-guideline.test.ts. — см.crates/pm-engine-dashboard/AGENTS.md
Рыночные данные
Готовность: открыты P0/P1: 5
В бою: pm-engine@9cb8b51f14e968d3fcfa90ddd3526922556ac054 (выкачено 2026-09-14T20:23:51Z)
Открытые карточки ROADMAP
| # | Карточка | Приоритет | Статус | Прогресс |
|---|---|---|---|---|
| 21 | discovery-market-slug-filter | P2 | in-progress | нет tasks.md |
| 26 | shared-market-data-publisher | P2 | proposed | нет tasks.md |
| 28 | flow-imbalance-stop-confirmation | P1 | blocked | нет tasks.md |
| 31 | stop-confirm-evidence-vs-book-liquidity | P2 | proposed | нет tasks.md |
| 101 | stale-orderbook-rest-refresh | P1 | deployed | 32/35 |
| 48 | sharded-market-data-with-serial-admission | P3 | blocked | нет tasks.md |
| 77 | rtds-consumer-driven-activation | P2 | deployed | 15/16 |
| 78 | rtds-transport-remediation | P2 | deployed | нет tasks.md |
| 104 | rtds-ring-and-window-amortized | P3 | deployed | нет tasks.md |
| 105 | orderbook-rest-observation-stamp | P1 | blocked | нет tasks.md |
| 106 | book-freshness-rest-confirmation | P1 | planned | 0/50 |
| 107 | orderbook-stale-diagnostics | P1 | merged | нет tasks.md |
Известные недоработки
docs/target/event-context.md §«Текущее состояние относительно цели» называет это явно: «текущий снимок книги возвращается копированием Book, а downstream снова собирает одиночный MarketDataSnapshot по token_id» — целевой контракт требует Arc-разделяемых неизменяемых ревизий без копирования на горячем пути. Не менять сигнатуру snapshot() на Arc изолированной правкой — обвязка market_state_store и стратегия сегодня рассчитаны на владеющую копию. — см. crates/pm-engine/src/adapters/orderbook/AGENTS.mddocs/target/discovery.md описывает модуль discovery/ (runtime.rs, coverage.rs, events.rs, markets.rs, lifecycle.rs, listing.rs, closure.rs, model.rs, store.rs, projection.rs) с EventRevision по event_id — этого дерева в коде НЕТ, шардирование идёт по event_slug (event-context.md §«Текущее состояние относительно цели» подтверждает то же самое). Не заводить discovery/ точечной правкой одного файла — это отдельная, ещё не начатая работа с собственными критериями приёмки. — см. crates/pm-engine/src/adapters/market_data/AGENTS.md Пункта про пустой FilterSet больше нет: механизм клиентского фильтра слагов, который порождал нулевой поток кадров, снят из pm_sdk::rtds целиком (rtds-transport-remediation, раздел «Сквозной транспорт» выше), а не исправлен точечной правкой заполнения. Открытый пункт того же слоя, оставшийся НЕ закрытым, — расхождение RtdsActorBuffer/design.md D2 в разделе «Инварианты» выше (буфер создаётся безусловно, а не только при stop_confirm); решения оператора по нему ещё нет. — см. crates/pm-engine/src/adapters/rtds/AGENTS.md
Денежный движок
Готовность: открыты P0/P1: 7
В бою: pm-engine@9cb8b51f14e968d3fcfa90ddd3526922556ac054 (выкачено 2026-09-14T20:23:51Z)
Открытые карточки ROADMAP
| # | Карточка | Приоритет | Статус | Прогресс |
|---|---|---|---|---|
| 3 | position-coverage-verification | P1 | in-progress | нет tasks.md |
| 4 | exit-sizing-from-sellable-balance | P0 | in-progress | нет tasks.md |
| 110 | post-fill-coverage-refresh | P1 | planned | 0/49 |
| 7 | ambiguous-submit-outcome | P1 | in-progress | нет tasks.md |
| 10 | entry-clip-completion-reserve | P1 | in-progress | нет tasks.md |
| 43 | durable-position-market-labels | P2 | proposed | нет tasks.md |
| 45 | orders-table-quote-rank-liquidity-columns | P2 | in-progress | 0/42 |
| 48 | sharded-market-data-with-serial-admission | P3 | blocked | нет tasks.md |
| 73 | capital-first-dashboard-overview | P2 | planned | 0/38 |
| 74 | engine-unrealized-pnl-valuation | P2 | proposed | нет tasks.md |
| 86 | durable-cancel-fill-resolution | P0 | in-progress | 17/18 |
| 113 | position-closed-size-live-seed-parity | P2 | merged | нет tasks.md |
| 117 | redeem-no-payout-event | P2 | merged | нет tasks.md |
| 122 | fill-lifecycle-to-ledger | P0 | proposed | 8/30 |
Известные недоработки
CurrentMarketContextStoreкоммитится координатором на каждом полном и targeted проходе и является единственной властью ранга для вето входа, стены стоящей primary BUY и V2 rank-exit. Каждый денежный consumer получает один owned снимок черезdirectional::canonical_rank::read_canonical_rank; legacy competition-rank не служит fallback. Вход использует тот же снимок для решения и долговечногоentry_probability_rank.- V2 rank-exit сканирует все открытые позиции на сериализованном секундном
Strategy::on_tick; собственный market-data кадр не нужен. Он не fetch'ит Gamma, а читает уже материализованный стор. Книга и tick-size читаются только после rank-breach для доказательства безопасного SELL handoff. - Под Drain полный проход разрежается, но targeted refresh денежных ссылок остаётся на базовом такте координатора. Если process-local индекс ещё не знает родителя защищаемого
condition_id, координатор восстанавливает его ограниченными open/closed market lookup и не создаёт ссылку при пустом, неоднозначном либо неполном ответе. — см.crates/pm-engine/src/engine/AGENTS.md
Исполнение заявок
Готовность: открыты P0/P1: 3
В бою: pm-engine@9cb8b51f14e968d3fcfa90ddd3526922556ac054 (выкачено 2026-09-14T20:23:51Z)
Открытые карточки ROADMAP
| # | Карточка | Приоритет | Статус | Прогресс |
|---|---|---|---|---|
| 7 | ambiguous-submit-outcome | P1 | in-progress | нет tasks.md |
| 12 | gtd-expiration-in-future | P1 | in-progress | нет tasks.md |
| 94 | — | P2 | proposed | — |
| 122 | fill-lifecycle-to-ledger | P0 | proposed | 8/30 |
Известные недоработки
docs/target/event-context.md называет целевого владельца исходящих команд OrderGateway с типизированной EventContext-веткой — текущий код отдаёт плоский OrderEvent-поток без причинной ссылки на event_id/ревизию. Не вводить event_id точечно в этом каталоге — это часть отдельного, ещё не начатого перехода. — см. crates/pm-engine/src/adapters/clob/AGENTS.md
Жизненный цикл
Готовность: открыты P0/P1: 4
В бою: pm-engine@9cb8b51f14e968d3fcfa90ddd3526922556ac054 (выкачено 2026-09-14T20:23:51Z)
Открытые карточки ROADMAP
| # | Карточка | Приоритет | Статус | Прогресс |
|---|---|---|---|---|
| 9 | accounting-drain-shutdown-discrimination | P1 | in-progress | нет tasks.md |
| 34 | db-driven-activation-and-run-mode | P1 | in-progress | нет tasks.md |
| 36 | exchange-health-resilience | P2 | blocked | нет tasks.md |
| 37 | status-page-component-relevance-gate | P2 | in-progress | нет tasks.md |
| 40 | holdings-bootstrap-off-critical-path | P1 | deployed | 24/25 |
| 69 | holdings-reconcile-transient-retry | P2 | proposed | нет tasks.md |
| 70 | activity-pagination-completeness | P2 | proposed | нет tasks.md |
| 81 | composition-root-builders | P2 | in-progress | 27/52 |
| 85 | protection-native-redesign | P2 | proposed | нет tasks.md |
| 122 | fill-lifecycle-to-ledger | P0 | proposed | 8/30 |
Известные недоработки
- Правило
RuleResolveAbsentLocalOrder::evaluate(auto_heal.rs) само вызывает отмену на бирже при неоднозначном статусе «open» — исполняет side-effect ВНУТРИ фазы оценки, до записи вbootstrap_actionsи до проверки потолка авто-лечения, хотя модульный комментарий тут же объявляет audit-then-side-effect инвариантом. Новое правило обязано только читать и возвращать действие; исполнение — отдельный шаг после аудита. - Состояния
LifecycleFsm—Bootstrapping, Reconciling, Ready, Draining, ShuttingDown, Halted(_); общий документ движка называет другой набор имён («Starting → … → Stopped») — ориентироваться наstates.rs. - Не заводить второй путь отмены заявки в обход
OrderRouterдля нового кода вне bootstrap-сверки — прямойOrderClientвheal_executor.rsоправдан только тем, что строка ещё не известна роутеру на этой фазе. — см.crates/pm-engine/src/lifecycle/AGENTS.md - Preflight и финальная сборка (см. «Назначение» выше) остаются вне вызова строителя НЕ как недосмотр — искусственный десятый строитель под несколько строк ранней проверки и под передачу
workersвладением единственному потребителю не заводился (design D1, «Расхождения с proposal.md»). - Стадия B (
trait Participant, реестр участников, разрез рантаймовtrading/sidecar, единственный владелец снимка состояния защиты) — design написан, код нет; идёт отдельным worktree после приёмки стадии A2 (specs/composition-root/spec.mdRequirement 4). — см.crates/pm-engine/src/app/AGENTS.md
Процесс и инструменты
Готовность: открыты P0/P1: 2
В бою: неприменимо (у компонента нет рантайм-артефакта)
Открытые карточки ROADMAP
| # | Карточка | Приоритет | Статус | Прогресс |
|---|---|---|---|---|
| 50 | tchs-fsd-implementation | P3 | blocked | нет tasks.md |
| 61 | reduce-rust-dependency-surface | P1 | proposed | нет tasks.md |
| 71 | narrow-deploy-rollback-set | P2 | proposed | нет tasks.md |
| 84 | common-utilities-consolidation | P2 | proposed | 3/31 |
| 116 | frontend-typecheck-errors | P2 | merged | нет tasks.md |
| 123 | docs-site-and-component-map | P1 | proposed | 53/66 |
Известные недоработки
(agents_md компонента пуст — источника «Сейчас ≠ цель» нет)
Операции кошелька
Готовность: открыты P0/P1: 1
В бою: pm-cli@9cb8b51f14e968d3fcfa90ddd3526922556ac054 (выкачено 2026-09-14T20:23:51Z)
Открытые карточки ROADMAP
| # | Карточка | Приоритет | Статус | Прогресс |
|---|---|---|---|---|
| 38 | loser-residual-not-queued-for-redemption | P2 | in-progress | нет tasks.md |
| 44 | open-positions-redeem-pending-tabs | P3 | in-progress | нет tasks.md |
| 100 | paired-merge-strategy-archival | P1 | deployed | нет tasks.md |
| 80 | strategy-config-domain-unification | P2 | in-progress | 30/32 |
| 83 | redeem-batch-cycle | P2 | proposed | 0/28 |
| 94 | — | P2 | proposed | — |
| 115 | redeem-status-live-projection | P2 | merged | нет tasks.md |
| 117 | redeem-no-payout-event | P2 | merged | нет tasks.md |
Известные недоработки
Не множить R7-долг (п. 5) новыми прямыми импортами pm_engine::. Не писать в config.db/wallets.db в обход pm_common::*_store. Подкоманда strategy update снята целиком (карточка remove-pm-cli-strategy-update, 2026-08-31) — не восстанавливать её без решения оператора. Она была снята за ДВА подтверждённых чтением дефекта, записанных здесь для памяти:
--field enabledписал активацию голымstore.update_field(label, "enabled", value)→StrategyConfigStore::set_enabledв обход открытых-позиций-проверки, которую несут толькоactivate/deactivate(п. 6) — дублирующий путь БЕЗ защиты.set_enabledс тех пор УДАЛЁН целиком (openspecstrategy-config-domain-unification, D8, 2026-08-31) — найденных вызывающих в воркспейсе не было ни одного. — см.crates/pm-cli/AGENTS.mdРасхождений сextension-points.md§«RedemptionPort» не обнаружено — трейт, сигнатура и таксономия ошибок совпадают дословно. Не расширятьRedemptionErrorтретьим вариантом без обновления и этого документа, иRedemptionService— таксономия закрытая по построению (Transient— default для неизвестного). — см.crates/pm-engine/src/adapters/redemption/AGENTS.md
Хранилище и журнал
Готовность: открыты P0/P1: 3
В бою: pm-engine@9cb8b51f14e968d3fcfa90ddd3526922556ac054 (выкачено 2026-09-14T20:23:51Z)
Открытые карточки ROADMAP
| # | Карточка | Приоритет | Статус | Прогресс |
|---|---|---|---|---|
| 110 | post-fill-coverage-refresh | P1 | planned | 0/49 |
| 82 | persistence-ports-by-writer | P2 | proposed | 7/23 |
| 86 | durable-cancel-fill-resolution | P0 | in-progress | 17/18 |
| 122 | fill-lifecycle-to-ledger | P0 | proposed | 8/30 |
Известные недоработки
storage.mdназывает CI-гейт единственного писателя («ast-grep сканер в CI блокирует INSERT/UPDATE/DELETE вне writer'а») — файла правила НЕТ нигде в репозитории (проверено дважды: поиском по.yml, поscripts//.github/, по слову «ast-grep»/«single-writer»). Дисциплина держится обзором, не инструментом.storage.mdназывает архитектурный тест, роняющий билд наREALв финансовых колонках — такого теста не найдено (провереныsqlite_tests.rs,tests/it/*, репозиторий целиком по словуREALкак отдельному токену).- 4 таблицы в DDL не названы нигде в
storage.md:order_fill_accounting(:1612),economic_ledger_entries(:1645),ledger_delivery_intents(:1691),redeem_confirmations(:1720) — след архивных карточек2026-08-21-fill-accounting-idempotencyиeconomic-ledger-core. История бюджета теперь materialized вbudget_hourly(парнаяbalance_hourlyвитрина изdocs/target/observability.md); отдельнойcapital_hourlyв текущем дереве нет.economic_ledger_entries/ledger_delivery_intentsБОЛЬШЕ НЕ пустые следом архивной карточки —economic-ledger-activationзавела семь из восьми реальных писателей (engine/AGENTS.md§«Экономический журнал»);storage.mdпо-прежнему не упоминает ни одну из четырёх таблиц — расхождение остаётся тем же по природе, ноeconomic_ledger_entriesбольше не молчит. — см.crates/pm-engine/src/adapters/storage/AGENTS.md