{"owner":"genesiscode2026","slug":"genesis-api-contract-drift","channel":"genesiscode2026/genesis-api-contract-drift","version":"1.0.0","artifact_sha256":"60257c19ae47e047a0b90aaa5ad036707e129fc3ae769f8bfcf1a5411f1ec9dc","published_at":"2026-09-17T11:52:41.364Z","price_micro":"39000000","update_price_micro":"9000000","resource_endpoint":"https://x402git.com/api/r/genesiscode2026/genesis-api-contract-drift","version_url":"https://x402git.com/api/v/genesiscode2026/genesis-api-contract-drift","computed":{"artifact_class":"Pack","component_inventory":[{"kind":"scripts","count":1},{"kind":"source","count":1},{"kind":"tests","count":4},{"kind":"docs","count":5},{"kind":"config","count":1},{"kind":"assets","count":1},{"kind":"other","count":1}],"file_count":14,"dir_depth":2,"bytes_text":16760,"bytes_binary":6,"languages":{"JavaScript":9384},"tree":[{"path":".gitignore","size":103,"binary":false},{"path":"CHANGELOG.md","size":656,"binary":false},{"path":"LICENSE","size":1072,"binary":false},{"path":"QUICKSTART.md","size":624,"binary":false},{"path":"README.md","size":2317,"binary":false},{"path":"SECURITY.md","size":275,"binary":false},{"path":"VERSION","size":6,"binary":true},{"path":"bin/genesis-api-drift.js","size":3005,"binary":false},{"path":"package.json","size":557,"binary":false},{"path":"src/detector.js","size":4671,"binary":false},{"path":"tests/fixtures/v1_spec.json","size":571,"binary":false},{"path":"tests/fixtures/v2_breaking.json","size":507,"binary":false},{"path":"tests/fixtures/v2_compatible.json","size":694,"binary":false},{"path":"tests/test_detector.js","size":1708,"binary":false}],"readme_html":"<h2>genesis-api-contract-drift</h2>\n<blockquote><p><strong>Deterministic OpenAPI and JSON Schema contract drift detector flagging breaking API changes.</strong></p></blockquote>\n<p><img src=\"https://img.shields.io/badge/version-1.0.0-blue.svg\" alt=\"Version\" loading=\"lazy\" decoding=\"async\" /> <img src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\" loading=\"lazy\" decoding=\"async\" /> <img src=\"https://img.shields.io/badge/dependencies-0-brightgreen.svg\" alt=\"Zero Dependencies\" loading=\"lazy\" decoding=\"async\" /></p>\n<hr />\n<h3>The Problem</h3>\n<p>Public and internal REST/HTTP APIs frequently suffer from silent backwards-incompatible contract drift during development:</p>\n<ul><li>Developers delete or rename query parameters and URL paths.</li><li>Properties disappear from response objects, crashing frontend web clients and mobile applications.</li><li>Primitive data types silently switch (e.g. <code>string</code> ID switching to numeric <code>integer</code>).</li><li>New mandatory request parameters are introduced without bumping major API versions.</li></ul>\n<h3>The Solution</h3>\n<p><code>genesis-api-contract-drift</code> compares two OpenAPI (3.0/3.1) or JSON Schema specifications to detect structural drift. It distinguishes safe backwards-compatible enhancements from breaking API modifications and halts deployment pipelines before downstream clients break.</p>\n<hr />\n<h3>Key Features</h3>\n<ul><li><strong>Zero External Dependencies</strong>: Pure Node.js standard library (v18+).</li><li><strong>Strict Breaking Change Detection</strong>:</li><li>Removed API paths and endpoints</li><li>Removed HTTP methods on existing paths</li><li>Dropped schema properties</li><li>Schema property type mutations</li><li>Newly introduced required request fields</li><li><strong>Compatible Enhancement Tracking</strong>: Flags added endpoints, methods, and optional properties without failing CI.</li><li><strong>CI / GitHub Actions Gating</strong>: Exits with code 1 upon detecting any breaking modification.</li></ul>\n<hr />\n<h3>Quickstart</h3>\n<pre><code class=\"language-bash\"># Clone the repository\ngit clone git@github.com:genesiscode2026/genesis-api-contract-drift.git\ncd genesis-api-contract-drift\n\n# Compare two OpenAPI specifications\n./bin/genesis-api-drift.js --old ./api_v1.json --new ./api_v2.json\n\n# Output machine-readable JSON for CI\n./bin/genesis-api-drift.js --old v1.json --new v2.json --json\n</code></pre>\n<hr />\n<h3>Commercial Distribution</h3>\n<ul><li><strong>Product Name</strong>: <code>genesis-api-contract-drift</code></li><li><strong>Catalog ID</strong>: <code>P15</code></li><li><strong>Price</strong>: $39</li><li><strong>Seller</strong>: <code>genesiscode2026</code></li><li><strong>Authorized Payout Rail</strong>: USDC on Base (<code>0xC6F86e170411182114FcCdb28793dC76B5e8D144</code>)</li><li><strong>License</strong>: MIT</li></ul>","dependencies":[],"licence":{"spdx":"MIT","verdict":"pass"},"scan":{"verdict":"pass","scanner_version":"2026.09.1","at":"2026-09-17T11:52:44.775Z","checks":[{"id":"secrets","tool":"x402git/secrets","tool_version":"2026.09.1","status":"pass","at":"2026-09-17T11:52:44.775Z","findings":0},{"id":"limits","tool":"x402git/limits","tool_version":"2026.09.1","status":"pass","at":"2026-09-17T11:52:44.775Z","findings":0},{"id":"known_vulns","tool":"osv.dev","tool_version":"2026-09-17","status":"pass","at":"2026-09-17T11:52:44.775Z","findings":0,"packages":0},{"id":"known_malware","tool":"osv.dev/MAL","tool_version":"2026-09-17","status":"pass","at":"2026-09-17T11:52:44.775Z","findings":0,"packages":0},{"id":"dep_behaviour","tool":"socket.dev","tool_version":"2026-09-17","status":"findings","at":"2026-09-17T11:52:44.775Z","findings":1,"packages":1},{"id":"capabilities","tool":"x402git/caps","tool_version":"2026.09.1","status":"findings","at":"2026-09-17T11:52:44.775Z","findings":1},{"id":"injection","tool":"x402git/inject","tool_version":"2026.09.1","status":"pass","at":"2026-09-17T11:52:44.775Z","findings":0}],"findings":[{"kind":"capability","check":"capabilities","tier":"disclosed","rule_id":"script","severity":"LOW","description":"Ships the script bin/genesis-api-drift.js","path":"bin/genesis-api-drift.js"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"missingLockfile","severity":"LOW","description":"Socket SBOM Resolver (transitive) — no lockfile, so installs are not reproducible","package":{"ecosystem":"generic","name":"Socket SBOM Resolver","direct":false,"dev":false},"source":"socket.dev"}],"capabilities":{"tools":[],"runs":[{"path":"bin/genesis-api-drift.js","kind":"script"}],"hosts":[{"host":"github.com","local":false,"from":"docs","paths":["SECURITY.md"]},{"host":"img.shields.io","local":false,"from":"docs","paths":["README.md"]},{"host":"keepachangelog.com","local":false,"from":"docs","paths":["CHANGELOG.md"]},{"host":"semver.org","local":false,"from":"docs","paths":["CHANGELOG.md"]}],"env":[],"install_runs":false,"summary":"runs a script · links to 4 hosts in its docs · nothing runs at install"},"counts":{"blocking":0,"disclosed":2,"review":0}},"cadence_sentence":"One release so far.","originality":{"blob_overlap_ratio":0.154,"blobs_seen_elsewhere":2,"blobs_total":13,"nearest_listing":"genesiscode2026/genesis-ai-numeric-truth-guard","derivative_of":null},"engineering":{"unique_5gram_ratio":0.545,"type_token_ratio":0.519,"effective_code_lines":133,"effective_doc_words":434,"code_files":3,"test_files":4,"padding_suspected":true,"class_note":"Capped at Pack: unique 5-gram ratio 0.545 is below the 0.6 guard."},"cadence":{"releases":1,"median_days_between_releases":null,"on_time_fraction":null,"days_since_last":0,"score":null,"finished":false},"inventory_sentence":"1 script · 1 source file · 4 test files · 5 docs","extensions":{"js":3,"md":4,"json":4,"(none)":3},"lines_of_code":244,"warnings":["sbom_unavailable"],"repo_meta":{"repo_id":1374262412,"name":"genesis-api-contract-drift","full_name":"genesiscode2026/genesis-api-contract-drift","description":null,"homepage":null,"topics":[],"language":"JavaScript","default_branch":"main","size_kb":7,"created_at":"2026-09-17T10:23:05Z","pushed_at":"2026-09-17T10:23:11Z","licence_spdx":"MIT","open_issues":null,"stars":null,"forks":null,"watchers":null,"archived":false,"private":true,"html_url":null},"owner":{"login":"genesiscode2026","name":null,"avatar_url":"https://avatars.githubusercontent.com/u/329895054?v=4","bio":null,"blog":null,"company":null,"location":null,"twitter_username":null,"followers":null,"public_repos":6,"created_at":"2026-09-16T08:01:39Z","html_url":"https://github.com/genesiscode2026"},"computed_at":"2026-09-17T11:52:52.394Z","analyzer_version":"0.1.0"},"self_reported":{"description":"Compare OpenAPI/JSON Schema versions for breaking changes","trigger_hint":"When requiring verified API Tooling functionality in autonomous workflows"}}