From f89d942fbc64e088f0896a903eea85a77019a54f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B2=E1=84=8B=E1=85=AD=E1=86=BC=E1=84=90?= =?UTF-8?q?=E1=85=A2?= Date: Sun, 26 Jul 2026 17:57:35 +0900 Subject: [PATCH] fix: validate the live v2 site contract --- scripts/evaluate-live-site.mjs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/scripts/evaluate-live-site.mjs b/scripts/evaluate-live-site.mjs index 89d8c8eb..8c18eeac 100644 --- a/scripts/evaluate-live-site.mjs +++ b/scripts/evaluate-live-site.mjs @@ -66,14 +66,20 @@ async function checkOnce() { const llms = await fetchText("/llms.txt"); if ( - !/Import 경계/.test(llms) - || !/@interactive-os\/json-document-id-resolver/.test(llms) - || !/다음 이름은 쓰지 않는다[\s\S]*zod-crud[\s\S]*@json-document\/\*/.test(llms) - || !/1\.0 Signature contract/.test(llms) - || !/trustedInitial: true/.test(llms) - || !/selectionAfter/.test(llms) + !/^# json-document v2$/m.test(llms) + || !/공개 Root는 정확히 다음 20개 symbol/.test(llms) + || !/`JSONDocument`의 필수 member는 정확히 여섯 개다/.test(llms) + || !/## Host adapter와 companion/.test(llms) + || !/@interactive-os\/editable/.test(llms) ) { - fail("live llms.txt is missing expected content."); + fail("live llms.txt is missing the v2 Core contract."); + } + if ( + /@interactive-os\/json-document-(?:[a-z0-9-]+)/.test(llms) + || /@interactive-os\/json-document\/(?:session|react)\b/.test(llms) + || /\blabs\/extensions\b/.test(llms) + ) { + fail("live llms.txt still exposes an archived 1.x surface."); } const manifest = JSON.parse(await fetchText("/site.webmanifest"));