TypeScript API drift
記錄真實 call site 選到的 overload、parameter、normalized signature、installed version、resolved declaration path 與 hash。
Evidrift 把 Coding Agent 寫程式時依賴的 TypeScript 與 OpenAPI assumption 鎖進 repository,並在下一次 merge 前交給 CI 重新驗算。
Receipt 是 repository file,不是可信任 verdict。Evidrift 每次都會重新載入 source,計算
deterministic contract,不信任儲存的 matched 或
verified flag。
記錄真實 call site 選到的 overload、parameter、normalized signature、installed version、resolved declaration path 與 hash。
透過 RFC 6901 JSON Pointer,記錄 repository-local OpenAPI JSON 或 JSON Schema 中的一個 canonical value。
把每張 Receipt 當成 hostile input,重新計算 content ID 與 evidence hash,偵測手動修改與偽造。
npx --yes evidrift@latest demo
GIF 來自真實本機 CLI transcript。不執行 package code,不使用 cloud service 或 LLM verdict。
FAIL contract_mismatch sha256:...
Claim: parseConfig accepts an optional options parameter used by the demo.
Expected signature: parseConfig(input:string,options?:ParseOptions):ParseResult
Current signature: parseConfig(input:string,options:ParseOptions):ParseResult
Affected code location: app/src/index.ts:3
Receipt ID: sha256:...
Action: Review the dependency change, then intentionally record new evidence.
先跑 demo,再決定是否把 Evidrift 加進 repository。翻譯的是說明文字;CLI command、Receipt schema、error code、API name 與 machine-readable output 維持英文。