feat(atlas): mandate parallel delegation and add per-model variants

Atlas was delegating tasks one-by-one because the workflow framed parallel
as a conditional ("if tasks can run in parallel..."), letting models default
to the safer sequential path. The new shared ATLAS_PARALLEL_BY_DEFAULT block
flips the default: parallel is mandatory; sequential requires a NAMED
blocking dependency (input dependency or file conflict).

Adds two new prompt variants — kimi (K2.6 thinking-mode calibration:
commitment framing + concrete budgets) and opus-4-7 (counters 4.7's lower
default subagent count and literal-following bias). Recalibrates default
(Claude 4.6 family), gpt (GPT-5.5 outcome-first / decision rules over
absolutes), and gemini (preserves TOOL_CALL_MANDATE; replaces stale
session_id with task_id). All five variants share the parallel mandate
positioned BEFORE the workflow so "mandate above" references resolve.

Strengthens the orchestrator-direct-edit reminder hooks
(ORCHESTRATOR_DELEGATION_REQUIRED + DIRECT_WORK_REMINDER) with the central
challenge "Do you ACTUALLY need to be the one doing this?" — replacing the
previous bullet-heavy framing.

Tests now parametrized over all 5 variants. Adds prompt-routing.test
covering GPT/Gemini/Kimi/Opus 4.7/default routing and edge cases, plus a
session_id rejection test (every variant must use task_id for retries).
This commit is contained in:
YeonGyu-Kim
2026-05-08 16:50:41 +09:00
parent 770825422d
commit c01a89ba43
17 changed files with 918 additions and 604 deletions
+83 -100
View File
@@ -2,62 +2,33 @@ import { describe, test, expect } from "bun:test"
import { ATLAS_SYSTEM_PROMPT } from "./default"
import { ATLAS_GPT_SYSTEM_PROMPT } from "./gpt"
import { ATLAS_GEMINI_SYSTEM_PROMPT } from "./gemini"
import { ATLAS_KIMI_SYSTEM_PROMPT } from "./kimi"
import { ATLAS_OPUS_47_SYSTEM_PROMPT } from "./opus-4-7"
const ALL_VARIANTS: Array<[string, string]> = [
["default", ATLAS_SYSTEM_PROMPT],
["gpt", ATLAS_GPT_SYSTEM_PROMPT],
["gemini", ATLAS_GEMINI_SYSTEM_PROMPT],
["kimi", ATLAS_KIMI_SYSTEM_PROMPT],
["opus-4-7", ATLAS_OPUS_47_SYSTEM_PROMPT],
]
describe("Atlas prompts auto-continue policy", () => {
test("default variant should forbid asking user for continuation confirmation", () => {
// given
const prompt = ATLAS_SYSTEM_PROMPT
for (const [name, prompt] of ALL_VARIANTS) {
test(`${name} variant should forbid asking user for continuation confirmation`, () => {
const lowerPrompt = prompt.toLowerCase()
// when
const lowerPrompt = prompt.toLowerCase()
// then
expect(lowerPrompt).toContain("auto-continue policy")
expect(lowerPrompt).toContain("never ask the user")
expect(lowerPrompt).toContain("should i continue")
expect(lowerPrompt).toContain("proceed to next task")
expect(lowerPrompt).toContain("approval-style")
expect(lowerPrompt).toContain("auto-continue immediately")
})
test("gpt variant should forbid asking user for continuation confirmation", () => {
// given
const prompt = ATLAS_GPT_SYSTEM_PROMPT
// when
const lowerPrompt = prompt.toLowerCase()
// then
expect(lowerPrompt).toContain("auto-continue policy")
expect(lowerPrompt).toContain("never ask the user")
expect(lowerPrompt).toContain("should i continue")
expect(lowerPrompt).toContain("proceed to next task")
expect(lowerPrompt).toContain("approval-style")
expect(lowerPrompt).toContain("auto-continue immediately")
})
test("gemini variant should forbid asking user for continuation confirmation", () => {
// given
const prompt = ATLAS_GEMINI_SYSTEM_PROMPT
// when
const lowerPrompt = prompt.toLowerCase()
// then
expect(lowerPrompt).toContain("auto-continue policy")
expect(lowerPrompt).toContain("never ask the user")
expect(lowerPrompt).toContain("should i continue")
expect(lowerPrompt).toContain("proceed to next task")
expect(lowerPrompt).toContain("approval-style")
expect(lowerPrompt).toContain("auto-continue immediately")
})
expect(lowerPrompt).toContain("auto-continue policy")
expect(lowerPrompt).toContain("never ask the user")
expect(lowerPrompt).toContain("should i continue")
expect(lowerPrompt).toContain("proceed to next task")
expect(lowerPrompt).toContain("approval-style")
expect(lowerPrompt).toContain("auto-continue immediately")
})
}
test("all variants should require immediate continuation after verification passes", () => {
// given
const prompts = [ATLAS_SYSTEM_PROMPT, ATLAS_GPT_SYSTEM_PROMPT, ATLAS_GEMINI_SYSTEM_PROMPT]
// when / then
for (const prompt of prompts) {
for (const [, prompt] of ALL_VARIANTS) {
const lowerPrompt = prompt.toLowerCase()
expect(lowerPrompt).toMatch(/auto-continue immediately after verification/)
expect(lowerPrompt).toMatch(/immediately delegate next task/)
@@ -65,11 +36,7 @@ describe("Atlas prompts auto-continue policy", () => {
})
test("all variants should define when user interaction is actually needed", () => {
// given
const prompts = [ATLAS_SYSTEM_PROMPT, ATLAS_GPT_SYSTEM_PROMPT, ATLAS_GEMINI_SYSTEM_PROMPT]
// when / then
for (const prompt of prompts) {
for (const [, prompt] of ALL_VARIANTS) {
const lowerPrompt = prompt.toLowerCase()
expect(lowerPrompt).toMatch(/only pause.*truly blocked/)
expect(lowerPrompt).toMatch(/plan needs clarification|blocked by external/)
@@ -79,11 +46,7 @@ describe("Atlas prompts auto-continue policy", () => {
describe("Atlas prompts anti-duplication coverage", () => {
test("all variants should include anti-duplication rules for delegated exploration", () => {
// given
const prompts = [ATLAS_SYSTEM_PROMPT, ATLAS_GPT_SYSTEM_PROMPT, ATLAS_GEMINI_SYSTEM_PROMPT]
// when / then
for (const prompt of prompts) {
for (const [, prompt] of ALL_VARIANTS) {
expect(prompt).toContain("<Anti_Duplication>")
expect(prompt).toContain("Anti-Duplication Rule")
expect(prompt).toContain("DO NOT perform the same search yourself")
@@ -93,54 +56,74 @@ describe("Atlas prompts anti-duplication coverage", () => {
})
describe("Atlas prompts plan path consistency", () => {
test("default variant should use .sisyphus/plans/{plan-name}.md path", () => {
// given
const prompt = ATLAS_SYSTEM_PROMPT
// when / then
expect(prompt).toContain(".sisyphus/plans/{plan-name}.md")
expect(prompt).not.toContain(".sisyphus/tasks/{plan-name}.yaml")
expect(prompt).not.toContain(".sisyphus/tasks/")
})
test("gpt variant should use .sisyphus/plans/{plan-name}.md path", () => {
// given
const prompt = ATLAS_GPT_SYSTEM_PROMPT
// when / then
expect(prompt).toContain(".sisyphus/plans/{plan-name}.md")
expect(prompt).not.toContain(".sisyphus/tasks/")
})
test("gemini variant should use .sisyphus/plans/{plan-name}.md path", () => {
// given
const prompt = ATLAS_GEMINI_SYSTEM_PROMPT
// when / then
expect(prompt).toContain(".sisyphus/plans/{plan-name}.md")
expect(prompt).not.toContain(".sisyphus/tasks/")
})
for (const [name, prompt] of ALL_VARIANTS) {
test(`${name} variant should use .sisyphus/plans/{plan-name}.md path`, () => {
expect(prompt).toContain(".sisyphus/plans/{plan-name}.md")
expect(prompt).not.toContain(".sisyphus/tasks/{plan-name}.yaml")
expect(prompt).not.toContain(".sisyphus/tasks/")
})
}
test("all variants should read plan file after verification", () => {
// given
const prompts = [ATLAS_SYSTEM_PROMPT, ATLAS_GPT_SYSTEM_PROMPT, ATLAS_GEMINI_SYSTEM_PROMPT]
// when / then
for (const prompt of prompts) {
expect(prompt).toMatch(/read[\s\S]*?\.sisyphus\/plans\//)
for (const [, prompt] of ALL_VARIANTS) {
expect(prompt).toMatch(/read[\s\S]*?\.sisyphus\/plans\//i)
}
})
test("all variants should distinguish top-level plan tasks from nested checkboxes", () => {
// given
const prompts = [ATLAS_SYSTEM_PROMPT, ATLAS_GPT_SYSTEM_PROMPT, ATLAS_GEMINI_SYSTEM_PROMPT]
// when / then
for (const prompt of prompts) {
for (const [, prompt] of ALL_VARIANTS) {
const lowerPrompt = prompt.toLowerCase()
expect(lowerPrompt).toMatch(/top-level.*checkbox/)
expect(lowerPrompt).toMatch(/ignore nested.*checkbox/)
expect(lowerPrompt).toMatch(/final verification wave/)
}
})
})
describe("Atlas prompts parallel-by-default mandate", () => {
test("all variants should mandate parallel as the default delegation mode", () => {
for (const [, prompt] of ALL_VARIANTS) {
const lowerPrompt = prompt.toLowerCase()
expect(lowerPrompt).toContain("parallel delegation")
expect(lowerPrompt).toMatch(/default.*parallel|parallel.*default/)
expect(lowerPrompt).toMatch(/sequential.*exception|exception.*sequential/)
}
})
test("all variants should require named blocking dependency to justify sequential ordering", () => {
for (const [, prompt] of ALL_VARIANTS) {
const lowerPrompt = prompt.toLowerCase()
expect(lowerPrompt).toMatch(/named.*depend|named.*block/)
}
})
test("all variants should require parallel dispatch in ONE response", () => {
for (const [, prompt] of ALL_VARIANTS) {
const lowerPrompt = prompt.toLowerCase()
expect(lowerPrompt).toMatch(/one (message|response)/)
}
})
test("parallel mandate should appear BEFORE the workflow section in every variant", () => {
for (const [name, prompt] of ALL_VARIANTS) {
const mandateIdx = prompt.indexOf("<parallel_by_default>")
const workflowIdx = prompt.indexOf("<workflow>")
expect(mandateIdx, `${name}: mandate marker missing`).toBeGreaterThan(-1)
expect(workflowIdx, `${name}: workflow marker missing`).toBeGreaterThan(-1)
expect(mandateIdx, `${name}: mandate must precede workflow so "mandate above" references resolve`).toBeLessThan(workflowIdx)
}
})
})
describe("Atlas prompts use task_id (not session_id) for retries", () => {
test("no variant should reference session_id (use task_id instead)", () => {
for (const [name, prompt] of ALL_VARIANTS) {
expect(prompt, `${name}: leaks session_id; should be task_id`).not.toMatch(/session_id/)
}
})
test("all variants should mention task_id for retries", () => {
for (const [name, prompt] of ALL_VARIANTS) {
expect(prompt, `${name}: missing task_id retry reference`).toMatch(/task_id/)
}
})
})