Feature: Decision recording hook in Strategize phase As a strategy actor I want to record decisions during the Strategize phase So that every choice point is captured with full context for replay and correction Background: Given a strategize decision service And a strategize decision hook for plan "01JQAAAAAAAAAAAAAAAAAAAA01" # --- Strategy Choice Recording --- Scenario: Record a strategy choice decision When I record a strategy choice with question "Which approach?" and option "Approach A" Then the strat decision should be recorded successfully And the strat decision type should be "strategy_choice" And the strat decision question should be "Which approach?" And the strat decision chosen_option should be "Approach A" And the strat decision phase should be "strategize" Scenario: Record strategy choice with alternatives When two strat alternatives "Approach B" and "Approach C" And I record a strategy choice with question "Which approach?" and option "Approach A" Then the strat decision should have 2 alternatives considered Scenario: Record strategy choice with confidence score When strat confidence 0.85 And I record a strategy choice with question "Which approach?" and option "Approach A" Then the strat decision confidence score should be 0.85 Scenario: Record strategy choice with rationale When strat rationale "Approach A is more efficient" And I record a strategy choice with question "Which approach?" and option "Approach A" Then the strat decision rationale should be "Approach A is more efficient" Scenario: Record strategy choice with context snapshot When strat context data containing "key1" "value1" And I record a strategy choice with question "Which approach?" and option "Approach A" Then the strat decision context snapshot hash should start with "sha256:" And the strat decision context snapshot ref should not be empty Scenario: Record strategy choice with actor state When strat actor state containing "reasoning" "step1" And I record a strategy choice with question "Which approach?" and option "Approach A" Then the strat decision actor state ref should not be empty Scenario: Record strategy choice with relevant resources When two strat relevant resources "resource1" and "resource2" And I record a strategy choice with question "Which approach?" and option "Approach A" Then the strat decision should have 2 relevant resources Scenario: Record strategy choice with empty question raises error When I try to record a strategy choice with empty question Then a strat validation error should be raised And the strat error should mention "question" Scenario: Record strategy choice with empty option raises error When I try to record a strategy choice with empty chosen_option Then a strat validation error should be raised And the strat error should mention "chosen_option" # --- Resource Selection Recording --- Scenario: Record a resource selection decision When I record a resource selection with question "Which resources?" and option "src/main.py" Then the strat decision should be recorded successfully And the strat decision type should be "resource_selection" And the strat decision question should be "Which resources?" And the strat decision chosen_option should be "src/main.py" Scenario: Record resource selection with alternatives When two strat alternatives "src/test.py" and "src/utils.py" And I record a resource selection with question "Which resources?" and option "src/main.py" Then the strat decision should have 2 alternatives considered Scenario: Record resource selection with confidence When strat confidence 0.9 And I record a resource selection with question "Which resources?" and option "src/main.py" Then the strat decision confidence score should be 0.9 # --- Subplan Spawn Recording --- Scenario: Record a subplan spawn decision When I record a subplan spawn with question "Should we decompose?" and option "Create subplan for feature X" Then the strat decision should be recorded successfully And the strat decision type should be "subplan_spawn" And the strat decision question should be "Should we decompose?" And the strat decision chosen_option should be "Create subplan for feature X" Scenario: Record subplan spawn with alternatives When two strat alternatives "Implement inline" and "Create parallel subplans" And I record a subplan spawn with question "Should we decompose?" and option "Create subplan for feature X" Then the strat decision should have 2 alternatives considered Scenario: Record subplan spawn with confidence When strat confidence 0.75 And I record a subplan spawn with question "Should we decompose?" and option "Create subplan for feature X" Then the strat decision confidence score should be 0.75 # --- Invariant Enforcement Recording --- Scenario: Record an invariant enforced decision When I record an invariant enforced with question "Apply security invariant?" and option "Enforce code review" Then the strat decision should be recorded successfully And the strat decision type should be "invariant_enforced" And the strat decision question should be "Apply security invariant?" And the strat decision chosen_option should be "Enforce code review" Scenario: Record invariant enforced with rationale When strat rationale "Security policy requires code review" And I record an invariant enforced with question "Apply security invariant?" and option "Enforce code review" Then the strat decision rationale should be "Security policy requires code review" # --- Context Snapshot Capture --- Scenario: Context snapshot captures hot context hash When strat context data containing "plan_id" "01JQAAAAAAAAAAAAAAAAAAAA01" And I record a strategy choice with question "Which approach?" and option "Approach A" Then the strat decision context snapshot hash should start with "sha256:" Scenario: Context snapshot captures actor state reference When strat actor state containing "step" "1" And I record a strategy choice with question "Which approach?" and option "Approach A" Then the strat decision actor state ref should start with "checkpoint:" Scenario: Context snapshot captures relevant resources When three strat relevant resources "res1" and "res2" and "res3" And I record a strategy choice with question "Which approach?" and option "Approach A" Then the strat decision should have 3 relevant resources And each strat resource should have a valid resource_id # --- Error Handling --- Scenario: Recording with invalid plan_id raises error Given a strategize decision hook with empty plan_id Then a strat validation error should be raised And the strat error should mention "plan_id" Scenario: Recording failure logs warning and re-raises exception When the strat decision service fails to persist And I try to record a strategy choice that raises an exception Then a strat warning should be logged And the strat exception should be re-raised # --- Parent Decision Tracking --- Scenario: Record decision with parent decision ID When strat parent decision ID "01PARENT000000000000000000" And I record a strategy choice with question "Which approach?" and option "Approach A" Then the strat decision parent_decision_id should be "01PARENT000000000000000000" Scenario: Record multiple decisions in tree structure When I record a strategy choice with question "Q1" and option "A1" And I save the first strat decision And strat parent decision ID from the first decision And I record a strategy choice with question "Q2" and option "A2" Then the second strat decision parent_decision_id should match the first decision And both strat decisions should be in the same plan