Skip to content

Компоненты ​

Сгенерировано 2026-09-15 из HEAD 0afeb6bb63a3f0ba6b77d5c8e8954631a8a56952. Страница порождается scripts/components-page.sh из закоммиченного состояния репозитория — не редактируется руками.

Релиз (манифест VPS) ​

АртефактКоммитВыкачено
observability-dashboards79b6bf0a5b8c4d2dc03be80f493d9ddce9373b3f2026-08-27T22:41:21Z
pm-cli9cb8b51f14e968d3fcfa90ddd3526922556ac0542026-09-14T20:23:51Z
pm-engine9cb8b51f14e968d3fcfa90ddd3526922556ac0542026-09-14T20:23:51Z
pm-engine-dashboard9cb8b51f14e968d3fcfa90ddd3526922556ac0542026-09-14T20:23:51Z
spa-engine9cb8b51f14e968d3fcfa90ddd3526922556ac0542026-09-14T20:23:51Z

Торговые правила ​

Готовность: открыты P0/P1: 10

В бою: pm-engine@9cb8b51f14e968d3fcfa90ddd3526922556ac054 (выкачено 2026-09-14T20:23:51Z)

Открытые карточки ROADMAP ​

#КарточкаПриоритетСтатусПрогресс
49composable-portfolio-strategy-domainP3proposedнет tasks.md
4exit-sizing-from-sellable-balanceP0in-progressнет tasks.md
6lossless-stop-confirm-trade-windowP1in-progressнет tasks.md
11stop-execution-price-floorP1in-progressнет tasks.md
13directional-dca-fill-progress-and-dust-terminalP2blockedнет tasks.md
17entry-observation-stageP1in-progressнет tasks.md
22listing-fast-path-admissionP2in-progressнет tasks.md
23entry-band-on-prospective-order-priceP2in-progressнет tasks.md
27stop-breach-character-and-depthP1in-progressнет tasks.md
28flow-imbalance-stop-confirmationP1blockedнет tasks.md
29entry-protection-threshold-derivationP2in-progressнет tasks.md
30directional-entry-quality-confirmationP2in-progressнет tasks.md
31stop-confirm-evidence-vs-book-liquidityP2proposedнет tasks.md
32rank-price-schedule-gateP3proposedнет tasks.md
33stop-rank-coupled-exitP3proposedнет tasks.md
45orders-table-quote-rank-liquidity-columnsP2in-progress0/42
100paired-merge-strategy-archivalP1deployedнет tasks.md
103entry-observation-dashboard-tableP2proposedнет tasks.md
108spread-aware-buy-price-improvementP1merged23/25
51spread-mm-strategyP3blockedнет tasks.md
62self-custodial-combo-rfq-makerP3proposedнет tasks.md
77rtds-consumer-driven-activationP2deployed15/16
111entry-price-decision-analyticsP1plannedнет tasks.md
112rank-exit-config-cohesionP2plannedнет tasks.md
114dca-skip-observabilityP2mergedнет tasks.md
118entry-admission-rank-blocked-after-resetP1proposedнет 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 ​

#КарточкаПриоритетСтатусПрогресс
16metrics-series-storeP1in-progressнет tasks.md
18outcome-liquidity-profile-recordingP2in-progressнет tasks.md
19entry-funnel-domain-rollupP2in-progressнет tasks.md
20order-reject-taxonomy-observabilityP2in-progressнет tasks.md
24directional-entry-pattern-datasetP2in-progressнет tasks.md
25analytics-mcp-read-surfaceP2in-progressнет tasks.md
53trustworthy-verdict-foundationP2in-progressнет tasks.md
107orderbook-stale-diagnosticsP1mergedнет tasks.md
111entry-price-decision-analyticsP1plannedнет tasks.md
114dca-skip-observabilityP2mergedнет tasks.md
120admission-rank-unavailable-metric-missingP2proposedнет tasks.md
121histogram-metrics-missing-bucket-schemesP2proposedнет 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 ​

#КарточкаПриоритетСтатусПрогресс
41exit-reason-overlay-on-fills-chartP2in-progressнет tasks.md
42position-order-local-midnight-columnP2in-progressнет tasks.md
44open-positions-redeem-pending-tabsP3in-progressнет tasks.md
45orders-table-quote-rank-liquidity-columnsP2in-progress0/42
100paired-merge-strategy-archivalP1deployedнет tasks.md
103entry-observation-dashboard-tableP2proposedнет tasks.md
46frontend-component-pipelineP3proposedнет tasks.md
47harden-secrets-and-dashboard-authP3proposedнет tasks.md
73capital-first-dashboard-overviewP2planned0/38
74engine-unrealized-pnl-valuationP2proposedнет tasks.md
87midnight-column-human-durationP2proposedнет tasks.md
113position-closed-size-live-seed-parityP2mergedнет tasks.md
115redeem-status-live-projectionP2mergedнет tasks.md
116frontend-typecheck-errorsP2mergedнет tasks.md
117redeem-no-payout-eventP2mergedнет 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.md
  • bot_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 ​

