diff options
| author | Claudomator Agent <agent@claudomator> | 2026-03-11 11:01:21 +0000 |
|---|---|---|
| committer | Claudomator Agent <agent@claudomator> | 2026-03-11 11:01:21 +0000 |
| commit | ed94896372686ce3a032e8f3d76144eb83e2d8cc (patch) | |
| tree | b471345a92c4b90673637db54e1f46b9cd8a5511 /internal/executor | |
| parent | 4f83d35fa47bc71b31e0f92a0927bea8910c01b6 (diff) | |
feat: require agents to write a final summary before exiting
Add a mandatory '## Final Summary' section to planningPreamble
instructing agents to output a 2-5 sentence summary paragraph
(headed by '## Summary') as their last output before exiting.
Adds three tests to verify the section and its required content
are present in the preamble.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/executor')
| -rw-r--r-- | internal/executor/preamble.go | 11 | ||||
| -rw-r--r-- | internal/executor/preamble_test.go | 26 |
2 files changed, 37 insertions, 0 deletions
diff --git a/internal/executor/preamble.go b/internal/executor/preamble.go index e50c16f..1993361 100644 --- a/internal/executor/preamble.go +++ b/internal/executor/preamble.go @@ -46,6 +46,17 @@ The sandbox is rejected if there are any uncommitted modifications. --- +## Final Summary (mandatory) + +Before exiting, write a final summary paragraph (2-5 sentences) as your last output. Start it with "## Summary" on its own line. Describe: +- What was accomplished +- Key decisions made +- Any issues or follow-ups needed + +This summary will be extracted and displayed in the task UI. + +--- + ` func withPlanningPreamble(instructions string) string { diff --git a/internal/executor/preamble_test.go b/internal/executor/preamble_test.go new file mode 100644 index 0000000..448ad3a --- /dev/null +++ b/internal/executor/preamble_test.go @@ -0,0 +1,26 @@ +package executor + +import ( + "strings" + "testing" +) + +func TestPlanningPreamble_ContainsFinalSummarySection(t *testing.T) { + if !strings.Contains(planningPreamble, "## Final Summary (mandatory)") { + t.Error("planningPreamble missing '## Final Summary (mandatory)' heading") + } +} + +func TestPlanningPreamble_SummaryRequiresMarkdownHeader(t *testing.T) { + if !strings.Contains(planningPreamble, `Start it with "## Summary"`) { + t.Error("planningPreamble does not instruct agent to start summary with '## Summary'") + } +} + +func TestPlanningPreamble_SummaryDescribesRequiredContent(t *testing.T) { + for _, phrase := range []string{"What was accomplished", "Key decisions made", "Any issues or follow-ups"} { + if !strings.Contains(planningPreamble, phrase) { + t.Errorf("planningPreamble missing required summary content description: %q", phrase) + } + } +} |
