scip-query 0.10.11 → 0.11.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/CHANGELOG.md +45 -0
- package/{vendor/scip/LICENSE.scip → LICENSE} +1 -0
- package/README.md +168 -55
- package/dist/augment-vue-worker.js +1 -1
- package/dist/chunk-2VSDXOG5.js +2 -0
- package/dist/chunk-343O6EVV.js +2 -0
- package/dist/chunk-3KDUITBE.js +7 -0
- package/dist/chunk-3T2FNHIU.js +2 -0
- package/dist/chunk-3V6JQQM5.js +2 -0
- package/dist/chunk-5AAAEZ2Z.js +2 -0
- package/dist/chunk-6Q6OFLFQ.js +8 -0
- package/dist/chunk-6XA4LDHY.js +2 -0
- package/dist/chunk-75X52JTA.js +2 -0
- package/dist/{chunk-54KGX7EX.js → chunk-7HB3CZFD.js} +2 -2
- package/dist/chunk-7JZRFDCU.js +2 -0
- package/dist/chunk-7XL7J7PT.js +3 -0
- package/dist/chunk-ALHNAPS2.js +2 -0
- package/dist/{chunk-JATUZIEH.js → chunk-BDRBPG7Y.js} +2 -2
- package/dist/chunk-BN5SXXQS.js +40 -0
- package/dist/chunk-C4ICAIJ4.js +3 -0
- package/dist/{chunk-LSET2TXH.js → chunk-CMHYBXJB.js} +2 -2
- package/dist/{chunk-YWYFU2V3.js → chunk-DRPAQAFM.js} +6 -6
- package/dist/chunk-FERAXG6Y.js +72 -0
- package/dist/chunk-FLJJLSGB.js +2 -0
- package/dist/chunk-FXG3PHVW.js +9 -0
- package/dist/chunk-GCN2P4EJ.js +2 -0
- package/dist/chunk-GHXRVCIY.js +21 -0
- package/dist/chunk-GNG622H3.js +3 -0
- package/dist/chunk-H4LUPLEJ.js +2 -0
- package/dist/{chunk-BASVXNY3.js → chunk-H56MGERE.js} +4 -4
- package/dist/chunk-H7NSJ7L2.js +5 -0
- package/dist/chunk-HINMXZ6J.js +2 -0
- package/dist/chunk-HXXMPYEF.js +2 -0
- package/dist/{chunk-Z3YYR4OS.js → chunk-HZKMEXA3.js} +2 -2
- package/dist/chunk-IFSX6YVU.js +4 -0
- package/dist/chunk-ISLWJ4PY.js +10 -0
- package/dist/chunk-J5WVNZ6O.js +2 -0
- package/dist/chunk-K2HYR5A7.js +3 -0
- package/dist/chunk-K6UI6EBZ.js +2 -0
- package/dist/chunk-KJCDEDQW.js +2 -0
- package/dist/{chunk-Z4HICZGY.js → chunk-KKMOB3OJ.js} +2 -2
- package/dist/{chunk-YWOOQ4FF.js → chunk-KMVGRIO2.js} +2 -2
- package/dist/chunk-LWOOTRHC.js +2 -0
- package/dist/{chunk-EY43NV4M.js → chunk-LZNLRE4X.js} +17 -8
- package/dist/chunk-M2YXL62V.js +23 -0
- package/dist/chunk-MNEJYEHW.js +3 -0
- package/dist/chunk-MTDBHTSF.js +2 -0
- package/dist/{chunk-ZQDIXAF5.js → chunk-N2Z3CU7X.js} +2 -2
- package/dist/chunk-N7PNFLGY.js +2 -0
- package/dist/chunk-NAH5EAZS.js +6 -0
- package/dist/chunk-NBXK32I6.js +2 -0
- package/dist/chunk-NJJ7AS4F.js +2 -0
- package/dist/{chunk-FDEQIPPK.js → chunk-NLMRJ7SI.js} +2 -2
- package/dist/chunk-ODVITBYU.js +26 -0
- package/dist/chunk-ORBRX2QJ.js +2 -0
- package/dist/chunk-P36UR5II.js +2 -0
- package/dist/chunk-PYZZBIEU.js +3 -0
- package/dist/chunk-PZS6J5YG.js +16 -0
- package/dist/{chunk-LM5SHAN4.js → chunk-QARYU7R3.js} +2 -2
- package/dist/chunk-QJ3FK4TB.js +38 -0
- package/dist/chunk-QXGTGE2C.js +35 -0
- package/dist/chunk-QZ4JVECJ.js +2 -0
- package/dist/chunk-R3JY4EZ4.js +102 -0
- package/dist/{chunk-VOYOYC5T.js → chunk-R5336VHZ.js} +2 -2
- package/dist/chunk-RJMXSHKM.js +2 -0
- package/dist/chunk-STBXCPKY.js +5 -0
- package/dist/chunk-T2FQ4GHD.js +9 -0
- package/dist/chunk-TFWDJDGO.js +2 -0
- package/dist/chunk-TG7QSYCJ.js +2 -0
- package/dist/{chunk-FKCGBZAC.js → chunk-TTS75UF2.js} +5 -5
- package/dist/{chunk-BVRS7RKQ.js → chunk-U7I373V4.js} +2 -2
- package/dist/chunk-UIKLA3F5.js +2 -0
- package/dist/{chunk-P753MDDE.js → chunk-UMPNL7T6.js} +2 -2
- package/dist/chunk-URSSPS5H.js +2 -0
- package/dist/chunk-VGMUFW3J.js +2 -0
- package/dist/chunk-VXTNADIW.js +18 -0
- package/dist/chunk-VYF5HA76.js +2 -0
- package/dist/chunk-WFGOH2UI.js +43 -0
- package/dist/chunk-WGA5BBTA.js +4 -0
- package/dist/chunk-WIBFXSYB.js +6 -0
- package/dist/chunk-WPSS37EW.js +2 -0
- package/dist/chunk-WQHWIVA7.js +3 -0
- package/dist/chunk-WS3Z6W3M.js +65 -0
- package/dist/chunk-WXVGNFAO.js +2 -0
- package/dist/{chunk-6LJHXREW.js → chunk-WZLPXFZU.js} +2 -2
- package/dist/chunk-X4O6K47U.js +2 -0
- package/dist/chunk-X6OGDTQH.js +2 -0
- package/dist/chunk-XEMQUN3Z.js +20 -0
- package/dist/{chunk-7B6LP46R.js → chunk-XHWLNQVZ.js} +2 -2
- package/dist/chunk-XMR747CP.js +2 -0
- package/dist/chunk-Y6L4LXPG.js +2 -0
- package/dist/chunk-YCPASUCX.js +2 -0
- package/dist/chunk-YZXV3CU3.js +60 -0
- package/dist/chunk-ZEKBR4OK.js +10 -0
- package/dist/chunk-ZMGBWSFZ.js +2 -0
- package/dist/cli.js +462 -274
- package/dist/{config-types-BDIWAYzr.d.ts → config-types-BrHl3Bge.d.ts} +61 -1
- package/dist/{db-Djj3Nqrb.d.ts → db-_Bdx0E1W.d.ts} +1 -1
- package/dist/diff-gate-types-CG2YQ_ei.d.ts +4 -0
- package/dist/{frontend-behavior-evidence-BxKpKWUu.d.ts → frontend-behavior-evidence-EfM4_9bc.d.ts} +1 -1
- package/dist/{health-D5J42g4D.d.ts → health-BEZ1Rt0S.d.ts} +54 -2
- package/dist/index.d.ts +10 -70
- package/dist/index.js +2 -2
- package/dist/postinstall.js +1 -4
- package/dist/queries/affected.d.ts +2 -2
- package/dist/queries/affected.js +1 -1
- package/dist/queries/bottlenecks.d.ts +2 -2
- package/dist/queries/bottlenecks.js +1 -1
- package/dist/queries/by-kind.d.ts +2 -2
- package/dist/queries/by-kind.js +1 -1
- package/dist/queries/call-graph.d.ts +2 -2
- package/dist/queries/call-graph.js +1 -1
- package/dist/queries/change-surface.d.ts +2 -2
- package/dist/queries/change-surface.js +1 -1
- package/dist/queries/cleanup-plan.d.ts +2 -2
- package/dist/queries/cleanup-plan.js +1 -1
- package/dist/queries/co-change.d.ts +12 -2
- package/dist/queries/co-change.js +1 -1
- package/dist/queries/code.d.ts +2 -2
- package/dist/queries/code.js +1 -1
- package/dist/queries/complexity-hotspots.d.ts +7 -3
- package/dist/queries/complexity-hotspots.js +1 -1
- package/dist/queries/complexity.d.ts +42 -4
- package/dist/queries/complexity.js +1 -1
- package/dist/queries/convergence.d.ts +2 -2
- package/dist/queries/convergence.js +1 -1
- package/dist/queries/coupling.d.ts +2 -2
- package/dist/queries/coupling.js +1 -1
- package/dist/queries/cycles.d.ts +12 -3
- package/dist/queries/cycles.js +1 -1
- package/dist/queries/dataflow.d.ts +2 -2
- package/dist/queries/dataflow.js +1 -1
- package/dist/queries/dead.d.ts +3 -3
- package/dist/queries/dead.js +1 -1
- package/dist/queries/deep-chains.d.ts +2 -2
- package/dist/queries/deep-chains.js +1 -1
- package/dist/queries/deps.d.ts +2 -2
- package/dist/queries/deps.js +1 -1
- package/dist/queries/diff-gate.d.ts +65 -8
- package/dist/queries/diff-gate.js +1 -1
- package/dist/queries/diff-impact.d.ts +21 -3
- package/dist/queries/diff-impact.js +1 -1
- package/dist/queries/doc-drift.d.ts +29 -2
- package/dist/queries/doc-drift.js +1 -1
- package/dist/queries/drift.d.ts +15 -3
- package/dist/queries/drift.js +1 -1
- package/dist/queries/duplicate-bodies.d.ts +55 -0
- package/dist/queries/duplicate-bodies.js +2 -0
- package/dist/queries/extract-candidates.d.ts +2 -2
- package/dist/queries/extract-candidates.js +1 -1
- package/dist/queries/fan.d.ts +2 -2
- package/dist/queries/fan.js +1 -1
- package/dist/queries/files.d.ts +4 -3
- package/dist/queries/files.js +1 -1
- package/dist/queries/health.d.ts +3 -3
- package/dist/queries/health.js +1 -1
- package/dist/queries/hierarchy.d.ts +2 -2
- package/dist/queries/hierarchy.js +1 -1
- package/dist/queries/hotspots.d.ts +2 -2
- package/dist/queries/hotspots.js +1 -1
- package/dist/queries/imports.d.ts +2 -2
- package/dist/queries/imports.js +1 -1
- package/dist/queries/incomplete-migration.d.ts +3 -2
- package/dist/queries/incomplete-migration.js +1 -1
- package/dist/queries/index.d.ts +12 -7
- package/dist/queries/index.js +1 -1
- package/dist/queries/isolated.d.ts +2 -2
- package/dist/queries/isolated.js +1 -1
- package/dist/queries/locality-candidates.d.ts +2 -2
- package/dist/queries/locality-candidates.js +1 -1
- package/dist/queries/members.d.ts +2 -2
- package/dist/queries/members.js +1 -1
- package/dist/queries/methods.d.ts +2 -2
- package/dist/queries/methods.js +1 -1
- package/dist/queries/outline.d.ts +2 -2
- package/dist/queries/outline.js +1 -1
- package/dist/queries/passthrough-candidates.d.ts +11 -3
- package/dist/queries/passthrough-candidates.js +1 -1
- package/dist/queries/plan-context.d.ts +3 -2
- package/dist/queries/plan-context.js +1 -1
- package/dist/queries/react-component-duplicates.d.ts +7 -2
- package/dist/queries/react-component-duplicates.js +1 -1
- package/dist/queries/react-hook-candidates.d.ts +3 -3
- package/dist/queries/react-hook-candidates.js +1 -1
- package/dist/queries/react-large-component-pressure.d.ts +2 -2
- package/dist/queries/react-large-component-pressure.js +1 -1
- package/dist/queries/recent-duplicates.d.ts +2 -2
- package/dist/queries/recent-duplicates.js +1 -1
- package/dist/queries/redundant-reexports.d.ts +2 -2
- package/dist/queries/redundant-reexports.js +1 -1
- package/dist/queries/refs.d.ts +2 -2
- package/dist/queries/refs.js +1 -1
- package/dist/queries/self-audit.d.ts +9 -4
- package/dist/queries/self-audit.js +1 -1
- package/dist/queries/similar-chains.d.ts +2 -2
- package/dist/queries/similar-chains.js +1 -1
- package/dist/queries/similar-files.d.ts +2 -2
- package/dist/queries/similar-files.js +1 -1
- package/dist/queries/similar-signatures.d.ts +17 -10
- package/dist/queries/similar-signatures.js +1 -1
- package/dist/queries/similar.d.ts +85 -17
- package/dist/queries/similar.js +1 -1
- package/dist/queries/slice.d.ts +2 -2
- package/dist/queries/slice.js +1 -1
- package/dist/queries/stale-abstractions.d.ts +2 -2
- package/dist/queries/stale-abstractions.js +1 -1
- package/dist/queries/stats.d.ts +2 -2
- package/dist/queries/surface.d.ts +2 -2
- package/dist/queries/surface.js +1 -1
- package/dist/queries/symbols.d.ts +2 -2
- package/dist/queries/symbols.js +1 -1
- package/dist/queries/system.d.ts +2 -2
- package/dist/queries/system.js +1 -1
- package/dist/queries/trace.d.ts +2 -2
- package/dist/queries/trace.js +1 -1
- package/dist/queries/twin-ab.d.ts +55 -0
- package/dist/queries/twin-ab.js +2 -0
- package/dist/queries/twin-drift.d.ts +97 -0
- package/dist/queries/twin-drift.js +2 -0
- package/dist/queries/unused-imports.d.ts +2 -2
- package/dist/queries/unused-imports.js +1 -1
- package/dist/queries/unused-params.d.ts +2 -2
- package/dist/queries/unused-params.js +1 -1
- package/dist/queries/vue-component-duplicates.d.ts +7 -2
- package/dist/queries/vue-component-duplicates.js +1 -1
- package/dist/queries/vue-composable-candidates.d.ts +3 -3
- package/dist/queries/vue-composable-candidates.js +1 -1
- package/dist/queries/vue-large-view-pressure.d.ts +6 -2
- package/dist/queries/vue-large-view-pressure.js +1 -1
- package/dist/queries/wrapper-candidates.d.ts +2 -2
- package/dist/queries/wrapper-candidates.js +1 -1
- package/dist/reindex-worker.js +9 -9
- package/dist/reindex.d.ts +30 -4
- package/dist/reindex.js +19 -19
- package/dist/runtime.d.ts +12 -6
- package/dist/runtime.js +2 -2
- package/dist/{scip-cli-CnK9Va4O.d.ts → scip-cli-C7cg4ZHR.d.ts} +1 -1
- package/dist/symbol-types-DaoeXKUt.d.ts +66 -0
- package/docs/AGENT_GUIDE.md +20 -18
- package/docs/AI_FAILURE_MODES.md +36 -13
- package/docs/API.md +1 -1
- package/docs/COMMAND_REFERENCE.md +57 -14
- package/docs/DETECTOR_GUIDE.md +20 -3
- package/docs/REGEX_POLICY.md +34 -0
- package/docs/analyzer-inventory.md +48 -3
- package/docs/analyzer-validation-ledger.md +41 -6
- package/package.json +23 -7
- package/scripts/build-scip-windows.mjs +10 -7
- package/scripts/evidence-product-contract.mjs +197 -0
- package/skills/_shared/SKILL.md +243 -0
- package/skills/_shared/agents/openai.yaml +4 -0
- package/skills/scip-api-impact/SKILL.md +55 -71
- package/skills/scip-claim-audit/SKILL.md +105 -0
- package/skills/scip-claim-audit/agents/openai.yaml +4 -0
- package/skills/scip-cleanup-audit/SKILL.md +122 -0
- package/skills/scip-cleanup-audit/agents/openai.yaml +4 -0
- package/skills/scip-cleanup-improve/SKILL.md +84 -0
- package/skills/scip-cleanup-improve/agents/openai.yaml +4 -0
- package/skills/scip-concrete-plan/SKILL.md +181 -0
- package/skills/scip-concrete-plan/agents/openai.yaml +4 -0
- package/skills/scip-conductor/SKILL.md +133 -0
- package/skills/scip-conductor/agents/openai.yaml +4 -0
- package/skills/scip-debug/SKILL.md +60 -58
- package/skills/scip-diagram/SKILL.md +64 -94
- package/skills/scip-directory-architecture/SKILL.md +65 -107
- package/skills/scip-doc-reconcile/SKILL.md +56 -67
- package/skills/scip-explore/SKILL.md +78 -210
- package/skills/scip-hyper-optimization/SKILL.md +124 -198
- package/skills/scip-integrity-audit/SKILL.md +103 -0
- package/skills/scip-integrity-audit/agents/openai.yaml +4 -0
- package/skills/scip-language-playbook/SKILL.md +56 -326
- package/skills/scip-maintainability/SKILL.md +80 -219
- package/skills/scip-probe-reachability/SKILL.md +92 -0
- package/skills/scip-probe-reachability/agents/openai.yaml +4 -0
- package/skills/scip-query/SKILL.md +108 -124
- package/skills/scip-react-maintainability/SKILL.md +64 -82
- package/skills/scip-setup/SKILL.md +121 -0
- package/skills/scip-setup/agents/openai.yaml +4 -0
- package/skills/scip-tla-model-system/SKILL.md +138 -0
- package/skills/scip-tla-model-system/agents/openai.yaml +4 -0
- package/skills/scip-triage-issue/SKILL.md +53 -41
- package/skills/scip-twin-drift/SKILL.md +107 -0
- package/skills/scip-twin-drift/agents/openai.yaml +4 -0
- package/skills/scip-verify/SKILL.md +70 -88
- package/skills/scip-vue-maintainability/SKILL.md +67 -94
- package/dist/chunk-2KHTSEIL.js +0 -102
- package/dist/chunk-3VD3JMK2.js +0 -2
- package/dist/chunk-4UZO3XCV.js +0 -35
- package/dist/chunk-5GOLFJEO.js +0 -8
- package/dist/chunk-5OST6GYB.js +0 -2
- package/dist/chunk-65AU3HFZ.js +0 -2
- package/dist/chunk-6GN7FXCH.js +0 -2
- package/dist/chunk-6IR2AOBM.js +0 -7
- package/dist/chunk-6JRV4MY2.js +0 -23
- package/dist/chunk-6QSOCTZT.js +0 -18
- package/dist/chunk-72KY2ZFO.js +0 -2
- package/dist/chunk-7GO4EQF5.js +0 -2
- package/dist/chunk-7IVSJJZU.js +0 -7
- package/dist/chunk-7TWLSZK5.js +0 -2
- package/dist/chunk-A536TEU4.js +0 -3
- package/dist/chunk-AVWPHM2Q.js +0 -4
- package/dist/chunk-B32FX5KB.js +0 -2
- package/dist/chunk-B6MJ5VQV.js +0 -2
- package/dist/chunk-BFXPG2VN.js +0 -2
- package/dist/chunk-BSN22NRK.js +0 -9
- package/dist/chunk-BZ53S4ZN.js +0 -2
- package/dist/chunk-C5CTSJ6X.js +0 -6
- package/dist/chunk-CO5GJRP7.js +0 -2
- package/dist/chunk-CW5YFOCP.js +0 -5
- package/dist/chunk-DS6QEB3G.js +0 -5
- package/dist/chunk-E35O7UCB.js +0 -2
- package/dist/chunk-EXDQ35NN.js +0 -2
- package/dist/chunk-FAYI6KZ5.js +0 -2
- package/dist/chunk-FFVIFETB.js +0 -2
- package/dist/chunk-FG4NT6VY.js +0 -2
- package/dist/chunk-FXNWFMKW.js +0 -25
- package/dist/chunk-G5UPYQGL.js +0 -4
- package/dist/chunk-GQBMH2TQ.js +0 -2
- package/dist/chunk-GRJY65YT.js +0 -2
- package/dist/chunk-HF25DFSC.js +0 -3
- package/dist/chunk-HHN2B5KA.js +0 -2
- package/dist/chunk-IHUETYFW.js +0 -2
- package/dist/chunk-JCLDUKT6.js +0 -38
- package/dist/chunk-JGN2ZFJR.js +0 -2
- package/dist/chunk-JM72FNGA.js +0 -2
- package/dist/chunk-JME7OWD3.js +0 -2
- package/dist/chunk-KDFONWTW.js +0 -40
- package/dist/chunk-LPL4MA6R.js +0 -2
- package/dist/chunk-LZHUWKGD.js +0 -2
- package/dist/chunk-M4COR2H6.js +0 -2
- package/dist/chunk-NOJAM5ZV.js +0 -21
- package/dist/chunk-O6ZH6C6Y.js +0 -2
- package/dist/chunk-OBGRLXWF.js +0 -3
- package/dist/chunk-OLTESY4K.js +0 -3
- package/dist/chunk-ONPCQ2PM.js +0 -6
- package/dist/chunk-P4KYUPBD.js +0 -4
- package/dist/chunk-P5RYBRIO.js +0 -4
- package/dist/chunk-P7AL7Y37.js +0 -2
- package/dist/chunk-PFOCOG57.js +0 -2
- package/dist/chunk-QLAUCRDJ.js +0 -2
- package/dist/chunk-QPU7EXAW.js +0 -2
- package/dist/chunk-QYB5P7GL.js +0 -2
- package/dist/chunk-RNM6LMCF.js +0 -2
- package/dist/chunk-RVWSAMTT.js +0 -2
- package/dist/chunk-TK7O5ER5.js +0 -3
- package/dist/chunk-TQ5W2H3S.js +0 -4
- package/dist/chunk-USPV3T5K.js +0 -2
- package/dist/chunk-UUBMFL3F.js +0 -59
- package/dist/chunk-VCQYSG2M.js +0 -10
- package/dist/chunk-VUKC6F77.js +0 -20
- package/dist/chunk-W2CBNBEL.js +0 -71
- package/dist/chunk-W6BVEKYC.js +0 -3
- package/dist/chunk-WUCEKFQC.js +0 -3
- package/dist/chunk-XUGQU7PM.js +0 -41
- package/dist/chunk-Y5NBHMQX.js +0 -2
- package/dist/chunk-YCOFCT4B.js +0 -2
- package/dist/chunk-YZA6PPZL.js +0 -3
- package/skills/concrete-plan/SKILL.md +0 -372
- package/skills/concrete-plan/agents/openai.yaml +0 -4
- package/skills/scip-adoption/SKILL.md +0 -122
- package/skills/scip-adoption/agents/openai.yaml +0 -4
- package/skills/scip-ai-cleanup/SKILL.md +0 -153
- package/skills/scip-ai-cleanup/agents/openai.yaml +0 -4
- package/skills/scip-debloat/SKILL.md +0 -439
- package/skills/scip-debloat/agents/openai.yaml +0 -4
- package/skills/scip-health-audit/SKILL.md +0 -162
- package/skills/scip-health-audit/agents/openai.yaml +0 -4
- package/skills/scip-health-improve/SKILL.md +0 -155
- package/skills/scip-health-improve/agents/openai.yaml +0 -4
- package/skills/scip-query-setup/SKILL.md +0 -170
- package/skills/scip-query-setup/agents/openai.yaml +0 -3
- package/vendor/scip/README.md +0 -6
- package/vendor/scip/win32-arm64/scip.exe +0 -0
- package/vendor/scip/win32-x64/scip.exe +0 -0
|
@@ -1,104 +1,107 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: scip-hyper-optimization
|
|
3
|
-
description:
|
|
3
|
+
description: Optimize performance scientifically with scip-query evidence. Use for benchmarking, profiling, speeding up commands, workflows, indexers, detectors, app paths, cold/warm regressions, memory/cost reduction, or comparing current-pipeline tuning with alternative designs.
|
|
4
|
+
commands:
|
|
5
|
+
- template: "scip-query bench --json"
|
|
6
|
+
when: "Target and harness: baseline timings for a scip-query command target."
|
|
7
|
+
- template: "scip-query bench --json --cold-index --include-heavy --timeout-ms 600000"
|
|
8
|
+
when: "Target and harness: cold-path and heavy-detector timings."
|
|
9
|
+
- template: "scip-query plan-context <entry-symbol-or-file>"
|
|
10
|
+
when: "Trace behavior: pre-edit context for the profiled entry point."
|
|
11
|
+
- template: "scip-query call-graph <entry-symbol>"
|
|
12
|
+
when: "Trace behavior: callers/callees for the pipeline under test."
|
|
13
|
+
- template: "scip-query complexity <hot-symbol>"
|
|
14
|
+
when: "Diagnose: branches, cyclomatic estimate, fan-in/out for a hot symbol."
|
|
15
|
+
- template: "scip-query change-surface <touched-file> --json --full"
|
|
16
|
+
when: "Verify and report: blast radius of the optimization change."
|
|
4
17
|
---
|
|
5
18
|
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
Use this skill to make a command, workflow, service, page, or tool
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
# scip-hyper-optimization
|
|
20
|
+
|
|
21
|
+
Use this skill to make a command, workflow, service, page, or tool faster without changing its observable result. Hyper optimization is a bounded campaign that improves runtime, memory, or computational cost against repeatable measurements.
|
|
22
|
+
|
|
23
|
+
Campaign-level conduct — delegation, handoff verification, benchmark pre-registration across multiple phases — is `scip-conductor`; this skill is the performance-domain method that runs inside it (or standalone for a single target).
|
|
24
|
+
|
|
25
|
+
Load shared mechanics from [`../_shared/SKILL.md`](../_shared/SKILL.md).
|
|
26
|
+
|
|
27
|
+
## Scale Gate
|
|
28
|
+
|
|
29
|
+
Choose the mode before starting:
|
|
30
|
+
|
|
31
|
+
- **QUICK** — a single command/function target with an obvious hot path: capture one `docs/benchmarks/runs/YYYY-MM-DD-<target>.jsonl` baseline, skip the ledger and the rest of the campaign artifact set, fix the hypothesis, measure after, done.
|
|
32
|
+
- **CAMPAIGN** — multiple targets, an unclear bottleneck, or a decision between competing designs: run the full machinery below (baseline doc, ledger, profiling, alternative-design track).
|
|
33
|
+
|
|
34
|
+
One sentence to decide: if you can already name the one function you expect to fix and a single before/after number will settle it, use QUICK; if naming that function requires investigation or the fix might be architectural, use CAMPAIGN.
|
|
35
|
+
|
|
36
|
+
<!-- BEGIN GENERATED SKILL COMMANDS -->
|
|
37
|
+
## Commands for this skill
|
|
38
|
+
|
|
39
|
+
| Command | Purpose | When |
|
|
40
|
+
| --- | --- | --- |
|
|
41
|
+
| `scip-query bench --json` | Benchmark indexing and command runtimes for this repository | Target and harness: baseline timings for a scip-query command target. |
|
|
42
|
+
| `scip-query bench --json --cold-index --include-heavy --timeout-ms 600000` | Benchmark indexing and command runtimes for this repository | Target and harness: cold-path and heavy-detector timings. |
|
|
43
|
+
| `scip-query plan-context <entry-symbol-or-file>` | Pre-edit planning context for a symbol, file, or module | Trace behavior: pre-edit context for the profiled entry point. |
|
|
44
|
+
| `scip-query call-graph <entry-symbol>` | Show incoming callers and outgoing callees for a symbol | Trace behavior: callers/callees for the pipeline under test. |
|
|
45
|
+
| `scip-query complexity <hot-symbol>` | Per-symbol complexity: branches, cyclomatic estimate, fan-in/out, callees | Diagnose: branches, cyclomatic estimate, fan-in/out for a hot symbol. |
|
|
46
|
+
| `scip-query change-surface <touched-file> --json --full` | Pre-change briefing: exports, consumers, and blast-radius risk | Verify and report: blast radius of the optimization change. |
|
|
47
|
+
|
|
48
|
+
Use this shortlist first. Open [`../_shared/SKILL.md`](../_shared/SKILL.md) only when it is insufficient.
|
|
49
|
+
<!-- END GENERATED SKILL COMMANDS -->
|
|
50
|
+
|
|
51
|
+
## Terms
|
|
52
|
+
|
|
53
|
+
A measurement harness is the repeatable set of commands, fixtures, corpora, environment notes, and result documents used to decide whether performance changed.
|
|
54
|
+
|
|
55
|
+
A run history is the durable time series of measurements, with one record per run, command, subprocess, or profiled stage.
|
|
56
|
+
|
|
57
|
+
A profile span is one named timed piece of work inside the target process, such as input loading, cache reads, database queries, graph traversal, rendering, or a child process.
|
|
58
|
+
|
|
59
|
+
Hierarchical profiling is measuring coarse spans first, then recursively splitting only the dominant span until the expensive operation is concrete enough to fix.
|
|
60
|
+
|
|
61
|
+
A command ledger is the living document for one target: output contract, current pipeline, timings, tried ideas, and decisions.
|
|
26
62
|
|
|
27
63
|
## Rules
|
|
28
64
|
|
|
29
|
-
1. Do not optimize until a measurement harness exists or
|
|
30
|
-
2.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
diagnostics, safety checks, or supported inputs.
|
|
51
|
-
|
|
52
|
-
## Phase 0: Target And Measurement Harness
|
|
53
|
-
|
|
54
|
-
If the target repository is not already a reliable scip-query workspace, invoke
|
|
55
|
-
`scip-query-setup` first. Do not run setup-ci in this workflow.
|
|
56
|
-
|
|
57
|
-
Choose the optimization target explicitly. Use user-reported pain, production
|
|
58
|
-
telemetry, benchmark ranking, regression data, cost, frequency, or risk to
|
|
59
|
-
justify why this target comes first. Do not optimize the slowest thing by habit
|
|
60
|
-
if another path dominates real user time or compute spend.
|
|
61
|
-
|
|
62
|
-
Create or update a benchmark note and a run-history store before code changes.
|
|
63
|
-
Prefer the repo's existing convention; otherwise use
|
|
64
|
-
`docs/benchmarks/YYYY-MM-DD-<target>-baseline.md` and
|
|
65
|
-
`docs/benchmarks/runs/YYYY-MM-DD-<target>.jsonl`. Include target, machine/date
|
|
66
|
-
context, corpus or fixture list, cold/warm/correctness commands, baseline
|
|
67
|
-
timings, output-contract evidence, and slowest stages. Append a structured run
|
|
68
|
-
record for each measurement with at least timestamp, commit/version, target,
|
|
69
|
-
corpus, scenario, command, duration, exit status, output hash or size, and
|
|
70
|
-
notes for outliers.
|
|
71
|
-
|
|
72
|
-
Choose the measurement mechanism from the target's real workload. For app
|
|
73
|
-
paths, use the app's benchmark, test, route smoke, build, profiler, load test,
|
|
74
|
-
or timing script; if none exists, create the smallest repeatable timing command.
|
|
75
|
-
For scip-query command, detector, or indexer targets, benchmark the relevant
|
|
76
|
-
command matrix:
|
|
65
|
+
1. Do not optimize until a measurement harness exists or is created.
|
|
66
|
+
2. Capture representative inputs, output contract, and correctness checks before editing.
|
|
67
|
+
3. Record every benchmark in machine-readable run history.
|
|
68
|
+
4. Measure cold and warm paths separately when they can diverge.
|
|
69
|
+
5. Profile the internal chain before choosing a fix.
|
|
70
|
+
6. Attach cardinality to spans: files, rows, symbols, candidates, cache hits/misses, bytes, edges, nodes, retries, or output rows.
|
|
71
|
+
7. Work both tracks: tune the current pipeline and evaluate alternative algorithms or data models.
|
|
72
|
+
8. Keep only changes that improve real workloads without reducing accuracy, diagnostics, safety, or supported inputs.
|
|
73
|
+
|
|
74
|
+
## Workflow
|
|
75
|
+
|
|
76
|
+
### 1. Target and harness
|
|
77
|
+
|
|
78
|
+
If the repo is not a reliable scip-query workspace, invoke `scip-setup` first. Choose the target from user pain, telemetry, benchmark ranking, regression data, cost, frequency, or risk.
|
|
79
|
+
|
|
80
|
+
Create or update:
|
|
81
|
+
|
|
82
|
+
- `docs/benchmarks/YYYY-MM-DD-<target>-baseline.md` (CAMPAIGN only — QUICK skips this)
|
|
83
|
+
- `docs/benchmarks/runs/YYYY-MM-DD-<target>.jsonl` (both modes — the one required artifact)
|
|
84
|
+
|
|
85
|
+
For scip-query command targets, start with:
|
|
77
86
|
|
|
78
87
|
```bash
|
|
79
88
|
scip-query bench --json
|
|
80
89
|
scip-query bench --json --cold-index --include-heavy --timeout-ms 600000
|
|
81
90
|
```
|
|
82
91
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
92
|
+
This step is complete only when baseline timings, output identity evidence, corpus, environment, and run-history location exist.
|
|
93
|
+
|
|
94
|
+
### 2. Create the ledger
|
|
86
95
|
|
|
87
|
-
|
|
96
|
+
CAMPAIGN only — QUICK mode skips this step and goes straight to tracing behavior with the single run-history file as its record.
|
|
88
97
|
|
|
89
|
-
|
|
90
|
-
`docs/benchmarks/YYYY-MM-DD-<target>-ledger.md`. Include Output Contract,
|
|
91
|
-
Target Selection, Current Pipeline, Run History Location, Profile Spans,
|
|
92
|
-
Bottleneck Candidates, Measurements, Current-Pipeline Optimizations,
|
|
93
|
-
Alternative Designs, and Decisions.
|
|
98
|
+
Write `docs/benchmarks/YYYY-MM-DD-<target>-ledger.md` with Output Contract, Target Selection, Current Pipeline, Run History Location, Profile Spans, Bottleneck Candidates, Measurements, Current-Pipeline Optimizations, Alternative Designs, and Decisions.
|
|
94
99
|
|
|
95
|
-
|
|
100
|
+
This step is complete only when the ledger can explain what must not change.
|
|
96
101
|
|
|
97
|
-
|
|
102
|
+
### 3. Trace behavior
|
|
98
103
|
|
|
99
104
|
```bash
|
|
100
|
-
scip-query status --capabilities
|
|
101
|
-
# If stale, missing, or unknown: scip-query reindex
|
|
102
105
|
scip-query plan-context <entry-symbol-or-file>
|
|
103
106
|
scip-query trace <entry-symbol>
|
|
104
107
|
scip-query call-graph <entry-symbol>
|
|
@@ -108,119 +111,42 @@ scip-query complexity <hot-symbol>
|
|
|
108
111
|
scip-query change-surface <touched-file> --json --full
|
|
109
112
|
```
|
|
110
113
|
|
|
111
|
-
Record
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
the
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
7. Add cardinality metadata to every split: count of rows/files/symbols/nodes,
|
|
151
|
-
cache hits/misses, bytes, output rows, and skipped items.
|
|
152
|
-
8. Record the before profile in the ledger before touching code.
|
|
153
|
-
|
|
154
|
-
Write profile records to the run history with parent/child span names when
|
|
155
|
-
possible. Separate wall time from CPU time when the tools allow it. Mark cache
|
|
156
|
-
state explicitly: cold index, cold evidence/cache fill, warm cache hit, repeated
|
|
157
|
-
focused run, or production-like mixed state.
|
|
158
|
-
|
|
159
|
-
## Phase 4: Diagnose And Find Speedups
|
|
160
|
-
|
|
161
|
-
Classify the dominant span before choosing a fix:
|
|
162
|
-
|
|
163
|
-
| Profile shape | Likely cause | First fixes to test |
|
|
164
|
-
| ----------------------------------------------------- | ------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- |
|
|
165
|
-
| Cold path huge, warm path fast | Derived evidence/cache fill, expensive initialization, or cache invalidation | Persist the derived result, reuse compatible cache versions, batch cache fills, hoist initialization |
|
|
166
|
-
| Warm path still slow | Cache scan, query shape, deserialization, reshaping, rendering, or output size | Narrow query, add indexes, store compact payloads, stream or avoid repeated object shaping |
|
|
167
|
-
| Same expensive setup repeated across many files/items | Singleton/client/checker/session/project built inside a loop | Preload required inputs, create once after inputs are stable, cache per project/process |
|
|
168
|
-
| Many medium-cost per-item operations | N+1 lookups, scalar provider calls, repeated source reads | Batch by provider/file/key, load rows in bulk, group work by locality |
|
|
169
|
-
| Traversal span grows with AST/source nodes | Wrapper allocation or broad source scan | Use lower-level APIs, prefilter by exact names only when output identity proves equivalence, index reusable facts |
|
|
170
|
-
| Database time dominates | Broad scan, missing index, many statements, repeated prepares | Push filters into SQL, batch queries, cache prepared statements, add measured indexes |
|
|
171
|
-
| Child process or startup dominates | Too many subprocesses or cold tool startup | Reuse workers, batch commands, keep warm daemons, collapse process boundaries |
|
|
172
|
-
| Serialization/output dominates | Large JSON, repeated formatting, full materialization | Stream, summarize, avoid duplicate fields, or add an explicit compact mode |
|
|
173
|
-
|
|
174
|
-
For the current pipeline, look for repeated work, broad scans, N+1 lookups,
|
|
175
|
-
uncached pure work, avoidable source or semantic reads, large arrays, late
|
|
176
|
-
filters, batchable per-file work, excessive subprocess startup, serialization
|
|
177
|
-
cost, cache invalidation churn, and safe parallelism. Prioritize by measured
|
|
178
|
-
span cost multiplied by real workload frequency; do not chase a large cold-only
|
|
179
|
-
span if the stated purpose depends on warm interactive latency.
|
|
180
|
-
|
|
181
|
-
Favor fixes in this order when they preserve output:
|
|
182
|
-
|
|
183
|
-
1. Remove accidental repetition: hoist, memoize, reuse, or preload.
|
|
184
|
-
2. Batch scalar work by provider, file, database key, network endpoint, or
|
|
185
|
-
process.
|
|
186
|
-
3. Move stable derived work from the hot path into an index/cache with a clear
|
|
187
|
-
invalidation key.
|
|
188
|
-
4. Replace broad scans with indexed lookups or candidate-first retrieval.
|
|
189
|
-
5. Replace high-overhead wrapper APIs with lower-level APIs only after output
|
|
190
|
-
identity checks prove equivalence.
|
|
191
|
-
6. Add pruning only when it is mathematically equivalent or output-identity
|
|
192
|
-
checks across representative corpora prove no observable change.
|
|
193
|
-
|
|
194
|
-
For alternative designs, restate the output contract first. Ask whether SQLite
|
|
195
|
-
can answer directly, an index/cache/precomputed table can move work out of the
|
|
196
|
-
hot path, batch queries can replace loops, a cheap pruning stage can precede
|
|
197
|
-
exact work, or workers can run independent phases safely.
|
|
198
|
-
|
|
199
|
-
## Phase 5: Implement And Verify
|
|
200
|
-
|
|
201
|
-
Make the smallest reversible change that tests one performance hypothesis.
|
|
202
|
-
Update the ledger and run history with hypothesis, changed files/symbols,
|
|
203
|
-
before/after timings, profile-span deltas, output comparison, tests, and gates.
|
|
204
|
-
|
|
205
|
-
After each candidate fix, run the smallest valid before/after matrix for the
|
|
206
|
-
target scenario: unprofiled control, profiled profile, output hash or semantic
|
|
207
|
-
identity check, and representative correctness tests. If a faster change alters
|
|
208
|
-
the output contract, reject or revert it unless the user explicitly approved a
|
|
209
|
-
behavior change.
|
|
210
|
-
|
|
211
|
-
Run the narrow correctness check, benchmark cases, `scip-query diff-impact
|
|
212
|
-
--json`, and `scip-query diff-gate --json`; reindex first if freshness is not
|
|
213
|
-
proven. Also run postchecks matching the change type. End with starting time,
|
|
214
|
-
final time, percentage change, accepted changes, rejected ideas, remaining
|
|
215
|
-
bottlenecks, and the next target. If results conflict, keep the change only when
|
|
216
|
-
the target scenario and output contract justify it; otherwise revert and record
|
|
217
|
-
the rejected hypothesis.
|
|
218
|
-
|
|
219
|
-
## Phase 6: Report And Visualize
|
|
220
|
-
|
|
221
|
-
End every optimization round with a compact scoreboard generated from the run
|
|
222
|
-
history, not hand-copied memory. At minimum, show starting value, current value,
|
|
223
|
-
delta, scenario, corpus, commit/version, and output identity evidence. When the
|
|
224
|
-
history has enough rows, produce a trend table or chart for the target command
|
|
225
|
-
or workflow. Keep Markdown readable for humans, but treat the structured
|
|
226
|
-
history as the source of truth.
|
|
114
|
+
Record input parsing, option resolution, subprocesses, lookups, database queries, graph traversal, source scans, semantic calls, cache reads/writes, rendering, serialization, and verification.
|
|
115
|
+
|
|
116
|
+
This step is complete only when each major pipeline step can be timed as a profile span.
|
|
117
|
+
|
|
118
|
+
### 4. Profile the chain
|
|
119
|
+
|
|
120
|
+
0. Check whether the target app already has an instrumentation layer before adding spans — a bespoke profiling harness competes with the one the codebase already trusts. When the target is scip-query itself, its instrumentation is `src/instrumentation/profile.ts` (`profileSpan`, env-gated by `SCIP_QUERY_PROFILE`/`SCIP_QUERY_PROFILE_OUT`, with `SCIP_QUERY_PROFILE_CACHE_STATE` for cache-state labels) — use it, don't add a parallel one.
|
|
121
|
+
1. Measure the target unprofiled.
|
|
122
|
+
2. Measure profiled once and compare overhead.
|
|
123
|
+
3. Measure distinct states: cold index, cold evidence/cache fill, warm cache hit, repeated focused run, production-like mixed state.
|
|
124
|
+
4. Add coarse spans covering the whole chain.
|
|
125
|
+
5. Split the largest workload-weighted span.
|
|
126
|
+
6. Repeat until the slow operation is a repeated lookup, initialization, scan, traversal, subprocess, serialization step, or wait.
|
|
127
|
+
7. Write span records with cardinality to run history.
|
|
128
|
+
|
|
129
|
+
This step is complete only when the dominant cost is concrete enough to form a falsifiable hypothesis.
|
|
130
|
+
|
|
131
|
+
### 5. Diagnose and test one hypothesis
|
|
132
|
+
|
|
133
|
+
Classify the dominant shape: cold-only setup, warm slow path, repeated setup, N+1 work, broad scan, database time, subprocess startup, serialization, or cache invalidation. Prefer fixes in this order:
|
|
134
|
+
|
|
135
|
+
1. Remove accidental repetition.
|
|
136
|
+
2. Batch scalar work.
|
|
137
|
+
3. Move stable derived work to an index/cache with invalidation.
|
|
138
|
+
4. Replace broad scans with indexed lookups.
|
|
139
|
+
5. Replace wrapper APIs only after output identity proves equivalence.
|
|
140
|
+
6. Add pruning only when mathematically equivalent or corpus-proven.
|
|
141
|
+
|
|
142
|
+
Make the smallest reversible change that tests one hypothesis.
|
|
143
|
+
|
|
144
|
+
This step is complete only when before/after timings, profile deltas, and output identity are recorded.
|
|
145
|
+
|
|
146
|
+
### 6. Verify and report
|
|
147
|
+
|
|
148
|
+
Run the narrow correctness check, benchmark cases, routed postchecks, and invoke `scip-verify`.
|
|
149
|
+
|
|
150
|
+
Reject faster changes that alter the output contract unless the user approved a behavior change.
|
|
151
|
+
|
|
152
|
+
End with a scoreboard from run history: starting value, current value, delta, scenario, corpus, commit/version, output identity, accepted changes, rejected ideas, remaining bottlenecks, and next target.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scip-integrity-audit
|
|
3
|
+
description: Audit whether implementations are real with scip-query. Use for suspected faked or half-implemented features, decorative checkers or verifiers that never fail, dead code paths hidden behind graceful fallbacks, metrics that may be lying, or a "does any of this actually work" interrogation of a system.
|
|
4
|
+
commands:
|
|
5
|
+
- scip-query refs <symbol>
|
|
6
|
+
- scip-query code <symbol>
|
|
7
|
+
- scip-query trace <symbol>
|
|
8
|
+
- scip-query call-graph <symbol>
|
|
9
|
+
- scip-query twin-drift -s <scope> --json
|
|
10
|
+
- scip-query twin-ab <symbolA> <symbolB>
|
|
11
|
+
- scip-query outline <file> --signatures
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# scip-integrity-audit
|
|
15
|
+
|
|
16
|
+
Use this skill to interrogate whether a system's claims are backed by real
|
|
17
|
+
implementations. Structural review asks "is this well organized?"
|
|
18
|
+
(`scip-maintainability`); this skill asks **"is this real?"** — it hunts
|
|
19
|
+
decorative checkers, adapters written against imagined data, features that
|
|
20
|
+
have silently never run, and numbers nobody ever recomputed.
|
|
21
|
+
|
|
22
|
+
Load shared mechanics from [`../_shared/SKILL.md`](../_shared/SKILL.md).
|
|
23
|
+
|
|
24
|
+
## The Stance
|
|
25
|
+
|
|
26
|
+
A green result you have never seen fail is unverified. Every status word,
|
|
27
|
+
banner, and metric is testimony from the code, not evidence about the code —
|
|
28
|
+
cross-examine the producer before believing it. The most dangerous code is
|
|
29
|
+
not broken code; it is code that reports success without doing the work.
|
|
30
|
+
|
|
31
|
+
## Drills
|
|
32
|
+
|
|
33
|
+
Run all five over the chosen scope. Each has a checkable exit.
|
|
34
|
+
|
|
35
|
+
### 1. Falsify every checker
|
|
36
|
+
|
|
37
|
+
Inventory everything in scope that accepts/rejects, passes/fails, or
|
|
38
|
+
validates (checkers, gates, verifiers, validators — find producers with
|
|
39
|
+
`refs`/`call-graph` on the status words in output). For each one, construct
|
|
40
|
+
an input that MUST fail — a wrong binding, a corrupt file, an impossible
|
|
41
|
+
value — and run it. A checker that passes its should-fail input is
|
|
42
|
+
decorative: file it as a defect, not a note.
|
|
43
|
+
Complete only when every checker in scope has been witnessed rejecting a
|
|
44
|
+
constructed should-fail input, or is listed with a reason it cannot be.
|
|
45
|
+
|
|
46
|
+
### 2. Diff every adapter against captured reality
|
|
47
|
+
|
|
48
|
+
For each parser/adapter of an external format (tool output, XML/JSON
|
|
49
|
+
schemas, protocol messages): obtain ONE real sample from the actual source
|
|
50
|
+
and diff it against the code's assumptions and the tests' fixtures. Ask of
|
|
51
|
+
every fixture: was this generated from reality, or imagined? A parser and a
|
|
52
|
+
hand-written fixture can validate each other's shared hallucination
|
|
53
|
+
indefinitely.
|
|
54
|
+
Complete only when every adapter has been checked against at least one
|
|
55
|
+
captured-real sample.
|
|
56
|
+
|
|
57
|
+
### 3. Autopsy every fallback
|
|
58
|
+
|
|
59
|
+
Graceful degradation is where dead features hide: a primary path that has
|
|
60
|
+
never worked looks identical to a healthy fallback. For every catch block,
|
|
61
|
+
`?? fallback`, and degraded mode in scope: produce an execution witness that
|
|
62
|
+
the PRIMARY path runs (a test, a probe, a log). Use `scip-probe-reachability`
|
|
63
|
+
for parser/AST branch reachability. A fallback that always fires means the
|
|
64
|
+
feature above it is dead — date of death: birth.
|
|
65
|
+
Complete only when every fallback's primary path has a witness or a filed
|
|
66
|
+
defect.
|
|
67
|
+
|
|
68
|
+
### 4. Hand-compute every metric twice
|
|
69
|
+
|
|
70
|
+
For each number the system reports (scores, counts, estimates): pick two
|
|
71
|
+
concrete instances, compute the expected value by hand from first
|
|
72
|
+
principles, and compare. Off-by-a-factor errors (double counting, inflated
|
|
73
|
+
estimates) survive for years because nobody ever recomputes one sample.
|
|
74
|
+
Complete only when every reported metric has two hand-verified samples.
|
|
75
|
+
|
|
76
|
+
### 5. Cross-examine same-concept twins
|
|
77
|
+
|
|
78
|
+
Where one concept is computed in more than one place, feed both the same
|
|
79
|
+
input and require the same answer. `twin-drift` finds the same-name cases
|
|
80
|
+
mechanically; for same-concept-different-name pairs, trace the concept's
|
|
81
|
+
consumers with `refs` and compare implementations with `code`. Once a pair
|
|
82
|
+
is identified, `scip-query twin-ab <symbolA> <symbolB>` scaffolds a
|
|
83
|
+
table-driven vitest file that imports both and asserts equal output —
|
|
84
|
+
fill in the input table and run it. Disagreement between twins means at
|
|
85
|
+
least one is wrong — determine which before consolidating.
|
|
86
|
+
Complete only when every discovered twin pair has been compared on a shared
|
|
87
|
+
input.
|
|
88
|
+
|
|
89
|
+
## Severity
|
|
90
|
+
|
|
91
|
+
Rank findings by what the failure does to a user who trusted the output:
|
|
92
|
+
a decorative checker or false "verified" banner outranks everything; a
|
|
93
|
+
dead-but-fallbacked feature outranks a wrong metric; a wrong metric outranks
|
|
94
|
+
structural mess. Route structural findings to `scip-maintainability` —
|
|
95
|
+
they are real but they are not lies.
|
|
96
|
+
|
|
97
|
+
## Reporting
|
|
98
|
+
|
|
99
|
+
File each finding with: the claim as displayed, the producer (file:line),
|
|
100
|
+
the drill that exposed it, the should-fail input or real sample used, and
|
|
101
|
+
the fix. The audit is complete only when every drill's exit criterion is
|
|
102
|
+
met for the scope, and every defect found has a regression artifact — a
|
|
103
|
+
test, fixture, or model that fails on the pre-fix behavior.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "scip integrity audit"
|
|
3
|
+
short_description: "Interrogate whether implementations are real: falsify checkers, diff adapters against reality, autopsy fallbacks."
|
|
4
|
+
default_prompt: "Run the scip-integrity-audit drills over this codebase and report every decorative checker, dead-behind-fallback feature, and lying metric."
|