#КарточкаПриоритетСтатусПрогресс
21discovery-market-slug-filterP2in-progressнет tasks.md
26shared-market-data-publisherP2proposedнет tasks.md
28flow-imbalance-stop-confirmationP1blockedнет tasks.md
31stop-confirm-evidence-vs-book-liquidityP2proposedнет tasks.md
101stale-orderbook-rest-refreshP1deployed32/35
48sharded-market-data-with-serial-admissionP3blockedнет tasks.md
77rtds-consumer-driven-activationP2deployed15/16
78rtds-transport-remediationP2deployedнет tasks.md
104rtds-ring-and-window-amortizedP3deployedнет tasks.md
105orderbook-rest-observation-stampP1blockedнет tasks.md
106book-freshness-rest-confirmationP1planned0/50
107orderbook-stale-diagnosticsP1mergedнет 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 ​

#КарточкаПриоритетСтатусПрогресс
3position-coverage-verificationP1in-progressнет tasks.md
4exit-sizing-from-sellable-balanceP0in-progressнет tasks.md
110post-fill-coverage-refreshP1planned0/49
7ambiguous-submit-outcomeP1in-progressнет tasks.md
10entry-clip-completion-reserveP1in-progressнет tasks.md
43durable-position-market-labelsP2proposedнет tasks.md
45orders-table-quote-rank-liquidity-columnsP2in-progress0/42
48sharded-market-data-with-serial-admissionP3blockedнет tasks.md
73capital-first-dashboard-overviewP2planned0/38
74engine-unrealized-pnl-valuationP2proposedнет tasks.md
86durable-cancel-fill-resolutionP0in-progress17/18
113position-closed-size-live-seed-parityP2mergedнет tasks.md
117redeem-no-payout-eventP2mergedнет tasks.md
122fill-lifecycle-to-ledgerP0proposed8/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 ​

#КарточкаПриоритетСтатусПрогресс
7ambiguous-submit-outcomeP1in-progressнет tasks.md
12gtd-expiration-in-futureP1in-progressнет tasks.md
94—P2proposed—
122fill-lifecycle-to-ledgerP0proposed8/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 ​

#КарточкаПриоритетСтатусПрогресс
9accounting-drain-shutdown-discriminationP1in-progressнет tasks.md
34db-driven-activation-and-run-modeP1in-progressнет tasks.md
36exchange-health-resilienceP2blockedнет tasks.md
37status-page-component-relevance-gateP2in-progressнет tasks.md
40holdings-bootstrap-off-critical-pathP1deployed24/25
69holdings-reconcile-transient-retryP2proposedнет tasks.md
70activity-pagination-completenessP2proposedнет tasks.md
81composition-root-buildersP2in-progress27/52
85protection-native-redesignP2proposedнет tasks.md
122fill-lifecycle-to-ledgerP0proposed8/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.md Requirement 4). — см. crates/pm-engine/src/app/AGENTS.md

Процесс и инструменты ​

Готовность: открыты P0/P1: 2

В бою: неприменимо (у компонента нет рантайм-артефакта)

Открытые карточки ROADMAP ​

#КарточкаПриоритетСтатусПрогресс
50tchs-fsd-implementationP3blockedнет tasks.md
61reduce-rust-dependency-surfaceP1proposedнет tasks.md
71narrow-deploy-rollback-setP2proposedнет tasks.md
84common-utilities-consolidationP2proposed3/31
116frontend-typecheck-errorsP2mergedнет tasks.md
123docs-site-and-component-mapP1proposed53/66

Известные недоработки ​

(agents_md компонента пуст — источника «Сейчас ≠ цель» нет)

Операции кошелька ​

Готовность: открыты P0/P1: 1

В бою: pm-cli@9cb8b51f14e968d3fcfa90ddd3526922556ac054 (выкачено 2026-09-14T20:23:51Z)

Открытые карточки ROADMAP ​

#КарточкаПриоритетСтатусПрогресс
38loser-residual-not-queued-for-redemptionP2in-progressнет tasks.md
44open-positions-redeem-pending-tabsP3in-progressнет tasks.md
100paired-merge-strategy-archivalP1deployedнет tasks.md
80strategy-config-domain-unificationP2in-progress30/32
83redeem-batch-cycleP2proposed0/28
94—P2proposed—
115redeem-status-live-projectionP2mergedнет tasks.md
117redeem-no-payout-eventP2mergedнет 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 с тех пор УДАЛЁН целиком (openspec strategy-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 ​

#КарточкаПриоритетСтатусПрогресс
110post-fill-coverage-refreshP1planned0/49
82persistence-ports-by-writerP2proposed7/23
86durable-cancel-fill-resolutionP0in-progress17/18
122fill-lifecycle-to-ledgerP0proposed8/30

Известные недоработки ​

  1. storage.md называет CI-гейт единственного писателя («ast-grep сканер в CI блокирует INSERT/UPDATE/DELETE вне writer'а») — файла правила НЕТ нигде в репозитории (проверено дважды: поиском по .yml, по scripts//.github/, по слову «ast-grep»/«single-writer»). Дисциплина держится обзором, не инструментом.
  2. storage.md называет архитектурный тест, роняющий билд на REAL в финансовых колонках — такого теста не найдено (проверены sqlite_tests.rs, tests/it/*, репозиторий целиком по слову REAL как отдельному токену).
  3. 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