hypergrok-trading-desk 1.7.0 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/.agents/plugins/marketplace.json +1 -1
  2. package/.claude-plugin/marketplace.json +2 -2
  3. package/.claude-plugin/plugin.json +1 -1
  4. package/.cursor-plugin/plugin.json +1 -1
  5. package/.grok-plugin/marketplace.json +2 -2
  6. package/.grok-plugin/plugin.json +1 -1
  7. package/AGENTS.md +1 -1
  8. package/CHANGELOG.md +19 -0
  9. package/CONTRIBUTING.md +16 -2
  10. package/README.md +33 -17
  11. package/SETUP.md +4 -4
  12. package/assets/desk-flow-mobile.svg +1 -0
  13. package/assets/desk-flow.svg +1 -0
  14. package/assets/hero-mobile.svg +1 -0
  15. package/assets/hero.svg +1 -0
  16. package/docs/ACCOUNT_READ.md +84 -0
  17. package/docs/ARCHITECTURE.md +5 -2
  18. package/docs/FAQ.md +2 -2
  19. package/docs/FORK_REVIEW.md +10 -0
  20. package/docs/GROK_BOT_TEMPLATE.md +11 -1
  21. package/docs/PROVENANCE.md +22 -0
  22. package/docs/RESEARCH_DATASETS.md +1 -1
  23. package/docs/STOP_COST.md +1 -1
  24. package/docs/hyperliquid-claude-code.md +2 -2
  25. package/docs/hyperliquid-codex.md +2 -2
  26. package/docs/hyperliquid-cursor.md +2 -2
  27. package/docs/hyperliquid-gemini-cli.md +2 -2
  28. package/docs/hyperliquid-grok-build.md +4 -4
  29. package/gemini-extension.json +1 -1
  30. package/hooks/exchange_write_gate.py +112 -23
  31. package/package.json +9 -1
  32. package/plugin.json +1 -1
  33. package/scripts/account_read.py +352 -0
  34. package/scripts/check.sh +4 -3
  35. package/scripts/check_grok_template.py +15 -2
  36. package/scripts/check_npm_package.py +5 -4
  37. package/scripts/cli_journeys.py +180 -0
  38. package/scripts/desk_doctor.py +7 -1
  39. package/scripts/stop_cost.py +2 -1
  40. package/scripts/test_account_read.py +205 -0
  41. package/scripts/test_check_grok_template.py +80 -12
  42. package/scripts/test_desk_doctor.py +30 -1
  43. package/scripts/test_exchange_write_gate.py +64 -0
  44. package/scripts/test_order_rounding.py +16 -0
  45. package/scripts/test_stop_cost.py +11 -0
  46. package/skills/hypergrok-bootstrap/SKILL.md +5 -5
  47. package/skills/hyperliquid-api-reference/SKILL.md +6 -6
  48. package/skills/hyperliquid-market-data/SKILL.md +11 -3
  49. package/template/grok-bot.json +8 -8
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 440" width="800" height="440" role="img" aria-labelledby="t d"><title id="t">HyperGrok: a Hyperliquid trading desk for Grok Bot</title><desc id="d">Your trading desk, fully staffed. An isometric trading floor: a ticket moves from the Desk Lead through the analysts and the Risk Manager, waits for your approval, then the Execution Trader sends it once to Hyperliquid and the Trade Reviewer records it.</desc><style>@font-face{font-family:'HG Inter';font-weight:500;src:url(data:font/woff2;base64,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) format('woff2')}@font-face{font-family:'HG Inter';font-weight:600;src:url(data:font/woff2;base64,d09GMgABAAAAAAWAABAAAAAACYQAAAUkAAQAQgAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbgzgcKgZgP1NUQVRaAGQRCAqHKIYzATYCJAMwCxoABCAFgToHIAwHG9sHUZRQzsoUPxIyt2s0U6FSdtvDhFOhEAT/x8N/+9Humz8rJkklieNJ1CJnQyVEUuJ0iBCaSWk7PvSe/Z/JTtZEsTDTazJtr/8APDTA/zrs+b+ctgfI3OQnFNj9LzdmY1I8xgRLKJKsDRLgFOmlkQSkDbobEeTj6kcKNAOSEBqEQKNNt9Fjien5MH0w0NkMxyedNU1wfFnR3QpHGcr/iNCjpBc1na3QtLRh33bIsF5WrXJjg3oQi044g1FfaTQsxjCG5l1NRYbRLWPQaCtYpxAac0CKjNIdH0HxBa+golFAjqI1HWDM3ZRHEJdnLs/lXV+oYq58hHIe1JZHbPNgL4h2smwpt9vf47TlQTPasQpTaXXLVrm9DrWySo36cixzlIsaYClZi4UME6bg6ZGaJyY3nl/PzppYRgSWmlV6E/A+5ZU+Yyez+k01FUgyAnyh8xcy8nAG1g7rzvynS/1XZgEgIN9m7wHGNQuhXoVuFeakN+1dgyQY3j6p7yYE8T/pZiQajFqdRgVShKAVIYg1RgSoJCliAARI9E8Gui47C9q1qzBuwT21mvUYKOULq0Vdn+s9aU2rWtr85iACFNqj/E9L1LxLP1qJcYhPgJoMnAYZMcghP9FUp5G2M9Wh7lTbyEy94kTTZDIikQeYEHO3SbpfJlOdxt8xF8iRQW269CRQVaK6g+cF0+VyQhZc4Xn7C4gDV461tBc8Ih9X3vRQYzUGOOxsBeqWAtpEJ78OoLhao6xXAR+0DkGTDKhIBi865G+6VK8PykMD6kMt03BcIKwPek8KBLMGneYL8vcZDlwaK3BJcF1ZijSUubuWy04FB/i4jPRSIqwG5UZE0ycoqxaq8bxY6HBRLrcTDmqUSBGmqpuEZRr9PN8wXjFtIJT89cDxZw0bt6ZXLGwtSxzqT1nskKNUrjqgNd6RDXJLFzhHx5Q6neY/eVtXTuVORbVnrbGfKMyZ3/729zLVWYJszlv/TE53VHR95ISrZ1M1klXGLS6x84/29/aOzreBg96EO5P6yJFjg7gznqsejU0tclLzoGDv/b9XOyi9aCTaRFrQUxixvqUlfE2vuEDUUxy2rr4+bENvKfoMt36ZOY7s3skpvJu3pvZIzKyp2fz83Hl7dQb8SkNmdWYJBH3ZkZPyBhuT5kpSBCHF1nHRmh+8TcWSSedS4VFdeuPcDXW+9Gp78fxVqWUJDQZT/K9SVZuUyKTYgzB+fg/sPQr2HrwNJRdTRmfqVn/xMMztzi4rb08P8U6JTNc+5bzSZvnyofqOxdfyJo0dSmrnDAQvPVyrsovyWpNDfFKi8nVOOq2yWbqwt3FgzYNCOH8rvTF0Y5UK9YgIDtPdoud8ZYdY1WXt9tULoKzRtaOi9MSky3R1e/dYbUJTWHhX9my29Cejp+859/BsjM4Kv/ZyV5F6ROxtrUTT6krD62V2TR5Ss7Z407YAmV3jvTI9S/rBBlRUMzo/piaoWAvH2+OKi+Jjmrj42wAQyPYPn+zfWaYV/l1ZQRnwq3fyHID/ihHH6B8J6CxFY1B96ZRPhavZraPQv04ZAdZcfiOSTJcgPf9HnI9DXJmjOxnjHa2BKN2Hfn6BafQgnNJMbGIoCDRbH2cF2lXnOgWRVZC0khNECJq1Ov3RbtAZjH4zzhDU23dGQ92ZV4qBqsty1ajTo1mFTkI1GtSp1y1PjRYNYrVpVi1Lu24NqlRoZu2CBoNq+FjD5hTdoN6X5WrTokIrBeDooJ3AzR/I/xNHZwIAAA==) format('woff2')}@font-face{font-family:'HG Inter';font-weight:700;src:url(data:font/woff2;base64,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) format('woff2')}@font-face{font-family:'HG Inter';font-weight:800;src:url(data:font/woff2;base64,d09GMgABAAAAAASQABAAAAAACBAAAAQ0AAQAQgAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbgXocKgZgP1NUQVRaAGQRCAqFfIUJATYCJAMoCxYABCAFgTwHIAwHG20GUVRQTlD8SIyNZT0+ZViIWrVCmjZ0ihPfRRCsWVUPhI4p6pA4yyT8Af+zUO8BhQGyBJ7kb47qsgoM9Ub4CTxpcOLL7H+AdNgT19SPNUV6ltEIP/N8VZoBPMMBVREObDh9kukc5zMv1v4WKmPJXDOVx0v0IQXGAhIhlIRAxXaXZfsPHj9v9r2injYLG7NrrRa2RfV1WCiDer0QZJqktdbTYbxFTkUAJ1g9X1bqhSVMCVgbw11DCruRexYP1H+Iav1CJVSRcKoCfrsZ04GRRMGWw2csn0iBmZjwfCof37fQYgk/fmTjzBU/nuWtaVVOvi77Am+EiOQL3ybvVuQpFbOXoPDNnT134pzPVQ0XPx+dTOmH5DkCspv5t6gaK4SSFFOlWC7p7Oodic0MNjb1RYjmvjttsVuiYLL5AklsMR4hiI1pFalEEnv4Eup5PoItc/rRiSZKUXVYTasuPYbrOHxI1/le96F3vO6lFx4VPCtE/X8TWCqOTMVY/ELc5mIGPjZbKgHjan8Vxyoy0NJycgpw8ooUoef3qaoevGCh4O71Y+0nRpgRhkEljp9YSZLqPhoOqLz7lKWEjZaDjq2IlY6dNg0RF2GyH4AzuHyrFnIu3ZGIwnw0gYYlgS2RObek5bLFByR13IPKu1hwF8pQZYLKFWBZIUsA/iIMY0YEoc1MG7GaWZgwrZ3JUY9nj9IGBeidkXfExYvZwnDcj5kkAyLYCrGbfpvWTV7ManPV7/WXfX/L1QtVD51mG5I32dLjrmk6OmgHCxmmDib5X27v8L0ykJIZh6wcin2sGdNoKk4vTIgq9kEf0N2OcvJxigS625FJPklQwrvwF9VTrczW03xvn8w/dWpvd79DCTy/Ijms4a6eEWJiaxtmqpnq1OlvmB1naKvhKhSD6WuLRDS23nSDOcUhbYuuFsw0lFES8tthh+3BSrdffScuQxHvwu/2eurZuQkJzAKJaK+jnput2zLPbBPipk4JC1NHIS42hHEJqDCU5C+A7CEoQNAhq7VnWKlpUP7l4tJ/p/sF/65UlvqVGnoFeTEGXB6yCXXWaAwO0agPcba1CXPUqg8L0WoId4accJ+rrGLpKDlU0M5Ps9GTUdIyztAoxiYaMhrc/u28D2dTUGMX5o3MHJeWypB/JlzlKFyl90I6bVk6VcwXkwpKQ9Pu5Zb5bJOBQGbv9512h25N2P4fY1oCvw40tMNfhR0fmj7qn7+X/4lUAoK/qhTyikmsK/F2Jd8dh2Xb2fx/fdmXDmef6s3+DaZ8tppeJ5r52/T4HIGKxVIQcKzoqlRkZYnxSEKEscYHNppsdmCzmZYHtijZH9htrOPPtUfFZWfVNOrX5o4el9Q0a9SkzwFD+vS4Y69Obe47pUufZvfc0abqnGYjatZYnzuO6MNqGjurU7s7OqTA6AXfQuf7Ua9b9gAAAA==) format('woff2')}@font-face{font-family:'HG Mono';font-weight:600;src:url(data:font/woff2;base64,d09GMgABAAAAAAUEABAAAAAACLwAAASpAAI2BAAAAAAAAAAAAAAAAAAAAAAAAAAAGiIbIBwqBmA/U1RBVDYAgQQRCAqJQIdDATYCJAMmCyYABCAFZgcgDAcbfQZRlE7OBUC+OLCNmQ3dCAuo0HBKznbGBoMz8vqHJyzz/782676qIgf+xyKiBKJQNDE1ok5mvBhz2/mq25mVmIM4uPVIIk5YPnjuB6IrZmu2ruL9DxAPu9iEf/5y+t+/WTYmzyUU4liLFwca2FHCWbiWrW2BHGFigWgUhFtDlJTsMXK226yPv/gAAqAFAAACRBA4CDroQTAyIhAAhghRqLyyvh1qSADg9QYAAKFOkkLoT+8cWVtACAcYJgm9QjdUgKBoUqBuNg0ie4oBAdBA3AkLax/AWzjb++//J7lKlE6phCTBc20MFQgENQQAAQhAAmFzanqNAPwG0yAD6Ct7BTKuA0Jc9KuLIE0kYen6EEYi1IhRokKDdiMmLFmxYbuCTV2uXiss4vXP5d7yhsWgUQr4XHYEcSGQ15sBQj8bEgDBQBsAfQ1JSjkqdExBLSkkivgBtUbLtD6RBo1JHcnDmJ8+RB/kp9PzIT7AOll7H++8RwddJ2O4irvVKcQlT7JO7v5JPNKMcZUOWlQvE5fGBR23p4E35tFdXGJ09ItBdDfrvV0VIYynZKp7Hm7DBJG7BR1xxkYUfZq4S7XqZ+s8vK5eOtvBgIxCfeqvtSOPOslVjHRgUodCtTmnI9zqMIQ5bIMwYiaX7HT/REw54ELBg/E2ngItXIy7QTg/ebKPOocuyrdOs9MtCHB2sQ4VB085CpTBTNGUyjrQx2FOtSeZJZsRuiZyYd24UFdKPsh7bm5Db+3D+3h/R9ccpZC3951OfuncTbe/dCPtuXdSnysMuN383rPGlowMQ/OzaPIcr52V88YrAivyJmbl2v7ZAUdJkT1QLilyDKDP8/Rk4dvhk+EfFU5i1rO+4HCiwHN51Zd3e8xmz9XlX17uWfg2S7WqXmeztsn+hen+Cs2kek21bv0WzZ7Pq6Zzjw2X1NQ4P7vGdv55ScPJV6xYv7Vav7OuwKypncty9BWuZZRZ8+RfM5JfurQrpDWoZ6mx0NYznl0xve1E77r5WmuOy5Ty4G5vaGtg92JLoaN/Jgc/L3b+6SJ+0nSMdjc0z3YNXZ2VNpRpuqBpRV231dM/vjrWubEy6i8X9FUmdsmV9vTKK1P+TUo9gElTPpErDxdfUSwPT+SWV4yfp421m/Iet5sXnavaiu220PLovCuOyU86gr8BTGoI5VRKldLBo1YrKseyoMSNxl40kXuzrNhvys15yK7ID6PpWc/qTKhS2lxX3ja6NHxTUfpgc7a9vHrcf2eY4LptRp+t2K6QL83OcluvsLoxmrQ4ExlX3NPY29Az4RxJ2o6yu7Nz9uRepGkmN1bHu9e75Lms7F25a717fGsVHz2fuOnsvEOfVaI/mO3ceC4RDz3bcPwDH9dc8to3ZTnfjE8m72rOcQEACIBgkz5b3XveMuT/phbFLwH48PgDHgB84VPwipHc+mQJnwF8IAAACNjcMkK3nZXMCdokvDbU+zZN+swq0KxAJodatZqNamSSBiAAfkyRu8gmCTYiSNJAgB6YWRGghR4MVFjcuL1/01YTpqxzGrGiy4QZU6atqbFmhNOMMa0WzRuxQAQAwDsh+z06XzK9F066HAAA) format('woff2')}@keyframes route{0.00%{transform:translate(0.0px,-17.4px)}5.83%{transform:translate(0.0px,-17.4px)}10.83%{transform:translate(54.0px,13.8px)}16.67%{transform:translate(54.0px,13.8px)}21.67%{transform:translate(108.0px,44.9px)}27.50%{transform:translate(108.0px,44.9px)}33.33%{transform:translate(162.0px,76.1px)}39.17%{transform:translate(162.0px,76.1px)}45.00%{transform:translate(216.0px,107.3px)}52.50%{transform:translate(216.0px,107.3px)}58.33%{transform:translate(263.7px,102.9px)}67.50%{transform:translate(263.7px,102.9px)}72.50%{transform:translate(278.8px,130.5px)}75.83%{transform:translate(278.8px,130.5px)}80.00%{transform:translate(362.9px,150.1px)}84.17%{transform:translate(362.9px,150.1px)}88.33%{transform:translate(278.8px,130.5px)}90.83%{transform:translate(278.8px,130.5px)}95.00%{transform:translate(190.9px,-50.8px)}98.33%{transform:translate(190.9px,-50.8px)}100%{transform:translate(0.0px,-17.4px)}}@keyframes fade{0%{opacity:0}2.08%{opacity:1}98.33%{opacity:1}99.58%{opacity:0}100%{opacity:0}}.ticket{transform:translate(278.8px,130.5px);animation:route 12s ease-in-out infinite}.ticket-body{animation:fade 12s linear infinite}.you-on{opacity:0}@keyframes glow-DL{0.00%{opacity:1}5.83%{opacity:1}7.92%{opacity:0}100.00%{opacity:0}}.mon-DL .screen{opacity:0;animation:glow-DL 12s linear infinite}@keyframes glow-MA{0.00%{opacity:0}8.75%{opacity:0}10.83%{opacity:1}16.67%{opacity:1}18.75%{opacity:0}100.00%{opacity:0}}.mon-MA .screen{opacity:0;animation:glow-MA 12s linear infinite}@keyframes glow-RA{0.00%{opacity:0}19.58%{opacity:0}21.67%{opacity:1}27.50%{opacity:1}29.58%{opacity:0}100.00%{opacity:0}}.mon-RA .screen{opacity:0;animation:glow-RA 12s linear infinite}@keyframes glow-ST{0.00%{opacity:0}31.25%{opacity:0}33.33%{opacity:1}39.17%{opacity:1}41.25%{opacity:0}100.00%{opacity:0}}.mon-ST .screen{opacity:0;animation:glow-ST 12s linear infinite}@keyframes glow-RM{0.00%{opacity:0}42.92%{opacity:0}45.00%{opacity:1}52.50%{opacity:1}54.58%{opacity:0}100.00%{opacity:0}}.mon-RM .screen{opacity:0;animation:glow-RM 12s linear infinite}@keyframes glow-ET{0.00%{opacity:0}70.42%{opacity:0}72.50%{opacity:1}75.83%{opacity:1}77.92%{opacity:0}86.25%{opacity:0}88.33%{opacity:1}90.83%{opacity:1}92.92%{opacity:0}100.00%{opacity:0}}.mon-ET .screen{opacity:0;animation:glow-ET 12s linear infinite}@keyframes glow-TR{0.00%{opacity:0}92.92%{opacity:0}95.00%{opacity:1}98.33%{opacity:1}100.00%{opacity:0}}.mon-TR .screen{opacity:0;animation:glow-TR 12s linear infinite}@keyframes approve{0.00%{opacity:0}59.17%{opacity:0}61.25%{opacity:1}67.50%{opacity:1}69.58%{opacity:0}100.00%{opacity:0}}.you-on{animation:approve 12s linear infinite}@keyframes fill{0.00%{fill:#73c6b3}77.92%{fill:#73c6b3}80.00%{fill:#96fbe3}84.17%{fill:#96fbe3}86.25%{fill:#73c6b3}100.00%{fill:#73c6b3}}.hl-top polygon:last-child{animation:fill 12s linear infinite}@media (prefers-reduced-motion:reduce){*{animation:none!important}.mon-ET .screen{opacity:1}}</style><defs><radialGradient id="bg" cx="0.62" cy="0.4" r="0.75"><stop offset="0" stop-color="#133a34"/><stop offset="0.55" stop-color="#0d2723"/><stop offset="1" stop-color="#071815"/></radialGradient></defs><rect x=".5" y=".5" width="799" height="439" rx="18" fill="url(#bg)" stroke="#133631"/><clipPath id="m"><rect x="44" y="286" width="34" height="34" rx="9.2"/></clipPath><image href="data:image/jpeg;base64,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e9col4KnW8x3p3Rn7I6fcvY0uRXPC896d9t460XRHsjfyB1ppdR3rBN4fWmG896Lon2UjfMyAVXe6UdKwmvPeq0l5nPNMtUTcku/es+W896x5LzHeqMl3nvSujaFI1Zrv3rKmuves+W7x1NZc13x1qWzpjSL8916msS4ufeqs1115rJnuuuKTZ0wpk89z1yaw7q6681XubvOeaw7i6z3oOuECS5uuuDX5E/tY6gt98atSQNkWtpaQfQiIMR+b1+qtzc4yM1+M/xw1Uax8XPFV6DuUag8IOe0AEP/ALLRHc+s4bp/vZS8jzDIpOPU1H+FOyBV3R9nyj8ijIqMtRuFMOU//9f4OtbnoK6S1uDxXn1rccjmuitbnPevTaPyaUT0S0ufeuktbrpzXndrc10dpdYxUHPOJ6LaXXTmujtbnHOa87tbrOPWuhtbvpk0HHOB6LbXR45robW7GBzXndtdYxW/bXfbNBzSiei213jmt+2vORg15zbXnvW9bXfSg550z0e2vPetyG8HFec2976mtu3vemTQck6R6HBecda14bz3rz+C86c1qw3nTmg5500d/FdjjmtGO8rg4rzpzWlFee9K6MJUjuo7z3q2t771xC3uRircd4PWi6MZUjtkvB61YW87ZrjFvPerC3ue9MzdI7EXvvS/bPQ1yQvM96f9sOOtBLpHVG8PTNN+2e9cv9t7ZqP7Z70B7BHSteH1qu9571zzXnvVd7z3oKVI35LwetUpLz3rBe8PrVKS8znmldGkaRtTXnoazJbzrzWPLe+9Zs151OaV5G0aRqzXg55rGmvPes6a9681kz3fqao3jTL09371i3F371SnuvesW4u/eg6IUx+pamlnbzXkxASCNpWJ7BAWP6CvxI1K+k1PUrvUpWLPdzyXBz1/eMW/rX6k/G/xN/YHwy8QXittlmtTaRf79wfK/kxNflICAMelCR9tw/RtSlPuTUVFuFG4VXKz6CzJaKi3CjcKEgsz/9D81baboK37a5xiuGt7jpmt23nxivUaPy2UTv7W6z0NdJa3OMc155bXOO9b9tdZxSaOeUT0O2ueldFbXXqa87tro8c1v29171Bzygej212OOa3Le76HNed2130rftrvoaDlnSPQ7a7xjJrdt7vHOa87t7rvmtu3vPeg55QPRILzOOa2oLzHQ157b3lbEN5jHNS0YTpnoMF7wOa1obz3rz6G76Vqw3hHejlOedI9BivOnNaMd7715/FfY6mtGK+96oxlSO9jve+aupe+9cLHfD1q2l6OxxWZk6Z3CXvvVhL3PeuJW9PrU4vfSm0Q6R2gvvenG9PrXHC9HrThej1qxeyOv+2+9NN6B3rlPtw9ajN770rIXsjqmvevNV2vfeuYa9HrUD3valyleyOjkvfeqMt4fWuekvR61Te+HrVFKmb0t571my3vUZrElvvesya9zxmktjaNM2Zrz3rJmvPesqa7FZk1370zaNI0p7vOeaxprv3rPmvOvNZM93u4BoOmFM+X/wBq/wATKuj6N4Xib5rmdryUZ/giG1PzZj+VfD++vVvjb4nPib4h6jJG++308iwhweMRffP4yFq8loP0DAUPZUYwJQ1LuqLJoyaDrsyXJ9DRuqLJoBNAj//R/KCCcqRk1u21wOOa5bJq5BOVxmvWaPzacDuoLjoM1u21105rhbe54rbgucYqTnlE722uugzW/b3XvzXn0F10zW5BdHilZHPKJ6Db3R9a3re7wBzXntvd4wc1t295nqagxcD0O3u/ety3u+nNeeW9371twXnTmg5p0z0GG7x3rXgveRk1wMF3nvWrDd+9BzygegQ3nvWnFe+9cBFeYxzWnFeH1oMXA76K89DWhHeY71wkV5wK0I733oM3A7dL0jvVtL7HeuJS99atpe8daDN0ztVvvep1vh/erilvPeplvPepkR7I7UXv+1T/ALcf71cYL3jOaf8AbD61JLpHXfbz0zSG+PrXI/bfekN56mq5h+yOqa+/2qrNfZON1cw176GoWvPemtgVI6Rr71NU5L0gda55733qpJeepplqkb8l5zyaz5bz0NYb3vvVCW+4ODQaKmbUt51+asqa99DWRLeE1my3R9aDVQNOa76815/498XL4U8K6lrhb95BCRCPWV/lQf8AfZBrYlvMd6+Rf2hvFxu7uz8JWz5S3/0q6wf42GIlP0XJ/EUHqZdhPa1knsfNzu8rtJIxZ3JZiepJ5JNIMd6jBxS7qD7Yfx70ce9M3UbqB3Y/j3ozzmmbqN1Aj//S/JXbSdDUmDTcCvYPzssQzlTzW1b3XQ1zpWpopGQgdqlozlA7eC5962oLrpzXC29wRitqG4PFSc84HcW91jFbcF371wkFwa2ILk8YpNGMonfQXYPetmC76c1wMFz0NbMFyfyqWjFxO+hvPetaG9964KG6IrUiujSMZQO9ivPetOK8Hc1wUN2ema04rs0GLpndxXnvV2O9PrXERXR45q9Hde9Bi6Z20d971aS+964tLs1bW7oIdM7Jb4etTi9B71xy3RqZbo+tKyJ5DrxeZ5zTvtnvXJi6OOtKLs9c0WQnE6z7Z70z7Z71y32s96abs460WQch0zXoA61C1971zTXR9aia6pgoHQven1qo9778Vgtd4qq932oKVM25Lr3qjJd+9Ysl2aoyXZHeg0VI2ZL3Hes2a8461jy3ZPArOlujnrQbRpi6/wCIbXQ9Ku9WvWxDaxmQ+pI6KPcngV+fGratd63ql1q9826e7laVvbPQD2A4Fe0fGnxe15cx+FbN/wB3ARNdEd3/AIU/Acn3x6V4Lg44oPrcsw3s6fM92O3UbjTMH1p2DQemLuNG40mDRg0ALuNG6mkHFABxQB//2Q==" x="44" y="286" width="34" height="34" clip-path="url(#m)"/><text x="90.0" y="306.6" font-family="HG Inter" font-weight="700" font-size="10" fill="#73c6b3" letter-spacing="1.6">HYPERLIQUID TRADING DESK FOR GROK BOT</text><text x="41.0" y="380.0" font-family="HG Inter" font-weight="800" font-size="60" fill="#effdf8" letter-spacing="-1.7">HyperGrok</text><text x="44.0" y="412.0" font-family="HG Inter" font-weight="500" font-size="19" fill="#9ecec1">Your trading desk, <tspan fill="#96fbe3" font-weight="600">fully staffed.</tspan></text><g transform="translate(366.4 83.3)"><g><polygon points="133.1,18.8 190.9,52.2 190.9,37.7 133.1,4.3" fill="#0c2420"/><polygon points="248.6,18.8 190.9,52.2 190.9,37.7 248.6,4.3" fill="#091d19"/><polygon points="190.9,-29.0 248.6,4.3 190.9,37.7 133.1,4.3" fill="#0f2e29"/></g><g><polygon points="-65.3,52.2 271.2,246.5 271.2,232.0 -65.3,37.7" fill="#0c2420"/><polygon points="336.5,208.8 271.2,246.5 271.2,232.0 336.5,194.3" fill="#091d19"/><polygon points="0.0,0.0 336.5,194.3 271.2,232.0 -65.3,37.7" fill="#0f2e29"/></g><path d="M25.1 14.5L-40.2 52.2M50.2 29.0L-15.1 66.7M75.3 43.5L10.0 81.2M100.5 58.0L35.2 95.7M125.6 72.5L60.3 110.2M150.7 87.0L85.4 124.7M175.8 101.5L110.5 139.2M200.9 116.0L135.6 153.7M226.0 130.5L160.7 168.2M251.1 145.0L185.8 182.7M276.3 159.5L211.0 197.2M301.4 174.0L236.1 211.7M-25.1 14.5L311.4 208.8M-50.2 29.0L286.3 223.3" stroke="#174640" stroke-width="1" fill="none"/><g><polygon points="292.6,228.4 330.3,250.1 330.3,241.4 292.6,219.7" fill="#123732"/><polygon points="352.9,237.1 330.3,250.1 330.3,241.4 352.9,228.4" fill="#0e2b28"/><polygon points="315.2,206.6 352.9,228.4 330.3,241.4 292.6,219.7" fill="#174640"/></g><g><polygon points="217.2,197.9 267.5,226.9 267.5,221.1 217.2,192.1" fill="#3c9c84"/><polygon points="329.0,191.4 267.5,226.9 267.5,221.1 329.0,185.6" fill="#2b7a67"/><polygon points="278.8,156.6 329.0,185.6 267.5,221.1 217.2,192.1" fill="#5fd4b6"/></g><g class="desk desk-TR mon mon-TR"><polygon points="160.7,-10.1 164.3,-8.1 164.3,-31.3 160.7,-33.3" fill="#173a34"/><polygon points="191.9,-24.1 164.3,-8.1 164.3,-31.3 191.9,-47.3" fill="#0a231f"/><polygon points="191.9,-24.1 164.3,-8.1 164.3,-31.3 191.9,-47.3" fill="#96fbe3" class="screen"/><polygon points="188.4,-49.3 191.9,-47.3 164.3,-31.3 160.7,-33.3" fill="#1d4a43"/></g><g class="desk desk-TR"><polygon points="153.2,4.3 190.9,26.1 190.9,13.0 153.2,-8.7" fill="#214a43"/><polygon points="228.5,4.3 190.9,26.1 190.9,13.0 228.5,-8.7" fill="#1a3b35"/><polygon points="190.9,-30.4 228.5,-8.7 190.9,13.0 153.2,-8.7" fill="#2a5f56"/></g><g class="desk desk-DL mon mon-DL"><polygon points="-30.1,23.2 -26.6,25.2 -26.6,2.0 -30.1,-0.0" fill="#173a34"/><polygon points="1.0,9.3 -26.6,25.2 -26.6,2.0 1.0,-13.9" fill="#0a231f"/><polygon points="1.0,9.3 -26.6,25.2 -26.6,2.0 1.0,-13.9" fill="#96fbe3" class="screen"/><polygon points="-2.5,-16.0 1.0,-13.9 -26.6,2.0 -30.1,-0.0" fill="#1d4a43"/></g><g class="desk desk-DL"><polygon points="-37.7,37.7 0.0,59.4 0.0,46.4 -37.7,24.6" fill="#214a43"/><polygon points="37.7,37.7 0.0,59.4 0.0,46.4 37.7,24.6" fill="#1a3b35"/><polygon points="0.0,2.9 37.7,24.6 0.0,46.4 -37.7,24.6" fill="#2a5f56"/></g><g class="desk desk-MA mon mon-MA"><polygon points="23.9,54.4 27.4,56.4 27.4,33.2 23.9,31.2" fill="#173a34"/><polygon points="55.0,40.5 27.4,56.4 27.4,33.2 55.0,17.3" fill="#0a231f"/><polygon points="55.0,40.5 27.4,56.4 27.4,33.2 55.0,17.3" fill="#96fbe3" class="screen"/><polygon points="51.5,15.2 55.0,17.3 27.4,33.2 23.9,31.2" fill="#1d4a43"/></g><g class="desk desk-MA"><polygon points="16.3,68.9 54.0,90.6 54.0,77.6 16.3,55.8" fill="#214a43"/><polygon points="91.7,68.9 54.0,90.6 54.0,77.6 91.7,55.8" fill="#1a3b35"/><polygon points="54.0,34.1 91.7,55.8 54.0,77.6 16.3,55.8" fill="#2a5f56"/></g><g class="desk desk-RA mon mon-RA"><polygon points="77.9,85.5 81.4,87.6 81.4,64.4 77.9,62.3" fill="#173a34"/><polygon points="109.0,71.6 81.4,87.6 81.4,64.4 109.0,48.4" fill="#0a231f"/><polygon points="109.0,71.6 81.4,87.6 81.4,64.4 109.0,48.4" fill="#96fbe3" class="screen"/><polygon points="105.5,46.4 109.0,48.4 81.4,64.4 77.9,62.3" fill="#1d4a43"/></g><g class="desk desk-RA"><polygon points="70.3,100.0 108.0,121.8 108.0,108.7 70.3,87.0" fill="#214a43"/><polygon points="145.7,100.0 108.0,121.8 108.0,108.7 145.7,87.0" fill="#1a3b35"/><polygon points="108.0,65.2 145.7,87.0 108.0,108.7 70.3,87.0" fill="#2a5f56"/></g><g class="desk desk-ST mon mon-ST"><polygon points="131.9,116.7 135.4,118.8 135.4,95.6 131.9,93.5" fill="#173a34"/><polygon points="163.0,102.8 135.4,118.8 135.4,95.6 163.0,79.6" fill="#0a231f"/><polygon points="163.0,102.8 135.4,118.8 135.4,95.6 163.0,79.6" fill="#96fbe3" class="screen"/><polygon points="159.5,77.6 163.0,79.6 135.4,95.6 131.9,93.5" fill="#1d4a43"/></g><g class="desk desk-ST"><polygon points="124.3,131.2 162.0,153.0 162.0,139.9 124.3,118.2" fill="#214a43"/><polygon points="199.7,131.2 162.0,153.0 162.0,139.9 199.7,118.2" fill="#1a3b35"/><polygon points="162.0,96.4 199.7,118.2 162.0,139.9 124.3,118.2" fill="#2a5f56"/></g><g class="desk desk-RM mon mon-RM"><polygon points="185.8,147.9 189.4,149.9 189.4,126.7 185.8,124.7" fill="#173a34"/><polygon points="217.0,134.0 189.4,149.9 189.4,126.7 217.0,110.8" fill="#0a231f"/><polygon points="217.0,134.0 189.4,149.9 189.4,126.7 217.0,110.8" fill="#96fbe3" class="screen"/><polygon points="213.5,108.7 217.0,110.8 189.4,126.7 185.8,124.7" fill="#1d4a43"/></g><g class="desk desk-RM"><polygon points="178.3,162.4 216.0,184.1 216.0,171.1 178.3,149.3" fill="#214a43"/><polygon points="253.7,162.4 216.0,184.1 216.0,171.1 253.7,149.3" fill="#1a3b35"/><polygon points="216.0,127.6 253.7,149.3 216.0,171.1 178.3,149.3" fill="#2a5f56"/></g><g class="desk desk-ET mon mon-ET"><polygon points="248.6,171.1 252.2,173.1 252.2,149.9 248.6,147.9" fill="#173a34"/><polygon points="279.8,157.2 252.2,173.1 252.2,149.9 279.8,134.0" fill="#0a231f"/><polygon points="279.8,157.2 252.2,173.1 252.2,149.9 279.8,134.0" fill="#96fbe3" class="screen"/><polygon points="276.3,131.9 279.8,134.0 252.2,149.9 248.6,147.9" fill="#1d4a43"/></g><g class="desk desk-ET"><polygon points="241.1,185.6 278.8,207.3 278.8,194.3 241.1,172.5" fill="#214a43"/><polygon points="316.4,185.6 278.8,207.3 278.8,194.3 316.4,172.5" fill="#1a3b35"/><polygon points="278.8,150.8 316.4,172.5 278.8,194.3 241.1,172.5" fill="#2a5f56"/></g><g><polygon points="320.2,261.7 362.9,286.4 362.9,269.0 320.2,244.3" fill="#173a34"/><polygon points="405.6,261.7 362.9,286.4 362.9,269.0 405.6,244.3" fill="#122e2a"/><polygon points="362.9,219.7 405.6,244.3 362.9,269.0 320.2,244.3" fill="#1d4a43"/></g><g><polygon points="320.2,242.0 362.9,266.7 362.9,249.3 320.2,224.6" fill="#123732"/><polygon points="405.6,242.0 362.9,266.7 362.9,249.3 405.6,224.6" fill="#0e2b28"/><polygon points="362.9,200.0 405.6,224.6 362.9,249.3 320.2,224.6" fill="#174640"/></g><g><polygon points="320.2,222.3 362.9,246.9 362.9,229.5 320.2,204.9" fill="#173a34"/><polygon points="405.6,222.3 362.9,246.9 362.9,229.5 405.6,204.9" fill="#122e2a"/><polygon points="362.9,180.2 405.6,204.9 362.9,229.5 320.2,204.9" fill="#1d4a43"/></g><g><polygon points="320.2,202.6 362.9,227.2 362.9,209.8 320.2,185.2" fill="#123732"/><polygon points="405.6,202.6 362.9,227.2 362.9,209.8 405.6,185.2" fill="#0e2b28"/><polygon points="362.9,160.5 405.6,185.2 362.9,209.8 320.2,185.2" fill="#174640"/></g><g class="hl-top"><polygon points="320.2,182.8 362.9,207.5 362.9,190.1 320.2,165.4" fill="#5a9a8c"/><polygon points="405.6,182.8 362.9,207.5 362.9,190.1 405.6,165.4" fill="#477b6f"/><polygon points="362.9,140.8 405.6,165.4 362.9,190.1 320.2,165.4" fill="#73c6b3"/></g><text x="-29.4" y="58.7" font-family="HG Mono" font-weight="600" font-size="11.5" fill="#9ecec1" text-anchor="middle">DL</text><text x="24.6" y="89.9" font-family="HG Mono" font-weight="600" font-size="11.5" fill="#9ecec1" text-anchor="middle">MA</text><text x="78.6" y="121.0" font-family="HG Mono" font-weight="600" font-size="11.5" fill="#9ecec1" text-anchor="middle">RA</text><text x="132.6" y="152.2" font-family="HG Mono" font-weight="600" font-size="11.5" fill="#9ecec1" text-anchor="middle">ST</text><text x="186.6" y="183.4" font-family="HG Mono" font-weight="600" font-size="11.5" fill="#9ecec1" text-anchor="middle">RM</text><text x="250.4" y="206.0" font-family="HG Mono" font-weight="600" font-size="11.5" fill="#062520" text-anchor="middle">ET</text><text x="161.5" y="25.3" font-family="HG Mono" font-weight="600" font-size="11.5" fill="#9ecec1" text-anchor="middle">TR</text><text x="362.9" y="112.4" font-family="HG Inter" font-weight="700" font-size="9.775" fill="#73c6b3" text-anchor="middle" letter-spacing="1.6">HYPERLIQUID</text><text x="251.6" y="11.2" font-family="HG Inter" font-weight="700" font-size="9.200000000000001" fill="#73c6b3" letter-spacing="1.4">BY DM</text><g class="you"><rect x="213.0" y="68.0" width="101.4" height="22.9" rx="11.5" fill="#071815" stroke="#73c6b3" stroke-dasharray="3 2.5"/><rect class="you-on" x="213.0" y="68.0" width="101.4" height="22.9" rx="11.5" fill="#96fbe3"/><text x="263.7" y="83.8" font-family="HG Mono" font-weight="600" font-size="12.075000000000001" fill="#96fbe3" text-anchor="middle">you approve</text><text x="263.7" y="83.8" font-family="HG Mono" font-weight="600" font-size="12.075000000000001" fill="#062520" text-anchor="middle" class="you-on">you approve</text></g><g class="ticket"><g class="ticket-body"><circle r="14.8" fill="#96fbe3" opacity=".16"/><path d="M0 -8.7L8.7 0L0 8.7L-8.7 0Z" fill="#96fbe3" stroke="#062520" stroke-width="1.5"/><path d="M0 -3.7L3.7 0L0 3.7L-3.7 0Z" fill="#062520"/></g></g></g></svg>
@@ -0,0 +1,84 @@
1
+ # Every-DEX account read
2
+
3
+ Hyperliquid runs builder-deployed (HIP-3) perp DEXs, such as `xyz`, beside the main one. Each DEX has its own clearinghouse, so a plain `clearinghouseState` read shows only the main DEX: HIP-3 positions and the margin behind them are missing, and equity comes out too low.
4
+
5
+ `scripts/account_read.py` reads one account across the main DEX, every HIP-3 DEX and spot, then reports positions and per-DEX and total equity. It uses Python 3's standard library and the public `/info` endpoint. It needs the account address, never a key, and it signs nothing.
6
+
7
+ ## Run it
8
+
9
+ From the root of a checkout, pass the account (main wallet) address, not an API wallet's address:
10
+
11
+ ```bash
12
+ python3 scripts/account_read.py --address 0xYOUR_ACCOUNT_ADDRESS
13
+ ```
14
+
15
+ Or set it once for the shell, so it stays out of command history and shared transcripts:
16
+
17
+ ```bash
18
+ export HYPERGROK_ACCOUNT=0xYOUR_ACCOUNT_ADDRESS
19
+ python3 scripts/account_read.py
20
+ ```
21
+
22
+ Output from the synthetic test account, a standard-mode account with a short on `xyz` and margin on a USDH-collateral DEX:
23
+
24
+ ```
25
+ HYPERGROK ACCOUNT READ · 0x1111...1111 · DEFAULT MODE
26
+ READ ONLY · CUSTOM · 2024-01-01T00:00:00Z
27
+ Sources: Hyperliquid /info perpDexs, userAbstraction, clearinghouseState x4, spotClearinghouseState, spotMetaAndAssetCtxs, meta
28
+
29
+ DEX collateral account value USD positions
30
+ main USDC 1,000.00 $1,000.00 1
31
+ xyz USDC 500.00 $500.00 1
32
+ flx USDH 200.00 $199.80 0
33
+ 1 other DEX empty.
34
+
35
+ Positions
36
+ ETH long 0.1 @ 3,000.00 · value 300.10 · uPnL +0.10 · cross 20x · liq none
37
+ xyz:TSLA short 2.0 @ 250.00 · value 490.00 · uPnL +10.00 · isolated 10x · liq 300.00
38
+
39
+ Spot $180.00 across 2 balances
40
+ Equity perps $1,699.80 + spot $180.00 = $1,879.80
41
+ ```
42
+
43
+ ## What it reads
44
+
45
+ 1. `perpDexs` lists the DEXs: `null` for the main one, then each builder DEX by name.
46
+ 2. `userAbstraction` gives the account mode, which decides whether a total can be summed.
47
+ 3. `clearinghouseState` once per DEX, with `"dex": "<name>"` for each builder DEX. Every DEX is read, so a new one appears without a code change.
48
+ 4. `spotClearinghouseState` for spot balances, and `spotMetaAndAssetCtxs` for token names and prices.
49
+ 5. `meta` with the DEX name, only for a DEX that holds a balance or position, to find its `collateralToken`.
50
+
51
+ A failed or malformed read fails the whole command (exit 1, `source_unavailable`). It never prints a partial total that silently leaves a DEX out. About fifteen requests make one read, well inside the public rate limit.
52
+
53
+ ## How equity is computed
54
+
55
+ Hyperliquid's [account abstraction modes](https://hyperliquid.gitbook.io/hyperliquid-docs/trading/account-abstraction-modes) decide how balances add up.
56
+
57
+ In the standard mode (`default`, also `disabled`), spot and each perp DEX keep separate balances. The script sums:
58
+
59
+ ```
60
+ dex_usd = marginSummary.accountValue x USD price of the DEX's collateral token
61
+ spot_usd = sum of balance total x USD price of the token (total includes amounts on hold)
62
+ total_usd = sum of dex_usd over every DEX + spot_usd
63
+ ```
64
+
65
+ `accountValue` already includes unrealized PnL and isolated margin, so positions are not added again. USDC counts as exactly $1. Any other token, including a DEX collateral such as USDH or USDT0, is priced at the mid of its USDC spot pair, or the mark when the book has no mid. Zero collateral units are zero USD even when that token has no price. A nonzero balance with no USDC pair is listed as unpriced and left out, and the total is marked incomplete. Those prices are positive, so the partial total is a lower bound printed as "at least" when every omitted balance is positive, and an upper bound printed as "at most" when every omitted balance is negative. Mixed signs are printed as "incomplete". JSON reports that choice in `equity.bound`: `exact`, `lower`, `upper` or `unknown` for a standard-mode account, and null when the mode is not summed.
66
+
67
+ In the `unifiedAccount` and `portfolioMargin` modes, one balance backs spot and perps, and Hyperliquid documents that `spotClearinghouseState` then holds all balances and that per-DEX user states are not meaningful. Adding them would count collateral twice, so the script reports the positions, per-DEX states and spot value with `total_usd` null. It does the same for any other mode, including the discontinued DEX abstraction.
68
+
69
+ Not included: staked HYPE, vault deposits and sub-accounts, which have their own reads in `hyperliquid-account`. Reads are sequential, so prices can move between them.
70
+
71
+ ## Comparing with the Hyperliquid app
72
+
73
+ The total is designed to match the app's equity for a standard-mode account read at the same moment. That match has not been checked against the app; the arithmetic and request shapes were checked against the official [perpetuals](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals) and [spot](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/spot) references and live public responses. Small differences can come from spot prices (the app may value a token differently from its USDC pair mid), from illiquid tokens whose mid value cannot be realized, and from the seconds between reads. Treat a large gap as a reason to compare the per-DEX rows.
74
+
75
+ ## For scripts and agents
76
+
77
+ ```bash
78
+ python3 scripts/account_read.py --schema
79
+ python3 scripts/account_read.py --json
80
+ ```
81
+
82
+ `--schema` describes the JSON without touching the network. `--json` returns decimal strings in the same versioned contract as the other read-only tools: exit 0 for a result, 1 when a read fails (`source_unavailable`) and 2 for invalid arguments, including a missing or malformed address. `--testnet` reads the testnet account, which is a different account from mainnet's at the same address.
83
+
84
+ The read is a fact source for sizing and reconciliation, not authority to act. The desk's Risk PASS, the user's exact ticket approval and the single writer still govern every exchange action, and this script never sends one.
@@ -21,7 +21,7 @@ computer: /workspace/hypergrok (this repo) /workspace/trading-desk (the desk'
21
21
  secret: HYPERLIQUID_PRIVATE_KEY - a trade-only API wallet, from Grok Bot's secure secret store
22
22
  ```
23
23
 
24
- The shared Desk Lead starts on the read plane. `hypergrok-bootstrap` installs the pinned release, runs `scripts/opening_bell.py` against public `/info`, prepares the desk, creates the team when the product allows it, and finishes with `scripts/desk_doctor.py`. None of those first-run paths reads a key or calls `/exchange`.
24
+ The shared Desk Lead starts on the read plane. `hypergrok-bootstrap` installs the pinned release, runs `scripts/opening_bell.py` against public `/info`, prepares the desk, creates the team when the product allows it, and finishes with `scripts/desk_doctor.py`. None of those first-run paths calls `/exchange` or reads an API wallet. The doctor reads the desk record and fails it, without printing the value, when that record contains a private-key label or a 32-byte hex key.
25
25
 
26
26
  The six-Bot group limit leaves the Trade Reviewer outside the Floor. Bots share the computer and skills, so role separation is a working convention rather than credential isolation. Native approval controls and the secret store provide separate controls; setup verifies their availability.
27
27
 
@@ -45,6 +45,7 @@ Working files live under `/workspace/trading-desk/`; chat supplies context, whil
45
45
  | `risk-limits.md` | your limits, versioned; only you change it |
46
46
  | `proposals/HG-*.md` | one file per trade idea, appended through its life: ticket, sign-off, approval, send, reconciliation, review |
47
47
  | `journal/*.md` | the desk diary, append-only |
48
+ | `journal/incidents/` | one file per incident; the doctor requires this folder |
48
49
  | `briefs/`, `research/`, `strategies/`, `data/`, `watch/` | working material |
49
50
 
50
51
  ## Research evidence
@@ -55,6 +56,8 @@ The Market Analyst hands the complete bundle to the Strategist, who runs offline
55
56
 
56
57
  `scripts/stop_cost.py` runs on the read plane too. It reads public market metadata and the L2 book and applies the `desk-risk-limits` sizing arithmetic to a plan and equity the user types, so it prices a stop without an account read.
57
58
 
59
+ `scripts/account_read.py` is the read plane's account view. Given an address, it lists every perp DEX with `perpDexs`, reads `clearinghouseState` for each, including HIP-3 DEXs such as `xyz`, and reads spot balances. It sums total equity only in the standard account mode, where balances are separate, and leaves the total null for shared-collateral modes. It needs no key and cannot sign. See [Account read](ACCOUNT_READ.md).
60
+
58
61
  Data completeness, statistical evidence, Risk PASS and a user's exact ticket approval are separate decisions. The dataset tool does not supply historical oracle prices, reconstruct intrabar fills, read an account or touch an exchange write path.
59
62
 
60
63
  ## Trust boundaries
@@ -87,4 +90,4 @@ Each runtime guide contains installation commands and observed support limits:
87
90
 
88
91
  The Grok and Codex marketplace entries pin the reviewed repository tag. Claude Code resolves this repository through its own marketplace index. Gemini CLI installs the latest GitHub release; `GEMINI.md` repeats the desk rule's approval paragraph, which the manifest check compares for drift.
89
92
 
90
- Only Claude Code loads `hooks/exchange-write-gate.json`. Its `PreToolUse` hook asks for confirmation when a Bash command or a named script matches an SDK write method or raw `/exchange` POST. It never returns `allow`, does not follow imports and cannot bind a request to the approved ticket. It is a confirmation backstop; each runtime still needs verified native approval coverage before an API wallet is provisioned.
93
+ Only Claude Code loads `hooks/exchange-write-gate.json`. Its `PreToolUse` hook asks for confirmation when a Bash command or a named script matches an SDK write method or raw `/exchange` POST, including a shell script and a path after a literal `cd`. Host case does not hide the exchange URL. A named script that is too large or unreadable to scan also asks. A command that names more than 32 scripts asks without reading them. The prompt redacts a 32-byte hex key. The hook never returns `allow`, does not follow imports, expand globs or variable `cd` targets, and cannot bind a request to the approved ticket. It is a confirmation backstop; each runtime still needs verified native approval coverage before an API wallet is provisioned.
package/docs/FAQ.md CHANGED
@@ -4,10 +4,10 @@
4
4
  The release contains seven role profiles, seventeen skills and read-only Python tools. In Grok Bot, setup builds seven Bots, a six-Bot Trading Floor and a desk record. Other runtimes load the roles as subagents or labelled passes. Ask for a market brief, a sized ticket, a backtest or a review; each role reports its evidence.
5
5
 
6
6
  **What do I need to start?**
7
- For a terminal demo, run the [keyless Opening Bell](../README.md#try-it-now-no-keys) with Python 3. For the Grok Bot desk, add the [public HyperGrok Desk Lead template](https://x.ai/bot/qgVMePFoWotJTUtl3gkdZ), then send **Start the desk.** It carries the 1.7.0 bootstrap. The [pinned bootstrap in the README](../README.md#start) is also available; see [publication evidence](GROK_BOT_TEMPLATE.md). The desk starts in research mode and proves public market access without asking for a key. Add a testnet API wallet only when you want to practise; add a mainnet one when you decide to trade real money.
7
+ For a terminal demo, run the [keyless Opening Bell](../README.md#try-it-now-no-keys) with Python 3. For the Grok Bot desk, add the [public HyperGrok Desk Lead template](https://x.ai/bot/2GeaOwIsmTEOD_WGzmghC), then send **Start the desk.** It carries the 1.7.1 bootstrap. The [pinned bootstrap in the README](../README.md#start) is also available; see [publication evidence](GROK_BOT_TEMPLATE.md). The desk starts in research mode and proves public market access without asking for a key. Add a testnet API wallet only when you want to practise; add a mainnet one when you decide to trade real money.
8
8
 
9
9
  **What does the desk doctor inspect?**
10
- The release version and tag pin, all agent and skill files, the desk folders and record, and a public Hyperliquid `allMids` response. It never reads environment variables, keys or account state, and never calls the exchange write endpoint.
10
+ The release version, the SETUP tag pin, the presence of every published skill and role, each skill's bytes against the release manifest, the desk folders and record when `--desk-root` is set, and a public Hyperliquid `allMids` response. When it reads that record, a private-key label or a 32-byte hex key fails the check, and the doctor does not print the value. An account address, a commit or a bare hash still passes. It does not read environment variables, the secret store or account state, and it never calls the exchange write endpoint.
11
11
 
12
12
  **How does the desk trade?**
13
13
  Through a Hyperliquid API (agent) wallet you create in the Hyperliquid app and hand over through Grok Bot's secure secret card. It can place, modify and cancel orders. Withdrawals, transfers and bridging stay in the app with your main wallet.
@@ -98,6 +98,16 @@ All adaptations use original prose. No fork runtime, hook, strategy or signing c
98
98
 
99
99
  The thysmans hook was reconsidered as a confirmation-only backstop and rewritten as original code in `hooks/exchange_write_gate.py`. The objections above are addressed or kept explicit: it has no automatic allow for any class of send, it also scans script files the command names, and it matches the TypeScript client and raw `/exchange` POSTs as well as the Python SDK. It still cannot bind a send to an account, network, ticket, standing scope or expiry, and it does not follow imports, so it remains a backstop that does not satisfy native approval coverage. The strategy playbooks and personal cadence stay rejected.
100
100
 
101
+ ## Addendum - 2026-11-03
102
+
103
+ Swept the network again against upstream [`12b3097`](https://github.com/galleonlabs/hypergrok-trading-desk/commit/12b3097). GitHub listed 61 repositories including the one descendant; 59 were accessible, with 73 branches at 32 distinct heads. Fifty-six branches had no unique commits and 17 branches at 13 heads did. Eleven of those heads are the exact ones already assessed in this document. `SyxonQ-Dev/hypergrok-trading-desk` and now `03Trash-Panda31/hypergrok-trading-desk` returned HTTP 404, so their current content could not be reviewed. No fork code was executed, no account was read and no order was placed.
104
+
105
+ **The two new heads.** [igor-olikh `main`](https://github.com/igor-olikh/hypergrok-trading-desk/commit/0d9500c8655d) is a merge of upstream with no new work of its own. [peepo-squid `docs/hip3-weekend-reference`](https://github.com/peepo-squid/hypergrok-trading-desk/commit/9be3f751f8ee), open as [PR #56](https://github.com/galleonlabs/hypergrok-trading-desk/pull/56), names a third-party weekend gap board run by its author, who disclosed that. The feed responded and labels its Friday reference as an approximation. It was not adopted: the skill already reports an exchange-close comparison as unavailable without a separately sourced official close, and naming an unaudited JSON and MCP endpoint in a skill would make one operator's service part of the desk's evidence path.
106
+
107
+ **Rechecked older findings.** The [jawndiego audit matrix](https://github.com/jawndiego/hypergrok-trading-desk/blob/067b4d0ecdc37aa6f24fae1b21f2adf4189ab66c/docs/hypergrok_audit_matrix.md) was compared with the current skills on partial-close cleanup, grouped-leg client ids, dead-man's-switch stops and WebSocket recovery; each is now covered. Its claim that the maximum market order is $15M does not match the official [contract specifications](https://hyperliquid.gitbook.io/hyperliquid-docs/trading/contract-specifications) read on this date, which state $30M at 25x and above, as `hyperliquid-api-reference` does. Its broader call for a deterministic signer and transactional store remains a different product.
108
+
109
+ **Adopted.** Defence-in-depth ignore rules for environment files and local desk state, following the `.gitignore` changes in [igor-olikh](https://github.com/igor-olikh/hypergrok-trading-desk/commit/c820c3bd) and the same finding in the jawndiego matrix. They protect a clone from an accidental commit; they do not replace the secret store. No instruction file changed, so this does not move the pinned release.
110
+
101
111
  ## Validation and distribution
102
112
 
103
113
  Run `bash scripts/check.sh` and `validate-agent-skills skills`; all seventeen skills, seven roles, release pointers and template hashes remain part of the distribution contract. The risk examples demonstrate that $40 of position risk plus $80 of pending risk plus a $100 candidate exceeds a $200 cap, and a confirmed $30/$50 partial-fill split still consumes the original $80 reservation. Independently review the changed approval, reservation and recovery paths. Never test these instructions by placing a live trade.
@@ -2,7 +2,9 @@
2
2
 
3
3
  `template/grok-bot.json` is the release contract for the public **HyperGrok Desk Lead** template. It records the exact public profile, source release, avatar, exported bootstrap skill and complete reviewed release inventory. `templateSkillNames` lists the skills carried by the share; `skills` contains all seventeen files and hashes that setup must install and verify.
4
4
 
5
- **Release state — 2026-10-25:** The [1.7.0 public template](https://x.ai/bot/qgVMePFoWotJTUtl3gkdZ) is published. Its complete exported bootstrap was independently read back in the native UI and matched the reviewed source. Source and package checks are recorded separately. Earlier receipts below apply only to their named releases.
5
+ **Release state — 2026-11-03:** The [1.7.1 public template](https://x.ai/bot/2GeaOwIsmTEOD_WGzmghC) is published. Its complete exported bootstrap was independently read back in the native UI and matched the reviewed source. The earlier 1.7.0 share keeps installing 1.7.0. Earlier receipts below apply only to their named releases.
6
+
7
+ **Prior release — 2026-10-25:** The [1.7.0 public template](https://x.ai/bot/qgVMePFoWotJTUtl3gkdZ) is published. Its complete exported bootstrap was independently read back in the native UI and matched the reviewed source. Source and package checks are recorded separately. Earlier receipts below apply only to their named releases.
6
8
 
7
9
  The public template carries one `hypergrok-bootstrap` skill. **Add to Grok Bot** imports the Desk Lead and bootstrap; **Start the desk.** fetches the pinned release and installs the full seventeen-skill desk. Grok Bot's share helper limits its inline recipe to 100,000 characters; the full reviewed pack exceeds that limit. Keep the complete instructions in the release instead of shortening them to fit the share.
8
10
 
@@ -74,6 +76,14 @@ The Desk Lead follows `hypergrok-bootstrap`. A passing result has:
74
76
 
75
77
  Do not describe the template as a zero-interaction installer. **Add to Grok Bot** creates the Desk Lead; **Start the desk.** runs the reviewed setup. The public path is one click and one message.
76
78
 
79
+ ## Publication verification - 2026-11-03
80
+
81
+ The [1.7.1 public template](https://x.ai/bot/2GeaOwIsmTEOD_WGzmghC) was authored from the 1.7.1 release tag at commit `4acf5434de4161a35dd0cc0106d13959473b199f`. The Bot behind the 1.7.0 share could not be reached from the app or from grok.com, so a fresh Bot and link were used. Keep this Bot so the next release can use **Update template**. The publishing Bot has the manifest name, title and description, a default geometric avatar and one exported `hypergrok-bootstrap` skill. Its Context panel contains the public description and that skill, with no memories and no integrations. The public profile reads "By Andrew".
82
+
83
+ Independent native readback opened **View Details → Context → hypergrok-bootstrap** before publishing and hashed the complete rendered content. The normalized Markdown body matched the source: 9,450 UTF-8 bytes, SHA-256 `3b71494ff0917fb3b173bbd86bf5324dea905058975040bacfc3720b969e88dd`. The logged-out preview shows the name, the 1.7.1 description and **Add to Grok Bot**.
84
+
85
+ A fresh public import and **Start the desk.** round trip has not been performed for this release. The source gate and clean pinned installation do not establish native seven-Bot acceptance. No account read, key provisioning, routine activation or exchange action was used for publication.
86
+
77
87
  ## Publication verification - 2026-10-25
78
88
 
79
89
  The [1.7.0 public template](https://x.ai/bot/qgVMePFoWotJTUtl3gkdZ) was authored from reviewed candidate commit `57bfd65be33b3a5eeee43dbd66c1daa2ee560ae5`. The publishing Bot has the manifest name, title and description, the default geometric avatar and one exported `hypergrok-bootstrap` skill. Its Context panel contains the public description and that skill; no plugins, memories or routines are exported. The native Publish action returned **Your Bot was successfully published** and its card showed **Published**. The publishing Bot is retained for future updates.
@@ -48,3 +48,25 @@ Checked the installed SDK method signatures and WebSocket routing against the sn
48
48
  The review corrected the close-position example's nearest-price rounding, which could exceed an approved buy ceiling or undercut a sell floor. It now keeps source decimals and uses the directional bound helper. A regression executes the published close snippet against an in-memory exchange substitute for both long and short positions; no key, signing, account read or exchange send is involved. The actual Python SDK wire serializer preserves 144 directional-bound cases. The readiness snippet now requires the wallet's matching agent role and an unexpired named approval; offline cases cover stale, missing and wrong-account roles. The TypeScript Decimal import now works in native ESM and strict NodeNext TypeScript. Account guidance distinguishes account base fees from market-specific modifiers, fill recovery retains timestamp boundaries, and the market-data rate-limit summary includes expensive role reads and history surcharges.
49
49
 
50
50
  The Python SDK still lacks automatic WebSocket reconnection and routes only the subscription set described in `hyperliquid-websocket`; its unsupported-channel warning remains. A newer API subscription or successful server acknowledgement does not establish SDK support.
51
+
52
+ ## HIP-3 closed-market interpretation - 2026-11-01
53
+
54
+ The market-data pitfalls use the official [HIP-3 specification](https://hyperliquid.gitbook.io/hyperliquid-docs/hyperliquid-improvement-proposals-hips/hip-3-builder-deployed-perpetuals), [perpetuals info API](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals) and [funding reference](https://hyperliquid.gitbook.io/hyperliquid-docs/trading/funding). These distinguish deployer-owned oracle definitions and market settings, asset-context fields, prefixed market identity, hourly historical rates and impact-price funding premium. Original guidance separates those observations from an official equity close, executable prices and future funding.
55
+
56
+ Public mainnet `/info` reads at 09:44:22-09:44:24 UTC reproduced the report's liquidity and funding interpretation risks: `cash:INTC` returned `markPx` 141.02, `oraclePx` 112.988 and zero `dayNtlVlm`; the 09:00 UTC funding rows for `xyz:SNDK` and `io:SNDK` were 0.0000492661 and 0.0000091899. `xyz:INTC` changed funding sign between the 07:00, 08:00 and 09:00 UTC rows. These are dated observations, not current quotes, proof of mark staleness or return claims. No official stock close or external venue zero-rate semantics was independently established; the skill requires separate evidence for both. No account, key, signing or exchange action was used.
57
+
58
+ ## Every-DEX account read - 2026-11-04
59
+
60
+ `scripts/account_read.py` follows the official [perpetuals info API](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals) (`perpDexs`, `clearinghouseState` with its `dex` parameter, `meta`), [spot info API](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/spot) (`spotClearinghouseState`, `spotMetaAndAssetCtxs`) and [account abstraction modes](https://hyperliquid.gitbook.io/hyperliquid-docs/trading/account-abstraction-modes), which state that standard-mode spot and DEX balances are separate and that unified and portfolio-margin per-DEX user states are not meaningful. Public mainnet reads on 2026-11-04 confirmed eleven `perpDexs` entries starting with `null`, a per-DEX `collateralToken` in `meta` (USDC, USDE, USDT0 and USDH among them), a 500 response for an unknown DEX and non-USDC collateral pairs quoted in USDC. No address is committed; the regression fixtures are synthetic. Equity has not been compared with the Hyperliquid app for a live account. No key, signing or exchange action was used.
61
+
62
+ ## Hyperliquid factual recheck - 2026-11-12
63
+
64
+ Rechecked the desk-quoted funding cap, mark-price inputs, market-order notionals and `predictedFundings` intervals against the official [funding](https://hyperliquid.gitbook.io/hyperliquid-docs/trading/funding), [robust price indices](https://hyperliquid.gitbook.io/hyperliquid-docs/trading/robust-price-indices) and [contract specifications](https://hyperliquid.gitbook.io/hyperliquid-docs/trading/contract-specifications) pages, plus unsigned mainnet `POST /info` reads. No key, signing or exchange action was used. Earlier dated observations above are unchanged.
65
+
66
+ The funding page caps funding at 0.5% per hour and says the cap and interval do not depend on the asset. The API reference still said 4% per hour. `fundingHistory` for `INIT` from 2026-10-25 through this read returned 434 hourly rows, minimum -0.005, maximum 0.0000125, with the absolute value touching 0.005 and never exceeding it. That matches the published cap for this window. It does not prove older history never exceeded it.
67
+
68
+ Mark price is the median of three inputs: the oracle plus a 150-second EMA of (Hyperliquid mid minus oracle); the median of best bid, best ask and last trade; and the median of Binance, OKX, Bybit, Gate IO and MEXC perp mids with weights 3, 2, 2, 1 and 1. When exactly two of those inputs exist, the 30-second EMA of the Hyperliquid median is added. The second input is not the book mid. Mark price is used for margining, liquidation, unrealized PnL and TP/SL.
69
+
70
+ Maximum market-order notional is $30,000,000 when max leverage is at least 25, $5,000,000 for [20, 25), $2,000,000 for [10, 20), and otherwise $500,000. Limit orders are 10 times that. The previous parenthetical named only the top and bottom bands.
71
+
72
+ `predictedFundings` is documented for the first perp dex and still returns `BinPerp`, `HlPerp`, `BybitPerp`. On this read every `HlPerp` interval was 1 (235 coins). BinPerp intervals were 4h for 125, 8h for 63 and 1h for 1, with 21 payloads omitting `fundingIntervalHours` and 25 null. BybitPerp intervals were 4h for 118, 8h for 67 and 1h for 1, with 49 null and none omitting the field. The 1h coin was `INIT` on both CEX venues. BTC, ETH and DOGE were 8h on both. `IP`, `MKR` and `TON` still omitted the BinPerp field; their BybitPerp slot was null. The 2026-08-28 counts in the market-data skill stay as that day's census.
@@ -60,7 +60,7 @@ python3 scripts/research_dataset.py \
60
60
  | `unavailable` | A source or validation failure prevents a trustworthy requested dataset | `1` |
61
61
  | Invalid arguments or failed verification | The requested operation did not pass | `2` for arguments; `1` for verification |
62
62
 
63
- An internally consistent incomplete bundle remains incomplete after verification. Check the process exit code and reported result; the presence of files is not success. A failure before a bundle can be written may return only a diagnostic, so retain that output too.
63
+ An internally consistent incomplete bundle remains incomplete after verification. Check the process exit code and reported result; the presence of files is not success. A failure before a bundle can be written may return only a diagnostic, so retain that output too. A write error after the output directory is reserved exits 1 (`output_unavailable`).
64
64
 
65
65
  Hashes and replay verify **internal consistency**, not independent provenance. Someone able to rewrite all files can manufacture a consistent bundle. Preserve the manifest's hash in a separate run record if later accidental changes need to be detectable, and keep source trust separate from local integrity.
66
66
 
package/docs/STOP_COST.md CHANGED
@@ -6,7 +6,7 @@ A stop is a trigger, not a fill. When it fires it becomes a market order: a long
6
6
 
7
7
  ## Run it
8
8
 
9
- From the root of a checkout of the default branch, `main`, with Python 3's standard library:
9
+ From the root of a checkout, with Python 3's standard library:
10
10
 
11
11
  ```bash
12
12
  python3 scripts/stop_cost.py --coin ETH --entry 3000 --stop 2900 --equity 10200 --risk-pct 0.5
@@ -19,7 +19,7 @@ Then start with the desk's operating model:
19
19
 
20
20
  ## What loads
21
21
 
22
- + **Seventeen skills**: Hyperliquid setup, market data, account state, orders, positions, WebSocket feeds, advanced actions and a compact API reference, plus the desk skills for the trade lifecycle, risk limits and sizing, execution, monitoring, post-trade review, incidents and the strategy lab.
22
+ + **Seventeen skills**: the bootstrap, Hyperliquid setup, market data, account state, orders, positions, WebSocket feeds, advanced actions and a compact API reference, plus the desk skills for the operating model, the trade lifecycle, risk limits and sizing, execution, monitoring, post-trade review, incidents and the strategy lab.
23
23
  + **Seven roles as subagents** from `agents/`: Desk Lead, Market Analyst, Research Analyst, Strategist, Risk Manager, Execution Trader and Trade Reviewer. Only the Execution Trader writes to the exchange.
24
24
  + **The desk process** from `desk-operating-model`: load it before delegating work. The repository's `rules/` directory is declared for Cursor; Claude Code does not automatically load it as a plugin component.
25
25
  + **An exchange-write hook.** Claude Code asks for confirmation when a Bash command or a named script matches a Hyperliquid write. The hook does not follow imports or cover every possible route, and it cannot bind a send to a ticket. It supplements the ticket process and verified native approval coverage.
@@ -29,7 +29,7 @@ Then start with the desk's operating model:
29
29
  Ask the desk for a market brief, for example "Brief me on ETH". The reads use Hyperliquid's public `/info` endpoint, with no wallet or account. The same read works from a terminal:
30
30
 
31
31
  ```bash
32
- git clone --depth 1 --branch v1.7.0 https://github.com/galleonlabs/hypergrok-trading-desk.git
32
+ git clone --depth 1 --branch v1.7.2 https://github.com/galleonlabs/hypergrok-trading-desk.git
33
33
  cd hypergrok-trading-desk
34
34
  python3 scripts/opening_bell.py --coin ETH
35
35
  ```
@@ -15,7 +15,7 @@ Load `desk-operating-model` before asking the roles to act.
15
15
 
16
16
  ## What loads
17
17
 
18
- + **Seventeen skills**: Hyperliquid setup, market data, account state, orders, positions, WebSocket feeds, advanced actions and a compact API reference, plus the desk skills for the trade lifecycle, risk limits and sizing, execution, monitoring, post-trade review, incidents and the strategy lab.
18
+ + **Seventeen skills**: the bootstrap, Hyperliquid setup, market data, account state, orders, positions, WebSocket feeds, advanced actions and a compact API reference, plus the desk skills for the operating model, the trade lifecycle, risk limits and sizing, execution, monitoring, post-trade review, incidents and the strategy lab.
19
19
  + **Roles as labelled passes.** This plugin's Codex entry installs skills without registering `agents/` as native subagents. Run the seven roles as labelled passes using each role's system prompt. Only the Execution Trader pass writes to the exchange.
20
20
 
21
21
  The Claude Code exchange-write hook does not load in Codex. The desk's approval by ticket id still applies.
@@ -25,7 +25,7 @@ The Claude Code exchange-write hook does not load in Codex. The desk's approval
25
25
  Ask for a market brief, for example "Brief me on ETH". The reads use Hyperliquid's public `/info` endpoint, with no wallet or account. The same read works from a terminal:
26
26
 
27
27
  ```bash
28
- git clone --depth 1 --branch v1.7.0 https://github.com/galleonlabs/hypergrok-trading-desk.git
28
+ git clone --depth 1 --branch v1.7.2 https://github.com/galleonlabs/hypergrok-trading-desk.git
29
29
  cd hypergrok-trading-desk
30
30
  python3 scripts/opening_bell.py --coin ETH
31
31
  ```
@@ -7,7 +7,7 @@ HyperGrok turns Cursor into a Hyperliquid trading desk: seven roles and seventee
7
7
  Clone the reviewed release:
8
8
 
9
9
  ```bash
10
- git clone --depth 1 --branch v1.7.0 https://github.com/galleonlabs/hypergrok-trading-desk.git
10
+ git clone --depth 1 --branch v1.7.2 https://github.com/galleonlabs/hypergrok-trading-desk.git
11
11
  ```
12
12
 
13
13
  Open the `hypergrok-trading-desk` folder in Cursor and enable the plugin; `.cursor-plugin/plugin.json` points it at the skills, roles and rules. The plugin is also listed on [cursor.directory](https://cursor.directory/plugins/hypergrok).
@@ -16,7 +16,7 @@ Load `desk-operating-model` before asking the roles to act.
16
16
 
17
17
  ## What loads
18
18
 
19
- + **Seventeen skills**: Hyperliquid setup, market data, account state, orders, positions, WebSocket feeds, advanced actions and a compact API reference, plus the desk skills for the trade lifecycle, risk limits and sizing, execution, monitoring, post-trade review, incidents and the strategy lab.
19
+ + **Seventeen skills**: the bootstrap, Hyperliquid setup, market data, account state, orders, positions, WebSocket feeds, advanced actions and a compact API reference, plus the desk skills for the operating model, the trade lifecycle, risk limits and sizing, execution, monitoring, post-trade review, incidents and the strategy lab.
20
20
  + **Seven roles** from `agents/`: Desk Lead, Market Analyst, Research Analyst, Strategist, Risk Manager, Execution Trader and Trade Reviewer. Only the Execution Trader writes to the exchange.
21
21
  + **The desk rule** from `rules/hypergrok-team.mdc`: analysis is not approval, and a send needs your exact approval phrase with the ticket id.
22
22
 
@@ -14,7 +14,7 @@ Load `desk-operating-model` before asking the roles to act.
14
14
 
15
15
  ## What loads
16
16
 
17
- + **Seventeen skills**: Hyperliquid setup, market data, account state, orders, positions, WebSocket feeds, advanced actions and a compact API reference, plus the desk skills for the trade lifecycle, risk limits and sizing, execution, monitoring, post-trade review, incidents and the strategy lab.
17
+ + **Seventeen skills**: the bootstrap, Hyperliquid setup, market data, account state, orders, positions, WebSocket feeds, advanced actions and a compact API reference, plus the desk skills for the operating model, the trade lifecycle, risk limits and sizing, execution, monitoring, post-trade review, incidents and the strategy lab.
18
18
  + **`GEMINI.md`**, loaded every session. It names the roles and repeats the desk rule's approval paragraph word for word: analysis is not approval, and a send needs your exact approval phrase with the ticket id.
19
19
  + **Roles as labelled passes.** This extension does not register the role files as native subagents. Run the seven roles in `agents/` as labelled passes using their system prompts. Only the Execution Trader pass writes to the exchange.
20
20
 
@@ -25,7 +25,7 @@ The Claude Code exchange-write hook does not load in Gemini CLI.
25
25
  Ask for a market brief, for example "Brief me on ETH". The reads use Hyperliquid's public `/info` endpoint, with no wallet or account. The same read works from a terminal:
26
26
 
27
27
  ```bash
28
- git clone --depth 1 --branch v1.7.0 https://github.com/galleonlabs/hypergrok-trading-desk.git
28
+ git clone --depth 1 --branch v1.7.2 https://github.com/galleonlabs/hypergrok-trading-desk.git
29
29
  cd hypergrok-trading-desk
30
30
  python3 scripts/opening_bell.py --coin ETH
31
31
  ```
@@ -7,7 +7,7 @@ HyperGrok turns Grok Build into a Hyperliquid trading desk: seven roles and seve
7
7
  Install the reviewed release:
8
8
 
9
9
  ```bash
10
- grok plugin install galleonlabs/hypergrok-trading-desk@v1.7.0 --trust
10
+ grok plugin install galleonlabs/hypergrok-trading-desk@v1.7.2 --trust
11
11
  ```
12
12
 
13
13
  Or register this repository's Grok marketplace, which pins the same release, and install by name:
@@ -17,13 +17,13 @@ grok plugin marketplace add galleonlabs/hypergrok-trading-desk
17
17
  grok plugin install hypergrok --trust
18
18
  ```
19
19
 
20
- The installation format was tested with Grok Build 1.0.30 for an earlier release; 1.6.1 has no native installation proof yet.
20
+ The installation format was tested with Grok Build 1.0.30 for an earlier release. A native installation of the current release has not been verified.
21
21
 
22
22
  Load `desk-operating-model` before asking the roles to act.
23
23
 
24
24
  ## What loads
25
25
 
26
- + **Seventeen skills**: Hyperliquid setup, market data, account state, orders, positions, WebSocket feeds, advanced actions and a compact API reference, plus the desk skills for the trade lifecycle, risk limits and sizing, execution, monitoring, post-trade review, incidents and the strategy lab.
26
+ + **Seventeen skills**: the bootstrap, Hyperliquid setup, market data, account state, orders, positions, WebSocket feeds, advanced actions and a compact API reference, plus the desk skills for the operating model, the trade lifecycle, risk limits and sizing, execution, monitoring, post-trade review, incidents and the strategy lab.
27
27
  + **Seven roles** from `agents/`: Desk Lead, Market Analyst, Research Analyst, Strategist, Risk Manager, Execution Trader and Trade Reviewer. Only the Execution Trader writes to the exchange.
28
28
 
29
29
  Grok Build reports the skills and agents directories; loading `rules/` is not verified, and the Claude Code exchange-write hook does not load. The desk's approval by ticket id still applies.
@@ -33,7 +33,7 @@ Grok Build reports the skills and agents directories; loading `rules/` is not ve
33
33
  Ask for a market brief, for example "Brief me on ETH". The reads use Hyperliquid's public `/info` endpoint, with no wallet or account. The same read works from a terminal:
34
34
 
35
35
  ```bash
36
- git clone --depth 1 --branch v1.7.0 https://github.com/galleonlabs/hypergrok-trading-desk.git
36
+ git clone --depth 1 --branch v1.7.2 https://github.com/galleonlabs/hypergrok-trading-desk.git
37
37
  cd hypergrok-trading-desk
38
38
  python3 scripts/opening_bell.py --coin ETH
39
39
  ```
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hypergrok",
3
- "version": "1.7.0",
3
+ "version": "1.7.2",
4
4
  "description": "Hyperliquid trading desk skills for research, risk, execution and review: seventeen skills and the desk approval rule. Starts on public market data; a trade needs a Risk PASS and your approval by ticket id.",
5
5
  "contextFileName": "GEMINI.md"
6
6
  }