@humanbased/crosscheck 1.3.1-beta.5 → 1.5.0
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.
- package/README.md +16 -1
- package/assets/demo-block-to-approve.gif +0 -0
- package/assets/demo-block-to-approve.mp4 +0 -0
- package/dist/__tests__/base-ref-recovery.test.d.ts +2 -0
- package/dist/__tests__/base-ref-recovery.test.d.ts.map +1 -0
- package/dist/__tests__/base-ref-recovery.test.js +102 -0
- package/dist/__tests__/base-ref-recovery.test.js.map +1 -0
- package/dist/__tests__/codex-env.test.js +4 -0
- package/dist/__tests__/codex-env.test.js.map +1 -1
- package/dist/__tests__/credential-free-origin.test.js +134 -2
- package/dist/__tests__/credential-free-origin.test.js.map +1 -1
- package/dist/__tests__/demo-arc.test.d.ts +2 -0
- package/dist/__tests__/demo-arc.test.d.ts.map +1 -0
- package/dist/__tests__/demo-arc.test.js +73 -0
- package/dist/__tests__/demo-arc.test.js.map +1 -0
- package/dist/__tests__/doc-only-verdict.test.d.ts +2 -0
- package/dist/__tests__/doc-only-verdict.test.d.ts.map +1 -0
- package/dist/__tests__/doc-only-verdict.test.js +79 -0
- package/dist/__tests__/doc-only-verdict.test.js.map +1 -0
- package/dist/__tests__/error-classification.test.js +14 -0
- package/dist/__tests__/error-classification.test.js.map +1 -1
- package/dist/__tests__/fix-requires-recheck.test.d.ts +2 -0
- package/dist/__tests__/fix-requires-recheck.test.d.ts.map +1 -0
- package/dist/__tests__/fix-requires-recheck.test.js +56 -0
- package/dist/__tests__/fix-requires-recheck.test.js.map +1 -0
- package/dist/__tests__/human-feedback.test.d.ts +2 -0
- package/dist/__tests__/human-feedback.test.d.ts.map +1 -0
- package/dist/__tests__/human-feedback.test.js +132 -0
- package/dist/__tests__/human-feedback.test.js.map +1 -0
- package/dist/__tests__/inconclusive-review.test.d.ts +2 -0
- package/dist/__tests__/inconclusive-review.test.d.ts.map +1 -0
- package/dist/__tests__/inconclusive-review.test.js +110 -0
- package/dist/__tests__/inconclusive-review.test.js.map +1 -0
- package/dist/__tests__/merge-gate.test.d.ts +2 -0
- package/dist/__tests__/merge-gate.test.d.ts.map +1 -0
- package/dist/__tests__/merge-gate.test.js +220 -0
- package/dist/__tests__/merge-gate.test.js.map +1 -0
- package/dist/__tests__/no-verdict.test.d.ts +2 -0
- package/dist/__tests__/no-verdict.test.d.ts.map +1 -0
- package/dist/__tests__/no-verdict.test.js +415 -0
- package/dist/__tests__/no-verdict.test.js.map +1 -0
- package/dist/__tests__/pr-spec.test.js +37 -0
- package/dist/__tests__/pr-spec.test.js.map +1 -1
- package/dist/__tests__/run.test.js +50 -1
- package/dist/__tests__/run.test.js.map +1 -1
- package/dist/__tests__/runner.test.js +82 -1
- package/dist/__tests__/runner.test.js.map +1 -1
- package/dist/__tests__/standing-verdict-history.test.d.ts +2 -0
- package/dist/__tests__/standing-verdict-history.test.d.ts.map +1 -0
- package/dist/__tests__/standing-verdict-history.test.js +109 -0
- package/dist/__tests__/standing-verdict-history.test.js.map +1 -0
- package/dist/__tests__/step-plan.test.d.ts +2 -0
- package/dist/__tests__/step-plan.test.d.ts.map +1 -0
- package/dist/__tests__/step-plan.test.js +129 -0
- package/dist/__tests__/step-plan.test.js.map +1 -0
- package/dist/cli.js +12 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/merge.d.ts +11 -0
- package/dist/commands/merge.d.ts.map +1 -0
- package/dist/commands/merge.js +188 -0
- package/dist/commands/merge.js.map +1 -0
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +29 -7
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/run.d.ts +53 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +197 -32
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +14 -3
- package/dist/commands/watch.js.map +1 -1
- package/dist/config/loader.d.ts +4 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +8 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/review-strategy.json +5 -5
- package/dist/github/client.d.ts +18 -1
- package/dist/github/client.d.ts.map +1 -1
- package/dist/github/client.js +19 -3
- package/dist/github/client.js.map +1 -1
- package/dist/github/merge.d.ts +28 -0
- package/dist/github/merge.d.ts.map +1 -1
- package/dist/github/merge.js +41 -0
- package/dist/github/merge.js.map +1 -1
- package/dist/github/webhook.d.ts +1 -0
- package/dist/github/webhook.d.ts.map +1 -1
- package/dist/github/webhook.js.map +1 -1
- package/dist/lib/board.d.ts +1 -0
- package/dist/lib/board.d.ts.map +1 -1
- package/dist/lib/board.js +1 -1
- package/dist/lib/board.js.map +1 -1
- package/dist/lib/clone.d.ts +65 -1
- package/dist/lib/clone.d.ts.map +1 -1
- package/dist/lib/clone.js +252 -16
- package/dist/lib/clone.js.map +1 -1
- package/dist/lib/human-feedback.d.ts +9 -0
- package/dist/lib/human-feedback.d.ts.map +1 -0
- package/dist/lib/human-feedback.js +83 -0
- package/dist/lib/human-feedback.js.map +1 -0
- package/dist/lib/logger.d.ts +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +6 -0
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/merge-gate.d.ts +70 -0
- package/dist/lib/merge-gate.d.ts.map +1 -0
- package/dist/lib/merge-gate.js +138 -0
- package/dist/lib/merge-gate.js.map +1 -0
- package/dist/lib/no-verdict.d.ts +104 -0
- package/dist/lib/no-verdict.d.ts.map +1 -0
- package/dist/lib/no-verdict.js +262 -0
- package/dist/lib/no-verdict.js.map +1 -0
- package/dist/lib/pr-spec.d.ts +7 -0
- package/dist/lib/pr-spec.d.ts.map +1 -1
- package/dist/lib/pr-spec.js +12 -1
- package/dist/lib/pr-spec.js.map +1 -1
- package/dist/lib/pr-workflow-state.d.ts +37 -0
- package/dist/lib/pr-workflow-state.d.ts.map +1 -1
- package/dist/lib/pr-workflow-state.js +58 -1
- package/dist/lib/pr-workflow-state.js.map +1 -1
- package/dist/lib/review-strategy.d.ts +14 -0
- package/dist/lib/review-strategy.d.ts.map +1 -1
- package/dist/lib/review-strategy.js +32 -1
- package/dist/lib/review-strategy.js.map +1 -1
- package/dist/lib/runner.d.ts +51 -2
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/runner.js +211 -105
- package/dist/lib/runner.js.map +1 -1
- package/dist/lib/verdict.d.ts +30 -1
- package/dist/lib/verdict.d.ts.map +1 -1
- package/dist/lib/verdict.js +94 -9
- package/dist/lib/verdict.js.map +1 -1
- package/dist/reviewers/codex-env.d.ts.map +1 -1
- package/dist/reviewers/codex-env.js +2 -0
- package/dist/reviewers/codex-env.js.map +1 -1
- package/dist/reviewers/codex.d.ts.map +1 -1
- package/dist/reviewers/codex.js +3 -1
- package/dist/reviewers/codex.js.map +1 -1
- package/dist/reviewers/fix.d.ts +2 -2
- package/dist/reviewers/fix.d.ts.map +1 -1
- package/dist/reviewers/fix.js +10 -4
- package/dist/reviewers/fix.js.map +1 -1
- package/docs/growth/launch/README.md +59 -0
- package/docs/growth/launch/essay-stop-letting-one-agent-review-its-own-code.md +118 -0
- package/docs/growth/launch/posts.md +175 -0
- package/docs/trust.md +16 -1
- package/package.json +11 -3
package/dist/lib/verdict.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verdict.js","sourceRoot":"","sources":["../../src/lib/verdict.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,8BAA8B;AAC9B,uGAAuG;AACvG,+DAA+D;AAC/D,MAAM,UAAU,GAAG,oHAAoH,CAAA;AACvI,uFAAuF;AACvF,MAAM,WAAW,GAAG,sEAAsE,CAAA;AAE1F,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAa,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,kFAAkF;IAClF,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/E,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;QACtG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC3B,CAAC;IAED,qDAAqD;IACrD,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;IACvD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACxD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACtE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAA;IACvE,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACvC,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAC/B,+DAA+D,CAAA;AAEjE,kFAAkF;AAClF,qFAAqF;AACrF,MAAM,CAAC,MAAM,kBAAkB,GAC7B,2IAA2I,CAAA;AAE7I,oFAAoF;AACpF,oFAAoF;AACpF,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI;IACzE,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,YAAY;IACvE,kBAAkB,EAAE,UAAU,EAAE,eAAe;CAChD,CAAC,CAAA;AAEF,
|
|
1
|
+
{"version":3,"file":"verdict.js","sourceRoot":"","sources":["../../src/lib/verdict.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-env.d.ts","sourceRoot":"","sources":["../../src/reviewers/codex-env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-env.d.ts","sourceRoot":"","sources":["../../src/reviewers/codex-env.ts"],"names":[],"mappings":"AAsCA,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACtC,MAAM,GAAE,MAAM,CAAC,UAAwB,GACtC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB"}
|
|
@@ -19,6 +19,8 @@ const ALLOWED_KEYS = [
|
|
|
19
19
|
'PATH', 'HOME', 'USER', 'LOGNAME', 'SHELL', 'TERM', 'TMPDIR', 'TZ', 'LANG',
|
|
20
20
|
// Codex's own configuration root.
|
|
21
21
|
'CODEX_HOME',
|
|
22
|
+
// Keep Git commands launched by the agent on Crosscheck's isolated config view.
|
|
23
|
+
'GIT_CONFIG_NOSYSTEM', 'GIT_CONFIG_GLOBAL',
|
|
22
24
|
// API-key auth, for installs that use it instead of ~/.codex/auth.json.
|
|
23
25
|
'OPENAI_API_KEY', 'OPENAI_BASE_URL',
|
|
24
26
|
// XDG paths — codex resolves config/cache through them on Linux.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-env.js","sourceRoot":"","sources":["../../src/reviewers/codex-env.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,+EAA+E;AAC/E,uBAAuB;AACvB,EAAE;AACF,8EAA8E;AAC9E,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,+DAA+D;AAE/D,sFAAsF;AACtF,MAAM,YAAY,GAA0B;IAC1C,0EAA0E;IAC1E,8BAA8B;IAC9B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM;IAC1E,kCAAkC;IAClC,YAAY;IACZ,wEAAwE;IACxE,gBAAgB,EAAE,iBAAiB;IACnC,iEAAiE;IACjE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB;IACvE,wDAAwD;IACxD,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,oBAAoB;IAC9F,+EAA+E;IAC/E,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU;IACpD,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU;CACrD,CAAA;AAED,qFAAqF;AACrF,MAAM,gBAAgB,GAA0B,CAAC,KAAK,CAAC,CAAA;AAEvD,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9F,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,YAAoC,EAAE,EACtC,SAA4B,OAAO,CAAC,GAAG;IAEvC,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,IAAI,oBAAoB,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IACxE,CAAC;IACD,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;AACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"codex-env.js","sourceRoot":"","sources":["../../src/reviewers/codex-env.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,+EAA+E;AAC/E,uBAAuB;AACvB,EAAE;AACF,8EAA8E;AAC9E,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,+DAA+D;AAE/D,sFAAsF;AACtF,MAAM,YAAY,GAA0B;IAC1C,0EAA0E;IAC1E,8BAA8B;IAC9B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM;IAC1E,kCAAkC;IAClC,YAAY;IACZ,gFAAgF;IAChF,qBAAqB,EAAE,mBAAmB;IAC1C,wEAAwE;IACxE,gBAAgB,EAAE,iBAAiB;IACnC,iEAAiE;IACjE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB;IACvE,wDAAwD;IACxD,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,oBAAoB;IAC9F,+EAA+E;IAC/E,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU;IACpD,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU;CACrD,CAAA;AAED,qFAAqF;AACrF,MAAM,gBAAgB,GAA0B,CAAC,KAAK,CAAC,CAAA;AAEvD,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;AAC9F,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,YAAoC,EAAE,EACtC,SAA4B,OAAO,CAAC,GAAG;IAEvC,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,IAAI,oBAAoB,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IACxE,CAAC;IACD,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,SAAS,EAAE,CAAA;AACjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/reviewers/codex.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAG3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,OAAO,EAA6E,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAQ5I,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhE;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAWvE;AAeD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,+EAA+E;IAC/E,oBAAoB,EAAE,MAAM,CAAA;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAeD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAY5E;AAOD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMvE;AA2BD,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,iBAAiB,EACzB,gBAAgB,CAAC,EAAE,MAAM,EACzB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAC7B,SAAS,CAAC,EAAE,MAAM,EAIlB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAG/B,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,sBAAsB,EAGrC,eAAe,UAAQ,GACtB,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/reviewers/codex.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAG3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,OAAO,EAA6E,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAQ5I,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhE;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAWvE;AAeD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,+EAA+E;IAC/E,oBAAoB,EAAE,MAAM,CAAA;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAeD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAY5E;AAOD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMvE;AA2BD,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,iBAAiB,EACzB,gBAAgB,CAAC,EAAE,MAAM,EACzB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAC7B,SAAS,CAAC,EAAE,MAAM,EAIlB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAG/B,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,sBAAsB,EAGrC,eAAe,UAAQ,GACtB,OAAO,CAAC,YAAY,CAAC,CAqIvB;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ/E"}
|
package/dist/reviewers/codex.js
CHANGED
|
@@ -9,7 +9,7 @@ import { withTimeoutRetry } from '../lib/with-timeout-retry.js';
|
|
|
9
9
|
import { tierTimeoutMs } from './tier-timeouts.js';
|
|
10
10
|
import { codexSkillBrokerArgs, codexSkillsReachable, renderSkillBrokerInstructions } from '../skills/broker.js';
|
|
11
11
|
import { buildCodexEnv } from './codex-env.js';
|
|
12
|
-
import { withCredentialFreeOrigin } from '../lib/clone.js';
|
|
12
|
+
import { CompromisedCloneError, withCredentialFreeOrigin } from '../lib/clone.js';
|
|
13
13
|
import { loadRepositoryReviewGuidance } from '../lib/repository-guidance.js';
|
|
14
14
|
// Codex review command outputs [P0]/[P1]/[P2]/[P3] priority markers but never a VERDICT line.
|
|
15
15
|
// Infer the verdict from the highest severity present and append it so parseVerdict() can
|
|
@@ -217,6 +217,8 @@ codexFullAccess = false) {
|
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
219
|
catch (err) {
|
|
220
|
+
if (err instanceof CompromisedCloneError)
|
|
221
|
+
throw err;
|
|
220
222
|
const execa = err;
|
|
221
223
|
const rawStderr = execa.stderr ?? '';
|
|
222
224
|
const fullMessage = rawStderr || execa.message || '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/reviewers/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,6BAA6B,EAA+B,MAAM,qBAAqB,CAAA;AAC5I,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/reviewers/codex.ts"],"names":[],"mappings":"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"}
|
package/dist/reviewers/fix.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { Config } from '../config/schema.js';
|
|
2
2
|
import { type SkillActivationSession } from '../skills/broker.js';
|
|
3
3
|
export declare function applyEdit(fileContent: string, oldText: string, newText: string): string | null;
|
|
4
|
-
export declare function runFixStep(tmpDir: string, baseRef: string, prTitle: string, reviewComment: string, instructions: string, config: Config, model?: string, timeoutMs?: number, skillSession?: SkillActivationSession): Promise<{
|
|
4
|
+
export declare function runFixStep(tmpDir: string, baseRef: string, prTitle: string, reviewComment: string, instructions: string, config: Config, model?: string, timeoutMs?: number, skillSession?: SkillActivationSession, humanFeedback?: string): Promise<{
|
|
5
5
|
appliedCount: number;
|
|
6
6
|
changedFiles: string[];
|
|
7
7
|
tokensUsed?: number;
|
|
8
8
|
effort: string;
|
|
9
9
|
}>;
|
|
10
|
-
export declare function runCodexFixStep(tmpDir: string, baseRef: string, prTitle: string, reviewComment: string, instructions: string, model?: string, timeoutMs?: number, skillSession?: SkillActivationSession, configuredEffort?: string, codexFullAccess?: boolean): Promise<{
|
|
10
|
+
export declare function runCodexFixStep(tmpDir: string, baseRef: string, prTitle: string, reviewComment: string, instructions: string, model?: string, timeoutMs?: number, skillSession?: SkillActivationSession, configuredEffort?: string, codexFullAccess?: boolean, humanFeedback?: string): Promise<{
|
|
11
11
|
appliedCount: number;
|
|
12
12
|
changedFiles: string[];
|
|
13
13
|
tokensUsed?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../src/reviewers/fix.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAIjD,OAAO,EAAoG,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AA8DnK,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO9F;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,SAAY,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../src/reviewers/fix.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAIjD,OAAO,EAAoG,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AA8DnK,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO9F;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,SAAY,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,sBAAsB,EAGrC,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+IhG;AA2BD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,KAAK,SAAY,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,sBAAsB,EAIrC,gBAAgB,CAAC,EAAE,MAAM,EAGzB,eAAe,UAAQ,EAGvB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAkDhG"}
|
package/dist/reviewers/fix.js
CHANGED
|
@@ -68,7 +68,10 @@ export function applyEdit(fileContent, oldText, newText) {
|
|
|
68
68
|
return null;
|
|
69
69
|
return fileContent.slice(0, idx) + newText + fileContent.slice(idx + oldText.length);
|
|
70
70
|
}
|
|
71
|
-
export async function runFixStep(tmpDir, baseRef, prTitle, reviewComment, instructions, config, model = 'default', timeoutMs, skillSession
|
|
71
|
+
export async function runFixStep(tmpDir, baseRef, prTitle, reviewComment, instructions, config, model = 'default', timeoutMs, skillSession,
|
|
72
|
+
// Replies posted to the PR thread since the review being fixed — see
|
|
73
|
+
// lib/human-feedback.ts. Undefined/empty when there are none.
|
|
74
|
+
humanFeedback) {
|
|
72
75
|
const effort = claudeEffort(config.vendors?.claude?.effort);
|
|
73
76
|
let diff = '';
|
|
74
77
|
try {
|
|
@@ -84,7 +87,7 @@ export async function runFixStep(tmpDir, baseRef, prTitle, reviewComment, instru
|
|
|
84
87
|
.replace('{PR_TITLE}', prTitle)
|
|
85
88
|
.replace('{REVIEW_COMMENT}', reviewComment.slice(0, 8000))
|
|
86
89
|
.replace('{DIFF}', diff.slice(0, 16000))
|
|
87
|
-
.replace('{EXTRA_INSTRUCTIONS}', [instructions ? `Additional instructions: ${instructions}` : '', skillSession ? renderSkillBrokerInstructions(skillSession) : ''].filter(Boolean).join('\n\n'));
|
|
90
|
+
.replace('{EXTRA_INSTRUCTIONS}', [instructions ? `Additional instructions: ${instructions}` : '', humanFeedback ?? '', skillSession ? renderSkillBrokerInstructions(skillSession) : ''].filter(Boolean).join('\n\n'));
|
|
88
91
|
let output = '';
|
|
89
92
|
let tokensUsed;
|
|
90
93
|
try {
|
|
@@ -244,7 +247,10 @@ export async function runCodexFixStep(tmpDir, baseRef, prTitle, reviewComment, i
|
|
|
244
247
|
configuredEffort,
|
|
245
248
|
// skills.codex_full_access — see runCodexReview. The fix step reads the same
|
|
246
249
|
// untrusted review comment and diff, so it is gated identically.
|
|
247
|
-
codexFullAccess = false
|
|
250
|
+
codexFullAccess = false,
|
|
251
|
+
// Replies posted to the PR thread since the review being fixed — see
|
|
252
|
+
// lib/human-feedback.ts. Undefined/empty when there are none.
|
|
253
|
+
humanFeedback) {
|
|
248
254
|
const effort = codexReasoningEffort(configuredEffort ?? 'medium');
|
|
249
255
|
let diff = '';
|
|
250
256
|
try {
|
|
@@ -260,7 +266,7 @@ codexFullAccess = false) {
|
|
|
260
266
|
.replace('{PR_TITLE}', prTitle)
|
|
261
267
|
.replace('{REVIEW_COMMENT}', reviewComment.slice(0, 8000))
|
|
262
268
|
.replace('{DIFF}', diff.slice(0, 16000))
|
|
263
|
-
.replace('{EXTRA_INSTRUCTIONS}', [instructions ? `Additional instructions: ${instructions}` : '', codexSkillsReachable(skillSession, codexFullAccess) ? renderSkillBrokerInstructions(skillSession) : ''].filter(Boolean).join('\n\n'));
|
|
269
|
+
.replace('{EXTRA_INSTRUCTIONS}', [instructions ? `Additional instructions: ${instructions}` : '', humanFeedback ?? '', codexSkillsReachable(skillSession, codexFullAccess) ? renderSkillBrokerInstructions(skillSession) : ''].filter(Boolean).join('\n\n'));
|
|
264
270
|
const resolvedTimeout = timeoutMs === undefined ? 300_000 : timeoutMs === 0 ? undefined : timeoutMs;
|
|
265
271
|
const modelArgs = model !== 'default' ? ['-c', `model="${model}"`] : [];
|
|
266
272
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/reviewers/fix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,6BAA6B,EAA+B,MAAM,qBAAqB,CAAA;AACnK,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAO1D,mFAAmF;AACnF,yDAAyD;AACzD,MAAM,cAAc,GAAG,GAAG,CAAA;AAE1B,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wDAyCgC,CAAA;AAExD,SAAS,UAAU,CAAC,QAAgB;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC9D,CAAC;AAED,yEAAyE;AACzE,mFAAmF;AACnF,MAAM,UAAU,SAAS,CAAC,WAAmB,EAAE,OAAe,EAAE,OAAe;IAC7E,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACxC,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAC3B,gFAAgF;IAChF,mFAAmF;IACnF,IAAI,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IACzD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,OAAe,EACf,OAAe,EACf,aAAqB,EACrB,YAAoB,EACpB,MAAc,EACd,KAAK,GAAG,SAAS,EACjB,SAAkB,EAClB,YAAqC;
|
|
1
|
+
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/reviewers/fix.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Launch assets — index and pre-publish checklist
|
|
2
|
+
|
|
3
|
+
Drafts for [#198](https://github.com/humanbased-ai/crosscheck/issues/198). Nothing here has been published, and nothing here should be published without the decisions below being made by a human.
|
|
4
|
+
|
|
5
|
+
| Asset | File | State |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| Long-form essay | [`essay-stop-letting-one-agent-review-its-own-code.md`](./essay-stop-letting-one-agent-review-its-own-code.md) | Draft, complete |
|
|
8
|
+
| X / LinkedIn posts | [`posts.md`](./posts.md#x--twitter) | Draft, three X variants + one LinkedIn |
|
|
9
|
+
| Show HN | [`posts.md`](./posts.md#hacker-news--show-hn) | Draft, two title options + first comment |
|
|
10
|
+
| Reddit / community | [`posts.md`](./posts.md#reddit) | Draft, r/ExperiencedDevs, r/ClaudeAI, r/ClaudeCode, r/ChatGPTCoding |
|
|
11
|
+
| README-linked demo clip | [`assets/demo-block-to-approve.mp4`](../../../assets/demo-block-to-approve.mp4) · [`.gif`](../../../assets/demo-block-to-approve.gif) | **Produced** ([#201](https://github.com/humanbased-ai/crosscheck/issues/201)). 85s full cut and a 34s README loop, recorded from [`crosscheck-proof-fixture#2`](https://github.com/humanbased-ai/crosscheck-proof-fixture/pull/2) |
|
|
12
|
+
|
|
13
|
+
## The argument these assets make
|
|
14
|
+
|
|
15
|
+
The product claim ("route agent PRs to a different agent") is not what earns attention — plenty of tools claim adjacent things. What earns attention is the census finding, which is genuinely counter-intuitive:
|
|
16
|
+
|
|
17
|
+
> The reviewer was essentially never wrong, and 62% of PRs merged past it anyway, median four minutes after the last review. Review quality was never the binding constraint. And fixing the gate first would have made it worse, because the loop was unbounded.
|
|
18
|
+
|
|
19
|
+
Every asset leads with that and arrives at the product second. Sequencing it the other way turns a defensible technical finding into an ad.
|
|
20
|
+
|
|
21
|
+
## Decisions needed before publishing
|
|
22
|
+
|
|
23
|
+
1. **Publication venue for the essay.** These drafts link to the repo. If it goes on `blog.humanbased.ai` alongside [What 295 Agentic PRs Taught Us](https://blog.humanbased.ai/posts/agentic-pr-quality-crosscheck/), the two overlap in evidence and should cross-link rather than restate — the earlier post covers PR quality, this one covers why a correct review still doesn't change a merge.
|
|
24
|
+
2. **Whether to publish the 4-minute number at all.** It is the strongest hook in the essay and it is also a public admission that our own team merged past correct findings 62% of the time. That is a deliberate credibility trade: it makes the piece believable and it says something unflattering about our discipline. Worth an explicit yes.
|
|
25
|
+
3. **Whether the operator-run gate is in the published package by publish time.** `crosscheck merge <pr-url>` is implemented on `staging`: by default it requires an `APPROVE` covering the exact head commit and GitHub must report the PR mergeable. It is not a branch-protection status and no verdict, webhook, or scheduled run invokes it automatically. Before publishing these drafts, verify that the released npm version includes the command; otherwise defer publication or revise the new current-product wording in the essay and Show HN comment.
|
|
26
|
+
4. ~~**Timing against [#200](https://github.com/humanbased-ai/crosscheck/issues/200)** (npm scope).~~ **Resolved.** `@humanbased/crosscheck` is published — `latest` is `1.3.0`, both the `crosscheck` and `ck` bins ship, and `@motivation-labs/crosscheck` is deprecated with a migration message pointing at the new scope. The install line every draft uses now works, so this no longer gates publishing.
|
|
27
|
+
5. ~~**Demo clip.**~~ **Produced** — but read this before linking it. The clip runs the real arc from [`crosscheck-proof-fixture#2`](https://github.com/humanbased-ai/crosscheck-proof-fixture/pull/2), and that arc took **three rounds**: the first repair restored a dropped ownership filter and left a test asserting the old query shape, and the next review caught the regression its own fix step had introduced. The full cut shows all of it, deliberately.
|
|
28
|
+
|
|
29
|
+
That is an asset and a liability at once, and it is the same trade as decision 2. It is the most convincing thing in the recording — a loop that catches its own mistakes is a much stronger claim than one clean pass — and it also shows the fix step shipping a broken test, and a third round blocking on a concern the reviewer's own summary had already called resolved. Both of those are now filed as bugs ([#317](https://github.com/humanbased-ai/crosscheck/issues/317), [#318](https://github.com/humanbased-ai/crosscheck/issues/318)) and fixed, so the clip records behaviour that no longer ships. **Decide whether to re-record against the fixed pipeline before launch, or to lead with the three-round version as the honest artifact.** The drafts still reference no clip, so either choice needs an edit rather than a removal.
|
|
30
|
+
|
|
31
|
+
Note also that the Show HN comment and the essay both have a natural slot for it, and neither uses one yet.
|
|
32
|
+
|
|
33
|
+
## Fact-check trail
|
|
34
|
+
|
|
35
|
+
Every number in these drafts comes from [`docs/dynamic-thoroughness.md`](../../dynamic-thoroughness.md), census window 2026-07-30 → 2026-08-07:
|
|
36
|
+
|
|
37
|
+
| Claim | Source |
|
|
38
|
+
|---|---|
|
|
39
|
+
| 400 merged PRs, 199 crosscheck-engaged | Corpus line |
|
|
40
|
+
| 40 sampled findings: 39 verifiable, 0 false; 1 unverifiable | §2 label table |
|
|
41
|
+
| 33 of 39 verifiable were defect-grade (~85%) | §2 label table + calibration note |
|
|
42
|
+
| 6 true but severity-inflated | §2 label table |
|
|
43
|
+
| 94% of reviews land before merge | §0 measured table |
|
|
44
|
+
| 38% of PRs reach APPROVE | §0 measured table |
|
|
45
|
+
| Median 4 minutes, last review → merge | §0 measured table |
|
|
46
|
+
| 62% merged past; 56% of those within 5 min | §0 narrative |
|
|
47
|
+
| CR-Bench 3.6–5.1% precision, non-comparable | §2 calibration note |
|
|
48
|
+
| The three concrete defects (#8, #6, #13) | §2 representative confirmed defects |
|
|
49
|
+
|
|
50
|
+
If that document is revised, these drafts are stale and must be re-checked against it before posting.
|
|
51
|
+
|
|
52
|
+
## Posting order, once approved
|
|
53
|
+
|
|
54
|
+
1. Publish the essay. Everything else links to it.
|
|
55
|
+
2. Show HN, weekday morning US Eastern. Be present for the first two hours.
|
|
56
|
+
3. X and LinkedIn the same morning, after the HN post is live.
|
|
57
|
+
4. Reddit last, and only where the sidebar permits it. Check each community's self-promotion rule — several ban it outright and moderators enforce it.
|
|
58
|
+
|
|
59
|
+
Do not seed upvotes or comments anywhere. It is detectable and it ends the launch.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Stop Letting One Agent Review Its Own Code
|
|
2
|
+
|
|
3
|
+
> **Draft for review — not published.** Every number below is sourced from
|
|
4
|
+
> [`docs/dynamic-thoroughness.md`](../../dynamic-thoroughness.md) (census window
|
|
5
|
+
> 2026-07-30 → 2026-08-07). Nothing is estimated or rounded up. See
|
|
6
|
+
> [`README.md`](./README.md) in this folder for what needs a decision before publishing.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Ask a coding agent to review the patch it just wrote and it will tell you the patch is good. Not because it is lying. Because the reasoning that produced the bug is the same reasoning now judging it, and it has already convinced itself once.
|
|
11
|
+
|
|
12
|
+
This is not a prompt problem. You cannot fix it with "be critical" or "review this as a skeptical senior engineer." The blind spot and the reviewer share a context window.
|
|
13
|
+
|
|
14
|
+
We build with agents all day, so we hit this constantly. And the failure mode isn't the one people expect.
|
|
15
|
+
|
|
16
|
+
## The failure isn't a broken build
|
|
17
|
+
|
|
18
|
+
Broken builds are fine. CI catches them, you fix them, nobody merges anything dangerous.
|
|
19
|
+
|
|
20
|
+
The dangerous output is what we've started calling **early victory**: a patch that passes CI, reads as complete, has a confident summary attached — and quietly carries a regression, an unhandled edge, or a fix that addresses the symptom the test caught and not the cause underneath.
|
|
21
|
+
|
|
22
|
+
Real examples, each one flagged by the reviewer, each one hand-verified against the source afterwards — and each one on a PR that merged without ever reaching an approving verdict:
|
|
23
|
+
|
|
24
|
+
- A function that accepts an `expected_mode` parameter for dual-control confirmation and never puts it in the request body. The parameter and the omission are two lines apart in the same function. Dual control silently bypassed.
|
|
25
|
+
- A `body.get("data")` sitting one line *outside* the `try` that catches JSON errors, so a non-object response raises an uncaught `AttributeError` instead of the handled failure the author intended.
|
|
26
|
+
- A promote payload sending three fields the receiving model no longer defines, against a schema set to `extra="forbid"`. Every promotion and every rollback returns 422. The feature is entirely broken, and the tests pass.
|
|
27
|
+
|
|
28
|
+
None of these look like mistakes. They look like finished work. That is the whole problem.
|
|
29
|
+
|
|
30
|
+
## So we pointed a second agent at it
|
|
31
|
+
|
|
32
|
+
The fix is structural and boring: **the agent that writes the patch does not review it.** When both vendors are configured, a Claude-authored PR routes to Codex and a Codex-authored PR routes to Claude. Findings go back to the original author agent to repair, and a recheck runs before the PR is merge-ready.
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
PR → review → fix → recheck → merge-ready
|
|
36
|
+
(codex) (claude) (codex)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
That is crosscheck. It shells out to the configured vendor CLIs rather than adding a hosted review service. In our setup, both CLIs use subscription authentication, so there is no separate per-review API bill; API-key authentication is also supported and billed by the vendor.
|
|
40
|
+
|
|
41
|
+
Then we measured it, and the measurement did not say what we expected.
|
|
42
|
+
|
|
43
|
+
## The reviewer was right. That turned out not to be the point.
|
|
44
|
+
|
|
45
|
+
We took a census of 400 merged PRs, 199 of them crosscheck-engaged. Then we sampled 40 BLOCK findings and hand-read each one against the file it cited, at the sha it was reviewed at.
|
|
46
|
+
|
|
47
|
+
| | |
|
|
48
|
+
|---|---|
|
|
49
|
+
| Findings that were false | **0** |
|
|
50
|
+
| Findings that were genuine defects | **33 of 39** verifiable (~85%) |
|
|
51
|
+
| True but severity-inflated | 6 |
|
|
52
|
+
| Unverifiable (file since deleted) | 1 |
|
|
53
|
+
|
|
54
|
+
None of the 39 verifiable findings were false; one finding could not be verified because its file had since been deleted. The reviews were also doing work no linter does — reading the repo's own convention docs, cross-referencing design records, tracing call paths across services. One finding flagged a migration timestamp by citing the exact line of an internal conventions doc that says *never hand-write a round-number timestamp*, and referenced the prior incident that rule exists because of.
|
|
55
|
+
|
|
56
|
+
For calibration: CR-Bench reports 3.6–5.1% precision for review agents. That is not an apples-to-apples comparison — CR-Bench scores against a fixed ground-truth defect list and penalizes anything outside it, while we asked "is this claim true and worth fixing." Different questions. We're naming the gap rather than quoting the flattering number without it.
|
|
57
|
+
|
|
58
|
+
So: the reviewer lands before merge 94% of the time, and it is essentially never wrong.
|
|
59
|
+
|
|
60
|
+
And then:
|
|
61
|
+
|
|
62
|
+
| | |
|
|
63
|
+
|---|---|
|
|
64
|
+
| PRs that reached APPROVE | **38%** |
|
|
65
|
+
| Median gap, last review → merge | **4 minutes** |
|
|
66
|
+
|
|
67
|
+
62% of PRs merged past the findings. Of those, 56% merged within five minutes of the review — or before it landed at all.
|
|
68
|
+
|
|
69
|
+
We had built a reviewer that was fast and correct, and it was being merged straight past.
|
|
70
|
+
|
|
71
|
+
## Being right is not a gate
|
|
72
|
+
|
|
73
|
+
The reason was structural, and it was ours. Crosscheck created a lifecycle status while a run was in flight, but it never published the review verdict as a merge-blocking status. The verdict lived only in a comment, and `crosscheck/review` was not required by branch protection. GitHub merged the moment CI went green, and nothing on earth stopped a merge at minute four.
|
|
74
|
+
|
|
75
|
+
Two different failure modes hide in that number, and they need opposite fixes:
|
|
76
|
+
|
|
77
|
+
**The fast majority had no gate.** Merging before the review lands isn't a considered trade-off, it's an undisciplined default. No improvement to review quality, latency, or tone changes it — the review was never part of the merge decision.
|
|
78
|
+
|
|
79
|
+
**The slow tail had no terminal state.** Findings never stopped arriving. Round two produced new ones, round three produced more. That's tolerable when you can ignore it and merge. It becomes intolerable the moment you *can't*.
|
|
80
|
+
|
|
81
|
+
Which means the obvious fix is actively harmful if you do it first. Gate before bounding the loop and you convert "merged past findings in four minutes" into "blocked for two days." That is worse, not better. Bound the loop, then gate, then optimize latency — in that order.
|
|
82
|
+
|
|
83
|
+
This is the part we'd have gotten wrong without the census. The instinct was to make the reviewer smarter. The reviewer did not need to be smarter.
|
|
84
|
+
|
|
85
|
+
## What this means if you're running agents
|
|
86
|
+
|
|
87
|
+
Three things we'd now say to anyone shipping agent-authored code:
|
|
88
|
+
|
|
89
|
+
1. **Don't let the author review its own work.** Not as a policy preference — as an architectural constraint. Different model, different context, or it isn't review.
|
|
90
|
+
2. **Measure whether your review changes the merge decision.** Not findings-per-PR, not precision. The share of real defects fixed *inside the merge window*. A correct finding that arrives after merge is worth exactly nothing.
|
|
91
|
+
3. **Bound the loop before you enforce it.** An unbounded quality process that you're now required to satisfy is how teams learn to hate quality processes.
|
|
92
|
+
|
|
93
|
+
## Where crosscheck is honest about its limits
|
|
94
|
+
|
|
95
|
+
It never merges on its own. No verdict, webhook, or scheduled run reaches a merge. The explicit `crosscheck merge <pr-url>` command is the sole exception: a person must run it, and by default it requires an approving verdict that covers the exact head commit plus GitHub's own mergeability check.
|
|
96
|
+
|
|
97
|
+
It doesn't replace human review. It makes agent output reviewable, which is a smaller and more achievable claim.
|
|
98
|
+
|
|
99
|
+
Your diff reaches Anthropic or OpenAI through the `claude` and `codex` CLIs you're already authenticated to, under their terms. Crosscheck adds no separate upload path, and if a repo can't go to a model vendor, crosscheck isn't the tool that changes that.
|
|
100
|
+
|
|
101
|
+
And the census above is ours: one team, 400 PRs, one week, our conventions. Run it on your own repos and check whether it holds.
|
|
102
|
+
|
|
103
|
+
## Try it on one PR
|
|
104
|
+
|
|
105
|
+
`--dry-run` suppresses Crosscheck's own GitHub writes and fix step. It still clones locally and invokes the configured vendor CLI, whose permissions, network access, and ambient credentials are outside that guarantee:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
npm install -g @humanbased/crosscheck
|
|
109
|
+
crosscheck run https://github.com/your-org/your-repo/pull/123 --dry-run
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
When you want the comment but no code changes, drop `--dry-run` for `--review-only`.
|
|
113
|
+
|
|
114
|
+
- Repo: <https://github.com/humanbased-ai/crosscheck> (MIT)
|
|
115
|
+
- What leaves your machine, and what crosscheck can change: [`docs/trust.md`](https://github.com/humanbased-ai/crosscheck/blob/main/docs/trust.md)
|
|
116
|
+
- The full census, including the two analytical approaches we abandoned: [`docs/dynamic-thoroughness.md`](https://github.com/humanbased-ai/crosscheck/blob/main/docs/dynamic-thoroughness.md)
|
|
117
|
+
|
|
118
|
+
Your agents ship fast. Something other than the agent should decide whether they shipped right.
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Launch posts — drafts
|
|
2
|
+
|
|
3
|
+
> **Not published.** These are drafts for a human to post. Every number traces to
|
|
4
|
+
> [`docs/dynamic-thoroughness.md`](../../dynamic-thoroughness.md). Read
|
|
5
|
+
> [`README.md`](./README.md) in this folder before posting anything — particularly the
|
|
6
|
+
> self-promotion rules per community, which differ and are enforced.
|
|
7
|
+
|
|
8
|
+
The through-line in all of them: **the reviewer being correct was not the bottleneck.** That is the one non-obvious thing we learned, and it is what earns attention. Lead with it rather than with the product.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## X / Twitter
|
|
13
|
+
|
|
14
|
+
**Version A — the finding (recommended)**
|
|
15
|
+
|
|
16
|
+
> We built an AI code reviewer. Of 40 BLOCK findings sampled, 39 were verifiable; none were false.
|
|
17
|
+
>
|
|
18
|
+
> Yet 62% of PRs merged past its findings. Median review-to-merge gap: 4 minutes.
|
|
19
|
+
>
|
|
20
|
+
> Being right isn't a gate. [link]
|
|
21
|
+
|
|
22
|
+
**Version B — the failure mode**
|
|
23
|
+
|
|
24
|
+
> Ask the agent that wrote a patch to review it and it'll say it's good. The reasoning that produced the bug is now judging it.
|
|
25
|
+
>
|
|
26
|
+
> Not a prompt problem: blind spot and reviewer share a context window.
|
|
27
|
+
>
|
|
28
|
+
> Our Claude PRs go to Codex, and back. [link]
|
|
29
|
+
|
|
30
|
+
**Version C — one concrete defect**
|
|
31
|
+
|
|
32
|
+
> A function took an `expected_mode` param for dual-control confirmation and never put it in the request body. Two lines apart. Dual control silently bypassed. Tests passed.
|
|
33
|
+
>
|
|
34
|
+
> The agent that wrote it called it done. A different agent caught it.
|
|
35
|
+
>
|
|
36
|
+
> [link]
|
|
37
|
+
|
|
38
|
+
Thread continuation for A or B, if you want one:
|
|
39
|
+
|
|
40
|
+
> 2/ The census: 400 merged PRs, 199 crosscheck-engaged, one week.
|
|
41
|
+
>
|
|
42
|
+
> Reviews landed before merge 94% of the time. 38% of PRs reached APPROVE. 56% of the rest merged within five minutes of the review — or before it landed.
|
|
43
|
+
>
|
|
44
|
+
> 3/ The reason was ours: crosscheck created a lifecycle status while a run was in flight, but the verdict lived only in a comment. `crosscheck/review` wasn't required by branch protection, so GitHub merged the second CI went green.
|
|
45
|
+
>
|
|
46
|
+
> 4/ The trap: gating first would have made it worse. Findings never stopped arriving, so an enforced unbounded loop turns "merged in 4 minutes" into "blocked for two days."
|
|
47
|
+
>
|
|
48
|
+
> Bound the loop, then gate, then optimize latency. In that order.
|
|
49
|
+
>
|
|
50
|
+
> 5/ MIT, shells out to configured vendor CLIs. With subscription-authenticated Claude and Codex, there's no separate hosted service or per-review API bill; API-key auth is also supported.
|
|
51
|
+
>
|
|
52
|
+
> Try it with Crosscheck's own writes suppressed: `crosscheck run <pr-url> --dry-run` (the vendor CLI still runs under its configured permissions).
|
|
53
|
+
>
|
|
54
|
+
> [repo link]
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## LinkedIn
|
|
59
|
+
|
|
60
|
+
> **We measured our AI code reviewer and the result inverted the roadmap.**
|
|
61
|
+
>
|
|
62
|
+
> We build with coding agents daily. The failure mode that costs us isn't a broken build — CI catches those. It's what we've started calling early victory: a patch that passes CI, reads as complete, has a confident summary attached, and quietly carries a regression or a half-finished fix.
|
|
63
|
+
>
|
|
64
|
+
> Asking the agent that wrote the patch to review it doesn't help. The reasoning that produced the bug is the reasoning now judging it.
|
|
65
|
+
>
|
|
66
|
+
> In our two-vendor setup, we routed each PR to a *different* agent — Claude-authored PRs to Codex, and back — with findings returning to the author agent for repair and a recheck before merge.
|
|
67
|
+
>
|
|
68
|
+
> Then we ran a census: 400 merged PRs over one week, 199 of them reviewed by the system. We sampled 40 of its blocking findings and hand-read each against the file it cited.
|
|
69
|
+
>
|
|
70
|
+
> Of 40 sampled findings, 39 were verifiable and none were false; one was unverifiable. ~85% of the verifiable findings were genuine defects. Reviews landed before merge 94% of the time.
|
|
71
|
+
>
|
|
72
|
+
> And 62% of PRs merged straight past them. Median gap from last review to merge: four minutes.
|
|
73
|
+
>
|
|
74
|
+
> The problem was never review quality. The verdict lived in a comment, and `crosscheck/review` wasn't required by branch protection, so GitHub merged the moment CI went green.
|
|
75
|
+
>
|
|
76
|
+
> The counter-intuitive part: adding the gate first would have made things worse. Findings never stopped arriving across rounds, and enforcing an unbounded loop converts "merged past findings in four minutes" into "blocked for two days." Bound the loop, then gate, then optimize latency.
|
|
77
|
+
>
|
|
78
|
+
> Two things I'd take to any team shipping agent-authored code:
|
|
79
|
+
>
|
|
80
|
+
> → Don't let the author review its own work. Treat it as an architectural constraint, not a prompt preference.
|
|
81
|
+
> → Measure whether your review changes the merge decision — the share of real defects fixed inside the merge window. Not findings per PR.
|
|
82
|
+
>
|
|
83
|
+
> Crosscheck is MIT and shells out to configured vendor CLIs. With subscription authentication, there is no separate per-review API bill; API-key authentication is also supported. Full census, including the two analytical approaches we abandoned, is in the repo.
|
|
84
|
+
>
|
|
85
|
+
> [repo link]
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Hacker News — Show HN
|
|
90
|
+
|
|
91
|
+
**Title** (80 char limit; both fit)
|
|
92
|
+
|
|
93
|
+
- `Show HN: Crosscheck – route agent-authored PRs to a different agent for review`
|
|
94
|
+
- `Show HN: We measured our AI code reviewer; being correct wasn't the bottleneck`
|
|
95
|
+
|
|
96
|
+
Prefer the first for a Show HN — it says what the thing is. Use the second as a regular submission of the essay if the Show HN doesn't land.
|
|
97
|
+
|
|
98
|
+
**First comment** (post immediately after submitting)
|
|
99
|
+
|
|
100
|
+
> Author here. When both vendors are configured, Crosscheck routes each agent-authored PR to a *different* agent than the one that wrote it — Claude-authored PRs to Codex and vice versa — then sends findings back to the author agent to fix and rechecks before the PR is merge-ready. It shells out to the configured CLIs rather than adding a hosted service. With subscription authentication, there is no separate per-review API bill; API-key authentication is also supported.
|
|
101
|
+
>
|
|
102
|
+
> The motivating failure isn't broken builds. It's patches that pass CI, read as complete, and carry a regression or a fix that addresses the symptom rather than the cause. Asking the authoring agent to review its own work doesn't catch those — the reasoning that produced the bug is the one judging it.
|
|
103
|
+
>
|
|
104
|
+
> The part I'd actually like feedback on is what happened when we measured it. We censused 400 merged PRs over a week (199 crosscheck-engaged), sampled 40 BLOCK findings, and hand-read each against the file it cited at the reviewed sha: 39 were verifiable and none were false; one was unverifiable. ~85% of the verifiable findings were genuine defects, and 94% of reviews landed before merge.
|
|
105
|
+
>
|
|
106
|
+
> And 62% of PRs merged past them anyway, median four minutes after the last review. The cause was structural and ours: crosscheck created a lifecycle status while a run was in flight, but the verdict lived only in a comment and `crosscheck/review` wasn't required by branch protection. GitHub merged as soon as CI went green.
|
|
107
|
+
>
|
|
108
|
+
> What surprised me is that fixing that first would have been harmful. Findings kept arriving across rounds, so enforcing an unbounded loop turns "merged past findings in four minutes" into "blocked for two days." The order has to be: bound the loop, then gate, then reduce latency.
|
|
109
|
+
>
|
|
110
|
+
> Honest limits: it never merges on its own — only a person running `crosscheck merge` can reach the gated merge path. It doesn't replace human review, and your diff reaches Anthropic/OpenAI through their own CLIs under their terms — crosscheck adds no separate upload path. The census is one team, one week, our conventions; I'd be interested in whether the 4-minute number reproduces elsewhere or whether we're just undisciplined.
|
|
111
|
+
>
|
|
112
|
+
> First run with Crosscheck's GitHub writes suppressed: `crosscheck run <pr-url> --dry-run`. It still clones locally and invokes the configured vendor CLI under that CLI's permissions.
|
|
113
|
+
>
|
|
114
|
+
> MIT: [repo link]. The census, including two analytical approaches we abandoned, is in docs/dynamic-thoroughness.md.
|
|
115
|
+
|
|
116
|
+
**Notes for the poster**
|
|
117
|
+
|
|
118
|
+
- Submit the repo URL, not the essay, for a Show HN.
|
|
119
|
+
- Be present for the first two hours. The questions to expect: "isn't this just two LLMs agreeing with each other," "what's the token cost per PR," "why not use existing review bots," and "0 false positives is not believable." Answer the last one with the labelling method (hand-read against the cited sha, seeded sample, 6 severity-inflated cases counted as *true*) rather than restating the number.
|
|
120
|
+
- Do not seed upvotes or comments. HN detects it and it ends the launch.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Reddit
|
|
125
|
+
|
|
126
|
+
Community rules on self-promotion differ, several ban it outright, and moderators enforce it. Check each sidebar before posting; where promotion is restricted, post the essay's finding as a discussion and mention the tool only if asked.
|
|
127
|
+
|
|
128
|
+
### r/ExperiencedDevs — discussion framing, no product lead
|
|
129
|
+
|
|
130
|
+
**Title:** `39 verifiable AI code-review findings, 0 false — and 62% of PRs merged past them anyway.`
|
|
131
|
+
|
|
132
|
+
> We ship a lot of agent-authored PRs and built an independent reviewer for them (a different model than the one that wrote the patch). Before trusting it we ran a census: 400 merged PRs over a week, sampled 40 of its blocking findings, and hand-read each one against the file it cited at the sha it was reviewed at.
|
|
133
|
+
>
|
|
134
|
+
> Of the 40 sampled findings, 39 were verifiable and none were false; one was unverifiable. ~85% of the verifiable findings were genuine defects. 94% of reviews landed before the merge.
|
|
135
|
+
>
|
|
136
|
+
> Then the uncomfortable number: only 38% of PRs reached an approving verdict, and the median gap between the last review and the merge was 4 minutes. Most PRs merged straight past correct findings.
|
|
137
|
+
>
|
|
138
|
+
> The cause turned out to be structural rather than about review quality: the verdict lived only in a PR comment. Crosscheck created a lifecycle status while the run was in flight, but that status did not represent the verdict and appeared in no branch protection rule, so nothing stopped a merge the moment CI went green.
|
|
139
|
+
>
|
|
140
|
+
> What I didn't expect: adding the required check first would have made it worse. Findings kept arriving in later rounds, so enforcing an unbounded review loop converts "merged in 4 minutes" into "blocked for two days." We had to bound the loop before gating it.
|
|
141
|
+
>
|
|
142
|
+
> Curious whether others measuring review effectiveness see the same thing — that precision and latency aren't the binding constraint, and the review simply isn't part of the merge decision. And how you bounded the loop without capping it somewhere arbitrary.
|
|
143
|
+
|
|
144
|
+
### r/ClaudeAI and r/ClaudeCode — practitioner framing
|
|
145
|
+
|
|
146
|
+
**Title:** `Stopped letting Claude review its own PRs — routed them to Codex instead. Here's what the findings looked like.`
|
|
147
|
+
|
|
148
|
+
> I use Claude Code as my main author. Asking it to review its own patch was consistently useless — not wrong exactly, just agreeable. The reasoning that wrote the bug is the reasoning judging it, and it already convinced itself once.
|
|
149
|
+
>
|
|
150
|
+
> So I wired up both vendors: Claude-authored PRs go to Codex, Codex-authored PRs go to Claude, findings return to the original author agent to fix, then a recheck.
|
|
151
|
+
>
|
|
152
|
+
> Sampled 40 of the blocking findings and hand-checked them against the source. Of 39 verifiable findings, none were false; one was unverifiable. The good ones weren't lint-grade — they read the repo's own convention docs and traced call paths across services. One caught a function that accepted an `expected_mode` param for dual-control confirmation and never put it in the request body. Two lines apart, tests green.
|
|
153
|
+
>
|
|
154
|
+
> It shells out to the configured `claude` and `codex` CLIs. With subscription authentication, there is no separate per-review API bill; API-key authentication is also supported. MIT.
|
|
155
|
+
>
|
|
156
|
+
> To suppress Crosscheck's own GitHub writes on a first run: `crosscheck run <pr-url> --dry-run`. It still clones locally and invokes the vendor CLI under that CLI's configured permissions.
|
|
157
|
+
>
|
|
158
|
+
> [repo link]
|
|
159
|
+
|
|
160
|
+
### r/ChatGPTCoding — same shape, Codex-first
|
|
161
|
+
|
|
162
|
+
Use the r/ClaudeAI draft with the vendors swapped: Codex as the author, Claude as the reviewer. Keep the concrete defect example — it is what makes the post land.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## What not to say
|
|
167
|
+
|
|
168
|
+
Guardrails, so nothing in this launch has to be walked back:
|
|
169
|
+
|
|
170
|
+
- **No invented numbers.** Everything quotable is in `docs/dynamic-thoroughness.md`. If a number isn't there, it doesn't get posted.
|
|
171
|
+
- **No comparison to CR-Bench precision without the caveat.** 3.6–5.1% vs ~85% is not apples to apples; quoting it bare is the kind of claim that gets correctly torn apart.
|
|
172
|
+
- **No "catches every bug."** 6 of 40 findings were severity-inflated. Say so when it comes up.
|
|
173
|
+
- **No fake adoption.** No user counts, no "teams are using," no testimonials we don't have.
|
|
174
|
+
- **No claim that it replaces human review.** It makes agent output reviewable.
|
|
175
|
+
- **No implication that source stays local.** It reaches the model vendors through their CLIs, and the trust doc says so plainly.
|