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:
@@ -122,7 +122,16 @@ describe("the dictation keyless seam (owner dictation trio)", () => {
|
||||
const catalog = (strongProvider: string | null, ...keyedProviders: string[]): ModelCatalogResponse => ({
|
||||
models: [],
|
||||
defaults: null,
|
||||
rolePins: { researcher: null, demoBuilder: null, visualMaker: null, extractor: null, auditor: null },
|
||||
rolePins: {
|
||||
researcher: null,
|
||||
demoBuilder: null,
|
||||
visualMaker: null,
|
||||
extractor: null,
|
||||
auditor: null,
|
||||
partitioner: null,
|
||||
problemGenerator: null,
|
||||
grader: null,
|
||||
},
|
||||
slots: {
|
||||
strong: strongProvider
|
||||
? { model: { provider: strongProvider, id: `${strongProvider}/model` }, thinkingLevel: "low" }
|
||||
|
||||
Reference in New Issue
Block a user