hex-audit 0.7.0 → 0.8.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/CLAUDE.md +137 -77
- package/DEMO.md +40 -117
- package/README.md +200 -402
- package/dashboard/.next/BUILD_ID +1 -1
- package/dashboard/.next/app-build-manifest.json +56 -101
- package/dashboard/.next/app-path-routes-manifest.json +1 -1
- package/dashboard/.next/build-manifest.json +9 -9
- package/dashboard/.next/next-server.js.nft.json +1 -1
- package/dashboard/.next/prerender-manifest.json +1 -1
- package/dashboard/.next/react-loadable-manifest.json +436 -15
- package/dashboard/.next/routes-manifest.json +1 -1
- package/dashboard/.next/server/app/_not-found/page.js +1 -1
- package/dashboard/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/api/code/route.js +1 -1
- package/dashboard/.next/server/app/api/code/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/comments/route.js +1 -0
- package/dashboard/.next/server/app/api/comments/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/diagrams/[name]/export/route.js +1 -0
- package/dashboard/.next/server/app/api/diagrams/[name]/export/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/diagrams/[name]/resolve/route.js +1 -0
- package/dashboard/.next/server/app/api/diagrams/[name]/resolve/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/diagrams/[name]/route.js +1 -0
- package/dashboard/.next/server/app/api/diagrams/[name]/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/figures/[name]/route.js +1 -0
- package/dashboard/.next/server/app/api/figures/[name]/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/focus/route.js +1 -0
- package/dashboard/.next/server/app/api/focus/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/github-status/route.js +1 -1
- package/dashboard/.next/server/app/api/invariants/[id]/route.js +1 -0
- package/dashboard/.next/server/app/api/invariants/[id]/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/issues/[id]/revert-auto/route.js +1 -0
- package/dashboard/.next/server/app/api/issues/[id]/revert-auto/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/nav/route.js +1 -0
- package/dashboard/.next/server/app/api/nav/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/notes/done/route.js +1 -1
- package/dashboard/.next/server/app/api/notes/done/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/notes/lead/route.js +1 -1
- package/dashboard/.next/server/app/api/notes/lead/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/notes/question/route.js +1 -1
- package/dashboard/.next/server/app/api/notes/question/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/notes/record/route.js +3 -3
- package/dashboard/.next/server/app/api/notes/route.js +2 -2
- package/dashboard/.next/server/app/api/palette/route.js +1 -0
- package/dashboard/.next/server/app/api/palette/route.js.nft.json +1 -0
- package/dashboard/.next/server/app/api/progress/route.js +1 -1
- package/dashboard/.next/server/app/api/progress/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/watch/route.js +2 -2
- package/dashboard/.next/server/app/api/watch/route.js.nft.json +1 -1
- package/dashboard/.next/server/app/api/xref/route.js +1 -0
- package/dashboard/.next/server/app/changes/page.js +1 -20
- package/dashboard/.next/server/app/changes/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/excalidraw-assets/[...path]/route.js +1 -0
- package/dashboard/.next/server/app/issues/page.js +5 -28
- package/dashboard/.next/server/app/issues/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/issues/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/model/page.js +1 -0
- package/dashboard/.next/server/app/{calls → model}/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/model/page_client-reference-manifest.js +1 -0
- package/dashboard/.next/server/app/page.js +1 -20
- package/dashboard/.next/server/app/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/report/page.js +1 -1
- package/dashboard/.next/server/app/report/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/report/page_client-reference-manifest.js +1 -1
- package/dashboard/.next/server/app/review/page.js +1 -0
- package/dashboard/.next/server/app/{access → review}/page.js.nft.json +1 -1
- package/dashboard/.next/server/app/review/page_client-reference-manifest.js +1 -0
- package/dashboard/.next/server/app-paths-manifest.json +19 -16
- package/dashboard/.next/server/chunks/310.js +4 -0
- package/dashboard/.next/server/chunks/370.js +1 -0
- package/dashboard/.next/server/chunks/42.js +1 -1
- package/dashboard/.next/server/chunks/624.js +14 -0
- package/dashboard/.next/server/chunks/645.js +1 -1
- package/dashboard/.next/server/chunks/649.js +1 -1
- package/dashboard/.next/server/chunks/653.js +1 -0
- package/dashboard/.next/server/functions-config-manifest.json +1 -1
- package/dashboard/.next/server/middleware-build-manifest.js +1 -1
- package/dashboard/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dashboard/.next/server/pages/500.html +1 -1
- package/dashboard/.next/server/pages/_error.js +1 -1
- package/dashboard/.next/server/server-reference-manifest.js +1 -1
- package/dashboard/.next/server/server-reference-manifest.json +1 -1
- package/dashboard/.next/static/chunks/0bbe10ee.8e7ffa06d2170dfe.js +84 -0
- package/dashboard/.next/static/chunks/1026.0ef689a305302427.js +1 -0
- package/dashboard/.next/static/chunks/1164.34eb76767ebea46f.js +8 -0
- package/dashboard/.next/static/chunks/119.a9a79633900a235f.js +5 -0
- package/dashboard/.next/static/chunks/1291.6c486c9b1d4b1b3a.js +1 -0
- package/dashboard/.next/static/chunks/139.4691848fc5a46253.js +10 -0
- package/dashboard/.next/static/chunks/145.1bf74fecdb4022e3.js +11 -0
- package/dashboard/.next/static/chunks/1517.8e7075f78e22b3a0.js +8 -0
- package/dashboard/.next/static/chunks/165.6f174060a0ce2db4.js +6 -0
- package/dashboard/.next/static/chunks/1741.5c370b7702d2eb40.js +8 -0
- package/dashboard/.next/static/chunks/1e36816c.5748c83adc8a6bd6.js +108 -0
- package/dashboard/.next/static/chunks/2061.eab75b3c1dfa068a.js +1 -0
- package/dashboard/.next/static/chunks/2148.3ce718f62d1b2f7c.js +10 -0
- package/dashboard/.next/static/chunks/217-1d5b680ffd10e3f9.js +1 -0
- package/dashboard/.next/static/chunks/2208.fb884379aa3ae968.js +1 -0
- package/dashboard/.next/static/chunks/2276.112c7855333fca5f.js +6 -0
- package/dashboard/.next/static/chunks/2374-8c6f137938f8518a.js +1 -0
- package/dashboard/.next/static/chunks/2445.18a86507d2996b95.js +1 -0
- package/dashboard/.next/static/chunks/2712.15dd8577973baf22.js +10 -0
- package/dashboard/.next/static/chunks/2759.533dec5317e0a1d1.js +1 -0
- package/dashboard/.next/static/chunks/2812.62b213bef580b69a.js +1 -0
- package/dashboard/.next/static/chunks/2895.bb57cacb7aaf42a1.js +9 -0
- package/dashboard/.next/static/chunks/2972.e5a9251b538dcf19.js +9 -0
- package/dashboard/.next/static/chunks/3206.8d9a10db2b04b93f.js +1 -0
- package/dashboard/.next/static/chunks/3485.36766504793b7237.js +9 -0
- package/dashboard/.next/static/chunks/3725.de9376dc994735d4.js +9 -0
- package/dashboard/.next/static/chunks/3774.1df377928e8387f7.js +9 -0
- package/dashboard/.next/static/chunks/3963.39d72b3875dfe2e9.js +13 -0
- package/dashboard/.next/static/chunks/4013.73884b23bfaebdde.js +11 -0
- package/dashboard/.next/static/chunks/4117.278aff1fa23fd36e.js +6 -0
- package/dashboard/.next/static/chunks/4210.cc8594110017c579.js +11 -0
- package/dashboard/.next/static/chunks/4282.28485875540886cc.js +7 -0
- package/dashboard/.next/static/chunks/4318.a2f469a88d88f6d0.js +8 -0
- package/dashboard/.next/static/chunks/4363.8999a6e727c48003.js +1 -0
- package/dashboard/.next/static/chunks/4641.e03d118fffebd580.js +5 -0
- package/dashboard/.next/static/chunks/483.a910dab7734a1074.js +8 -0
- package/dashboard/.next/static/chunks/4926.76693f542e9cc062.js +6 -0
- package/dashboard/.next/static/chunks/4938.03f6d04dabf38745.js +10 -0
- package/dashboard/.next/static/chunks/5112.0757c2b0c285e62e.js +1 -0
- package/dashboard/.next/static/chunks/5199.c83ea7efb0eec705.js +11 -0
- package/dashboard/.next/static/chunks/530.849957a8907eb288.js +1 -0
- package/dashboard/.next/static/chunks/5424.4e8ca0711a32bccf.js +7 -0
- package/dashboard/.next/static/chunks/55.a593a78be9714679.js +1 -0
- package/dashboard/.next/static/chunks/5535.6cd0bd8d368d8902.js +4 -0
- package/dashboard/.next/static/chunks/5626.7d4e93d7acbeffc9.js +10 -0
- package/dashboard/.next/static/chunks/5775.a0d7c1b1e89b9a93.js +9 -0
- package/dashboard/.next/static/chunks/6118.266956b3333b1d7a.js +9 -0
- package/dashboard/.next/static/chunks/6121.a2e6d93720b1205e.js +77 -0
- package/dashboard/.next/static/chunks/6853.d3ad43614e8ca0ab.js +1 -0
- package/dashboard/.next/static/chunks/6951.02a3a158d02158c9.js +5 -0
- package/dashboard/.next/static/chunks/6970.013f24568c87d918.js +11 -0
- package/dashboard/.next/static/chunks/7013.39d41e82b37be63b.js +9 -0
- package/dashboard/.next/static/chunks/7107.1c5412197912b8ed.js +8 -0
- package/dashboard/.next/static/chunks/7508.dd60e2d06d149f5f.js +9 -0
- package/dashboard/.next/static/chunks/7524.0fde4c61553d1491.js +3 -0
- package/dashboard/.next/static/chunks/7834-47f318a04a05688f.js +1 -0
- package/dashboard/.next/static/chunks/8317.d0b3eddef4cae0d5.js +1 -0
- package/dashboard/.next/static/chunks/838.2b2aa006519ba44c.js +10 -0
- package/dashboard/.next/static/chunks/8398.924fd8f4c83417c0.js +7 -0
- package/dashboard/.next/static/chunks/8428b36f.8ac4e67061c01307.js +34 -0
- package/dashboard/.next/static/chunks/8514.85ccbbea8ab21d04.js +5 -0
- package/dashboard/.next/static/chunks/8538.5f7ebe76c4b63162.js +1 -0
- package/dashboard/.next/static/chunks/8687.9406baa8b5601fd0.js +1 -0
- package/dashboard/.next/static/chunks/8721.47346e2cb6412376.js +10 -0
- package/dashboard/.next/static/chunks/8770.4f544bd1a6f03a62.js +8 -0
- package/dashboard/.next/static/chunks/8812.3d96fd54dba566f8.js +9 -0
- package/dashboard/.next/static/chunks/8962.d22aa67a97970dd8.js +1 -0
- package/dashboard/.next/static/chunks/8986.b327224b83f4399a.js +5 -0
- package/dashboard/.next/static/chunks/9271.5f66c19a8ee1ff36.js +10 -0
- package/dashboard/.next/static/chunks/9282.f8d01442bab4c0da.js +2 -0
- package/dashboard/.next/static/chunks/9366.0ec24a0791b9b00f.js +1 -0
- package/dashboard/.next/static/chunks/9707.5cd7d2ee933a4af5.js +6 -0
- package/dashboard/.next/static/chunks/9716.15fffc0b0038601d.js +4 -0
- package/dashboard/.next/static/chunks/9791.e3b3f5a367f63c8a.js +1 -0
- package/dashboard/.next/static/chunks/9820.8c1efad5260e8137.js +1 -0
- package/dashboard/.next/static/chunks/985.50150e9eaa4bde33.js +39 -0
- package/dashboard/.next/static/chunks/997.56901b86e1b8a87b.js +8 -0
- package/dashboard/.next/static/chunks/app/changes/page-f8a860034221cad4.js +1 -0
- package/dashboard/.next/static/chunks/app/issues/page-da4da93188c414a6.js +1 -0
- package/dashboard/.next/static/chunks/app/layout-27a9da4610423c1e.js +1 -0
- package/dashboard/.next/static/chunks/app/model/page-9680e22fdd6ddb81.js +1 -0
- package/dashboard/.next/static/chunks/app/page-0e67750d99fb2836.js +1 -0
- package/dashboard/.next/static/chunks/app/report/page-b56b1db9b9dcf2b6.js +1 -0
- package/dashboard/.next/static/chunks/app/review/page-3ef69f0e0badd333.js +1 -0
- package/dashboard/.next/static/chunks/c75e29e3.d91220f782934d80.js +1 -0
- package/dashboard/.next/static/chunks/{main-cc3a889b25e9aa68.js → main-9c95a7ffedc7afb4.js} +1 -1
- package/dashboard/.next/static/chunks/webpack-6da70e4f9fcf1799.js +1 -0
- package/dashboard/.next/static/css/ceafd91ca8dd753d.css +3 -0
- package/dashboard/.next/static/css/e4aad1f9c715b79a.css +1 -0
- package/dashboard/.next/static/media/Assistant-Bold.c8f39f24.woff2 +0 -0
- package/dashboard/.next/static/media/Assistant-Medium.1e75d8e6.woff2 +0 -0
- package/dashboard/.next/static/media/Assistant-Regular.7acbabb8.woff2 +0 -0
- package/dashboard/.next/static/media/Assistant-SemiBold.167acbf8.woff2 +0 -0
- package/dashboard/app/api/code/route.ts +26 -20
- package/dashboard/app/api/comments/route.ts +158 -0
- package/dashboard/app/api/diagrams/[name]/export/route.ts +26 -0
- package/dashboard/app/api/diagrams/[name]/resolve/route.ts +25 -0
- package/dashboard/app/api/diagrams/[name]/route.ts +37 -0
- package/dashboard/app/api/figures/[name]/route.ts +15 -0
- package/dashboard/app/api/focus/route.ts +35 -0
- package/dashboard/app/api/invariants/[id]/route.ts +35 -0
- package/dashboard/app/api/issues/[id]/revert-auto/route.ts +18 -0
- package/dashboard/app/api/nav/route.ts +120 -0
- package/dashboard/app/api/palette/route.ts +68 -0
- package/dashboard/app/api/progress/route.ts +54 -23
- package/dashboard/app/api/xref/route.ts +30 -0
- package/dashboard/app/changes/ChangesClient.tsx +730 -356
- package/dashboard/app/changes/page.tsx +27 -19
- package/dashboard/app/excalidraw-assets/[...path]/route.ts +56 -0
- package/dashboard/app/globals.css +231 -77
- package/dashboard/app/issues/BoardClient.tsx +817 -0
- package/dashboard/app/issues/page.tsx +27 -272
- package/dashboard/app/layout.tsx +32 -17
- package/dashboard/app/model/ModelClient.tsx +1303 -0
- package/dashboard/app/model/page.tsx +98 -0
- package/dashboard/app/page.tsx +191 -277
- package/dashboard/app/report/ReportClient.tsx +147 -74
- package/dashboard/app/report/page.tsx +25 -14
- package/dashboard/app/review/ReviewClient.tsx +1180 -0
- package/dashboard/app/review/page.tsx +93 -0
- package/dashboard/components/AutoRefresh.tsx +22 -19
- package/dashboard/components/CodeComments.tsx +303 -0
- package/dashboard/components/CodeNav.tsx +523 -0
- package/dashboard/components/CodeReference.tsx +92 -99
- package/dashboard/components/CodeViewer.tsx +526 -0
- package/dashboard/components/CommandPalette.tsx +141 -66
- package/dashboard/components/DiagramCanvas.tsx +275 -0
- package/dashboard/components/DianeNote.tsx +244 -0
- package/dashboard/components/LiveStatus.tsx +30 -68
- package/dashboard/components/MarkdownRenderer.tsx +34 -32
- package/dashboard/components/RecordButton.tsx +132 -0
- package/dashboard/components/ui/Button.tsx +39 -0
- package/dashboard/components/ui/Chip.tsx +37 -0
- package/dashboard/components/ui/EmptyState.tsx +31 -0
- package/dashboard/components/ui/Icons.tsx +126 -0
- package/dashboard/components/ui/Inspector.tsx +122 -0
- package/dashboard/components/ui/Kbd.tsx +15 -0
- package/dashboard/components/ui/ListRow.tsx +92 -0
- package/dashboard/components/ui/LocalTime.tsx +14 -0
- package/dashboard/components/ui/ProgressRing.tsx +54 -0
- package/dashboard/components/ui/ResizeHandle.tsx +93 -0
- package/dashboard/components/ui/RiskMeter.tsx +27 -0
- package/dashboard/components/ui/SearchField.tsx +55 -0
- package/dashboard/components/ui/SegmentedControl.tsx +71 -0
- package/dashboard/components/ui/SeverityDot.tsx +57 -0
- package/dashboard/components/ui/Sidebar.tsx +236 -0
- package/dashboard/components/ui/SplitView.tsx +122 -0
- package/dashboard/components/ui/StateGlyph.tsx +66 -0
- package/dashboard/components/ui/Toast.tsx +91 -0
- package/dashboard/lib/api.ts +17 -0
- package/dashboard/lib/cn.ts +4 -0
- package/dashboard/lib/data.ts +2 -21
- package/dashboard/lib/finding-markdown.ts +1 -1
- package/dashboard/lib/focus.ts +42 -0
- package/dashboard/lib/hotkeys.ts +41 -0
- package/dashboard/lib/inline-markdown.test.ts +11 -0
- package/dashboard/lib/live.ts +32 -0
- package/dashboard/lib/pane-width.ts +36 -0
- package/dashboard/lib/server/board.ts +229 -0
- package/dashboard/lib/server/diagrams.ts +191 -0
- package/dashboard/lib/server/safe-path.ts +28 -0
- package/dashboard/lib/server/workspace.ts +113 -0
- package/dashboard/lib/server/xref.ts +42 -0
- package/dashboard/lib/solidity.test.ts +37 -0
- package/dashboard/lib/solidity.ts +191 -0
- package/dashboard/lib/source.ts +28 -0
- package/dashboard/lib/types.ts +164 -0
- package/dashboard/lib/url.ts +18 -0
- package/dashboard/lib/watcher.ts +31 -22
- package/dashboard/tailwind.config.ts +6 -3
- package/dist/analysis/code-model.d.ts.map +1 -1
- package/dist/analysis/code-model.js +4 -1
- package/dist/analysis/code-model.js.map +1 -1
- package/dist/analysis/diff.d.ts +12 -1
- package/dist/analysis/diff.d.ts.map +1 -1
- package/dist/analysis/diff.js +143 -0
- package/dist/analysis/diff.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +17 -48
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/claude.d.ts.map +1 -1
- package/dist/commands/claude.js +5 -0
- package/dist/commands/claude.js.map +1 -1
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +10 -2
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/diagram.d.ts +3 -0
- package/dist/commands/diagram.d.ts.map +1 -0
- package/dist/commands/diagram.js +71 -0
- package/dist/commands/diagram.js.map +1 -0
- package/dist/commands/diff.d.ts +4 -5
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +56 -17
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +5 -18
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/facts.d.ts +23 -0
- package/dist/commands/facts.d.ts.map +1 -0
- package/dist/commands/facts.js +121 -0
- package/dist/commands/facts.js.map +1 -0
- package/dist/commands/fix-review.d.ts +9 -0
- package/dist/commands/fix-review.d.ts.map +1 -0
- package/dist/commands/fix-review.js +367 -0
- package/dist/commands/fix-review.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +51 -47
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/issue.d.ts.map +1 -1
- package/dist/commands/issue.js +151 -2
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +11 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/model.d.ts +4 -0
- package/dist/commands/model.d.ts.map +1 -0
- package/dist/commands/model.js +275 -0
- package/dist/commands/model.js.map +1 -0
- package/dist/commands/note.d.ts.map +1 -1
- package/dist/commands/note.js +31 -1
- package/dist/commands/note.js.map +1 -1
- package/dist/commands/review.d.ts +4 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +164 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/core/comments.d.ts +59 -0
- package/dist/core/comments.d.ts.map +1 -0
- package/dist/core/comments.js +263 -0
- package/dist/core/comments.js.map +1 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +0 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/dedup.d.ts +56 -0
- package/dist/core/dedup.d.ts.map +1 -0
- package/dist/core/dedup.js +208 -0
- package/dist/core/dedup.js.map +1 -0
- package/dist/core/errors.d.ts +1 -1
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +0 -15
- package/dist/core/errors.js.map +1 -1
- package/dist/core/external-tools.d.ts +0 -14
- package/dist/core/external-tools.d.ts.map +1 -1
- package/dist/core/external-tools.js +2 -52
- package/dist/core/external-tools.js.map +1 -1
- package/dist/core/fix-review.d.ts +54 -0
- package/dist/core/fix-review.d.ts.map +1 -0
- package/dist/core/fix-review.js +98 -0
- package/dist/core/fix-review.js.map +1 -0
- package/dist/core/fuzz-sync.d.ts +93 -0
- package/dist/core/fuzz-sync.d.ts.map +1 -0
- package/dist/core/fuzz-sync.js +516 -0
- package/dist/core/fuzz-sync.js.map +1 -0
- package/dist/core/git.d.ts +7 -0
- package/dist/core/git.d.ts.map +1 -1
- package/dist/core/git.js +42 -0
- package/dist/core/git.js.map +1 -1
- package/dist/core/issues.d.ts +32 -1
- package/dist/core/issues.d.ts.map +1 -1
- package/dist/core/issues.js +135 -3
- package/dist/core/issues.js.map +1 -1
- package/dist/core/mcp-config.d.ts +12 -0
- package/dist/core/mcp-config.d.ts.map +1 -0
- package/dist/core/mcp-config.js +29 -0
- package/dist/core/mcp-config.js.map +1 -0
- package/dist/core/model.d.ts +38 -0
- package/dist/core/model.d.ts.map +1 -0
- package/dist/core/model.js +160 -0
- package/dist/core/model.js.map +1 -0
- package/dist/core/notes.d.ts +2 -0
- package/dist/core/notes.d.ts.map +1 -1
- package/dist/core/notes.js +13 -3
- package/dist/core/notes.js.map +1 -1
- package/dist/core/review.d.ts +47 -0
- package/dist/core/review.d.ts.map +1 -1
- package/dist/core/review.js +177 -1
- package/dist/core/review.js.map +1 -1
- package/dist/core/rules.d.ts +12 -0
- package/dist/core/rules.d.ts.map +1 -0
- package/dist/core/rules.js +66 -0
- package/dist/core/rules.js.map +1 -0
- package/dist/core/schema.d.ts +4817 -2245
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +452 -113
- package/dist/core/schema.js.map +1 -1
- package/dist/core/scope.d.ts +8 -0
- package/dist/core/scope.d.ts.map +1 -0
- package/dist/core/scope.js +18 -0
- package/dist/core/scope.js.map +1 -0
- package/dist/diagrams/build.d.ts +18 -0
- package/dist/diagrams/build.d.ts.map +1 -0
- package/dist/diagrams/build.js +135 -0
- package/dist/diagrams/build.js.map +1 -0
- package/dist/diagrams/excalidraw.d.ts +27 -0
- package/dist/diagrams/excalidraw.d.ts.map +1 -0
- package/dist/diagrams/excalidraw.js +219 -0
- package/dist/diagrams/excalidraw.js.map +1 -0
- package/dist/diagrams/layout.d.ts +48 -0
- package/dist/diagrams/layout.d.ts.map +1 -0
- package/dist/diagrams/layout.js +686 -0
- package/dist/diagrams/layout.js.map +1 -0
- package/dist/facts/build.d.ts +23 -0
- package/dist/facts/build.d.ts.map +1 -0
- package/dist/facts/build.js +112 -0
- package/dist/facts/build.js.map +1 -0
- package/dist/facts/extract.d.ts +53 -0
- package/dist/facts/extract.d.ts.map +1 -0
- package/dist/facts/extract.js +635 -0
- package/dist/facts/extract.js.map +1 -0
- package/dist/facts/fallback.d.ts +7 -0
- package/dist/facts/fallback.d.ts.map +1 -0
- package/dist/facts/fallback.js +156 -0
- package/dist/facts/fallback.js.map +1 -0
- package/dist/facts/implementations.d.ts +29 -0
- package/dist/facts/implementations.d.ts.map +1 -0
- package/dist/facts/implementations.js +43 -0
- package/dist/facts/implementations.js.map +1 -0
- package/dist/facts/query.d.ts +35 -0
- package/dist/facts/query.d.ts.map +1 -0
- package/dist/facts/query.js +157 -0
- package/dist/facts/query.js.map +1 -0
- package/dist/facts/xref.d.ts +53 -0
- package/dist/facts/xref.d.ts.map +1 -0
- package/dist/facts/xref.js +282 -0
- package/dist/facts/xref.js.map +1 -0
- package/dist/index.js +14 -16
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +3 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +400 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/skills/ai-audit/SKILL.md +16 -6
- package/dist/skills/ai-audit/UPSTREAM.md +9 -4
- package/dist/skills/ai-audit/references/hex-board.md +34 -46
- package/dist/skills/diane.md +26 -12
- package/dist/skills/fix-review.md +58 -0
- package/dist/skills/fuzz/LICENSE +21 -0
- package/dist/skills/fuzz/SKILL.md +655 -0
- package/dist/skills/fuzz/UPSTREAM.md +119 -0
- package/dist/skills/fuzz/agents/implementers/global-property-implementer.md +81 -0
- package/dist/skills/fuzz/agents/implementers/specific-property-implementer.md +121 -0
- package/dist/skills/fuzz/agents/invariant-discovery/adversarial-profit-maximizer.md +123 -0
- package/dist/skills/fuzz/agents/invariant-discovery/conservation-auditor.md +92 -0
- package/dist/skills/fuzz/agents/invariant-discovery/protocol-type-specialist.md +173 -0
- package/dist/skills/fuzz/agents/invariant-discovery/roundtrip-rounding-analyst.md +164 -0
- package/dist/skills/fuzz/agents/invariant-discovery/state-transition-mapper.md +92 -0
- package/dist/skills/fuzz/agents/invariant-discovery/synthesizer.md +261 -0
- package/dist/skills/fuzz/agents/protocol-analyzer.md +80 -0
- package/dist/skills/fuzz/agents/report-writer.md +135 -0
- package/dist/skills/fuzz/references/handler-patterns.md +222 -0
- package/dist/skills/fuzz/references/hex-invariants.md +102 -0
- package/dist/skills/fuzz/references/property-generation.md +149 -0
- package/dist/skills/fuzz/references/selection-policy.md +49 -0
- package/dist/skills/fuzz/references/setup-playbook.md +92 -0
- package/dist/skills/fuzz/references/template-map.md +121 -0
- package/dist/skills/fuzz/scripts/ensure_foundry.sh +125 -0
- package/dist/skills/fuzz/scripts/estimate_cost.js +157 -0
- package/dist/skills/fuzz/scripts/extract_abis.js +303 -0
- package/dist/skills/fuzz/scripts/fizz_sync.js +692 -0
- package/dist/skills/fuzz/scripts/generate_handlers.js +370 -0
- package/dist/skills/fuzz/scripts/generate_suite.js +254 -0
- package/dist/skills/fuzz/scripts/lib/log-viewer.js +332 -0
- package/dist/skills/fuzz/scripts/run_echidna.js +192 -0
- package/dist/skills/fuzz/scripts/run_medusa.js +329 -0
- package/dist/skills/fuzz/scripts/select_functions.js +637 -0
- package/dist/skills/fuzz/scripts/setup_fuzz_profile.sh +142 -0
- package/dist/skills/fuzz/templates/Actor.sol +63 -0
- package/dist/skills/fuzz/templates/Base.sol +121 -0
- package/dist/skills/fuzz/templates/FoundryTester.sol +29 -0
- package/dist/skills/fuzz/templates/FuzzTester.sol +11 -0
- package/dist/skills/fuzz/templates/Properties.sol +17 -0
- package/dist/skills/fuzz/templates/README.md +56 -0
- package/dist/skills/fuzz/templates/Snapshots.sol +26 -0
- package/dist/skills/fuzz/templates/echidna.yaml +18 -0
- package/dist/skills/fuzz/templates/handlers/Handlers.sol +13 -0
- package/dist/skills/fuzz/templates/medusa.json +93 -0
- package/dist/skills/fuzz/templates/utils/Clamp.sol +223 -0
- package/dist/skills/fuzz/templates/utils/DecimalPrinter.sol +63 -0
- package/dist/skills/fuzz/templates/utils/Deployer.sol +17 -0
- package/dist/skills/fuzz/templates/utils/EnumerableSet.sol +206 -0
- package/dist/skills/fuzz/templates/utils/Hevm.sol +62 -0
- package/dist/skills/fuzz/templates/utils/Logger.sol +619 -0
- package/dist/skills/fuzz/templates/utils/Math.sol +52 -0
- package/dist/skills/fuzz/templates/utils/MockERC20.sol +279 -0
- package/dist/skills/fuzz/templates/utils/PropertiesAsserts.sol +238 -0
- package/dist/skills/fuzz/templates/utils/StringUtils.sol +85 -0
- package/dist/skills/fuzz-convert/SKILL.md +249 -0
- package/dist/skills/fuzz-sync/SKILL.md +342 -0
- package/dist/skills/generate-poc.md +8 -26
- package/dist/skills/generate-report.md +17 -5
- package/dist/skills/ingest-aa-report.md +11 -30
- package/dist/skills/init-audit/SKILL.md +155 -0
- package/dist/skills/init-audit/references/agents/conformance-checker.md +36 -0
- package/dist/skills/init-audit/references/agents/contract-reader.md +59 -0
- package/dist/skills/init-audit/references/agents/diagram-composer.md +48 -0
- package/dist/skills/init-audit/references/agents/docs-extractor.md +26 -0
- package/dist/skills/init-audit/references/agents/prior-audit.md +32 -0
- package/dist/skills/init-audit/references/agents/regression-checker.md +28 -0
- package/dist/skills/init-audit/references/agents/skeptic.md +31 -0
- package/dist/skills/init-audit/references/agents/standards-checker.md +39 -0
- package/dist/skills/init-audit/references/agents/synthesizer.md +50 -0
- package/dist/skills/prevalidate.md +62 -0
- package/dist/skills/sync-issues.md +11 -25
- package/dist/skills/validate-all-findings.md +2 -2
- package/dist/skills/validate-finding.md +25 -24
- package/dist/skills/write-finding.md +6 -5
- package/dist/types/index.d.ts +16 -12
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +5 -4
- package/dashboard/.next/server/app/access/page.js +0 -1
- package/dashboard/.next/server/app/access/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/api/flows/route.js +0 -1
- package/dashboard/.next/server/app/api/mermaid/route.js +0 -1
- package/dashboard/.next/server/app/calls/page.js +0 -1
- package/dashboard/.next/server/app/calls/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/conformance/page.js +0 -1
- package/dashboard/.next/server/app/conformance/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/conformance/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/diagram/page.js +0 -1
- package/dashboard/.next/server/app/diagram/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/diagram/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/flows/page.js +0 -1
- package/dashboard/.next/server/app/flows/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/flows/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/functions/page.js +0 -1
- package/dashboard/.next/server/app/functions/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/functions/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/notes/page.js +0 -22
- package/dashboard/.next/server/app/notes/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/notes/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/progress/page.js +0 -1
- package/dashboard/.next/server/app/progress/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/progress/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/app/stats/page.js +0 -1
- package/dashboard/.next/server/app/stats/page.js.nft.json +0 -1
- package/dashboard/.next/server/app/stats/page_client-reference-manifest.js +0 -1
- package/dashboard/.next/server/chunks/530.js +0 -1
- package/dashboard/.next/server/chunks/622.js +0 -3
- package/dashboard/.next/server/chunks/665.js +0 -13
- package/dashboard/.next/server/chunks/939.js +0 -1
- package/dashboard/.next/static/chunks/3017.4a5312e3c20a173f.js +0 -1
- package/dashboard/.next/static/chunks/7397-37adf76cad543297.js +0 -1
- package/dashboard/.next/static/chunks/7973.e34032723285a616.js +0 -79
- package/dashboard/.next/static/chunks/8452-6d77fa353402422c.js +0 -13
- package/dashboard/.next/static/chunks/8928-fc049decdfbdaa6d.js +0 -1
- package/dashboard/.next/static/chunks/app/access/page-f8403cbdfc1c176b.js +0 -1
- package/dashboard/.next/static/chunks/app/calls/page-41f20d01e12382ef.js +0 -1
- package/dashboard/.next/static/chunks/app/changes/page-82bf8b6f48cdc506.js +0 -1
- package/dashboard/.next/static/chunks/app/conformance/page-6bb8e3b372e38098.js +0 -1
- package/dashboard/.next/static/chunks/app/diagram/page-469cd7a6f183efba.js +0 -1
- package/dashboard/.next/static/chunks/app/flows/page-7872dd9141ba0b07.js +0 -1
- package/dashboard/.next/static/chunks/app/functions/page-5847bcb77a8e7edf.js +0 -1
- package/dashboard/.next/static/chunks/app/issues/page-1ffc64fe40439002.js +0 -1
- package/dashboard/.next/static/chunks/app/layout-6c6d2a0fd7c989d3.js +0 -1
- package/dashboard/.next/static/chunks/app/notes/page-8bcaa52304500098.js +0 -1
- package/dashboard/.next/static/chunks/app/page-d63800ddb072b77b.js +0 -1
- package/dashboard/.next/static/chunks/app/progress/page-e26554f655a62eef.js +0 -1
- package/dashboard/.next/static/chunks/app/report/page-18c04fb2f193b020.js +0 -1
- package/dashboard/.next/static/chunks/app/stats/page-67ff59fd69bed651.js +0 -1
- package/dashboard/.next/static/chunks/webpack-4de0e79bdd6a0418.js +0 -1
- package/dashboard/.next/static/css/1112cea2260b3926.css +0 -3
- package/dashboard/app/access/AccessClient.tsx +0 -402
- package/dashboard/app/access/ReadOnlyFunctions.tsx +0 -114
- package/dashboard/app/access/page.tsx +0 -125
- package/dashboard/app/api/flows/route.ts +0 -32
- package/dashboard/app/api/mermaid/route.ts +0 -25
- package/dashboard/app/calls/CallsClient.tsx +0 -170
- package/dashboard/app/calls/page.tsx +0 -57
- package/dashboard/app/conformance/ConformanceTable.tsx +0 -214
- package/dashboard/app/conformance/page.tsx +0 -186
- package/dashboard/app/diagram/page.tsx +0 -65
- package/dashboard/app/flows/page.tsx +0 -102
- package/dashboard/app/functions/FunctionsClient.tsx +0 -167
- package/dashboard/app/functions/page.tsx +0 -178
- package/dashboard/app/issues/IssuesBoardClient.tsx +0 -813
- package/dashboard/app/notes/NotesClient.tsx +0 -706
- package/dashboard/app/notes/page.tsx +0 -47
- package/dashboard/app/progress/ProgressClient.tsx +0 -354
- package/dashboard/app/progress/page.tsx +0 -127
- package/dashboard/app/stats/StatsClient.tsx +0 -452
- package/dashboard/app/stats/page.tsx +0 -50
- package/dashboard/components/ConfidenceBadge.tsx +0 -53
- package/dashboard/components/DashboardLayout.tsx +0 -510
- package/dashboard/components/FilterableTable.tsx +0 -293
- package/dashboard/components/MermaidViewer.tsx +0 -267
- package/dashboard/components/NotYetGenerated.tsx +0 -32
- package/dashboard/components/SeverityBadge.tsx +0 -28
- package/dashboard/components/SignalBars.tsx +0 -27
- package/dashboard/components/SortableTable.tsx +0 -122
- package/dashboard/lib/conformance-tokens.ts +0 -49
- package/dist/skills/init-audit.md +0 -386
- /package/dashboard/.next/server/app/api/{flows → xref}/route.js.nft.json +0 -0
- /package/dashboard/.next/server/app/{api/mermaid → excalidraw-assets/[...path]}/route.js.nft.json +0 -0
- /package/dashboard/.next/static/{z5XBev05xDAkDrxWxAjNu → bGV1ry1vvIbM5b506eVBR}/_buildManifest.js +0 -0
- /package/dashboard/.next/static/{z5XBev05xDAkDrxWxAjNu → bGV1ry1vvIbM5b506eVBR}/_ssgManifest.js +0 -0
- /package/dashboard/.next/static/chunks/{3205-47d09be47325709f.js → 3205-fd963acf2fdfd080.js} +0 -0
- /package/dashboard/.next/static/chunks/{3924-88d849290406ee6f.js → 3924-f1f85ccc7d59d7ab.js} +0 -0
- /package/dashboard/.next/static/chunks/{618f8807-69fc7bb97c2b87c1.js → 618f8807-fbb1466bc29c17c6.js} +0 -0
- /package/dashboard/.next/static/chunks/{7498-d1814d68ba346d13.js → 7498-7cf464d8af69cd0a.js} +0 -0
- /package/dashboard/.next/static/chunks/app/_not-found/{page-c299b935209993df.js → page-5ff5d54b6fd6f17e.js} +0 -0
package/CLAUDE.md
CHANGED
|
@@ -6,100 +6,160 @@
|
|
|
6
6
|
- Output directory: `.hex/`
|
|
7
7
|
- Dashboard package: `hex-dashboard`
|
|
8
8
|
|
|
9
|
+
## Principles: elegance through simplicity
|
|
10
|
+
The dashboard is a calm review workspace that sits next to the auditor's Claude Code session. Every
|
|
11
|
+
design decision follows from these:
|
|
12
|
+
- **One question, one action.** Every screen answers one question and has one obvious next action
|
|
13
|
+
(Today: "what next?" → Continue; Review: "is this function safe?" → Clear; Model: "how does it
|
|
14
|
+
hold value and power?" → Use in report). Only that action uses the accent fill.
|
|
15
|
+
- **Content first, chrome last.** No decoration, no nested cards, no badge clutter, no wide
|
|
16
|
+
multi-column tables by default.
|
|
17
|
+
- **Progressive disclosure.** Lists show only what's needed to choose; everything else lives in the
|
|
18
|
+
right-hand inspector (Mail/Xcode three-pane: source list | content | inspector). Rarely needed
|
|
19
|
+
controls hide behind a toggle (e.g. the canvas Style panel).
|
|
20
|
+
- **One accent.** Indigo marks selection and the primary action, nothing else. No accent text for
|
|
21
|
+
code, no accent chips, no accent banners.
|
|
22
|
+
- **Quiet severity and status.** A small colored dot plus a word, never a filled badge.
|
|
23
|
+
- **Typography and whitespace carry hierarchy** on an 8pt grid; hairline dividers instead of boxes.
|
|
24
|
+
- **Motion** is 200ms ease-out fades and short slides only.
|
|
25
|
+
- **Light and dark are equally polished** (dark is the default).
|
|
26
|
+
- **Keyboard-first.** `j`/`k` move, `r`/`q`/`c` mark read/questioned/cleared (Review), F12 / ⌥F12 /
|
|
27
|
+
⇧F12 go to definition / peek / callers, Alt+←/→ back and forward along the walked flow, `e` edit,
|
|
28
|
+
`/` search, `⌘K` go to anything, `⌘\` toggle the sidebar, `Esc` close; every mutation toasts with
|
|
29
|
+
Undo.
|
|
30
|
+
- **Empty states** are one sentence plus the single command that fills them (`hex facts`,
|
|
31
|
+
`/init-audit`, `/generate-report`).
|
|
32
|
+
|
|
9
33
|
## Typography
|
|
10
34
|
- **Display/body**: Manrope (Google Fonts), variable weight 200-800
|
|
11
|
-
- **Code only**: JetBrains Mono (file paths, code snippets, code blocks)
|
|
35
|
+
- **Code only**: JetBrains Mono (file paths, signatures, code snippets, code blocks)
|
|
12
36
|
- **Fallback (sans)**: `system-ui, -apple-system, sans-serif`
|
|
13
37
|
- **Fallback (mono)**: `ui-monospace, 'SF Mono', monospace`
|
|
14
38
|
- **Scale**: display (28px/600), title (20px/600), heading (15px/500), body (14px/400), caption (12px/400)
|
|
15
|
-
- **Section headers**: sentence case, medium weight
|
|
39
|
+
- **Section headers**: sentence case, medium weight, caption size and `text-tertiary` inside the
|
|
40
|
+
inspector (not uppercase)
|
|
16
41
|
|
|
17
42
|
## Color Palette
|
|
43
|
+
OKLCH throughout for perceptual uniformity; surfaces are blue-tinted (hue 265), never pure black.
|
|
44
|
+
Tokens live in `dashboard/app/globals.css` and are exposed as Tailwind colors (`bg-surface-1`,
|
|
45
|
+
`text-text-secondary`, `border-border-subtle`, `bg-accent-subtle`, ...).
|
|
18
46
|
|
|
19
|
-
### Dark
|
|
20
|
-
Surfaces are blue-tinted (hue 265), not pure black. Built with OKLCH for perceptual uniformity.
|
|
21
|
-
|
|
47
|
+
### Dark mode (default)
|
|
22
48
|
| Token | Value | Usage |
|
|
23
49
|
|-------|-------|-------|
|
|
24
|
-
| `--surface-0` | `oklch(0.13 0.005 265)` | Page
|
|
25
|
-
| `--surface-1` | `oklch(0.17 0.006 265)` |
|
|
26
|
-
| `--surface-2` | `oklch(0.21 0.006 265)` |
|
|
27
|
-
| `--surface-3` | `oklch(0.26 0.006 265)` |
|
|
50
|
+
| `--surface-0` | `oklch(0.13 0.005 265)` | Page, lists, content panes |
|
|
51
|
+
| `--surface-1` | `oklch(0.17 0.006 265)` | App sidebar, inspector, kanban cards |
|
|
52
|
+
| `--surface-2` | `oklch(0.21 0.006 265)` | Hover, inputs, segmented track |
|
|
53
|
+
| `--surface-3` | `oklch(0.26 0.006 265)` | Pressed / active toggle |
|
|
28
54
|
| `--text-primary` | `oklch(0.93 0.005 265)` | Body text |
|
|
29
|
-
| `--text-secondary` | `oklch(0.
|
|
30
|
-
| `--text-tertiary` | `oklch(0.
|
|
31
|
-
| `--accent` | `oklch(0.
|
|
32
|
-
| `--accent-subtle` | `oklch(0.
|
|
33
|
-
| `--accent-secondary` | `oklch(0.
|
|
34
|
-
| `--border-subtle` | `oklch(0.
|
|
35
|
-
| `--border-default` | `oklch(0.
|
|
36
|
-
| `--border-emphasis` | `oklch(0.
|
|
37
|
-
|
|
38
|
-
###
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
55
|
+
| `--text-secondary` | `oklch(0.68 0.01 265)` | Secondary text |
|
|
56
|
+
| `--text-tertiary` | `oklch(0.52 0.008 265)` | Captions, hints, counts |
|
|
57
|
+
| `--accent` | `oklch(0.62 0.18 265)` | Selection, primary action |
|
|
58
|
+
| `--accent-subtle` | `oklch(0.62 0.18 265 / 0.14)` | Selected row / nav item |
|
|
59
|
+
| `--accent-secondary` | `oklch(0.72 0.13 265)` | Primary button hover |
|
|
60
|
+
| `--border-subtle` | `oklch(0.30 0.006 265 / 0.45)` | Hairlines between panes and rows |
|
|
61
|
+
| `--border-default` | `oklch(0.34 0.006 265 / 0.6)` | Inputs, secondary buttons |
|
|
62
|
+
| `--border-emphasis` | `oklch(0.44 0.01 265 / 0.7)` | Focused inputs, pressed toggles |
|
|
63
|
+
|
|
64
|
+
### Light mode
|
|
65
|
+
Page and content are near-white (`--surface-0: oklch(0.995 0.001 265)`); the sidebar and inspector
|
|
66
|
+
are a faint tint (`--surface-1: oklch(0.972 0.003 265)`), like a macOS source list. Accent shifts
|
|
67
|
+
to a deeper indigo (`oklch(0.50 0.21 265)`) for contrast. Check every screen in both modes.
|
|
68
|
+
|
|
69
|
+
### Severity and status colors (both modes)
|
|
70
|
+
| Meaning | Color | Value |
|
|
71
|
+
|---------|-------|-------|
|
|
72
|
+
| Critical / regressed / failing | Red | `oklch(0.58 0.22 25)` |
|
|
73
|
+
| High / modified / contested | Amber | `oklch(0.68 0.16 55)` |
|
|
74
|
+
| Medium / questioned / stale | Yellow | `oklch(0.72 0.14 85)` |
|
|
44
75
|
| Low | Blue | `oklch(0.58 0.14 250)` |
|
|
45
|
-
| Info | Gray | `oklch(0.55 0.01 265)` |
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
## Layout
|
|
51
|
-
|
|
52
|
-
###
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
76
|
+
| Info / unverified / neutral | Gray | `oklch(0.55 0.01 265)` |
|
|
77
|
+
| Cleared / verified / passing / fixed | Green | `oklch(0.62 0.13 160)` |
|
|
78
|
+
|
|
79
|
+
Always rendered as an 8px dot plus a word (`SeverityDot`, `Dot`), never as a filled badge.
|
|
80
|
+
|
|
81
|
+
## Layout
|
|
82
|
+
|
|
83
|
+
### App shell
|
|
84
|
+
- Sidebar: 220px by default, drag its edge to resize (180-360px); collapses to a 60px icon rail
|
|
85
|
+
with `⌘\`. `bg-surface-1`, hairline right border.
|
|
86
|
+
Exactly six destinations: Today `/`, Model `/model`, Review `/review`, Changes `/changes` (diff
|
|
87
|
+
mode, or once a fix review exists), Board `/issues`, Report `/report`. Active (including nested routes):
|
|
88
|
+
`bg-accent-subtle text-accent`, no stripe. Footer: live status, `⌘K` hint, appearance toggle.
|
|
89
|
+
- Main area is exactly the viewport height; each pane scrolls on its own.
|
|
90
|
+
|
|
91
|
+
### Workspace pages (Model, Review, Changes, Board, Report)
|
|
92
|
+
`SplitView`: a slim `Toolbar` (title + one line of meta on the left, at most two actions on the
|
|
93
|
+
right), then source list | content | inspector. Panes are separated by hairlines. The inspector
|
|
94
|
+
appears only when something is selected; over a canvas it floats (`inspectorFloating`) so the
|
|
95
|
+
canvas keeps its size. Every pane edge (sidebar, list, inspector) is a `ResizeHandle`: drag to
|
|
96
|
+
resize, double-click to reset, arrow keys nudge; the hairline shows `border-emphasis` on hover.
|
|
97
|
+
Widths are CSS variables (`--w-<page>-list`, `--w-<page>-inspector`, `--w-sidebar`) remembered
|
|
98
|
+
per viewer and restored before first paint (`lib/pane-width.ts`).
|
|
99
|
+
|
|
100
|
+
### Document pages (Today, Changes overview)
|
|
101
|
+
One centered column, max 720-780px, generous top padding (56px), sections separated by whitespace
|
|
102
|
+
and hairline-bordered lists.
|
|
103
|
+
|
|
104
|
+
### Inspector
|
|
105
|
+
Eyebrow (caption: kind · context) → title (heading, semibold) → subtitle (signature in mono) →
|
|
106
|
+
actions (primary first) → sections, each a caption label over plain content, separated by a
|
|
107
|
+
hairline. Footer: the one-time "Claude can see your selection" hint.
|
|
108
|
+
|
|
109
|
+
## Components (`dashboard/components/ui/`)
|
|
110
|
+
- **Sidebar**, **SplitView** / **Toolbar** / **ScrollArea**, **Inspector** / **InspectorSection** /
|
|
111
|
+
**InspectorField**
|
|
112
|
+
- **ListRow** / **ListGroupLabel**: 30-36px rows, leading glyph, title, optional caption line,
|
|
113
|
+
trailing detail; selected = `bg-accent-subtle` + accent title; hover = `bg-surface-2`
|
|
114
|
+
- **SegmentedControl**: recessed `bg-surface-2` track, raised `bg-surface-0` segment with
|
|
115
|
+
`shadow-sm` for the active one (not accent). At most one per view; filters are a search field plus
|
|
116
|
+
one segmented control.
|
|
117
|
+
- **SearchField** (`/` focuses), **Button** (`primary` = accent fill, once per screen; `secondary`;
|
|
118
|
+
`ghost`), **Kbd**, **Chip** (quiet; at most one per row), **SeverityDot** / **Dot**,
|
|
119
|
+
**StateGlyph** (unread ○, read ◐, questioned ?, cleared ●), **RiskMeter**, **ProgressRing**,
|
|
120
|
+
**EmptyState**, **Toast** (`useToast`, with Undo)
|
|
121
|
+
- **CodeViewer**: whole file, Solidity highlighting (`lib/solidity.ts`), selected range tinted
|
|
122
|
+
with `--code-highlight`, line selection reported to the focus bridge. With `comments`
|
|
123
|
+
(`useCodeComments`), a gutter `+` on hover and a "Comment on lines a-b" pill after a selection
|
|
124
|
+
open an inline composer; comments render as hairline-bordered `bg-surface-1` bands under their
|
|
125
|
+
code (sans text, one caption meta line, ghost actions: Edit, Write to source, Delete). **CodeReference**: clickable
|
|
126
|
+
mono `file:line` that opens a code peek.
|
|
127
|
+
- **Code navigation** (Review code pane, backed by `.hex/xref.json` from `hex facts`): references
|
|
128
|
+
are segments (`applyRefs`); holding Ctrl/⌘ underlines them. Ctrl/⌘-click or F12 goes to the
|
|
129
|
+
definition (interface or virtual calls go where they run; several implementations open a small
|
|
130
|
+
menu captioned override / same signature); Alt-click or ⌥F12 opens an inline **peek band**
|
|
131
|
+
(`bg-surface-1`, `border-border-default`, header: name · file:line · via, then Open ↵ and Esc
|
|
132
|
+
next to it, never right-aligned, since bands are as wide as the longest code line); on a
|
|
133
|
+
declaration's own name, or ⇧F12, the **usages band** lists call sites or reads/writes, one row
|
|
134
|
+
per line. A quiet **hover card** (450ms, no chips) shows signature, where it runs and NatSpec.
|
|
135
|
+
Every jump is a browser history entry (`history.pushState` with our own state object, so Next
|
|
136
|
+
syncs `useSearchParams`); the code header shows ← → and the walked **trail** (mono caption,
|
|
137
|
+
chevrons, current step in `text-primary`). The landed line is tinted `--code-focus`.
|
|
138
|
+
- Kanban cards are the only bordered boxes: `bg-surface-1`, `border-border-subtle`,
|
|
139
|
+
`rounded-lg`, title + one meta line (severity dot, id · source, at most one chip).
|
|
140
|
+
- Lists of prose items (Diane's open leads and questions) are rows split by hairlines
|
|
141
|
+
(`divide-y`), each with a quiet dot, text clamped to three lines with Show more, and a caption
|
|
142
|
+
line (source, actions on hover). Never a run-on block of paragraphs.
|
|
143
|
+
- Retired: FilterableTable, SortableTable, filled severity badges, KPI walls, Mermaid.
|
|
144
|
+
|
|
145
|
+
## Focus bridge
|
|
146
|
+
Selecting a function, card, diagram node, code range or invariant writes `.hex/focus.json`
|
|
147
|
+
(`POST /api/focus`, debounced via `lib/focus.ts`); the Claude Code session reads it with the Hex
|
|
148
|
+
MCP tool `hex_focus`. The watcher ignores `focus.json` so selection never triggers a refresh.
|
|
69
149
|
|
|
70
150
|
## Animations & Motion
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
-
|
|
74
|
-
- All transitions: 200ms ease on interactive elements only (not universal)
|
|
75
|
-
- No persistent background effects
|
|
76
|
-
|
|
77
|
-
### Utilities
|
|
78
|
-
- `.stagger`: children fade-in with 30ms staggered delay
|
|
79
|
-
- `.scale-in`: KPI number scale animation (0.92 to 1, 350ms)
|
|
80
|
-
|
|
81
|
-
## Component Conventions
|
|
82
|
-
|
|
83
|
-
### Tables
|
|
84
|
-
- Header row: caption size, text-tertiary
|
|
85
|
-
- Row hover: `bg-surface-3`
|
|
86
|
-
- Row dividers: `border-border-subtle`
|
|
87
|
-
- Filter pills: rounded-md, `bg-accent text-surface-0` when active
|
|
88
|
-
|
|
89
|
-
### Badges
|
|
90
|
-
- Severity badges use the severity color palette
|
|
91
|
-
- All badges: `rounded-md`, `px-2.5 py-1 text-caption`
|
|
92
|
-
|
|
93
|
-
### Code References
|
|
94
|
-
- Clickable `file:line` format in monospace
|
|
95
|
-
- Modal with clean surface, subtle shadow
|
|
96
|
-
- Highlighted lines: `bg-accent/10`
|
|
151
|
+
- 200ms `--ease-out` fades/slides on interactive elements only (not universal)
|
|
152
|
+
- `.fade-in`, `.rise-in` (4px), `.slide-in` (8px, inspectors), `.stagger` (30ms steps)
|
|
153
|
+
- No persistent or looping animation, no background effects; respect `prefers-reduced-motion`
|
|
97
154
|
|
|
98
155
|
## Do NOT
|
|
99
|
-
- Use monospace fonts outside of code
|
|
100
|
-
- Use colored border-left/right stripes on cards (>1px)
|
|
156
|
+
- Use monospace fonts outside of code, file paths and signatures
|
|
157
|
+
- Use colored border-left/right stripes on cards or rows (>1px)
|
|
101
158
|
- Add gradient text
|
|
102
|
-
- Use bounce/elastic easing
|
|
159
|
+
- Use bounce/elastic easing, pulsing or looping animation
|
|
103
160
|
- Use green (#00cc33) or neon accent colors
|
|
104
161
|
- Use glassmorphism/backdrop-blur decoratively
|
|
105
162
|
- Default to all-uppercase labels
|
|
163
|
+
- Nest cards, fill badges, or put more than one status chip on a row
|
|
164
|
+
- Use the accent for anything but selection and the primary action
|
|
165
|
+
- Add a second segmented control or a multi-column table to a primary view
|
package/DEMO.md
CHANGED
|
@@ -1,159 +1,82 @@
|
|
|
1
1
|
# Hex Demo Guide
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A walk through one engagement, start to finish, inside Claude Code with the dashboard open beside it.
|
|
4
4
|
|
|
5
5
|
## Setup
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
2. Install skills (works before init — no config required):
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
hex claude
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
3. Open Claude Code:
|
|
21
|
-
```bash
|
|
22
|
-
claude
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Demo flow (all inside Claude Code)
|
|
26
|
-
|
|
27
|
-
### Phase 1 — One-shot pre-review (`/init-audit`)
|
|
7
|
+
```bash
|
|
8
|
+
git clone https://github.com/transmissions11/solmate.git && cd solmate # or any Foundry project
|
|
9
|
+
npm install -g hex-audit
|
|
10
|
+
hex claude # skills + the Hex MCP server in .mcp.json
|
|
11
|
+
claude # approve the "hex" MCP server when asked
|
|
12
|
+
```
|
|
28
13
|
|
|
29
|
-
|
|
14
|
+
## 1. Pre-review: `/init-audit`
|
|
30
15
|
|
|
31
16
|
```
|
|
32
17
|
/init-audit
|
|
33
18
|
```
|
|
34
19
|
|
|
35
|
-
It asks for scope
|
|
36
|
-
|
|
37
|
-
1. **Dependency safety audit** — checks `package.json` install hooks, Foundry `lib/` submodules, `foundry.toml` (FFI, fs_permissions, remappings), plaintext secrets in `.env*`, suspicious VS Code extensions. Stops before compilation if anything looks risky.
|
|
38
|
-
2. **`hex init` + `hex analyze`** — runs the seven deterministic analyses (stats, deps, access, state, calls, patterns, constraints) in parallel, plus surface last. Slither and forge flatten results are cached across commands.
|
|
39
|
-
3. **Protocol overview** — writes a 2-3 paragraph `overview.md` (key contracts table, external deps, architecture notes).
|
|
40
|
-
4. **System diagram** — `.hex/diagrams/diagram.mmd` Mermaid architecture with trust zones and semantic symbols. Split into multiple files if >15 nodes.
|
|
41
|
-
5. **Flow charts** — `.hex/diagrams/flow-*.mmd` per archetype (deposit/withdraw, governance, liquidation, etc.) with distinct shapes per node role and explicit success+revert branches on every decision.
|
|
42
|
-
6. **Spec conformance** — cross-references docs, NatSpec, interfaces, and ERC/EIPs (fetches canonical specs from `eips.ethereum.org`). Writes `spec-conformance.json`.
|
|
43
|
-
7. **Materialize conformance items to the board** — every DEVIATES/PARTIAL spec item becomes a Potential card in `tracking.json` (source `conformance`).
|
|
44
|
-
|
|
45
|
-
**Differential variant.** Answer *Differential* when asked for the audit type, and give a base commit (plus, optionally, the previous audit's `.hex/` folder or report). `hex analyze` then also runs `hex diff`, which writes `diff.json` with the changed entities, storage-layout changes and impacted flows. The overview, flows and conformance phases focus on the change, prior findings get a regression check, and the dashboard shows a **Changes** page. To demo it on a single repo, audit `HEAD~5` → `HEAD`: `hex init --mode diff --base HEAD~5 --scope "src/**/*.sol"`.
|
|
46
|
-
|
|
47
|
-
If anything fails, `hex doctor` prints a labelled preflight table (node, forge, slither, solc, Claude Code, output dir, `.hex/config.json`) with one-line install hints.
|
|
48
|
-
|
|
49
|
-
### Dashboard opens automatically
|
|
50
|
-
|
|
51
|
-
The last step of `/init-audit` launches `hex dashboard` in the background, so `http://localhost:3000` opens in your browser when the pipeline finishes. Live-refreshes on every `.hex/` change. If you ever need to start it manually, run `hex dashboard` in a second terminal.
|
|
52
|
-
|
|
53
|
-
Key pages:
|
|
54
|
-
|
|
55
|
-
- `/progress` — Weighted progress bar (70% nSLOC reviewed, 20% audit steps, 10% findings triage), contract review checklist.
|
|
56
|
-
- `/stats` — KPI cards, ERC badges, per-contract metrics, coverage, dependencies.
|
|
57
|
-
- `/access` — Role → function matrix with "Show unprotected only" and "Show inferred / unknown modifiers" toggles.
|
|
58
|
-
- `/state` — State variable inventory with reader/writer tracking and storage-collision warnings.
|
|
59
|
-
- `/calls` — External call surface with filterable Trust column.
|
|
60
|
-
- `/functions` — Aggregated function view.
|
|
61
|
-
- `/diagram` and `/flows` — Full-bleed Mermaid canvas with auto-fit zoom and legend overlay.
|
|
62
|
-
- `/conformance` — Conformance check results, deviations first, clickable spec links.
|
|
63
|
-
- `/changes` — Differential audits only: base → head, changed entities, storage layout, impacted flows with reasons, prior-findings regression check.
|
|
64
|
-
- `/issues` — **The board.** Five columns: Potential / Verified / Synced / Invalid / Duplicate. Uniform `H-NNN` ids with a source badge. Drag cards between the editable columns; click to edit, or copy as HackMD. The **Synced** column is reached only via `/sync-issues` and is read-only (edit on GitHub).
|
|
65
|
-
- `/report` — The seven LaTeX report sections from `/generate-report`, each with a copy button. Only populated after you run the skill.
|
|
20
|
+
It asks for the scope (`src/**/*.sol` works for solmate), the commit, the chain and the docs. Then:
|
|
66
21
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
22
|
+
1. **Safety gate.** Install hooks, `ffi`, remappings and secrets are checked before anything compiles.
|
|
23
|
+
2. **Exact facts.** `hex analyze` compiles into `.hex/.cache` and writes `facts.json` from the compiler AST. Try it yourself:
|
|
24
|
+
```bash
|
|
25
|
+
npx --no-install hex facts query callers ERC20.transferFrom
|
|
26
|
+
npx --no-install hex facts query layout ERC4626
|
|
27
|
+
```
|
|
28
|
+
3. **Agents in waves.** Readers model each cluster in parallel without seeing each other, and a docs reader extracts the promises without seeing the code. A synthesizer writes the protocol model and proposed invariants, then skeptics verify every claim against the code. Watch the claims turn **verified** or **contested** on the Model page.
|
|
29
|
+
4. **Diagrams.** Custody, privilege, accounting, state-machine and sequence views, each with a takeaway, rendered in Excalidraw.
|
|
30
|
+
5. **Conformance.** Documentation, NatSpec and ERC deviations become Potential cards.
|
|
70
31
|
|
|
71
|
-
|
|
32
|
+
The dashboard opens at `http://localhost:3000` on **Today**: progress, the riskiest unread functions, and cards to triage.
|
|
72
33
|
|
|
73
|
-
|
|
74
|
-
/write-finding for the rounding error in src/Vault.sol
|
|
75
|
-
```
|
|
34
|
+
**Differential variant.** Answer *Differential* and give a base commit (and optionally the previous audit's `.hex/` folder or report). To demo it on any repo: `hex init --mode diff --base HEAD~5 --scope "src/**/*.sol"`. The Changes page shows the compiler storage-layout diff slot by slot and every impacted flow.
|
|
76
35
|
|
|
77
|
-
|
|
36
|
+
## 2. Model: accept invariants
|
|
78
37
|
|
|
79
|
-
|
|
38
|
+
On **Model**, read the diagrams (edit them if you like; edits are kept across rebuilds) and accept the invariants that really hold. You can also do it from the CLI with `npx --no-install hex invariant accept INV-001 INV-003`. Click "Use in report" on the diagrams worth showing the client.
|
|
80
39
|
|
|
81
|
-
|
|
40
|
+
## 3. Review
|
|
82
41
|
|
|
83
|
-
|
|
42
|
+
Open **Review**. Pick a function from *Blind spots*: the code sits in the middle, with facts, notes and cards in the inspector. Mark it with `r` / `q` / `c`. Back in the terminal, ask:
|
|
84
43
|
|
|
85
44
|
```
|
|
86
|
-
|
|
87
|
-
/validate-finding for the rounding issue
|
|
45
|
+
why is this safe?
|
|
88
46
|
```
|
|
89
47
|
|
|
90
|
-
|
|
48
|
+
Claude calls `hex_focus` and knows which function you have selected.
|
|
91
49
|
|
|
92
|
-
|
|
50
|
+
**Diane.** Hit Record on the Review page, narrate a function ("deposit looks fine, done with it; not sure about the rounding in previewWithdraw"), stop, then run `/diane`. Diane checks your claims against the code, notes corrections, ticks `deposit` cleared and `previewWithdraw` questioned, and tells you exactly what she ticked.
|
|
93
51
|
|
|
94
|
-
|
|
52
|
+
## 4. Find
|
|
95
53
|
|
|
96
54
|
```
|
|
55
|
+
/write-finding for the rounding issue in previewWithdraw
|
|
97
56
|
/ai-audit
|
|
57
|
+
/fuzz
|
|
98
58
|
```
|
|
99
59
|
|
|
100
|
-
|
|
60
|
+
- `/ai-audit` asks for the model and the number of passes, then 12 agents hunt with your accepted invariants and triage rules in their brief. Findings land on the **Board**, deduped; leads land in the notes. `/prevalidate` then runs automatically: watch cards move to Verified (PoC passed) or Rejected (two refuters agreed) with an *auto* chip you can revert.
|
|
61
|
+
- `/fuzz` turns accepted invariants into an Echidna/Medusa/Foundry suite; a broken invariant becomes a card with its repro test.
|
|
101
62
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
Hex only integrates with **AuditAgent** (Nethermind's cloud scanner). You start a scan separately (Nethermind portal or `aa scan ...`) and paste the scan ID into Hex:
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
/ingest-aa-report <scan-id>
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
The skill checks status via `aa scan --status`. If the scan is still running it prints a status line and exits — you come back later. Run `hex ai-status --watch` in another terminal to be notified when the scan finishes.
|
|
111
|
-
|
|
112
|
-
When complete, the skill fetches findings, materializes them as Potential cards (`source: "auditagent"`), and runs **inline dedup** against existing entries. Auditagent findings that match a manual or conformance issue are flipped to `duplicate` and surface in the Duplicate column with `match_signals` (contract / function / root_cause / attack_vector).
|
|
113
|
-
|
|
114
|
-
#### `/sync-issues` — team mode via GitHub Issues
|
|
115
|
-
|
|
116
|
-
If a repo is configured (`hex init --github-repo <owner/repo>`, or `settings.github.repo`) and `gh auth login` has been run:
|
|
63
|
+
## 5. Validate and sync
|
|
117
64
|
|
|
118
65
|
```
|
|
66
|
+
/validate-finding H-004
|
|
67
|
+
/validate-all-findings
|
|
119
68
|
/sync-issues
|
|
120
69
|
```
|
|
121
70
|
|
|
122
|
-
|
|
71
|
+
Validation writes a PoC by default and records it on the card. Rejecting something as by design offers to add a triage rule, so the next AI run stops raising it. `/sync-issues` pushes verified cards to GitHub; from then on GitHub is the source of truth.
|
|
123
72
|
|
|
124
|
-
|
|
125
|
-
- **Pushes** verified findings not yet on GitHub. Body is exactly the five fields (no labels, no footer). The returned `#N` is stored, locking the card into Synced.
|
|
73
|
+
## 6. Fix review and report
|
|
126
74
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
### Phase 4 — Final deliverable (`/generate-report`)
|
|
75
|
+
When the client sends fixes:
|
|
130
76
|
|
|
131
77
|
```
|
|
78
|
+
/fix-review
|
|
132
79
|
/generate-report
|
|
133
80
|
```
|
|
134
81
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
1. `executive_summary.txt` / `01-executive-summary.tex` — `\section{Executive Summary}` with project synopsis, severity histogram, status histogram, summary table.
|
|
138
|
-
2. `audited_files.txt` / `02-audited-files.tex` — `\section{Audited Files}` table of in-scope files (LoC, comments, ratio, blank, total).
|
|
139
|
-
3. `summary_of_findings.txt` / `03-summary-of-findings.tex` — `\section{Summary of Issues}` table linking to per-finding subsections.
|
|
140
|
-
4. `system_overview.txt` / `04-system-overview.tex` — `\section{System Overview}` protocol architecture (components, actors & roles, per-module/flow subsections) from `overview.md`.
|
|
141
|
-
5. `findings.txt` / `06-issues.tex` — `\section{Issues}` with one `\subsection{[Sev] title}\label{issue:N}` per synced finding (description, code blocks via minted, recommendation, status, client update).
|
|
142
|
-
6. `documentation_eval.txt` / `07-documentation-eval.tex` — `\section{Documentation Evaluation}` `tcolorbox` remarks paragraph.
|
|
143
|
-
7. `test_suite.txt` / `08-test-suite.tex` — `\section{Test Suite Evaluation}` coverage summary from `stats.json.test_coverage`, plus automated-tooling note.
|
|
144
|
-
|
|
145
|
-
The skill prompts once for any missing report metadata (initial/final commit, dates, doc/test assessment, kick-off/availability notes) and persists them under `settings.report.*` so reruns don't re-prompt. Read the sections on the dashboard's `/report` page and copy each into your Nethermind Overleaf template's matching slot (or grab the files directly from `.hex/report/`). Sections 5 (risk methodology) and 9 (conclusion) are template-static.
|
|
146
|
-
|
|
147
|
-
Only `synced` findings make the cut. Duplicates, rejected, and pending entries are skipped.
|
|
148
|
-
|
|
149
|
-
## Key points
|
|
150
|
-
|
|
151
|
-
- `/init-audit` is now a single skill that runs everything pre-manual-review.
|
|
152
|
-
- The board (`/issues`) is the only findings page. Cards are interactive: drag to change column, click to edit.
|
|
153
|
-
- `/write-finding` records Potential issues (uniform `H-NNN` ids, no in-code comments) — promote via `/validate-finding`, `/validate-all-findings`, or by dragging on the board.
|
|
154
|
-
- `/init-audit` runs full or differential audits; a differential audit focuses every phase on the change and the flows it reaches.
|
|
155
|
-
- `/ai-audit` puts AI findings on the board and leads in Notes, idempotently across re-scans.
|
|
156
|
-
- `/ingest-aa-report` takes a scan ID, never starts a scan.
|
|
157
|
-
- `/sync-issues` treats GitHub as the source of truth — synced issues are read-only in Hex and identified by issue number; `/generate-report` reports only from synced issues.
|
|
158
|
-
- `/generate-report` is the final handoff to the LaTeX report.
|
|
159
|
-
- `hex update` upgrades the package and prompts to re-sync skills in one shot; `hex update-skills` re-syncs skills only.
|
|
82
|
+
`/fix-review` re-runs every PoC at the fix commit. A PoC that used to pass and now fails proves the fix. Agents judge the rest, and fix-commit code that no finding explains gets flagged for review. After one confirmation it updates the Status and Update-from-the-client fields on GitHub. `/generate-report` writes the LaTeX sections, with the chosen diagrams as figures in the System Overview.
|