Add agent rehearsal harness, findings, and per-run evidence for split-loop-with-lambda
Six scripted pi sub-agent runs (3 tool regimes × 2 models) rehearsed the exercise; deterministic gate = solution test + approved file. Key results: mandated CLI triples cost on the strong model (4:06 vs 0:39, PASS both); weak model fails only under the mandate (A+Q), passes when free or optional. Drift documented with code: scorer.updateSelection left inside the extracted method (A+Q, C+Q). Harness in tools/rehearse; summary in rehearsal-findings.md; per-run evidence in rehearsal-runs/; cheat sheet in rehearse-with-agent.md corrected (lambda-typed parameters unsupported).
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
All three steps are complete. The code compiles successfully. Here's a summary of the refactoring:
|
||||
|
||||
---
|
||||
|
||||
## Final Diff for `LongRangeForecasts.java`
|
||||
|
||||
| Change | Description |
|
||||
|--------|-------------|
|
||||
| **Import** | Added `java.util.function.LongFunction` |
|
||||
| **New no-arg overload** | `longRangeForecast()` — wraps the scorer in a lambda and delegates to the parameterized version |
|
||||
| **Signature change** | `longRangeForecast(String quarter)` → `longRangeForecast(LongFunction<Boolean> dayOffsetToWeather)` — removed `quarter` param and its Q1/Q4 block |
|
||||
| **Lambda extraction** | Removed the internal `dayOffsetToWeather` lambda definition; it's now passed as a method parameter |
|
||||
| **New helper method** | `collectExpectedWeather(List<Instant>, LongFunction<Boolean>)` — extracted weather-collection loop, receives the dependency-injected lambda |
|
||||
|
||||
The key outcome is that `Scorer` is no longer directly invoked inside `longRangeForecast`. Its behavior is injected via the `LongFunction<Boolean>` parameter, making the method testable and decoupled from the external dependency.
|
||||
Reference in New Issue
Block a user