From 666e2d43af92f1acb9c06dd301e2ae5fba5def3b Mon Sep 17 00:00:00 2001 From: thossullivan Date: Mon, 21 Sep 2026 09:53:00 -0500 Subject: [PATCH] Read the o3-deep-research clocks from the committed feed in the checker tests The regenerate step of feed-refresh runs npm test against the freshly regenerated feeds. Two checker assertions pinned the Azure shutdown (2026-12-26) and the publisher shutdown (2026-07-23) of o3-deep-research-2025-06-26 as literals, so the 2026-09-21 dispatch (run 35614410962) failed as soon as Azure moved that row to 2026-11-19 and legacy. The check step had already passed with the parser fixes from #101. The tests now read both dates from feeds/openai.json and keep the property they exist to prove: under --via azure-ai-foundry the finding carries the Azure clock, without --via it carries the publisher clock, and the Azure clock is the later of the two. Verified against the committed feeds and against a locally regenerated feed that carries the moved Azure date. --- test/run.mjs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/test/run.mjs b/test/run.mjs index 7cfc565..b951c33 100644 --- a/test/run.mjs +++ b/test/run.mjs @@ -125,13 +125,16 @@ const directScopeJson = JSON.parse(directScope.out) assert(directScope.code === 1, 'direct scope still fails on direct/generic retired refs') assert(directScopeJson.findings.every(f => f.usage === 'direct-api' || f.usage === 'model-reference'), 'direct scope excludes cloud/gateway refs') -// Distributor clock: on Azure, o3-deep-research is scheduled (Dec 2026), not retired, -// until that date passes; assert it is never MORE severe than the publisher clock. +// Distributor clock: the Azure row for o3-deep-research outlives the publisher +// clock, so the expected dates come from the committed feed, not a pinned literal. +const deepResearchEntry = JSON.parse(fs.readFileSync(path.join(root, 'feeds/openai.json'), 'utf8')).models.find(model => model.id === 'o3-deep-research-2025-06-26') +const deepResearchAzure = deepResearchEntry?.distributions?.find(distribution => distribution.via === 'azure-ai-foundry') +assert(assertIsoDate(deepResearchEntry?.shutdown) < assertIsoDate(deepResearchAzure?.shutdown), 'the committed Azure clock for o3-deep-research is later than the publisher clock') const b = run([path.join(root, 'test/fixture'), '--days', '30', '--via', 'azure-ai-foundry', '--json']) const bj = JSON.parse(b.out) const azure = bj.findings.find(f => f.id === 'o3-deep-research-2025-06-26') assert(azure?.via === 'azure-ai-foundry', 'azure distribution clock applied') -assert(azure?.shutdown === '2026-12-26', 'azure shutdown date used') +assert(azure?.shutdown === deepResearchAzure.shutdown, 'azure shutdown date used') { const azureProofDir = fs.mkdtempSync(path.join(os.tmpdir(), 'model-eol-azure-proof-')) @@ -141,8 +144,8 @@ assert(azure?.shutdown === '2026-12-26', 'azure shutdown date used') const publisherProof = run([azureProofDir, '--days', '90', '--json']) const azureFindings = JSON.parse(azureProof.out).findings const publisherFindings = JSON.parse(publisherProof.out).findings - assert([0, 1].includes(azureProof.code) && azureFindings.length === 1 && azureFindings[0].via === 'azure-ai-foundry' && azureFindings[0].shutdown === '2026-12-26', 'dated research consumer uses regenerated Azure shutdown with --via and --days 90') - assert(publisherProof.code === 1 && publisherFindings.length === 1 && publisherFindings[0].via === 'publisher' && publisherFindings[0].shutdown === '2026-07-23', 'the same dated research consumer uses OpenAI shutdown without --via') + assert([0, 1].includes(azureProof.code) && azureFindings.length === 1 && azureFindings[0].via === 'azure-ai-foundry' && azureFindings[0].shutdown === deepResearchAzure.shutdown, 'dated research consumer uses regenerated Azure shutdown with --via and --days 90') + assert(publisherProof.code === 1 && publisherFindings.length === 1 && publisherFindings[0].via === 'publisher' && publisherFindings[0].shutdown === deepResearchEntry.shutdown, 'the same dated research consumer uses OpenAI shutdown without --via') } finally { fs.rmSync(azureProofDir, { recursive: true, force: true }) }