practice slice 3B — the practice agents: partitioner, generator, grader
src/agent/subagents/practice.ts: createPracticeAgents(deps) with the ExtractionModels mirror (per-stage engine overrides + engineFor + providerKeyMissing + refuseIfStagesUnready, all three roles strong-tier). Generator doctrine = the owner's problem-engineering framework verbatim (minus Sources) + Part III wiring section per the green-lit amendments (FULL SET input with minimal-use doctrine; degradation never in meta-commentary). Partitioner: true-partition doctrine, validate via chainCoverage + exactly-once + unknown-ids, error-back retries through runSubmitAgent's new validate hook (ToolInputError → error tool result). Generator: echo law (chains set === target). Grader: verdict union + nonempty feedback (schema-enforced). renderChains/renderPropositions/ renderParams/renderPreviousProblems. BACKGROUND_MODEL_ROLES extended with the practice trio (settings override symmetry). runSubmitAgent gains the validate seam (null = accept). 16-test faux-engine suite incl. retry paths, refusal gates, neverSubmitted.
This commit is contained in:
@@ -202,13 +202,16 @@ describe("sanitizeUserSettings", () => {
|
||||
assert.deepEqual(out.agent?.tools, { quiz: false, demo: true });
|
||||
});
|
||||
|
||||
it("BACKGROUND_MODEL_ROLES matches the five background roles (the labeler died with the wave-7 namer kill)", () => {
|
||||
it("BACKGROUND_MODEL_ROLES matches the eight background roles (practice trio added, owner 2026-09-29)", () => {
|
||||
assert.deepEqual([...BACKGROUND_MODEL_ROLES], [
|
||||
"researcher",
|
||||
"demoBuilder",
|
||||
"visualMaker",
|
||||
"extractor",
|
||||
"auditor",
|
||||
"partitioner",
|
||||
"problemGenerator",
|
||||
"grader",
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user