Minimal HTTP reproduction
移除 JSON structure;只有 status 與明確 error identity 仍相同的 candidate 才會保留。
Evidrift 把吵雜的 failing JSON request 縮成經重播驗證的結果,再保護程式依賴的 TypeScript 與 OpenAPI assumption。
npx --yes evidrift@latest repro-demo
Demo 會啟動 disposable loopback server、確認 HTTP 500 與
INVALID_FILTER、重送每個 candidate、驗證 minimized result,最後關閉
server。
Body: 217 bytes -> 46 bytes
Minimal JSON: {"filters":{"unsupported":{"mode":"explode"}}}
Evidence: 1-minimal under the selected JSON reducers and failure predicate
HTTP replay 不會從 contract check 或 MCP 執行;Receipt 仍是不可信任的 repository file。
移除 JSON structure;只有 status 與明確 error identity 仍相同的 candidate 才會保留。
記錄真實 call site 選到的 overload、parameter、normalized signature、installed version、resolved declaration path 與 hash。
透過 RFC 6901 JSON Pointer,記錄 repository-local OpenAPI JSON 或 JSON Schema 中的一個 canonical value。
npx --yes evidrift@latest demo
GIF 來自真實本機 CLI transcript。不執行 dependency-under-test 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 維持英文。