Compare commits

...
Author SHA1 Message Date
Philippe Loulidi bc128c837a Reference claude-opus-5 in model examples and test fixtures
Opus 5 is out at the same price as Opus 4.8 ($5/$25 per MTok); update the
config example comments and the test fixtures that model the current
Anthropic catalog. Historical incident comments and the ROADMAP changelog
keep their claude-opus-4-8 mentions — they describe what happened at the
time.
2026-07-27 22:28:02 -07:00
3 changed files with 9 additions and 9 deletions

No files matched your search

+1 -1
View File
@@ -8,7 +8,7 @@
// Add or remove files to change the roster — no list needed here.
// shared.md (prepended to every agent + coordinator) and coordinator.md are
// reserved filenames. Per-agent overrides go in each file's YAML frontmatter,
// e.g. `---\nmodel: anthropic/claude-opus-4-1\n---`.
// e.g. `---\nmodel: anthropic/claude-opus-5\n---`.
"policy": {
// Phase 1: keep signal high by surfacing only critical/warning.
+4 -4
View File
@@ -192,13 +192,13 @@ test("a stall is retried exactly once, and only with budget left to land it", ()
// claude-opus-4-8" — a real config/version problem buried in per-pass noise.
const AVAILABLE = {
anthropic: ["claude-opus-4-8", "claude-sonnet-5", "claude-haiku-4-5"],
anthropic: ["claude-opus-5", "claude-sonnet-5", "claude-haiku-4-5"],
openai: ["gpt-5.5"],
};
test("resolvable models produce no complaints", () => {
expect(
findUnknownModels(["anthropic/claude-sonnet-5", "anthropic/claude-opus-4-8"], AVAILABLE),
findUnknownModels(["anthropic/claude-sonnet-5", "anthropic/claude-opus-5"], AVAILABLE),
).toEqual([]);
});
@@ -212,7 +212,7 @@ test("unknown model suggests near matches from that provider", () => {
const [problem] = findUnknownModels(["anthropic/claude-sonnet-9"], AVAILABLE);
expect(problem?.reason).toBe("model");
// Prefix-matched against the requested id, so the suggestions are the plausible ones.
expect(problem?.suggestions).toEqual(["claude-haiku-4-5", "claude-opus-4-8", "claude-sonnet-5"]);
expect(problem?.suggestions).toEqual(["claude-haiku-4-5", "claude-opus-5", "claude-sonnet-5"]);
});
test("a bare model id (no provider) is reported, not silently accepted", () => {
@@ -235,7 +235,7 @@ test("duplicate model ids are reported once", () => {
test("a refused credential blames the credential, not the model id", () => {
const unknown = findUnknownModels(
["anthropic/claude-sonnet-5", "anthropic/claude-opus-4-8"],
["anthropic/claude-sonnet-5", "anthropic/claude-opus-5"],
{ openai: ["gpt-5.5"] },
"anthropic",
);
+4 -4
View File
@@ -96,7 +96,7 @@ test("loadScopeConfig: nested scope reads its own roster/prompts; auth forced fr
await writeConfigDir(path.join(root, "server", "www", CONFIG_DIRNAME), {
// No auth here; scope-specific model + noise override the root.
config:
'{ "model": "anthropic/claude-opus-4-1", "noise": { "additionalIgnores": ["www/gen/**"] } }',
'{ "model": "anthropic/claude-opus-5", "noise": { "additionalIgnores": ["www/gen/**"] } }',
agents: { style: agent("style") },
});
const manifest = manifestOf({
@@ -109,7 +109,7 @@ test("loadScopeConfig: nested scope reads its own roster/prompts; auth forced fr
const scoped = await loadScopeConfig(root, manifest.scopes[1]!, manifest, rootConfig);
expect(scoped.agents.some((a) => a.id === "style")).toBe(true);
expect(scoped.noise.additionalIgnores).toEqual(["www/gen/**"]);
expect(scoped.agents.find((a) => a.id === "style")!.model).toBe("anthropic/claude-opus-4-1");
expect(scoped.agents.find((a) => a.id === "style")!.model).toBe("anthropic/claude-opus-5");
// auth is forced from the root even though the scope config declares none.
expect(scoped.auth[0]?.tokenEnv).toBe("ROOT_TOKEN");
});
@@ -237,7 +237,7 @@ test("config-dir override composes: root config + routing.jsonc from override, s
);
// The scope subtree lives at the REPO ROOT, not under the override dir.
await writeConfigDir(path.join(root, "server", "www", CONFIG_DIRNAME), {
config: '{ "model": "anthropic/claude-opus-4-1" }',
config: '{ "model": "anthropic/claude-opus-5" }',
agents: { style: agent("style") },
});
@@ -258,7 +258,7 @@ test("config-dir override composes: root config + routing.jsonc from override, s
// override dir — the override must not relocate the scopes themselves.
const www = await loadScopeConfig(root, manifest!.scopes[1]!, manifest!, rootConfig);
expect(www.agents.some((a) => a.id === "style")).toBe(true);
expect(www.agents.find((a) => a.id === "style")!.model).toBe("anthropic/claude-opus-4-1");
expect(www.agents.find((a) => a.id === "style")!.model).toBe("anthropic/claude-opus-5");
});
test("loadReviewConfig: ECR_CONFIG_DIR loads from the alternate dir; unset → .expo-code-review (BACKCOMPAT)", async () => {