@motivation-labs/crosscheck 0.8.0 → 0.9.0-beta.16

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 (59) hide show
  1. package/README.md +45 -214
  2. package/README.zh.md +51 -176
  3. package/crosscheck.config.example.yml +13 -17
  4. package/dist/__tests__/loader.test.js +51 -2
  5. package/dist/__tests__/loader.test.js.map +1 -1
  6. package/dist/__tests__/onboard-preservation.test.js +1 -0
  7. package/dist/__tests__/onboard-preservation.test.js.map +1 -1
  8. package/dist/__tests__/optimize.test.js +2 -5
  9. package/dist/__tests__/optimize.test.js.map +1 -1
  10. package/dist/cli.js +4 -2
  11. package/dist/cli.js.map +1 -1
  12. package/dist/commands/issue.d.ts.map +1 -1
  13. package/dist/commands/issue.js +5 -2
  14. package/dist/commands/issue.js.map +1 -1
  15. package/dist/commands/onboard.d.ts +1 -0
  16. package/dist/commands/onboard.d.ts.map +1 -1
  17. package/dist/commands/onboard.js +53 -24
  18. package/dist/commands/onboard.js.map +1 -1
  19. package/dist/commands/review.d.ts.map +1 -1
  20. package/dist/commands/review.js +8 -11
  21. package/dist/commands/review.js.map +1 -1
  22. package/dist/commands/run.d.ts.map +1 -1
  23. package/dist/commands/run.js +6 -10
  24. package/dist/commands/run.js.map +1 -1
  25. package/dist/commands/serve.d.ts.map +1 -1
  26. package/dist/commands/serve.js +11 -17
  27. package/dist/commands/serve.js.map +1 -1
  28. package/dist/commands/watch.d.ts.map +1 -1
  29. package/dist/commands/watch.js +7 -18
  30. package/dist/commands/watch.js.map +1 -1
  31. package/dist/config/loader.d.ts +1 -2
  32. package/dist/config/loader.d.ts.map +1 -1
  33. package/dist/config/loader.js +11 -11
  34. package/dist/config/loader.js.map +1 -1
  35. package/dist/config/schema.d.ts +27 -54
  36. package/dist/config/schema.d.ts.map +1 -1
  37. package/dist/config/schema.js +15 -12
  38. package/dist/config/schema.js.map +1 -1
  39. package/dist/lib/board.d.ts +7 -0
  40. package/dist/lib/board.d.ts.map +1 -1
  41. package/dist/lib/board.js +150 -57
  42. package/dist/lib/board.js.map +1 -1
  43. package/dist/lib/clone.d.ts +12 -0
  44. package/dist/lib/clone.d.ts.map +1 -0
  45. package/dist/lib/clone.js +30 -0
  46. package/dist/lib/clone.js.map +1 -0
  47. package/dist/lib/runner.d.ts +3 -0
  48. package/dist/lib/runner.d.ts.map +1 -1
  49. package/dist/lib/runner.js +44 -51
  50. package/dist/lib/runner.js.map +1 -1
  51. package/dist/lib/workflow.d.ts.map +1 -1
  52. package/dist/lib/workflow.js +9 -2
  53. package/dist/lib/workflow.js.map +1 -1
  54. package/dist/reviewers/claude.d.ts.map +1 -1
  55. package/dist/reviewers/claude.js +3 -9
  56. package/dist/reviewers/claude.js.map +1 -1
  57. package/get-started.md +24 -14
  58. package/get-started.zh.md +422 -52
  59. package/package.json +1 -1
package/get-started.md CHANGED
@@ -786,7 +786,7 @@ If no errors are found in recent logs, crosscheck prints `No errors found in rec
786
786
 
787
787
  On re-runs, `onboard` updates only the fields it collected answers for. Everything else survives unchanged.
788
788
 
789
- **Updated on every run:** `deployment`, `orgs`, `repos`, `mode`, `vendors.*.enabled`, `vendors.*.effort`, `quality.tier`, `tunnel.*`, `post_review.auto_fix.*`
789
+ **Updated on every run:** `deployment`, `orgs`, `repos`, `mode`, `clone_protocol`, `vendors.*.enabled`, `vendors.*.effort`, `quality.tier`, `tunnel.*`, `post_review.auto_fix.*`
790
790
 
791
791
  **Initialised on first run, never overwritten:** `routing.allowed_authors`, `routing.author_routes`, `routing.fallback_reviewer`
792
792
 
@@ -798,9 +798,9 @@ On re-runs, `onboard` updates only the fields it collected answers for. Everythi
798
798
 
799
799
  crosscheck stores its config in `~/.crosscheck/config.yml` by default — persistent across projects, no per-repo file needed. It also looks in these locations (first found wins):
800
800
 
801
- 1. `./crosscheck.config.yml`
802
- 2. `./.crosscheck.yml`
803
- 3. `~/.crosscheck/config.yml` ← **default location**
801
+ 1. `~/.crosscheck/config.yml` ← **default location**
802
+ 2. `./crosscheck.config.yml`
803
+ 3. `./.crosscheck.yml`
804
804
 
805
805
  Run `crosscheck init` to generate `~/.crosscheck/config.yml` with all options documented.
806
806
 
@@ -820,6 +820,13 @@ Logs are written to `~/.crosscheck/logs/YYYY-MM-DD.ndjson` and retained for 30 d
820
820
  # cross-vendor: Claude ↔ Codex review each other
821
821
  mode: cross-vendor
822
822
 
823
+ # ── Clone protocol ────────────────────────────────────────────────────────────
824
+ # ssh — git@github.com:owner/repo.git (uses local SSH keys)
825
+ # https — https://github.com/owner/repo.git (uses GitHub token)
826
+ # Pick https if you have multi-account SSH setup or your default SSH key
827
+ # cannot access target repos. Independent of `gh config get git_protocol`.
828
+ clone_protocol: ssh
829
+
823
830
  # ── Vendors ───────────────────────────────────────────────────────────────────
824
831
  vendors:
825
832
  codex:
@@ -915,17 +922,10 @@ impact:
915
922
  defect_cost_usd: 150 # per issue caught, for --money estimate
916
923
 
917
924
  # ── Post-review auto-fix ──────────────────────────────────────────────────────
918
- # Runs after each review. When issues are found, the authoring vendor opens a
919
- # fix PR targeting the original branch. You approve and merge it; the original
920
- # PR updates automatically.
925
+ # Controls HOW fixes are delivered. Step sequencing (which steps run, when,
926
+ # and with which vendor) is configured in ~/.crosscheck/workflow.yml.
921
927
  post_review:
922
928
  auto_fix:
923
- enabled: true
924
- trigger: on_issues # on_issues | always | never
925
- min_severity: warning # error | warning | info — skip cosmetic findings
926
- # same-as-author: the vendor that wrote the PR also applies the fix
927
- # In cross-vendor mode: Claude-authored → Claude fixes; Codex-authored → Codex fixes
928
- fixer: same-as-author # same-as-author | same-as-reviewer | codex | claude
929
929
  delivery:
930
930
  mode: pull_request # pull_request | commit | comment
931
931
  # pull_request → fix PR targets original branch; human approves before merge
@@ -934,6 +934,16 @@ post_review:
934
934
  pr_title: "fix: address CR issues in #{original_pr_title}"
935
935
  label: cr-autofix # GitHub label applied to the fix PR
936
936
 
937
+ # ── Backtrace ─────────────────────────────────────────────────────────────────
938
+ # On startup, scan all open PRs in the monitored scope and review any that
939
+ # haven't received a [crosscheck] comment yet. Off by default.
940
+ # Enable with:
941
+ # backtrace.enabled: true (persistent — runs every startup)
942
+ # --backtrace flag (this session only)
943
+ # --no-backtrace flag (suppress even when enabled: true)
944
+ # backtrace:
945
+ # enabled: true
946
+
937
947
  # ── Server ────────────────────────────────────────────────────────────────────
938
948
  server:
939
949
  port: 7891
@@ -1080,7 +1090,7 @@ GitHub can fire both `opened` and `synchronize` events for the same push. crossc
1080
1090
  - **Webhook signature** — every request verified with HMAC-SHA256 before parsing
1081
1091
  - **Temp isolation** — each PR cloned into a fresh temp dir, deleted after review
1082
1092
  - **Read-only tools** — Claude restricted to `git diff` and `git log` only
1083
- - **No credentials in clones** — `gh repo clone` uses the gh credential helper; no tokens written to disk
1093
+ - **Temp credential isolation** — with `clone_protocol: ssh` (default) no tokens touch disk; with `clone_protocol: https` a short-lived token is embedded in the temp clone's remote URL and removed when the temp dir is deleted after review
1084
1094
 
1085
1095
  ---
1086
1096