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:
@@ -2,154 +2,48 @@ 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 prompt checkbox enforcement", () => {
|
||||
describe("default prompt", () => {
|
||||
test("plan should NOT be marked (READ ONLY)", () => {
|
||||
// given
|
||||
const prompt = ATLAS_SYSTEM_PROMPT
|
||||
for (const [name, prompt] of ALL_VARIANTS) {
|
||||
describe(`${name} prompt`, () => {
|
||||
test("plan should NOT be marked (READ ONLY)", () => {
|
||||
expect(prompt).not.toMatch(/\(READ ONLY\)/)
|
||||
})
|
||||
|
||||
// when / then
|
||||
expect(prompt).not.toMatch(/\(READ ONLY\)/)
|
||||
test("plan description should include EDIT for checkboxes", () => {
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
expect(lowerPrompt).toMatch(/edit.*checkbox|checkbox.*edit/)
|
||||
})
|
||||
|
||||
test("boundaries should include exception for editing .sisyphus/plans/*.md checkboxes", () => {
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
expect(lowerPrompt).toMatch(/\.sisyphus\/plans\/\*\.md/)
|
||||
expect(lowerPrompt).toMatch(/checkbox/)
|
||||
})
|
||||
|
||||
test("prompt should include POST-DELEGATION RULE", () => {
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
expect(lowerPrompt).toMatch(/post-delegation/)
|
||||
})
|
||||
|
||||
test("prompt should include MUST NOT call a new task() before", () => {
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
expect(lowerPrompt).toMatch(/must not.*call.*new.*task/)
|
||||
})
|
||||
|
||||
test("prompt should NOT reference .sisyphus/tasks/", () => {
|
||||
expect(prompt).not.toMatch(/\.sisyphus\/tasks\//)
|
||||
})
|
||||
})
|
||||
|
||||
test("plan description should include EDIT for checkboxes", () => {
|
||||
// given
|
||||
const prompt = ATLAS_SYSTEM_PROMPT
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
|
||||
// when / then
|
||||
expect(lowerPrompt).toMatch(/edit.*checkbox|checkbox.*edit/)
|
||||
})
|
||||
|
||||
test("boundaries should include exception for editing .sisyphus/plans/*.md checkboxes", () => {
|
||||
// given
|
||||
const prompt = ATLAS_SYSTEM_PROMPT
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
|
||||
// when / then
|
||||
expect(lowerPrompt).toMatch(/\.sisyphus\/plans\/\*\.md/)
|
||||
expect(lowerPrompt).toMatch(/checkbox/)
|
||||
})
|
||||
|
||||
test("prompt should include POST-DELEGATION RULE", () => {
|
||||
// given
|
||||
const prompt = ATLAS_SYSTEM_PROMPT
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
|
||||
// when / then
|
||||
expect(lowerPrompt).toMatch(/post-delegation/)
|
||||
})
|
||||
|
||||
test("prompt should include MUST NOT call a new task() before", () => {
|
||||
// given
|
||||
const prompt = ATLAS_SYSTEM_PROMPT
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
|
||||
// when / then
|
||||
expect(lowerPrompt).toMatch(/must not.*call.*new.*task/)
|
||||
})
|
||||
|
||||
test("default prompt should NOT reference .sisyphus/tasks/", () => {
|
||||
// given
|
||||
const prompt = ATLAS_SYSTEM_PROMPT
|
||||
|
||||
// when / then
|
||||
expect(prompt).not.toMatch(/\.sisyphus\/tasks\//)
|
||||
})
|
||||
})
|
||||
|
||||
describe("GPT prompt", () => {
|
||||
test("plan should NOT be marked (READ ONLY)", () => {
|
||||
// given
|
||||
const prompt = ATLAS_GPT_SYSTEM_PROMPT
|
||||
|
||||
// when / then
|
||||
expect(prompt).not.toMatch(/\(READ ONLY\)/)
|
||||
})
|
||||
|
||||
test("plan description should include EDIT for checkboxes", () => {
|
||||
// given
|
||||
const prompt = ATLAS_GPT_SYSTEM_PROMPT
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
|
||||
// when / then
|
||||
expect(lowerPrompt).toMatch(/edit.*checkbox|checkbox.*edit/)
|
||||
})
|
||||
|
||||
test("boundaries should include exception for editing .sisyphus/plans/*.md checkboxes", () => {
|
||||
// given
|
||||
const prompt = ATLAS_GPT_SYSTEM_PROMPT
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
|
||||
// when / then
|
||||
expect(lowerPrompt).toMatch(/\.sisyphus\/plans\/\*\.md/)
|
||||
expect(lowerPrompt).toMatch(/checkbox/)
|
||||
})
|
||||
|
||||
test("prompt should include POST-DELEGATION RULE", () => {
|
||||
// given
|
||||
const prompt = ATLAS_GPT_SYSTEM_PROMPT
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
|
||||
// when / then
|
||||
expect(lowerPrompt).toMatch(/post-delegation/)
|
||||
})
|
||||
|
||||
test("prompt should include MUST NOT call a new task() before", () => {
|
||||
// given
|
||||
const prompt = ATLAS_GPT_SYSTEM_PROMPT
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
|
||||
// when / then
|
||||
expect(lowerPrompt).toMatch(/must not.*call.*new.*task/)
|
||||
})
|
||||
})
|
||||
|
||||
describe("Gemini prompt", () => {
|
||||
test("plan should NOT be marked (READ ONLY)", () => {
|
||||
// given
|
||||
const prompt = ATLAS_GEMINI_SYSTEM_PROMPT
|
||||
|
||||
// when / then
|
||||
expect(prompt).not.toMatch(/\(READ ONLY\)/)
|
||||
})
|
||||
|
||||
test("plan description should include EDIT for checkboxes", () => {
|
||||
// given
|
||||
const prompt = ATLAS_GEMINI_SYSTEM_PROMPT
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
|
||||
// when / then
|
||||
expect(lowerPrompt).toMatch(/edit.*checkbox|checkbox.*edit/)
|
||||
})
|
||||
|
||||
test("boundaries should include exception for editing .sisyphus/plans/*.md checkboxes", () => {
|
||||
// given
|
||||
const prompt = ATLAS_GEMINI_SYSTEM_PROMPT
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
|
||||
// when / then
|
||||
expect(lowerPrompt).toMatch(/\.sisyphus\/plans\/\*\.md/)
|
||||
expect(lowerPrompt).toMatch(/checkbox/)
|
||||
})
|
||||
|
||||
test("prompt should include POST-DELEGATION RULE", () => {
|
||||
// given
|
||||
const prompt = ATLAS_GEMINI_SYSTEM_PROMPT
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
|
||||
// when / then
|
||||
expect(lowerPrompt).toMatch(/post-delegation/)
|
||||
})
|
||||
|
||||
test("prompt should include MUST NOT call a new task() before", () => {
|
||||
// given
|
||||
const prompt = ATLAS_GEMINI_SYSTEM_PROMPT
|
||||
const lowerPrompt = prompt.toLowerCase()
|
||||
|
||||
// when / then
|
||||
expect(lowerPrompt).toMatch(/must not.*call.*new.*task/)
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user