diff --git a/src/fable5/model-access-receipt.test.ts b/src/fable5/model-access-receipt.test.ts index 2936571..25f4da8 100644 --- a/src/fable5/model-access-receipt.test.ts +++ b/src/fable5/model-access-receipt.test.ts @@ -33,6 +33,19 @@ describe("model access receipt", () => { expect(receipt.reasons).toContain("ChatGPT Cyber access not verified"); }); + it("tracks Fable and Mythos redeploy announcements without claiming access", () => { + const receipt = createModelAccessReceipt({ + probes: [ + { surface: "anthropic-fable", command: "Anthropic redeploying Fable 5 announcement", status: "unknown", model: "claude-fable-5", evidence: "announced globally July 1; local access not probed" }, + { surface: "anthropic-mythos", command: "Anthropic redeploying Fable 5 announcement", status: "unknown", model: "claude-mythos-5", evidence: "restored only for some US orgs; local access not probed" }, + ], + }); + + expect(receipt.decision).toBe("blocked"); + expect(receipt.claims).toEqual([]); + expect(receipt.reasons).toContain("one or more model surfaces are unknown"); + }); + it("tracks Fugu Ultra without claiming access", () => { const receipt = createModelAccessReceipt({ probes: [{ surface: "sakana-fugu", command: "sakana/fugu-ultra access probe", status: "unknown", model: "fugu-ultra", evidence: "not probed; do not buy or bypass with VPN" }], diff --git a/src/fable5/model-access-receipt.ts b/src/fable5/model-access-receipt.ts index 3ec97b8..d8179c1 100644 --- a/src/fable5/model-access-receipt.ts +++ b/src/fable5/model-access-receipt.ts @@ -1,7 +1,7 @@ import * as fs from "node:fs"; import * as path from "node:path"; -export type ModelAccessSurface = "pi" | "openrouter" | "openai" | "chatgpt-cyber" | "sakana-fugu" | "hermes-moa" | "other"; +export type ModelAccessSurface = "pi" | "openrouter" | "openai" | "chatgpt-cyber" | "anthropic-fable" | "anthropic-mythos" | "sakana-fugu" | "hermes-moa" | "other"; export type ModelAccessStatus = "available" | "blocked" | "missing" | "unknown"; export interface ModelAccessProbe { diff --git a/src/index.ts b/src/index.ts index 5f4df82..a396299 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1968,6 +1968,8 @@ fable { surface: "openai" as const, command: "env OPENAI_API_KEY", status: process.env.OPENAI_API_KEY ? "unknown" as const : "missing" as const, evidence: process.env.OPENAI_API_KEY ? "key present; API not probed" : "OPENAI_API_KEY missing" }, { surface: "pi" as const, command: "pi --list-models cyber", status: "unknown" as const, evidence: "not probed by this fail-closed receipt command" }, { surface: "chatgpt-cyber" as const, command: "https://chatgpt.com/cyber", status: "unknown" as const, evidence: "browser/login-gated surface not probed by this command" }, + { surface: "anthropic-fable" as const, command: "Anthropic redeploying Fable 5 announcement", status: "unknown" as const, model: "claude-fable-5", evidence: "announced globally July 1; local access not probed" }, + { surface: "anthropic-mythos" as const, command: "Anthropic redeploying Fable 5 announcement", status: "unknown" as const, model: "claude-mythos-5", evidence: "restored only for some US orgs; local access not probed" }, { surface: "sakana-fugu" as const, command: "sakana/fugu-ultra access probe", status: "unknown" as const, model: "fugu-ultra", evidence: "not probed; do not buy or bypass with VPN" }, { surface: "hermes-moa" as const, command: "hermes model --provider moa", status: "unknown" as const, model: "moa", evidence: "Hermes MoA preset required; not probed" }, ];