Skip to content

INT03: prevent release of policy / dataset windows the Backtest runtime cannot execute #263

Description

@hjcud

Production observation

The single authorized INT03 journey after Development release 31302328826 created bot 0d992b3b-496b-3d8f-9b66-101f538c97aa and automatic run 19d2ce6e-6e99-3810-818b-fac2a05eef54.

The public release-input API advertised and the release endpoint accepted:

  • execution policy development-official-backtest-2026-q3-v1, whose immutable artifact period is 2016-07-01..2026-07-01
  • adjusted 30m dataset manifest 7f7113c9-3b02-4098-97ec-0baa07e2b3b0, 2024-01-01..2024-02-01
  • Backtest calendar xnys-2024-2026:1.0.0, coverage 2024-01-01..2026-12-31

The run row reports evaluation 2024-01-01..2024-02-01 and normalized initial cash 100000.00000000, but the worker schedules the immutable policy period and fails before replay:

CalendarCoverageError: 2016-07-01 is outside the pinned XNYS coverage 2024-01-01..2026-12-31

All five deliveries failed. Backtest-engine issue #83 records the consumer-side binding and terminal-classification defect:
Idea2Strategy/Idea2Strategy-backtest-engine#83

Producer-side contract gap

GET /api/v1/strategy-release-inputs returns independent executionPolicies and datasets arrays, which presents their Cartesian product as selectable even when no runtime can execute a pair. POST /api/v1/strategies/{id}/releases accepted this incompatible pair and committed a bot/run/outbox event.

The Backtest execution contract requires every referenced policy, period, manifest, and feature pin to be locked and mutually compatible before a Run or Outbox event is committed.

Acceptance

  • Represent or select only compatible release-input combinations; independent arrays must not imply invalid pairs.
  • Recheck compatibility transactionally on strategy release, including effective evaluation period, manifest period/resolution/schema, execution policy, pinned calendar coverage/version, and required feature-materialization coverage.
  • An incompatible request fails before bot/run/outbox creation with a stable user-safe error; no work message is published.
  • Add the exact Development tuple above as a regression.
  • Publish a versioned Development policy/dataset combination that is actually executable. Do not mutate the meaning of an already locked policy version.
  • Coordinate with Backtest-engine [A11] 계정 환경설정·동의·정책 버전 #83 so producer and consumer enforce the same window rule.

No second release/run, old-run redrive, DLQ action, worker/ASG change, or direct DB write was performed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions