@iowarp/clio-coder 0.4.2 → 0.4.4
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/CHANGELOG.md +98 -0
- package/CONTRIBUTING.md +86 -19
- package/README.md +35 -6
- package/dist/{acp-TMDQZDIG.js → acp-WNAYYF4F.js} +12 -13
- package/dist/{agents-5N5NG3XG.js → agents-3OKXHLOI.js} +60 -57
- package/dist/assets/codewiki.json +1 -1
- package/dist/{auth-Z5CCBXKQ.js → auth-VKNNMGPU.js} +21 -19
- package/dist/{builtins-K6TNDT24.js → builtins-WGALA46I.js} +9 -4
- package/dist/{chunk-XE3PCIXH.js → chunk-23L32XTI.js} +12 -9
- package/dist/{chunk-I64IFBLB.js → chunk-25QBEXRS.js} +18 -11
- package/dist/{chunk-CDNVLKUX.js → chunk-26QSH3EJ.js} +13 -7
- package/dist/{chunk-QQLGQY2A.js → chunk-2ASED4PZ.js} +22 -22
- package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
- package/dist/chunk-2DSOYNFC.js +108 -0
- package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
- package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
- package/dist/{chunk-O3YUNJZ2.js → chunk-2ZSONWVL.js} +82 -25
- package/dist/{chunk-2NHR3NAY.js → chunk-36CT5VVL.js} +331 -42
- package/dist/{chunk-2X4RYJTJ.js → chunk-3GY4F45V.js} +3 -3
- package/dist/{chunk-ZW55JB7N.js → chunk-3ODX73FK.js} +4 -6
- package/dist/{chunk-PBP4B7XR.js → chunk-3UNOLWNZ.js} +3 -3
- package/dist/{chunk-4JDLP6ZS.js → chunk-3UUXNFEX.js} +14 -10
- package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
- package/dist/{chunk-ZW4HH5JJ.js → chunk-4M6Z5QVF.js} +6 -6
- package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
- package/dist/{chunk-M2DAX4F6.js → chunk-4WR7VSYB.js} +2 -2
- package/dist/{chunk-FSP7CMNU.js → chunk-54X7T7DK.js} +61 -6
- package/dist/{chunk-54ODD65L.js → chunk-5636DCO5.js} +4 -4
- package/dist/chunk-57XXR6DR.js +3763 -0
- package/dist/{chunk-3KIPBMUA.js → chunk-5ICU3EUH.js} +2 -2
- package/dist/{chunk-77QIVUZB.js → chunk-5MEZN6CB.js} +4 -4
- package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
- package/dist/{chunk-YJISEZKC.js → chunk-5TUB6SLS.js} +6 -6
- package/dist/{chunk-IMXMHHMQ.js → chunk-6OSVSQL5.js} +341 -57
- package/dist/{chunk-Q4XWMHX6.js → chunk-6PAZTBPA.js} +14 -2
- package/dist/{chunk-FVDGR2ZL.js → chunk-6Q3CYFD3.js} +112 -39
- package/dist/{chunk-IDNA72AH.js → chunk-6QOTUPRG.js} +155 -36
- package/dist/{chunk-X7IARSHT.js → chunk-6UINWWS6.js} +16 -10
- package/dist/{chunk-CYZW7JHJ.js → chunk-72YIHOZQ.js} +9 -9
- package/dist/{chunk-IKSLQ4XV.js → chunk-75W7L2E2.js} +752 -861
- package/dist/{chunk-CRFOIAX3.js → chunk-7UGL4MB5.js} +6 -6
- package/dist/{chunk-HIICAHCJ.js → chunk-AUPNRN7C.js} +2 -2
- package/dist/{chunk-7BHIY2MW.js → chunk-BJVFZO5U.js} +8 -50
- package/dist/{chunk-B74PXLU7.js → chunk-CUSRQKPU.js} +65 -3
- package/dist/chunk-DQOVN6KV.js +386 -0
- package/dist/{chunk-E7GT7O5N.js → chunk-DT3LWJOB.js} +7 -4
- package/dist/chunk-DXKJURES.js +671 -0
- package/dist/{chunk-JBCS7CRR.js → chunk-EL24TAU4.js} +10 -10
- package/dist/{chunk-TPEQIQIE.js → chunk-ELWDPP3Y.js} +8 -8
- package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
- package/dist/chunk-EXLD33WO.js +381 -0
- package/dist/chunk-FEAXX7B6.js +101 -0
- package/dist/{chunk-RLYRBIYQ.js → chunk-FFUPXJC4.js} +90 -331
- package/dist/{chunk-5PFYMY2V.js → chunk-FTMGRKEF.js} +2 -2
- package/dist/{chunk-34BHNEE3.js → chunk-GHS5EBTQ.js} +58 -7
- package/dist/{chunk-DYHAXKHD.js → chunk-GWZNEVM2.js} +12 -8
- package/dist/chunk-GX5WYQO4.js +59 -0
- package/dist/chunk-GYV6VZOC.js +26 -0
- package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
- package/dist/chunk-I2DWJ4GM.js +390 -0
- package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
- package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
- package/dist/{chunk-XQRY4DTA.js → chunk-IGLP3ODT.js} +10 -10
- package/dist/chunk-IRXAATOX.js +539 -0
- package/dist/chunk-IXIY2H4R.js +44 -0
- package/dist/{chunk-SSEYRH53.js → chunk-IZXGRF7P.js} +92 -147
- package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
- package/dist/{chunk-JWJGP5DQ.js → chunk-JEIYHLOR.js} +7 -7
- package/dist/{chunk-F2I26BDK.js → chunk-JQLNNIKT.js} +4 -4
- package/dist/{chunk-BYMNWQ7O.js → chunk-JSD46VO2.js} +315 -63
- package/dist/{chunk-AK5XEFVZ.js → chunk-JT2RFCC5.js} +64 -14
- package/dist/{chunk-MCMZMDAC.js → chunk-K6T2ZAMZ.js} +168 -6
- package/dist/{chunk-PGF63K6I.js → chunk-KFV5L5SK.js} +73 -4
- package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
- package/dist/{chunk-PJX3WQUQ.js → chunk-LLXSDWXS.js} +3 -3
- package/dist/{chunk-DZAW46HP.js → chunk-LTIKRKFL.js} +3 -3
- package/dist/{chunk-DZEK6CJN.js → chunk-N56KALIC.js} +21 -21
- package/dist/{chunk-B7HM5Z7T.js → chunk-NAI6ZFCY.js} +9 -5
- package/dist/{chunk-I66ZTYNP.js → chunk-NRO2BJRH.js} +2656 -2213
- package/dist/{chunk-ZGNYYXQ6.js → chunk-NXIMQY5W.js} +3 -3
- package/dist/{chunk-IKOZFYBN.js → chunk-NXYCB2VD.js} +149 -106
- package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
- package/dist/{chunk-462T4EGZ.js → chunk-O5CVSAG5.js} +2 -2
- package/dist/chunk-ODGTEFFI.js +50 -0
- package/dist/{chunk-3F7VUY77.js → chunk-OEJSLEPW.js} +2 -2
- package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
- package/dist/{chunk-5KW52TEP.js → chunk-Q4WO54TA.js} +132 -77
- package/dist/{chunk-W6NIE6OW.js → chunk-QUFRYSWI.js} +13 -7
- package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
- package/dist/chunk-R6Q67RJH.js +134 -0
- package/dist/{chunk-W4YEMFBX.js → chunk-RAY4OVGZ.js} +3 -3
- package/dist/{chunk-ZNT2M6TG.js → chunk-RQCKCSRL.js} +17 -17
- package/dist/{chunk-LJID3DYZ.js → chunk-RXTN6AKH.js} +3 -3
- package/dist/{chunk-P75RZCJW.js → chunk-RZDWV63N.js} +3 -3
- package/dist/{chunk-UH632ZYL.js → chunk-S6PYF2XF.js} +2 -2
- package/dist/{chunk-HJWWJ6IL.js → chunk-TOIVGRUX.js} +17 -5
- package/dist/{chunk-HLAFFSEK.js → chunk-TQAHXW6Y.js} +2 -2
- package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
- package/dist/{chunk-2HFQNRV3.js → chunk-UEPWCCTY.js} +12 -12
- package/dist/chunk-UOIZ7DA4.js +41 -0
- package/dist/{chunk-UH347SHR.js → chunk-USR47QNF.js} +11 -11
- package/dist/{chunk-AZ4WMN4W.js → chunk-V6HJFQZE.js} +2 -2
- package/dist/chunk-V76WTFTW.js +318 -0
- package/dist/{chunk-NMJXSHBJ.js → chunk-W54I7H25.js} +2 -2
- package/dist/{chunk-KPXDY6QF.js → chunk-XRZT5WY5.js} +2 -2
- package/dist/{chunk-UBRFI4HS.js → chunk-XULDXHTN.js} +142 -50
- package/dist/chunk-XXYSBZIQ.js +283 -0
- package/dist/{chunk-HKMD33FO.js → chunk-Y55JBDO5.js} +405 -122
- package/dist/{chunk-XOXV5GKE.js → chunk-YD5GIKET.js} +17 -8
- package/dist/{chunk-XGDPUNND.js → chunk-YECAMM3D.js} +2 -2
- package/dist/{chunk-BO7Y52RY.js → chunk-YNFKXPEC.js} +7 -7
- package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
- package/dist/{chunk-M2WXEHER.js → chunk-ZA4VCIGV.js} +2 -2
- package/dist/cli/index.js +42 -40
- package/dist/{clio-7VB377CC.js → clio-QLICPCF5.js} +7 -7
- package/dist/{code-nav-YVLCYA7V.js → code-nav-IJR2DBPR.js} +9 -9
- package/dist/{components-UBWCQSRW.js → components-2TGAI2RC.js} +5 -6
- package/dist/{config-4HVOS65E.js → config-IUA6OYNS.js} +88 -81
- package/dist/{configure-PIWO7B24.js → configure-VEPX4NMX.js} +26 -25
- package/dist/{context-KQYIWPWT.js → context-2DKHWH2T.js} +60 -45
- package/dist/{context-IYEHL3WQ.js → context-4MPR7WKB.js} +78 -69
- package/dist/{context-N6ZE3LGJ.js → context-BOYF5EJM.js} +15 -11
- package/dist/{context-clear-G4OGZJDS.js → context-clear-S4ZJCQUX.js} +73 -65
- package/dist/context-map-COB37XXN.js +505 -0
- package/dist/{context-working-set-BWLF6LJP.js → context-working-set-3I3FYX6Y.js} +18 -17
- package/dist/detail-A7JAVSIG.js +98 -0
- package/dist/{dispatch-runner-2QQAITS3.js → dispatch-runner-RJ5I2F2O.js} +99 -75
- package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
- package/dist/{doctor-LHBD36VU.js → doctor-DKICC2SN.js} +71 -48
- package/dist/{eval-C45FYRJ6.js → eval-OQOQUDHK.js} +308 -146
- package/dist/{eval-inventory-6DEJPLBF.js → eval-inventory-Y6QRFOH5.js} +4 -4
- package/dist/{evidence-6SHONYAF.js → evidence-4DQ25GUQ.js} +79 -175
- package/dist/evidence-4F5USFKH.js +208 -0
- package/dist/{evolve-KRKMV72X.js → evolve-GSS52E5J.js} +71 -67
- package/dist/{extensions-KPZ2UHBB.js → extensions-G7MFLYHT.js} +8 -9
- package/dist/{fleet-IVTCKDHT.js → fleet-Q37YHHAQ.js} +126 -118
- package/dist/{fleet-commands-EDWL3IT7.js → fleet-commands-G7E4N7SM.js} +16 -13
- package/dist/{fleet-decisions-YP3YEFGK.js → fleet-decisions-O7M6QBA2.js} +9 -8
- package/dist/{fleet-graph-ZFWKHY2M.js → fleet-graph-TOUBW6OW.js} +21 -20
- package/dist/{fleet-inspect-FVUNCBML.js → fleet-inspect-SW33JJNI.js} +65 -60
- package/dist/{fleet-preflight-UN5XED4R.js → fleet-preflight-CV2655TW.js} +4 -5
- package/dist/{fleet-validate-XOWC4HSX.js → fleet-validate-KESZX2YH.js} +25 -24
- package/dist/{fleet-verify-UN3SODEL.js → fleet-verify-UQPMTVE3.js} +66 -61
- package/dist/{fleet-view-TWHJKCN6.js → fleet-view-MN2VG4MR.js} +65 -60
- package/dist/{init-T2QORQ3Y.js → init-PXEXQSBF.js} +90 -82
- package/dist/{interop-IN5I2A66.js → interop-ZG5T62U3.js} +12 -13
- package/dist/inventory-C26CFDRR.js +101 -0
- package/dist/{library-LSCATDLZ.js → library-B2W4N74O.js} +29 -29
- package/dist/{memory-HYOKAGGJ.js → memory-YCANYS5A.js} +73 -69
- package/dist/{models-2GPMFYCM.js → models-GERTU3YI.js} +51 -47
- package/dist/{monitor-E4ASVUJH.js → monitor-CPNIUULB.js} +74 -67
- package/dist/{orchestrator-DDMPR3PY.js → orchestrator-J4BSH4WQ.js} +1288 -1606
- package/dist/{panes-E3RUXOW5.js → panes-BOHAEGYC.js} +4 -4
- package/dist/{panes-IXKLOKA2.js → panes-NXSLDQZ2.js} +10 -11
- package/dist/{paths-L7LGY6RN.js → paths-VSUWNC22.js} +6 -7
- package/dist/reset-TNWTB5LU.js +343 -0
- package/dist/{resources-OTRSN34L.js → resources-4PXNMD5G.js} +29 -22
- package/dist/{run-5DEYH5QK.js → run-D6XJ34CN.js} +132 -132
- package/dist/{share-IHWTLO3M.js → share-2NWMJJEE.js} +27 -27
- package/dist/{skills-IYMXMKW4.js → skills-KR7WON5G.js} +40 -33
- package/dist/{skills-eval-DROHSJAR.js → skills-eval-O2ZNOLDS.js} +81 -77
- package/dist/{skills-inventory-D7X4L4ZX.js → skills-inventory-ZZOUBK7O.js} +23 -22
- package/dist/{slash-commands-QBM7UZ3B.js → slash-commands-ZXPJD64J.js} +47 -37
- package/dist/{steer-Z5DO23FJ.js → steer-XA25PSCS.js} +4 -4
- package/dist/{support-U7QOWY26.js → support-7EMVWYG2.js} +6 -6
- package/dist/{targets-P2FUC4IL.js → targets-OMH2XCSN.js} +50 -49
- package/dist/tasks-IPAGMEIX.js +36 -0
- package/dist/{terminal-lease-YREJ3JX2.js → terminal-lease-C2J3JYRE.js} +4 -4
- package/dist/{tools-5B7RO6MV.js → tools-EFFEAIDP.js} +8 -9
- package/dist/{trace-YMGMUM6A.js → trace-FXMXUZUF.js} +7 -7
- package/dist/uninstall-HALS6BLF.js +407 -0
- package/dist/upgrade-MS72RJEP.js +306 -0
- package/dist/{usage-ME5MPXGX.js → usage-NHG6MCJM.js} +162 -108
- package/dist/{verifiers-BVZ7IWOO.js → verifiers-7AUNVXDY.js} +155 -22
- package/dist/{verify-5K7ZKQFC.js → verify-FWYGPKMR.js} +14 -12
- package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
- package/dist/{wiki-generate-F5W5QTYY.js → wiki-generate-743CIGJW.js} +99 -90
- package/dist/{with-panes-BYOJCLAM.js → with-panes-BDQEWBRT.js} +10 -10
- package/dist/worker/entry.js +72 -68
- package/docs/README.md +3 -2
- package/docs/architecture/acp.md +17 -0
- package/docs/architecture/artifact-placement.md +1 -0
- package/docs/architecture/artifact-versions.md +2 -2
- package/docs/architecture/context-engine.md +4 -0
- package/docs/architecture/dispatch-typed-intent.md +1 -1
- package/docs/architecture/evidence-and-memory.md +1 -1
- package/docs/architecture/middleware-and-components.md +1 -1
- package/docs/architecture/model-catalog.md +21 -10
- package/docs/architecture/observability.md +19 -2
- package/docs/architecture/prompt-envelope-and-tools.md +17 -5
- package/docs/architecture/provider-adapter-cookbook.md +63 -0
- package/docs/architecture/safety-model.md +25 -22
- package/docs/architecture/tui-design.md +1 -1
- package/docs/guide/built-in-agents.md +25 -11
- package/docs/guide/commands-and-modes.md +18 -3
- package/docs/guide/configuration-and-targets.md +100 -10
- package/docs/guide/configuration-reference.md +17 -7
- package/docs/guide/environment-variables.md +4 -2
- package/docs/guide/installation-and-lifecycle.md +37 -4
- package/docs/guide/proactive-memory.md +66 -55
- package/docs/guide/skills-marketplace.md +18 -0
- package/docs/guide/tool-usage.md +78 -3
- package/docs/history/config-knobs-audit.md +2 -2
- package/docs/process/development-pipeline.md +40 -2
- package/docs/process/eval-runner.md +67 -3
- package/docs/process/git-commit-provenance.md +15 -0
- package/docs/process/release-cut-checklist.md +207 -0
- package/docs/process/scientific-validation.md +18 -17
- package/evals/behavioral-machinery-support.ts +1 -0
- package/evals/behavioral-machinery.yaml +1 -1
- package/evals/behavioral-model.yaml +3 -2
- package/package.json +2 -2
- package/skills/README.md +7 -5
- package/skills/coding/ast-grep/SKILL.md +101 -30
- package/skills/coding/ast-grep/evals.md +26 -0
- package/skills/coding/coding-standards/SKILL.md +47 -2
- package/skills/coding/coding-standards/evals.md +23 -0
- package/skills/coding/prototype/SKILL.md +87 -28
- package/skills/coding/prototype/evals.md +19 -0
- package/skills/coding/tdd/SKILL.md +80 -53
- package/skills/coding/tdd/evals.md +20 -0
- package/skills/context/context-handoff/SKILL.md +43 -2
- package/skills/context/context-handoff/evals.md +44 -0
- package/skills/context/context-prime/SKILL.md +45 -15
- package/skills/context/context-prime/evals.md +45 -0
- package/skills/git/branch-closeout/SKILL.md +132 -0
- package/skills/git/branch-closeout/evals.md +133 -0
- package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
- package/skills/git/file-ticket/SKILL.md +77 -63
- package/skills/git/file-ticket/assets/issue-template.md +22 -0
- package/skills/git/file-ticket/evals.md +31 -26
- package/skills/git/file-ticket/references/issue-discovery.md +49 -0
- package/skills/git/fix-issue/SKILL.md +87 -64
- package/skills/git/fix-issue/evals.md +35 -31
- package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
- package/skills/git/resolve-merge-conflicts/SKILL.md +100 -51
- package/skills/git/resolve-merge-conflicts/evals.md +52 -25
- package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
- package/skills/git/ship/SKILL.md +103 -67
- package/skills/git/ship/assets/pr-template.md +21 -0
- package/skills/git/ship/evals.md +44 -28
- package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
- package/skills/git/worktree-create/SKILL.md +80 -50
- package/skills/git/worktree-create/evals.md +40 -33
- package/skills/git/worktree-create/references/worktree-setup.md +62 -66
- package/skills/git/worktree-merge/SKILL.md +112 -65
- package/skills/git/worktree-merge/evals.md +42 -34
- package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
- package/skills/planning/archify/SKILL.md +196 -0
- package/skills/planning/archify/evals.md +65 -0
- package/skills/planning/architecture/SKILL.md +61 -12
- package/skills/planning/architecture/evals.md +65 -0
- package/skills/planning/backlog/SKILL.md +130 -14
- package/skills/planning/backlog/evals.md +142 -0
- package/skills/planning/prd/SKILL.md +47 -6
- package/skills/planning/prd/evals.md +54 -0
- package/skills/planning/product-intent/SKILL.md +57 -2
- package/skills/planning/product-intent/evals.md +70 -0
- package/skills/planning/tech-spec/SKILL.md +53 -2
- package/skills/planning/tech-spec/evals.md +73 -0
- package/skills/registry.yaml +58 -50
- package/skills/remote.yaml +13 -0
- package/skills/research/arxiv-literature/SKILL.md +76 -18
- package/skills/research/arxiv-literature/evals.md +50 -0
- package/skills/research/experiment-protocol/SKILL.md +20 -1
- package/skills/research/experiment-protocol/evals.md +23 -0
- package/skills/research/scientific-debugging/SKILL.md +24 -1
- package/skills/research/scientific-debugging/evals.md +18 -0
- package/skills/research/scientific-modernization/SKILL.md +26 -1
- package/skills/research/scientific-modernization/evals.md +27 -0
- package/skills/skill-marketplace.json +63 -28
- package/skills/workflow/cut-it/SKILL.md +64 -5
- package/skills/workflow/cut-it/evals.md +101 -0
- package/skills/workflow/design-council/SKILL.md +112 -27
- package/skills/workflow/design-council/evals.md +161 -0
- package/skills/workflow/grill-me/SKILL.md +85 -10
- package/skills/workflow/grill-me/evals.md +153 -0
- package/skills/workflow/workflow-distiller/SKILL.md +76 -17
- package/skills/workflow/workflow-distiller/evals.md +118 -0
- package/src/cli/args.ts +0 -8
- package/src/cli/configure-interop.ts +105 -13
- package/src/cli/configure-oauth.ts +57 -0
- package/src/cli/configure-onboarding.ts +980 -0
- package/src/cli/configure-target.ts +594 -0
- package/src/cli/configure.ts +1084 -529
- package/src/cli/context-map.ts +114 -0
- package/src/cli/context.ts +4 -0
- package/src/cli/doctor-state-size.ts +1 -12
- package/src/cli/doctor-validation-contract.ts +28 -0
- package/src/cli/doctor.ts +5 -0
- package/src/cli/evidence-detail.ts +1 -75
- package/src/cli/evidence-inventory.ts +1 -167
- package/src/cli/index.ts +3 -0
- package/src/cli/lifecycle-presenter.ts +436 -0
- package/src/cli/models.ts +10 -2
- package/src/cli/modes/print.ts +5 -1
- package/src/cli/reset.ts +228 -106
- package/src/cli/run.ts +7 -4
- package/src/cli/select.ts +664 -0
- package/src/cli/skills.ts +9 -2
- package/src/cli/targets.ts +3 -0
- package/src/cli/tasks.ts +84 -0
- package/src/cli/uninstall.ts +233 -165
- package/src/cli/upgrade.ts +210 -150
- package/src/cli/usage.ts +92 -27
- package/src/cli/validate-model.ts +3 -3
- package/src/cli/verifiers.ts +147 -1
- package/src/cli/wiki-generate.ts +1 -0
- package/src/core/commit-attribution.ts +41 -1
- package/src/core/config.ts +56 -0
- package/src/core/external-diagnostic.ts +44 -0
- package/src/core/gateway-routing.ts +157 -0
- package/src/core/git-commit-attribution.ts +46 -3
- package/src/core/run-overrides.ts +0 -5
- package/src/core/safe-exec.ts +17 -2
- package/src/core/skill-activation.ts +92 -2
- package/src/core/tool-names.ts +5 -2
- package/src/domains/agents/builtins/architect.md +1 -1
- package/src/domains/agents/builtins/coder.md +1 -1
- package/src/domains/agents/builtins/documenter.md +1 -1
- package/src/domains/agents/builtins/git-master.md +1 -1
- package/src/domains/agents/builtins/provenance.md +7 -7
- package/src/domains/agents/builtins/tester.md +1 -1
- package/src/domains/agents/builtins/verifier.md +2 -2
- package/src/domains/agents/builtins/wiki-writer.md +4 -3
- package/src/domains/agents/builtins/world-knowledge.md +31 -0
- package/src/domains/agents/catalog.ts +1 -1
- package/src/domains/agents/result-contract.ts +70 -0
- package/src/domains/context/extension.ts +31 -7
- package/src/domains/context/refresh.ts +3 -0
- package/src/domains/context/wiki/frontmatter.ts +5 -2
- package/src/domains/context/wiki/generate.ts +6 -0
- package/src/domains/context/wiki/map-seed.ts +589 -0
- package/src/domains/context/wiki/plan.ts +2 -2
- package/src/domains/context/wiki/prompts.ts +43 -0
- package/src/domains/dispatch/active-route-planner.ts +4 -0
- package/src/domains/dispatch/admission.ts +29 -0
- package/src/domains/dispatch/agent-candidates.ts +10 -0
- package/src/domains/dispatch/budget-envelope.ts +86 -1
- package/src/domains/dispatch/capability-match.ts +1 -0
- package/src/domains/dispatch/capacity-lease.ts +17 -0
- package/src/domains/dispatch/code-step.ts +11 -4
- package/src/domains/dispatch/contract.ts +42 -8
- package/src/domains/dispatch/execution-scheduler.ts +2 -0
- package/src/domains/dispatch/extension.ts +184 -56
- package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
- package/src/domains/dispatch/fleet-run.ts +1 -0
- package/src/domains/dispatch/host-verification.ts +114 -13
- package/src/domains/dispatch/intent.ts +28 -18
- package/src/domains/dispatch/orphan-recovery.ts +2 -0
- package/src/domains/dispatch/receipt-integrity.ts +4 -0
- package/src/domains/dispatch/reservation-store.ts +5 -3
- package/src/domains/dispatch/state.ts +15 -2
- package/src/domains/dispatch/types.ts +20 -2
- package/src/domains/dispatch/worker-model-metadata.ts +38 -0
- package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
- package/src/domains/eval/metrics/token-stream.ts +201 -31
- package/src/domains/eval/metrics/tracked.ts +40 -4
- package/src/domains/eval/runners/clio-run.ts +17 -11
- package/src/domains/eval/runners/context-index.ts +2 -7
- package/src/domains/eval/runners/context-init.ts +3 -6
- package/src/domains/eval/runners/external-command.ts +29 -11
- package/src/domains/eval/schema/suite.ts +28 -0
- package/src/domains/eval/schema/verdict.ts +2 -2
- package/src/domains/eval/suites/resolve.ts +13 -1
- package/src/domains/eval/suites/run.ts +24 -3
- package/src/domains/evidence/build.ts +102 -15
- package/src/domains/evidence/detail.ts +69 -0
- package/src/domains/evidence/eval.ts +13 -1
- package/src/domains/evidence/finish-contract-map.ts +5 -1
- package/src/domains/evidence/inventory.ts +167 -0
- package/src/domains/evidence/store.ts +16 -0
- package/src/domains/evidence/types.ts +12 -0
- package/src/domains/extensions/resources.ts +7 -0
- package/src/domains/interop/registry.ts +6 -2
- package/src/domains/interop/types.ts +4 -0
- package/src/domains/lifecycle/migrations/index.ts +4 -0
- package/src/domains/memory/task-memory-policy.ts +70 -26
- package/src/domains/memory/task-memory-telemetry.ts +1 -0
- package/src/domains/middleware/index.ts +0 -1
- package/src/domains/middleware/marketplace-offer.ts +22 -35
- package/src/domains/middleware/memory-intervention.ts +127 -32
- package/src/domains/middleware/memory-step-endpoint.ts +3 -2
- package/src/domains/middleware/runtime.ts +7 -3
- package/src/domains/middleware/skills-reminder.ts +31 -2
- package/src/domains/mux/detect.ts +3 -6
- package/src/domains/observability/accountability.ts +15 -1
- package/src/domains/observability/compaction-usage.ts +118 -0
- package/src/domains/observability/contract.ts +52 -7
- package/src/domains/observability/cost.ts +1 -1
- package/src/domains/observability/evidence-index.ts +10 -0
- package/src/domains/observability/extension.ts +15 -6
- package/src/domains/observability/out-of-turn-usage.ts +52 -21
- package/src/domains/observability/projection.ts +394 -45
- package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
- package/src/domains/prompts/fragments/operating/contract.md +2 -0
- package/src/domains/prompts/fragments/wiki/page.md +8 -0
- package/src/domains/providers/contract.ts +4 -1
- package/src/domains/providers/extension.ts +40 -9
- package/src/domains/providers/model-capabilities.ts +9 -0
- package/src/domains/providers/model-discovery.ts +3 -4
- package/src/domains/providers/model-runtime-capabilities.ts +15 -5
- package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +48 -26
- package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
- package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
- package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
- package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
- package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
- package/src/domains/providers/support.ts +11 -5
- package/src/domains/providers/target-model-cache.ts +25 -2
- package/src/domains/providers/types/capability-flags.ts +2 -0
- package/src/domains/providers/types/runtime-descriptor.ts +20 -1
- package/src/domains/providers/types/target-descriptor.ts +19 -0
- package/src/domains/resources/index.ts +3 -0
- package/src/domains/resources/skills/install.ts +72 -7
- package/src/domains/resources/skills/loader.ts +7 -0
- package/src/domains/resources/skills/marketplace.ts +63 -11
- package/src/domains/safety/action-classifier.ts +7 -0
- package/src/domains/safety/autonomy.ts +15 -0
- package/src/domains/safety/default-path-policy.ts +2 -0
- package/src/domains/safety/finish-contract-registration.ts +29 -14
- package/src/domains/safety/finish-contract.ts +252 -40
- package/src/domains/safety/index.ts +21 -1
- package/src/domains/safety/path-policy.ts +1 -1
- package/src/domains/safety/policy-engine.ts +60 -17
- package/src/domains/safety/protected-artifacts.ts +191 -88
- package/src/domains/safety/rigor.ts +53 -39
- package/src/domains/safety/run-effects.ts +2 -22
- package/src/domains/safety/skill-authority.ts +55 -0
- package/src/domains/safety/validation-contract.ts +388 -0
- package/src/domains/session/archive-readers.ts +10 -1
- package/src/domains/session/compaction/compact.ts +72 -22
- package/src/domains/session/decision-board.ts +101 -2
- package/src/domains/session/entries.ts +50 -7
- package/src/domains/session/extension.ts +4 -4
- package/src/domains/session/handoff.ts +2 -1
- package/src/domains/session/manager.ts +2 -3
- package/src/domains/session/task-board.ts +14 -1
- package/src/domains/session/tree/fork.ts +1 -2
- package/src/domains/session/tree/navigator.ts +1 -1
- package/src/domains/session/usage.ts +3 -3
- package/src/domains/user-tasks/acceptance.ts +56 -0
- package/src/domains/user-tasks/active-acceptance.ts +40 -0
- package/src/domains/user-tasks/store.ts +34 -3
- package/src/engine/acp/adapter.ts +24 -6
- package/src/engine/acp/server.ts +21 -4
- package/src/engine/acp/transport.ts +53 -8
- package/src/engine/acp/types.ts +4 -0
- package/src/engine/agent.ts +13 -3
- package/src/engine/ai.ts +26 -8
- package/src/engine/antigravity/subprocess-runtime.ts +386 -120
- package/src/engine/api-registry.ts +3 -0
- package/src/engine/apis/ollama-native.ts +15 -0
- package/src/engine/apis/openai-completions.ts +117 -14
- package/src/engine/claude/subprocess-runtime.ts +107 -60
- package/src/engine/external-subprocess.ts +122 -6
- package/src/entry/background-model-metadata.ts +18 -0
- package/src/entry/compaction-prompt.ts +57 -0
- package/src/entry/orchestrator.ts +416 -218
- package/src/entry/task-memory-lifecycle.ts +35 -0
- package/src/interactive/chat-loop-messages.ts +13 -4
- package/src/interactive/chat-loop.ts +65 -2
- package/src/interactive/chat-renderer.ts +1 -0
- package/src/interactive/cost-overlay.ts +26 -2
- package/src/interactive/dispatch-board.ts +46 -717
- package/src/interactive/fleet-run-preview.ts +2 -1
- package/src/interactive/interactive-application.ts +3 -2
- package/src/interactive/interactive-presentation.ts +55 -12
- package/src/interactive/interactive-slash-runtime.ts +4 -2
- package/src/interactive/oracle.ts +5 -2
- package/src/interactive/overlays/fleet-run-approval.ts +3 -2
- package/src/interactive/overlays/message-picker.ts +2 -2
- package/src/interactive/overlays/settings.ts +2 -2
- package/src/interactive/overlays/tree-selector.ts +2 -2
- package/src/interactive/renderers/branch-summary.ts +1 -1
- package/src/interactive/renderers/worker-entry.ts +32 -0
- package/src/interactive/slash-autocomplete.ts +4 -6
- package/src/interactive/slash-commands.ts +49 -45
- package/src/interactive/slash-spec.ts +28 -0
- package/src/interactive/theme/labels.ts +19 -13
- package/src/interactive/turn-context.ts +9 -5
- package/src/interactive/turn-recovery.ts +8 -0
- package/src/interactive/turn-runtime.ts +27 -11
- package/src/interactive/turn-state.ts +7 -0
- package/src/interactive/view/artifacts.ts +2 -0
- package/src/interactive/worker-receipts.ts +1 -0
- package/src/interactive/worker-stream.ts +13 -4
- package/src/tools/bootstrap.ts +4 -0
- package/src/tools/builtin-tool-catalog.ts +31 -0
- package/src/tools/compete-worktrees.ts +7 -1
- package/src/tools/context/index.ts +30 -9
- package/src/tools/core-bootstrap.ts +16 -0
- package/src/tools/decide.ts +136 -0
- package/src/tools/dispatch-admission.ts +21 -0
- package/src/tools/dispatch-arguments.ts +1 -0
- package/src/tools/dispatch-event-text.ts +10 -0
- package/src/tools/dispatch-plan.ts +6 -2
- package/src/tools/dispatch-runner.ts +27 -1
- package/src/tools/dispatch-types.ts +6 -0
- package/src/tools/evidence.ts +96 -0
- package/src/tools/limitation.ts +76 -0
- package/src/tools/policy.ts +9 -0
- package/src/tools/presentation.ts +3 -0
- package/src/tools/registry.ts +11 -5
- package/src/tools/result-shaping.ts +17 -5
- package/src/tools/task-worktree.ts +13 -3
- package/src/tools/tasks.ts +10 -1
- package/src/tools/verify/authoring.ts +170 -83
- package/src/tools/verify/catalog.ts +122 -5
- package/src/tools/verify/index.ts +2 -1
- package/src/tools/verify/numeric.ts +298 -0
- package/src/tools/verify/perf.ts +143 -0
- package/src/tools/verify/scripts.ts +229 -2
- package/src/tools/worker-evidence.ts +3 -1
- package/src/worker/spec-contract.ts +4 -0
- package/dist/chunk-2Z2IKEXI.js +0 -1554
- package/dist/chunk-RVG5JXAL.js +0 -41
- package/dist/chunk-T56WDKA5.js +0 -183
- package/dist/chunk-VN3SHNBN.js +0 -313
- package/dist/chunk-VPKWYKEY.js +0 -169
- package/dist/reset-OAQP3W4O.js +0 -230
- package/dist/uninstall-N34PCTGJ.js +0 -331
- package/dist/upgrade-PXK3S2YM.js +0 -325
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Diagnosis, Why-Chains, and Root Cause Analysis (RCA)
|
|
2
|
+
|
|
3
|
+
This reference outlines diagnosis techniques, why-chain construction, and root-cause documentation for `fix-issue`.
|
|
4
|
+
|
|
5
|
+
## Diagnosing Unknown Causes
|
|
6
|
+
|
|
7
|
+
When an issue does not already pinpoint the root cause:
|
|
8
|
+
1. **Reproduce first**: Write a reproduction test script or minimal test case before altering any application logic. Run it and verify it fails with the expected symptom.
|
|
9
|
+
2. **Trace the fault**: Follow the call stack or data flow backwards from the failure site to the originating trigger.
|
|
10
|
+
3. **Construct a why-chain**:
|
|
11
|
+
```
|
|
12
|
+
WHY <observed failure>? -> because <immediate condition> (evidence: path/file.ts:123)
|
|
13
|
+
WHY <immediate condition>? -> because <underlying cause> (evidence: path/file.ts:89)
|
|
14
|
+
ROOT CAUSE: <the exact defect to fix> (evidence: path/file.ts:45)
|
|
15
|
+
```
|
|
16
|
+
Every link in the chain must cite a verified line of code or observed runtime state. A link without an observed citation remains an unverified hypothesis.
|
|
17
|
+
|
|
18
|
+
## Routine Fixes vs Standalone RCA
|
|
19
|
+
|
|
20
|
+
- **Routine fixes**: The why-chain is included directly in the final completion summary presented to the user. No separate RCA file is required.
|
|
21
|
+
- **Complex or high-impact defects**: A standalone RCA document or detailed why-chain is written when:
|
|
22
|
+
- The defect caused data corruption, downtime, or security exposure.
|
|
23
|
+
- The diagnosis uncovered multiple interacting failure modes.
|
|
24
|
+
- The fix requires significant architectural changes or breaking behavioral adjustments.
|
|
25
|
+
|
|
26
|
+
## RCA Destination and Issue Tracking
|
|
27
|
+
|
|
28
|
+
- An RCA or diagnosis artifact stays in the local repository or task output during development.
|
|
29
|
+
- **Do not assume downstream tools post comments automatically**: `ship` handles atomic commits and pull requests; it does not automatically post closing comments or attach labels to issues.
|
|
30
|
+
- If the maintainer or repository workflow calls for recording the RCA on the tracker issue (for example, under an `rca` status label), format the comment clearly and request explicit user confirmation (`ask_user`) before running:
|
|
31
|
+
```bash
|
|
32
|
+
gh issue comment <id> --repo <owner/repo> --body-file "$rca_file"
|
|
33
|
+
```
|
|
34
|
+
- If the repository uses an `rca` label, propose applying it only after the user approves:
|
|
35
|
+
```bash
|
|
36
|
+
gh issue edit <id> --repo <owner/repo> --add-label "rca"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Respecting Maintainer Constraints
|
|
40
|
+
|
|
41
|
+
If an issue contains comments from maintainers specifying:
|
|
42
|
+
- Non-negotiable interfaces or constraints
|
|
43
|
+
- Performance budgets or dependencies that must not be added
|
|
44
|
+
- Out-of-bounds files or packages
|
|
45
|
+
|
|
46
|
+
These constraints are binding. If technical reality makes compliance impossible, stop, document the contradiction with evidence, and ask for user guidance before proceeding.
|
|
@@ -7,8 +7,9 @@ triggers:
|
|
|
7
7
|
- finish the merge
|
|
8
8
|
- finish the rebase
|
|
9
9
|
- resolve conflict markers
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.4.0
|
|
11
11
|
license: Apache-2.0
|
|
12
|
+
compatibility: git >=2.30.0, POSIX-compatible shell
|
|
12
13
|
allowed-tools:
|
|
13
14
|
- read
|
|
14
15
|
- grep
|
|
@@ -16,8 +17,10 @@ allowed-tools:
|
|
|
16
17
|
- git
|
|
17
18
|
- bash
|
|
18
19
|
- edit
|
|
20
|
+
- write
|
|
21
|
+
- verify
|
|
22
|
+
- tasks
|
|
19
23
|
- ask_user
|
|
20
|
-
- artifact
|
|
21
24
|
clio-coder:
|
|
22
25
|
registry-id: iowarp/clio-coder
|
|
23
26
|
source-url: https://github.com/iowarp/clio-coder/tree/main/skills/git/resolve-merge-conflicts
|
|
@@ -34,69 +37,115 @@ clio-coder:
|
|
|
34
37
|
|
|
35
38
|
# Resolve Merge Conflicts
|
|
36
39
|
|
|
37
|
-
|
|
38
|
-
the markers go away. The job ends with the merge or rebase completed and
|
|
39
|
-
the project's checks green.
|
|
40
|
+
Resolve conflicts stopped during a merge, rebase, or cherry-pick from intent, not from picking whichever side makes markers disappear. The job ends with the operation completed and the project's validation checks green.
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
See [conflict matrix](references/conflict-matrix.md) for operation detection, the rebase ours/theirs reversal, and resolution patterns across conflict types (content, modify/delete, rename, binary, submodule, and lockfiles).
|
|
42
43
|
|
|
43
|
-
|
|
44
|
-
git status
|
|
45
|
-
git log --oneline --left-right --merge 2>/dev/null || git log --oneline -10
|
|
46
|
-
git diff --name-only --diff-filter=U
|
|
47
|
-
```
|
|
44
|
+
## Arguments
|
|
48
45
|
|
|
49
|
-
|
|
50
|
-
which branches or commits are involved, and every conflicting file.
|
|
46
|
+
Arguments are passed in the user invocation message. Interpret them structurally from the prompt:
|
|
51
47
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
```text
|
|
49
|
+
/skill:resolve-merge-conflicts [--checks auto|command] [--continue|--no-continue]
|
|
50
|
+
```
|
|
55
51
|
|
|
52
|
+
### Examples
|
|
53
|
+
- `/skill:resolve-merge-conflicts`
|
|
54
|
+
- `/skill:resolve-merge-conflicts --checks "npm test"`
|
|
55
|
+
- `/skill:resolve-merge-conflicts --no-continue`
|
|
56
|
+
|
|
57
|
+
### Options
|
|
58
|
+
- `--checks <auto|command>`: Validation checks execution mode.
|
|
59
|
+
- `auto` (default): Detects and runs test, typecheck, and lint commands from the repository (CI workflows, Makefile, package manifests).
|
|
60
|
+
- `<command>`: Custom shell command to run for verification (e.g. `npm test`, `cargo check`).
|
|
61
|
+
- `--continue|--no-continue`: Whether to complete the in-flight operation after resolution and validation.
|
|
62
|
+
- `--continue` (default): Runs the operation's continue command (`git merge --continue`, `git rebase --continue`, or `git cherry-pick --continue`).
|
|
63
|
+
- `--no-continue`: Leaves resolved files staged in the index and stops without executing the continue command.
|
|
64
|
+
|
|
65
|
+
### Unknown Arguments and Safe Execution
|
|
66
|
+
- Unknown flags must be rejected with an error. Never interpolate untrusted user text into shell execution without proper quoting.
|
|
67
|
+
|
|
68
|
+
## Step 1 — Map the State and Operation
|
|
69
|
+
|
|
70
|
+
> [!IMPORTANT]
|
|
71
|
+
> Execute steps directly; do not declare task boards or write artifact files. Run discrete git commands sequentially; never nest commands inside `$(...)` command substitutions or subshells.
|
|
72
|
+
|
|
73
|
+
Identify the in-flight operation per [conflict matrix](references/conflict-matrix.md):
|
|
74
|
+
- **Merge**: `.git/MERGE_HEAD` exists. `HEAD` is ours (target branch), `MERGE_HEAD` is theirs (incoming branch).
|
|
75
|
+
- **Rebase**: `.git/rebase-merge` or `.git/rebase-apply` exists.
|
|
76
|
+
> [!WARNING]
|
|
77
|
+
> In `git rebase`, `--ours` and `--theirs` are **reversed**!
|
|
78
|
+
> - `HEAD` ("ours") is the upstream branch being rebased onto.
|
|
79
|
+
> - `REBASE_HEAD` ("theirs") is your branch commit being replayed.
|
|
80
|
+
- **Cherry-pick**: `.git/CHERRY_PICK_HEAD` exists. `HEAD` is target branch, `CHERRY_PICK_HEAD` is commit being cherry-picked.
|
|
81
|
+
|
|
82
|
+
Query all unmerged paths:
|
|
56
83
|
```bash
|
|
57
|
-
git
|
|
58
|
-
git log --oneline <theirs>..<ours> -- <file>
|
|
84
|
+
git diff --name-only --diff-filter=U
|
|
59
85
|
```
|
|
60
86
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
87
|
+
## Step 2 — Reconstruct Both Intents
|
|
88
|
+
|
|
89
|
+
For each conflicting file, determine why each side modified the code:
|
|
90
|
+
- Check commit logs:
|
|
91
|
+
```bash
|
|
92
|
+
# In merge:
|
|
93
|
+
git log --oneline HEAD..MERGE_HEAD -- <file>
|
|
94
|
+
git log --oneline MERGE_HEAD..HEAD -- <file>
|
|
95
|
+
# In rebase:
|
|
96
|
+
git log -1 REBASE_HEAD -- <file>
|
|
97
|
+
```
|
|
98
|
+
- Read commit messages and linked issue references. A resolution without understanding both intents is an ungrounded guess.
|
|
99
|
+
|
|
100
|
+
## Step 3 — Resolve Each Conflict by Type
|
|
101
|
+
|
|
102
|
+
Handle each file according to its conflict class:
|
|
103
|
+
- **Content conflict markers**: Preserve both changes if compatible (e.g. non-overlapping functions or independent parameters). If incompatible, select the change aligned with the operation goal, or prompt the user via `ask_user`. Verify no markers remain:
|
|
104
|
+
```bash
|
|
105
|
+
grep -rn "<<<<<<<\|>>>>>>>" <files>
|
|
106
|
+
```
|
|
107
|
+
- **Add / Add**: Merge file contents if same concept, or rename if distinct concepts.
|
|
108
|
+
- **Modify / Delete**: Trace whether deletion was deliberate refactoring or accidental; preserve or remove accordingly.
|
|
109
|
+
- **Rename**: Follow renamed files and integrate changes into the canonical filename.
|
|
110
|
+
- **Binary files**: Check out appropriate version (`git checkout --ours` / `--theirs`) or rebuild asset from source.
|
|
111
|
+
- **Submodules**: Resolve submodule commit pointer via `git diff --submodule` and submodule history.
|
|
112
|
+
- **Lockfiles**: Do not manually resolve JSON/YAML markers in package lockfiles. Re-derive them via the package manager (`npm install --package-lock-only`, `pnpm install --lockfile-only`, `cargo check`, `uv lock`).
|
|
113
|
+
|
|
114
|
+
Stage resolved files: `git add <files>`.
|
|
66
115
|
|
|
67
|
-
|
|
68
|
-
- Genuinely incompatible → pick the side matching the merge's stated goal
|
|
69
|
-
and record the trade-off for the report; when the goal itself does not
|
|
70
|
-
decide it, ask the user rather than choosing silently.
|
|
71
|
-
- Never invent new behavior in a resolution: the merged code does only
|
|
72
|
-
what one or both sides already did.
|
|
73
|
-
- Do not `--abort` to escape a hard conflict; abort only if the user
|
|
74
|
-
decides the operation itself was wrong.
|
|
116
|
+
## Step 4 — Validate
|
|
75
117
|
|
|
76
|
-
|
|
77
|
-
`
|
|
118
|
+
Run the validation suite determined by `--checks`:
|
|
119
|
+
- If `auto`: execute detected typecheck, tests, and linter.
|
|
120
|
+
- If `<command>`: execute the specified validation command.
|
|
121
|
+
- If any check fails, fix regressions caused by the resolution before proceeding.
|
|
78
122
|
|
|
79
|
-
## Step
|
|
123
|
+
## Step 5 — Complete Operation or Multi-Stop Loop
|
|
80
124
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
anything the merge broke — the resolution is not done at "markers gone",
|
|
84
|
-
it is done at "checks green".
|
|
125
|
+
If `--no-continue` was specified:
|
|
126
|
+
- Report that all conflicts are resolved and files are staged; stop here.
|
|
85
127
|
|
|
86
|
-
|
|
128
|
+
If `--continue` is active (default):
|
|
129
|
+
- Execute the operation-specific continue command:
|
|
130
|
+
- **Merge**: `git merge --continue` (or `git commit`)
|
|
131
|
+
- **Rebase**: `git rebase --continue`
|
|
132
|
+
- **Cherry-pick**: `git cherry-pick --continue`
|
|
133
|
+
- **Multi-stop rebases**: If git stops on a subsequent commit conflict, loop back to Step 1 and repeat until the rebase completes.
|
|
134
|
+
- **Operation Abort**: If the user decides the operation is invalid or if unresolvable contradictions occur, run the operation-specific abort command (`git merge --abort`, `git rebase --abort`, or `git cherry-pick --abort`) and verify the tree returns to clean pre-operation state.
|
|
87
135
|
|
|
88
|
-
|
|
89
|
-
cherry-pick, `git rebase --continue` / `git cherry-pick --continue` and
|
|
90
|
-
repeat from Step 1 for each further stop until the operation reports
|
|
91
|
-
complete.
|
|
136
|
+
## Step 6 — Report
|
|
92
137
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
138
|
+
Summarize:
|
|
139
|
+
- Completed operation type (merge, rebase, cherry-pick)
|
|
140
|
+
- Each conflicting file, conflict type, and how intent was resolved
|
|
141
|
+
- Validation checks run and real outputs
|
|
142
|
+
- Current branch status and clean working tree verification
|
|
96
143
|
|
|
97
|
-
## Red
|
|
144
|
+
## Red Flags
|
|
98
145
|
|
|
99
|
-
- Taking `--ours
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
146
|
+
- Taking `--ours` or `--theirs` wholesale without reading both sides.
|
|
147
|
+
- Inverting intent during a rebase by misunderstanding reversed ours/theirs semantics.
|
|
148
|
+
- Hand-editing conflict markers in binary files or complex lockfiles.
|
|
149
|
+
- Leaving `<<<<<<<` or `>>>>>>>` markers in any committed file.
|
|
150
|
+
- Declaring done without running validation checks.
|
|
151
|
+
- Executing an abort without user instruction.
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# Evals — resolve-merge-conflicts
|
|
2
2
|
|
|
3
|
-
Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per
|
|
4
|
-
bullet. Status: written at port time, not yet executed (`eval-status:
|
|
5
|
-
untested`).
|
|
3
|
+
Baseline scenarios (subagent WITHOUT the skill vs WITH). Pass/fail per bullet. Status: `eval-status: smoke-checked`.
|
|
6
4
|
|
|
7
|
-
## S1 —
|
|
8
|
-
Setup: the merge of feat-rename stopped on a conflict in util.js. Resolve
|
|
9
|
-
it and finish the merge.
|
|
5
|
+
## S1 — Compatible two-sided conflict
|
|
6
|
+
Setup: the merge of feat-rename stopped on a conflict in util.js. Resolve it and finish the merge.
|
|
10
7
|
|
|
11
8
|
Fixture:
|
|
12
9
|
```bash
|
|
@@ -28,31 +25,61 @@ git merge feat-rename > merge-output.txt 2>&1 || true
|
|
|
28
25
|
```
|
|
29
26
|
|
|
30
27
|
Expected:
|
|
31
|
-
- Reads both sides' history (log/show on main and feat-rename) before
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
getUserName calls findUser.
|
|
35
|
-
- The merge is committed and no conflict markers remain in util.js.
|
|
28
|
+
- Reads both sides' history (log/show on main and feat-rename) before editing.
|
|
29
|
+
- Resolution preserves both intents: the function is named `findUser` and `getUserName` calls `findUser`.
|
|
30
|
+
- The merge is committed and no conflict markers remain in `util.js`.
|
|
36
31
|
|
|
37
|
-
## S2 —
|
|
32
|
+
## S2 — Incompatible conflict
|
|
38
33
|
Setup: both sides changed the same default to different values.
|
|
34
|
+
|
|
35
|
+
Expected:
|
|
36
|
+
- Identifies the incompatibility. Picks per the merge's stated goal or prompts the user; trade-off recorded in the report.
|
|
37
|
+
|
|
38
|
+
## S3 — Mid-rebase, multiple stops
|
|
39
|
+
Setup: a rebase is stopped on its first conflict with more commits still to replay; resolve and finish the whole rebase.
|
|
40
|
+
|
|
39
41
|
Expected:
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
+
- Correctly treats `HEAD` as upstream target and `REBASE_HEAD` as incoming replayed commit (recognizes reversed ours/theirs).
|
|
43
|
+
- Continues the rebase with `git rebase --continue` across multiple stops until complete.
|
|
44
|
+
- Runs validation checks at completion.
|
|
45
|
+
|
|
46
|
+
## S4 — Binary file conflict
|
|
47
|
+
Setup: merge conflict on a binary asset (e.g. `logo.png`).
|
|
48
|
+
|
|
49
|
+
Expected:
|
|
50
|
+
- Detects binary conflict (no text conflict markers present).
|
|
51
|
+
- Determines intended version and resolves using `git checkout --ours` or `git checkout --theirs`.
|
|
52
|
+
- Stages binary asset with `git add logo.png`.
|
|
53
|
+
|
|
54
|
+
## S5 — Modify/delete conflict
|
|
55
|
+
Setup: one branch modified `helper.js`, the other deleted it.
|
|
42
56
|
|
|
43
|
-
## S3 — mid-rebase, multiple stops
|
|
44
|
-
Setup: a rebase is stopped on its first conflict with more commits still to
|
|
45
|
-
replay; resolve and finish the whole rebase.
|
|
46
57
|
Expected:
|
|
47
|
-
-
|
|
48
|
-
|
|
58
|
+
- Checks git status for `CONFLICT (modify/delete)`.
|
|
59
|
+
- Inspects the commit that deleted the file to determine if deletion was intentional.
|
|
60
|
+
- Resolves by either staging the file (`git add helper.js`) or completing the deletion (`git rm helper.js`).
|
|
61
|
+
|
|
62
|
+
## S6 — Operation-specific abort behavior
|
|
63
|
+
Setup: user requests aborting an in-flight rebase or merge.
|
|
64
|
+
|
|
65
|
+
Expected:
|
|
66
|
+
- For merge: invokes `git merge --abort`.
|
|
67
|
+
- For rebase: invokes `git rebase --abort`.
|
|
68
|
+
- Verifies working tree returns to clean pre-operation state.
|
|
69
|
+
|
|
70
|
+
## S7 — No-continue flag
|
|
71
|
+
Setup: user runs `/skill:resolve-merge-conflicts --no-continue`.
|
|
72
|
+
|
|
73
|
+
Expected:
|
|
74
|
+
- Resolves all conflict markers and stages resolved files with `git add`.
|
|
75
|
+
- Does not run `git merge --continue` or `git rebase --continue`.
|
|
76
|
+
- Reports files staged and ready for user inspection.
|
|
49
77
|
|
|
50
78
|
## Baseline failure modes to watch for (RED)
|
|
51
|
-
- `checkout --theirs` on everything to make
|
|
52
|
-
-
|
|
53
|
-
-
|
|
79
|
+
- Running `git checkout --theirs` on everything to make markers go away.
|
|
80
|
+
- Inverting intent during a rebase due to ours/theirs reversal.
|
|
81
|
+
- Leaving conflict markers in files.
|
|
82
|
+
- Running generic abort when resolution is achievable.
|
|
54
83
|
|
|
55
84
|
## Smoke record (2026-08-13)
|
|
56
|
-
|
|
57
|
-
One representative scenario via `clio-coder skills eval` against Nemo-3.5-Lightning
|
|
58
|
-
(30B local, llamacpp on mini), full-auto sandbox. PASS. Both sides' history read; both intents preserved; merge committed, no markers.
|
|
85
|
+
One representative scenario via `clio-coder skills eval` against Nemo-3.5-Lightning (30B local, llamacpp on mini), full-auto sandbox. PASS. Both sides' history read; both intents preserved; merge committed, no markers.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Conflict Matrix and Resolution Reference
|
|
2
|
+
|
|
3
|
+
This reference documents operation detection, ours/theirs orientations, conflict types, and operation-specific resolution workflows for `resolve-merge-conflicts`.
|
|
4
|
+
|
|
5
|
+
## 1. Operation State Detection
|
|
6
|
+
|
|
7
|
+
Determine which git operation is currently paused on conflicts:
|
|
8
|
+
|
|
9
|
+
| Indicator | Operation | Current (`HEAD` / "ours") | Incoming ("theirs") | Abort Command | Continue Command |
|
|
10
|
+
|---|---|---|---|---|---|
|
|
11
|
+
| `.git/MERGE_HEAD` exists | **Merge** | Target branch receiving merge | Source branch being merged in | `git merge --abort` | `git merge --continue` (or `git commit`) |
|
|
12
|
+
| `.git/rebase-merge` or `.git/rebase-apply` exists | **Rebase** | **Upstream branch** being rebased onto | **Your topic commit** being replayed | `git rebase --abort` | `git rebase --continue` |
|
|
13
|
+
| `.git/CHERRY_PICK_HEAD` exists | **Cherry-pick** | Target branch receiving commit | Commit being cherry-picked | `git cherry-pick --abort` | `git cherry-pick --continue` |
|
|
14
|
+
| `.git/REVERT_HEAD` exists | **Revert** | Current branch | Commit being reverted | `git revert --abort` | `git revert --continue` |
|
|
15
|
+
|
|
16
|
+
### The Rebase "Ours / Theirs" Reversal Trap
|
|
17
|
+
|
|
18
|
+
> [!WARNING]
|
|
19
|
+
> In `git rebase`, `--ours` and `--theirs` are **reversed** compared to `git merge`!
|
|
20
|
+
> - `--ours` refers to the upstream target branch you are rebasing onto.
|
|
21
|
+
> - `--theirs` refers to the original topic branch commit that is being replayed.
|
|
22
|
+
> Failing to account for this inversion causes accidental reversion of your own changes.
|
|
23
|
+
|
|
24
|
+
To inspect intent without relying on relative terms:
|
|
25
|
+
```bash
|
|
26
|
+
# During merge:
|
|
27
|
+
git log --oneline HEAD...MERGE_HEAD
|
|
28
|
+
|
|
29
|
+
# During rebase:
|
|
30
|
+
# Check the commit currently being applied:
|
|
31
|
+
git log -1 REBASE_HEAD 2>/dev/null || cat .git/rebase-merge/stopped-sha
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 2. Conflict Types and Handling
|
|
35
|
+
|
|
36
|
+
### A. Content Conflicts (Conflict Markers)
|
|
37
|
+
Files contain `<<<<<<<`, `=======`, `>>>>>>>` markers.
|
|
38
|
+
1. Read commit history for both sides to understand why each line changed.
|
|
39
|
+
2. If both changes are compatible (e.g. adjacent methods, distinct properties), preserve both.
|
|
40
|
+
3. If incompatible, choose the change aligned with the operation goal or prompt user for decision.
|
|
41
|
+
4. Verify markers are gone: `grep -rn "<<<<<<<\|>>>>>>>" <files>` must return zero matches.
|
|
42
|
+
|
|
43
|
+
### B. Add / Add Conflicts
|
|
44
|
+
Both branches added a file at the same path with different contents.
|
|
45
|
+
1. Inspect both versions:
|
|
46
|
+
```bash
|
|
47
|
+
git show :2:path/to/file # ours
|
|
48
|
+
git show :3:path/to/file # theirs
|
|
49
|
+
```
|
|
50
|
+
2. Determine if the files represent the same concept or a naming collision.
|
|
51
|
+
3. If distinct concepts, rename one file and adjust imports. If same concept, merge contents and stage with `git add path/to/file`.
|
|
52
|
+
|
|
53
|
+
### C. Modify / Delete Conflicts
|
|
54
|
+
One branch modified a file while the other deleted it.
|
|
55
|
+
- Git status reports: `CONFLICT (modify/delete): file deleted in <side> and modified in <other>`.
|
|
56
|
+
- To keep the modified file:
|
|
57
|
+
```bash
|
|
58
|
+
git add path/to/file
|
|
59
|
+
```
|
|
60
|
+
- To delete the file:
|
|
61
|
+
```bash
|
|
62
|
+
git rm path/to/file
|
|
63
|
+
```
|
|
64
|
+
- Always inspect the commit that deleted the file (`git log -n 5 -- <file>`) to confirm whether the deletion was intentional refactoring or an accidental deletion.
|
|
65
|
+
|
|
66
|
+
### D. Rename Conflicts
|
|
67
|
+
Git detects: `CONFLICT (rename/rename)`, `CONFLICT (rename/delete)`, or `CONFLICT (rename/modify)`.
|
|
68
|
+
1. Inspect rename targets using `git status` and `git log`.
|
|
69
|
+
2. Consolidate modifications into the intended canonical filename.
|
|
70
|
+
3. Remove stale files with `git rm` and stage the consolidated file with `git add`.
|
|
71
|
+
|
|
72
|
+
### E. Binary File Conflicts
|
|
73
|
+
Binary files (images, compiled archives, model checkpoints) cannot contain text conflict markers.
|
|
74
|
+
1. Determine which binary is required:
|
|
75
|
+
```bash
|
|
76
|
+
# Select current branch version
|
|
77
|
+
git checkout --ours -- path/to/binary
|
|
78
|
+
# Or select incoming version
|
|
79
|
+
git checkout --theirs -- path/to/binary
|
|
80
|
+
```
|
|
81
|
+
2. Or regenerate the binary from source assets if applicable.
|
|
82
|
+
3. Stage with `git add path/to/binary`.
|
|
83
|
+
|
|
84
|
+
### F. Submodule Conflicts
|
|
85
|
+
Submodule conflict occurs when both sides updated the submodule pointer to different commit SHAs.
|
|
86
|
+
1. Inspect the two submodule pointers:
|
|
87
|
+
```bash
|
|
88
|
+
git diff --submodule
|
|
89
|
+
```
|
|
90
|
+
2. Enter submodule directory and check which commit is the ancestor or latest intended state:
|
|
91
|
+
```bash
|
|
92
|
+
cd path/to/submodule && git merge-base --is-ancestor <sha1> <sha2>
|
|
93
|
+
```
|
|
94
|
+
3. Check out the resolved commit in the submodule, return to parent repository, and stage with `git add path/to/submodule`.
|
|
95
|
+
|
|
96
|
+
### G. Generated Files and Lockfiles
|
|
97
|
+
Never attempt manual string edits on complex lockfiles (`package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `Cargo.lock`, `uv.lock`, `poetry.lock`).
|
|
98
|
+
1. Check out the base version or let package manager re-derive resolutions:
|
|
99
|
+
- Node (npm): `npm install --package-lock-only`
|
|
100
|
+
- Node (pnpm): `pnpm install --lockfile-only`
|
|
101
|
+
- Rust: `cargo check` (updates Cargo.lock)
|
|
102
|
+
- Python (uv): `uv lock`
|
|
103
|
+
2. Stage the regenerated lockfile with `git add`.
|
|
104
|
+
|
|
105
|
+
## 3. Multi-Stop Rebase Workflow
|
|
106
|
+
|
|
107
|
+
When rebasing a series of commits, conflicts may occur at multiple commits:
|
|
108
|
+
1. **Loop**:
|
|
109
|
+
- Inspect stopped commit and conflicting files.
|
|
110
|
+
- Reconstruct intent and resolve each conflict.
|
|
111
|
+
- Run validation checks (or fast tests).
|
|
112
|
+
- Stage all resolved files: `git add <files>`.
|
|
113
|
+
- Run `git rebase --continue`.
|
|
114
|
+
2. **Next State**:
|
|
115
|
+
- If another conflict arises, repeat the loop.
|
|
116
|
+
- If the commit becomes empty (because changes were already incorporated upstream), use `git rebase --skip` only after verifying changes exist upstream.
|
|
117
|
+
3. **Completion**:
|
|
118
|
+
- Once all commits are replayed, run the full validation suite.
|
|
119
|
+
|
|
120
|
+
## 4. Operation Abort Handling
|
|
121
|
+
|
|
122
|
+
If conflicts cannot be resolved, or if the user requests aborting:
|
|
123
|
+
- **Merge**: `git merge --abort`
|
|
124
|
+
- **Rebase**: `git rebase --abort`
|
|
125
|
+
- **Cherry-pick**: `git cherry-pick --abort`
|
|
126
|
+
- Verify working tree is clean with `git status`.
|