9cfa1dd1d7
CI / lint (pull_request) Successful in 1m25s
CI / typecheck (pull_request) Successful in 1m48s
CI / quality (pull_request) Successful in 1m52s
CI / security (pull_request) Successful in 1m52s
CI / push-validation (pull_request) Successful in 36s
CI / helm (pull_request) Successful in 38s
CI / build (pull_request) Successful in 46s
CI / integration_tests (pull_request) Successful in 3m55s
CI / unit_tests (pull_request) Successful in 6m46s
CI / docker (pull_request) Successful in 1m33s
CI / coverage (pull_request) Successful in 10m45s
CI / status-check (pull_request) Successful in 7s
CI / lint (push) Successful in 56s
CI / quality (push) Successful in 1m15s
CI / typecheck (push) Successful in 1m25s
CI / security (push) Successful in 1m30s
CI / build (push) Successful in 34s
CI / push-validation (push) Successful in 40s
CI / helm (push) Successful in 43s
CI / benchmark-regression (push) Failing after 45s
CI / integration_tests (push) Successful in 3m55s
CI / unit_tests (push) Successful in 4m21s
CI / e2e_tests (push) Successful in 4m26s
CI / docker (push) Successful in 1m28s
CI / coverage (push) Successful in 12m20s
CI / status-check (push) Successful in 3s
CI / benchmark-publish (push) Successful in 1h20m8s
SubplanService.spawn() now re-records all invariant_enforced decisions from the parent plan decision tree onto each child plan decision tree. This satisfies the spec requirement: 'recorded as invariant_enforced decisions that propagate to child plans.' (Glossary → Invariant) Previously, child plans started Strategize with a completely empty invariant set, violating the spec's propagation requirement. non_overridable global invariants enforced on the parent were not guaranteed to be enforced on child plans. The fix adds _propagate_invariant_decisions() to SubplanService which queries the parent plan's invariant_enforced decisions and re-records each one on the child plan using DecisionService.record_decision(). The DecisionService is already injected into SubplanService, so no new dependencies are required. BDD regression coverage added in features/tdd_invariant_propagation_subplan.feature with 4 scenarios covering: single invariant propagation, multiple invariant propagation, non_overridable invariant propagation, and clean spawn with no parent invariants. ISSUES CLOSED: #9131
39 lines
2.0 KiB
Gherkin
39 lines
2.0 KiB
Gherkin
@tdd_issue @tdd_issue_9131 @mock_only
|
|
Feature: TDD Issue #9131 — invariant_enforced decisions not propagated to child plans on subplan spawn
|
|
As a developer
|
|
I want to verify that SubplanService.spawn() propagates invariant_enforced decisions
|
|
from the parent plan to each child plan's decision tree
|
|
So that child plans start Strategize with the parent's enforced invariant set
|
|
|
|
The spec states: "recorded as invariant_enforced decisions that propagate to child plans."
|
|
SubplanService.spawn() currently creates child Plan objects with no invariant_enforced
|
|
decisions, violating the spec's propagation requirement.
|
|
|
|
@tdd_issue @tdd_issue_9131
|
|
Scenario: Child plan receives parent invariant_enforced decisions on spawn
|
|
Given a parent plan with invariant_enforced decisions recorded
|
|
And a valid spawn entry for the parent plan
|
|
When I spawn a child plan via SubplanService
|
|
Then the decision service should have recorded invariant_enforced decisions for the child plan
|
|
|
|
@tdd_issue @tdd_issue_9131
|
|
Scenario: Child plan receives all parent invariant_enforced decisions
|
|
Given a parent plan with 3 invariant_enforced decisions recorded
|
|
And a valid spawn entry for the parent plan
|
|
When I spawn a child plan via SubplanService
|
|
Then the child plan should have 3 invariant_enforced decisions recorded
|
|
|
|
@tdd_issue @tdd_issue_9131
|
|
Scenario: Non-overridable global invariants are propagated to child plans
|
|
Given a parent plan with a non_overridable invariant_enforced decision
|
|
And a valid spawn entry for the parent plan
|
|
When I spawn a child plan via SubplanService
|
|
Then the child plan should have the non_overridable invariant decision propagated
|
|
|
|
@tdd_issue @tdd_issue_9131
|
|
Scenario: Child plan with no parent invariant_enforced decisions spawns cleanly
|
|
Given a parent plan with no invariant_enforced decisions
|
|
And a valid spawn entry for the parent plan
|
|
When I spawn a child plan via SubplanService
|
|
Then the spawn should succeed with no invariant decisions recorded for the child
|