Skip to content

fix(plan): drop SeededAppendRules note when a text card sets strategy - #880

Merged
Birfy merged 1 commit into
mainfrom
fix/879-text-strategy-note
Nov 8, 2026
Merged

Birfy merged 1 commit into
mainfrom
fix/879-text-strategy-note

Conversation

@Birfy

@Birfy Birfy commented Nov 8, 2026

Copy link
Copy Markdown
Collaborator

Closes #879

What changed

kind=text still builds the default SeededAppendRules strategy, but plan used to announce that default even when a card or caller replaced it. gepa (SingleSlot), ace (ACEPlaybook), dgm (HarnessStrategy) and skillopt (SkillDocStrategy) all set strategy in their knobs; rrsi and a bare text spec do not.

The generic #837 note is now added after knob merge, and only when strategy is not in those knobs. A compose(..., strategy=...) override is treated the same way. Algorithm-specific notes (for example gepa's "SingleSlot + full-rewrite … not SeededAppendRules") are unchanged.

Verification at the tip

Tip SHA: 52948c9
Ran:

  • pytest tests/test_seeded_append_text.py tests/test_evolvespec.py tests/test_cli_algorithms_run.py tests/test_changelog_fragments.py → 143 passed
    Not run:
  • full suite — CI

Closes #879

kind=text still defaults to SeededAppendRules, but gepa/ace/dgm/skillopt
(and compose(strategy=...)) replace it. Plan now emits the generic
#837 note only when that default actually survives knob merge.
@Birfy

Birfy commented Nov 8, 2026

Copy link
Copy Markdown
Collaborator Author

Verdict: PASS
Tip SHA: 52948c9
Ran: pytest tests/test_seeded_append_text.py tests/test_evolvespec.py tests/test_cli_algorithms_run.py tests/test_changelog_fragments.py at the tip → 143 passed; compose probes confirm the generic kind=text: SeededAppendRules note stays for no algorithm and rrsi, and drops for ace / dgm / gepa / skillopt and for compose(..., strategy=SingleSlot(...)); risk_gate.py from main → T2.
Not run: full suite (CI covers 3.9–3.13).

Correctness. The default SeededAppendRules is still built for kind=text; the note that describes it now waits until after knob merge (kind defaults < ov.knobs < spec.evolve < caller overrides). A card or compose(strategy=...) that puts strategy in those knobs will overwrite the default via kwargs.update(knobs), so skipping the note matches what will actually run. rrsi and a bare text spec leave strategy alone, so they still get the #837 sentence. Matching tests use the kind=text: SeededAppendRules prefix so gepa's own "not SeededAppendRules" note does not count as the generic claim.

Design fit. Small and local: no change to strategy selection itself, only to the plan note that was lying about it. Changelog fragment is present (Fixed, #879).

Tests/docs. Parametrized coverage of the five text cards plus a caller override; existing #837 compose test still checks that a bare text spec uses SeededAppendRules and mentions it.

@Birfy
Birfy enabled auto-merge (squash) November 8, 2026 02:09
@Birfy
Birfy merged commit b37fa40 into main Nov 8, 2026
9 checks passed
@Birfy
Birfy deleted the fix/879-text-strategy-note branch November 8, 2026 02:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

plan: kind=text 'SeededAppendRules' note contradicts gepa/ace/dgm/skillopt, which replace the strategy

1 participant