4.9 KiB
Схема среза ЕХ ex-payload-v1 — план
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: схема contracts/ex-payload-v1.schema.json с примерами и проверкой, §15 правил и правки DBML v5.26 — к старту
AURORA-1560 (12.11.2026).
Architecture: JSON Schema 2020-12: конверт + data по item_type через $defs; DTO-определения повторяют
обязательные поля контрактов API (additionalProperties: true в data). Примеры — на числах
scripts/kfo_contract/kfo_example.py (КФО) и ручных данных той же группы «Альфа/Бета/Гамма».
Tech Stack: JSON Schema 2020-12, scripts/validate_contracts.py (jsonschema), Markdown, DBML, OpenSpec.
Spec: openspec/changes/ex-payload-schema/design.md, proposal.md.
Пути — от корня worktree /Users/andrey.epifancev/projects/awp-ca/.wt/ex-payload/docs.
Global Constraints
schema_version = "1.0";$id—ex-payload-v1.schema.json;units ∈ {rub, thousand_rub, none}.item_type ∈ {summary_osv, vgo_pairs, chess, kfo_balance, kfo_income, goodwill, corrections, other_report, version_card}; уprimary_documentpayload нет.- Деньги —
^-?\d{1,16}\.\d{2}$; конверт —additionalProperties: false,data—true. audit_action.EX_SNAPSHOT_WRITE(разделKFO);ex_snapshot_item.item_type+version_card; пояснениеex_snapshot.status.- Новые OQ — с OQ-195.
Review Focus
- Конверт с
item_type, не совпадающим сdata(например,kfo_balanceс данными гудвилла) — схема отклоняет. kfo_balanceбезrequisites.corrections_balance— отклоняется (нужно форме 2.03.01.01с).goodwillпри выключенном гудвилле не пишется — правило в §15, не в схеме; пример — только включённый.- Деньги числом (
1000.5) вместо строки — отклоняется. - Пример
kfo_balanceсовпадает с примеромgoodwill_exceededконтракта КФО по строкам и сводке.
Пункты 1, 2, 4 — отрицательные примеры в тесте Task 1; 5 — генерацией примера из того же скрипта.
Task 1: Схема, примеры, проверка
Files: Create contracts/ex-payload-v1.schema.json, contracts/examples/ex-payload-*.json (минимум kfo_balance,
version_card, corrections, summary_osv, vgo_pairs, chess, goodwill), scripts/kfo_contract/gen_ex_examples.py;
Modify scripts/validate_contracts.py (+ схема ex-payload, шаблон ex-payload-), scripts/kfo_contract/ (тест отрицательных случаев).
- Step 1: тест
scripts/kfo_contract/test_ex_payload.py— положительные примеры проходят; отрицательные (Review Focus 1, 2, 4) — нет. Run:.venv/bin/python -I scripts/kfo_contract/test_ex_payload.py— Expected: FAIL (схемы нет). - Step 2: схема + генератор примеров (КФО — из
kfo_example.py/gen_kfo_openapi.result()) + регистрация вvalidate_contracts.py. - Step 3: Run тест и
make validate-contracts— Expected: PASS, всеex-payload-*OK. - Step 4: commit.
Task 2: §15, DBML, OQ
Files: Modify context/05-domain-rules.md (+ §15 после §13), model/data-model-v5.26.dbml, model/entities-v5.26.md,
context/07-open-questions.md (OQ-195…), context/09-delivery-plan.md:287 (ссылка на §15).
- Step 1: Run
grep -c "EX_SNAPSHOT_WRITE\|version_card" model/data-model-v5.26.dbml— Expected: 0 (RED). - Step 2: §15 по design §4.3; DBML и entities по §4.4 (пункты changelog 6–8 v5.26); OQ: кто архивирует (ссылка на 1397), ключ ГК/ГСК, повтор при сбое, PDF.
- Step 3: Run тот же grep — Expected: ≥ 2;
make check— зелёный. - Step 4: commit.
Task 3: Spec delta, ревью, PR, Jira
- Step 1:
specs/arm-core/spec.md(ADDED: «Срез ЕХ при верификации», «Payload элемента среза»),tasks.md;make validate-openspec CHANGE=ex-payload-schema— valid. - Step 2: финальное ревью (opus); Critical/Important — исправить.
- Step 3: push, PR (base
main, «сливать после #207»), вложения в AURORA-1560 (схема,05-domain-rules.md, DBML), комментарий в 1560 и 2001.