hyperweave 0.3.4__tar.gz → 0.3.5__tar.gz

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 (424) hide show
  1. {hyperweave-0.3.4 → hyperweave-0.3.5}/CHANGELOG.md +27 -0
  2. {hyperweave-0.3.4 → hyperweave-0.3.5}/PKG-INFO +3 -3
  3. {hyperweave-0.3.4 → hyperweave-0.3.5}/README.md +2 -2
  4. hyperweave-0.3.5/assets/examples/telemetry/receipt_claude-code_medium.svg +433 -0
  5. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/telemetry/receipt_codex_large.svg +52 -50
  6. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/telemetry/receipt_voltage_xlarge.svg +168 -173
  7. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/telemetry/rhythm_strip_voltage_xlarge.svg +88 -104
  8. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/_version.py +2 -2
  9. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/resolver.py +114 -42
  10. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/treemap.py +6 -3
  11. hyperweave-0.3.5/src/hyperweave/data/telemetry/model-pricing.yaml +76 -0
  12. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/receipt.svg.j2 +48 -24
  13. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_telemetry_integration.py +9 -8
  14. hyperweave-0.3.4/assets/examples/telemetry/receipt_claude-code_medium.svg +0 -310
  15. hyperweave-0.3.4/src/hyperweave/data/telemetry/model-pricing.yaml +0 -43
  16. {hyperweave-0.3.4 → hyperweave-0.3.5}/.dockerignore +0 -0
  17. {hyperweave-0.3.4 → hyperweave-0.3.5}/.github/workflows/ci.yml +0 -0
  18. {hyperweave-0.3.4 → hyperweave-0.3.5}/.github/workflows/deploy.yml +0 -0
  19. {hyperweave-0.3.4 → hyperweave-0.3.5}/.github/workflows/publish.yml +0 -0
  20. {hyperweave-0.3.4 → hyperweave-0.3.5}/.gitignore +0 -0
  21. {hyperweave-0.3.4 → hyperweave-0.3.5}/.pre-commit-config.yaml +0 -0
  22. {hyperweave-0.3.4 → hyperweave-0.3.5}/Dockerfile +0 -0
  23. {hyperweave-0.3.4 → hyperweave-0.3.5}/LICENSE +0 -0
  24. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/buttons/button-liquid.svg +0 -0
  25. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/cards/card-butterfly.svg +0 -0
  26. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/cards/card-python.svg +0 -0
  27. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/cards/card-sunflower.svg +0 -0
  28. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/cards/card-waves.svg +0 -0
  29. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/badge_critical.svg +0 -0
  30. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/badge_passing.svg +0 -0
  31. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/badge_warning.svg +0 -0
  32. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/banner.svg +0 -0
  33. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/icons/discord.svg +0 -0
  34. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/icons/notion.svg +0 -0
  35. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/icons/reddit.svg +0 -0
  36. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/icons/spotify.svg +0 -0
  37. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/icons/youtube.svg +0 -0
  38. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/marquee_counter.svg +0 -0
  39. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/marquee_horizontal.svg +0 -0
  40. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/marquee_vertical.svg +0 -0
  41. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/profile-cards/chart_stars_full.svg +0 -0
  42. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/profile-cards/stats.svg +0 -0
  43. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/brutalist-emerald/strip.svg +0 -0
  44. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/badge_critical.svg +0 -0
  45. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/badge_passing.svg +0 -0
  46. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/badge_warning.svg +0 -0
  47. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/banner.svg +0 -0
  48. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/icons/bluesky.svg +0 -0
  49. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/icons/github.svg +0 -0
  50. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/icons/instagram.svg +0 -0
  51. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/icons/mastodon.svg +0 -0
  52. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/icons/x.svg +0 -0
  53. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/marquee_counter.svg +0 -0
  54. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/marquee_horizontal.svg +0 -0
  55. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/marquee_vertical.svg +0 -0
  56. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/profile-cards/chart_stars_full.svg +0 -0
  57. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/profile-cards/stats.svg +0 -0
  58. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/chrome-horizon/strip.svg +0 -0
  59. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/telemetry/master_card.svg +0 -0
  60. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/telemetry/receipt.svg +0 -0
  61. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/examples/telemetry/rhythm_strip.svg +0 -0
  62. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/footers/inneraura-footer-liquid.svg +0 -0
  63. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/footers/inneraura-footer-purple.svg +0 -0
  64. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/footers/inneraura-footer.svg +0 -0
  65. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/hyperweave-banner.svg +0 -0
  66. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/icons/cobalt-sapphire-discord.svg +0 -0
  67. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/icons/cobalt-sapphire-docs.svg +0 -0
  68. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/icons/cobalt-sapphire-github.svg +0 -0
  69. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/icons/cobalt-sapphire-instagram.svg +0 -0
  70. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/icons/cobalt-sapphire-linkedin.svg +0 -0
  71. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/icons/cobalt-sapphire-tiktok.svg +0 -0
  72. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/icons/cobalt-sapphire-x.svg +0 -0
  73. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/icons/cobalt-sapphire-youtube.svg +0 -0
  74. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/marquees/badge-showcase-triple.svg +0 -0
  75. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/marquees/genome-marquee-triple.svg +0 -0
  76. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/marquees/sample-badges.svg +0 -0
  77. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/mintlify-assets/404.svg +0 -0
  78. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/mintlify-assets/callout-icons.svg +0 -0
  79. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/mintlify-assets/divider.svg +0 -0
  80. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/mintlify-assets/favicon.svg +0 -0
  81. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/mintlify-assets/hero-banner.svg +0 -0
  82. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/mintlify-assets/hyperweave-banner-v2.svg +0 -0
  83. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/mintlify-assets/hyperweave-navbar-logo.svg +0 -0
  84. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/mintlify-assets/loader.svg +0 -0
  85. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/mintlify-assets/og-image.svg +0 -0
  86. {hyperweave-0.3.4 → hyperweave-0.3.5}/assets/timelines/hyperweave-roadmap.svg +0 -0
  87. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/assets/favicon.svg +0 -0
  88. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/assets/hyperweave-banner.svg +0 -0
  89. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/assets/hyperweave-navbar-logo.svg +0 -0
  90. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/assets/og-image.svg +0 -0
  91. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/explanation/architecture.mdx +0 -0
  92. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/explanation/camo-compatibility.mdx +0 -0
  93. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/explanation/cim-compliance.mdx +0 -0
  94. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/explanation/genome-profile-system.mdx +0 -0
  95. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/explanation/metadata-tiers.mdx +0 -0
  96. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/how-to/add-motion-to-badges.mdx +0 -0
  97. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/how-to/create-session-receipts.mdx +0 -0
  98. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/how-to/set-up-claude-code-hooks.mdx +0 -0
  99. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/how-to/use-live-data-badges.mdx +0 -0
  100. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/introduction.mdx +0 -0
  101. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/mint.json +0 -0
  102. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/quickstart.mdx +0 -0
  103. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/reference/cli.mdx +0 -0
  104. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/reference/compose-spec.mdx +0 -0
  105. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/reference/genomes.mdx +0 -0
  106. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/reference/http-api.mdx +0 -0
  107. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/reference/mcp-tools.mdx +0 -0
  108. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/reference/motions.mdx +0 -0
  109. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/reference/telemetry-contract.mdx +0 -0
  110. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/spec/hyperweave-protocol.mdx +0 -0
  111. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/tutorials/build-an-artifact-kit.mdx +0 -0
  112. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/tutorials/compose-your-first-badge.mdx +0 -0
  113. {hyperweave-0.3.4 → hyperweave-0.3.5}/docs/tutorials/install-session-telemetry.mdx +0 -0
  114. {hyperweave-0.3.4 → hyperweave-0.3.5}/fly.toml +0 -0
  115. {hyperweave-0.3.4 → hyperweave-0.3.5}/hooks/install.py +0 -0
  116. {hyperweave-0.3.4 → hyperweave-0.3.5}/hooks/session_end.sh +0 -0
  117. {hyperweave-0.3.4 → hyperweave-0.3.5}/justfile +0 -0
  118. {hyperweave-0.3.4 → hyperweave-0.3.5}/pyproject.toml +0 -0
  119. {hyperweave-0.3.4 → hyperweave-0.3.5}/scripts/extract_font_metrics.py +0 -0
  120. {hyperweave-0.3.4 → hyperweave-0.3.5}/scripts/extract_glyphs.py +0 -0
  121. {hyperweave-0.3.4 → hyperweave-0.3.5}/scripts/generate_proofset.py +0 -0
  122. {hyperweave-0.3.4 → hyperweave-0.3.5}/scripts/probe_live_stats.py +0 -0
  123. {hyperweave-0.3.4 → hyperweave-0.3.5}/scripts/probe_star_history.py +0 -0
  124. {hyperweave-0.3.4 → hyperweave-0.3.5}/scripts/stress_test.py +0 -0
  125. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/__init__.py +0 -0
  126. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/__main__.py +0 -0
  127. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/cli.py +0 -0
  128. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/__init__.py +0 -0
  129. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/assembler.py +0 -0
  130. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/bar_chart.py +0 -0
  131. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/context.py +0 -0
  132. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/engine.py +0 -0
  133. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/lanes.py +0 -0
  134. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/layout.py +0 -0
  135. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/palette.py +0 -0
  136. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/reasoning.py +0 -0
  137. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/resolvers/__init__.py +0 -0
  138. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/resolvers/chart.py +0 -0
  139. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/resolvers/stats.py +0 -0
  140. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/rhythm.py +0 -0
  141. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/rhythm_strip.py +0 -0
  142. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/compose/validate_paradigms.py +0 -0
  143. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/config/__init__.py +0 -0
  144. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/config/genome_validator.py +0 -0
  145. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/config/loader.py +0 -0
  146. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/config/registry.py +0 -0
  147. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/config/settings.py +0 -0
  148. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/connectors/__init__.py +0 -0
  149. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/connectors/arxiv.py +0 -0
  150. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/connectors/base.py +0 -0
  151. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/connectors/cache.py +0 -0
  152. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/connectors/github.py +0 -0
  153. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/connectors/rest.py +0 -0
  154. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/core/__init__.py +0 -0
  155. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/core/cell_layout.py +0 -0
  156. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/core/color.py +0 -0
  157. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/core/contracts.py +0 -0
  158. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/core/enums.py +0 -0
  159. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/core/font_metrics.py +0 -0
  160. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/core/models.py +0 -0
  161. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/core/paradigm.py +0 -0
  162. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/core/schema.py +0 -0
  163. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/core/state.py +0 -0
  164. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/core/text.py +0 -0
  165. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/core/thresholds.py +0 -0
  166. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/badge_modes.yaml +0 -0
  167. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/css/accessibility.css +0 -0
  168. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/css/bridge.css +0 -0
  169. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/css/expression.css +0 -0
  170. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/css/status.css +0 -0
  171. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/font-metrics/chakra-petch.json +0 -0
  172. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/font-metrics/inter.json +0 -0
  173. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/font-metrics/jetbrains-mono.json +0 -0
  174. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/font-metrics/orbitron.json +0 -0
  175. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/fonts/barlow-condensed-700.b64 +0 -0
  176. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/fonts/barlow-condensed-700.meta.json +0 -0
  177. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/fonts/barlow-condensed-900.b64 +0 -0
  178. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/fonts/barlow-condensed-900.meta.json +0 -0
  179. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/fonts/chakra-petch.b64 +0 -0
  180. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/fonts/chakra-petch.meta.json +0 -0
  181. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/fonts/jetbrains-mono.b64 +0 -0
  182. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/fonts/jetbrains-mono.meta.json +0 -0
  183. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/fonts/orbitron.b64 +0 -0
  184. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/fonts/orbitron.meta.json +0 -0
  185. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/genomes/automata.json +0 -0
  186. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/genomes/brutalist.json +0 -0
  187. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/genomes/chrome.json +0 -0
  188. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/genomes/telemetry-claude-code.json +0 -0
  189. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/genomes/telemetry-codex.json +0 -0
  190. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/genomes/telemetry-cream.json +0 -0
  191. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/genomes/telemetry-voltage.json +0 -0
  192. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/glyphs.json +0 -0
  193. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/motions/border/chromatic-pulse.yaml +0 -0
  194. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/motions/border/corner-trace.yaml +0 -0
  195. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/motions/border/dual-orbit.yaml +0 -0
  196. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/motions/border/entanglement.yaml +0 -0
  197. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/motions/border/rimrun.yaml +0 -0
  198. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/motions/static.yaml +0 -0
  199. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/paradigms/brutalist.yaml +0 -0
  200. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/paradigms/cellular.yaml +0 -0
  201. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/paradigms/chrome.yaml +0 -0
  202. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/paradigms/default.yaml +0 -0
  203. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/policies/normal.json +0 -0
  204. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/policies/permissive.json +0 -0
  205. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/policies/ungoverned.json +0 -0
  206. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/profiles/brutalist.contract.json +0 -0
  207. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/profiles/brutalist.yaml +0 -0
  208. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/profiles/chrome.contract.json +0 -0
  209. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/profiles/chrome.yaml +0 -0
  210. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/reasoning/__init__.py +0 -0
  211. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/reasoning/brutalist.yaml +0 -0
  212. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/specimens.yaml +0 -0
  213. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/telemetry/runtimes/claude-code.yaml +0 -0
  214. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/telemetry/runtimes/codex.yaml +0 -0
  215. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/telemetry/stage-config.yaml +0 -0
  216. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/telemetry/stage-labels.yaml +0 -0
  217. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/telemetry/tool-colors.yaml +0 -0
  218. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/arrow.json +0 -0
  219. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/aurora.json +0 -0
  220. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/beacon.json +0 -0
  221. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/bracket3d.json +0 -0
  222. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/chevron.json +0 -0
  223. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/crosshair.json +0 -0
  224. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/diamond.json +0 -0
  225. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/rocket.json +0 -0
  226. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/rules/bar.json +0 -0
  227. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/rules/dashed.json +0 -0
  228. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/rules/five-wave.json +0 -0
  229. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/rules/spectral.json +0 -0
  230. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/rules/straight.json +0 -0
  231. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/rules/wave.json +0 -0
  232. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/data/terminals/stijl.json +0 -0
  233. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/kit.py +0 -0
  234. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/mcp/__init__.py +0 -0
  235. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/mcp/__main__.py +0 -0
  236. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/mcp/server.py +0 -0
  237. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/py.typed +0 -0
  238. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/render/__init__.py +0 -0
  239. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/render/chart_engine.py +0 -0
  240. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/render/fonts.py +0 -0
  241. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/render/glyphs.py +0 -0
  242. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/render/motion.py +0 -0
  243. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/render/templates.py +0 -0
  244. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/serve/__init__.py +0 -0
  245. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/serve/app.py +0 -0
  246. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/serve/data_tokens.py +0 -0
  247. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/telemetry/__init__.py +0 -0
  248. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/telemetry/capture.py +0 -0
  249. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/telemetry/codex_parser.py +0 -0
  250. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/telemetry/contract.py +0 -0
  251. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/telemetry/corrections.py +0 -0
  252. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/telemetry/cost.py +0 -0
  253. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/telemetry/models.py +0 -0
  254. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/telemetry/parser.py +0 -0
  255. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/telemetry/receipt_paths.py +0 -0
  256. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/telemetry/runtimes.py +0 -0
  257. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/telemetry/stages.py +0 -0
  258. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/chart-area.svg.j2 +0 -0
  259. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/chart-axes.svg.j2 +0 -0
  260. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/chart-empty-state.svg.j2 +0 -0
  261. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/chart-gridlines.svg.j2 +0 -0
  262. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/chart-markers/circle.svg.j2 +0 -0
  263. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/chart-markers/diamond.svg.j2 +0 -0
  264. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/chart-markers/endpoint-diamond.svg.j2 +0 -0
  265. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/chart-markers/endpoint-rect.svg.j2 +0 -0
  266. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/chart-markers/rect.svg.j2 +0 -0
  267. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/chart-milestone-brutalist.svg.j2 +0 -0
  268. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/chart-milestone.svg.j2 +0 -0
  269. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/chart-polyline.svg.j2 +0 -0
  270. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/filter.svg.j2 +0 -0
  271. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/glyph-inline.svg.j2 +0 -0
  272. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/glyph.svg.j2 +0 -0
  273. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/gradient.svg.j2 +0 -0
  274. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/metadata.svg.j2 +0 -0
  275. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/metric.svg.j2 +0 -0
  276. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/phase-segment.svg.j2 +0 -0
  277. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/rule.svg.j2 +0 -0
  278. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/status.svg.j2 +0 -0
  279. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/components/terminal.svg.j2 +0 -0
  280. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/document.svg.j2 +0 -0
  281. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/error-badge.svg.j2 +0 -0
  282. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/badge/brutalist-content.j2 +0 -0
  283. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/badge/brutalist-dark-content.j2 +0 -0
  284. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/badge/brutalist-defs.j2 +0 -0
  285. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/badge/brutalist-light-content.j2 +0 -0
  286. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/badge/cellular-content.j2 +0 -0
  287. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/badge/cellular-defs.j2 +0 -0
  288. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/badge/chrome-content.j2 +0 -0
  289. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/badge/chrome-defs.j2 +0 -0
  290. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/badge/default-content.j2 +0 -0
  291. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/badge/default-defs.j2 +0 -0
  292. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/badge.svg.j2 +0 -0
  293. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/catalog.svg.j2 +0 -0
  294. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/chart/brutalist-content.j2 +0 -0
  295. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/chart/brutalist-dark-content.j2 +0 -0
  296. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/chart/brutalist-defs.j2 +0 -0
  297. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/chart/brutalist-light-content.j2 +0 -0
  298. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/chart/cellular-content.j2 +0 -0
  299. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/chart/cellular-defs.j2 +0 -0
  300. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/chart/chrome-content.j2 +0 -0
  301. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/chart/chrome-defs.j2 +0 -0
  302. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/chart.svg.j2 +0 -0
  303. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/divider/brutalist-seam.svg.j2 +0 -0
  304. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/divider/chrome-band.svg.j2 +0 -0
  305. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/divider.svg.j2 +0 -0
  306. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/icon/brutalist-content.j2 +0 -0
  307. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/icon/brutalist-defs.j2 +0 -0
  308. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/icon/cellular-content.j2 +0 -0
  309. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/icon/cellular-defs.j2 +0 -0
  310. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/icon/chrome-content.j2 +0 -0
  311. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/icon/chrome-defs.j2 +0 -0
  312. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/icon/default-content.j2 +0 -0
  313. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/icon/default-defs.j2 +0 -0
  314. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/icon.svg.j2 +0 -0
  315. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-content.j2 +0 -0
  316. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-defs.j2 +0 -0
  317. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/marquee-horizontal/brutalist-overlay.j2 +0 -0
  318. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/marquee-horizontal/cellular-content.j2 +0 -0
  319. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/marquee-horizontal/cellular-defs.j2 +0 -0
  320. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/marquee-horizontal/cellular-overlay.j2 +0 -0
  321. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/marquee-horizontal/chrome-content.j2 +0 -0
  322. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/marquee-horizontal/chrome-defs.j2 +0 -0
  323. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/marquee-horizontal/chrome-overlay.j2 +0 -0
  324. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/marquee-horizontal/default-content.j2 +0 -0
  325. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/marquee-horizontal/default-defs.j2 +0 -0
  326. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/marquee-horizontal.svg.j2 +0 -0
  327. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/master-card.svg.j2 +0 -0
  328. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/rhythm-strip.svg.j2 +0 -0
  329. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/stats/brutalist-content.j2 +0 -0
  330. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/stats/brutalist-dark-content.j2 +0 -0
  331. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/stats/brutalist-defs.j2 +0 -0
  332. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/stats/brutalist-light-content.j2 +0 -0
  333. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/stats/cellular-content.j2 +0 -0
  334. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/stats/cellular-defs.j2 +0 -0
  335. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/stats/chrome-content.j2 +0 -0
  336. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/stats/chrome-defs.j2 +0 -0
  337. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/stats.svg.j2 +0 -0
  338. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/brutalist-content.j2 +0 -0
  339. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/brutalist-dark-content.j2 +0 -0
  340. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/brutalist-defs.j2 +0 -0
  341. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/brutalist-light-content.j2 +0 -0
  342. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/brutalist-status.j2 +0 -0
  343. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/cellular-content.j2 +0 -0
  344. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/cellular-defs.j2 +0 -0
  345. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/cellular-status.j2 +0 -0
  346. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/chrome-content.j2 +0 -0
  347. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/chrome-defs.j2 +0 -0
  348. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/chrome-status.j2 +0 -0
  349. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/default-content.j2 +0 -0
  350. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/default-defs.j2 +0 -0
  351. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip/default-status.j2 +0 -0
  352. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/frames/strip.svg.j2 +0 -0
  353. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/motions/border/chromatic-pulse.svg.j2 +0 -0
  354. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/motions/border/corner-trace.svg.j2 +0 -0
  355. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/motions/border/dual-orbit.svg.j2 +0 -0
  356. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/motions/border/entanglement.svg.j2 +0 -0
  357. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/motions/border/rimrun.svg.j2 +0 -0
  358. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/partials/provider-glyphs.svg.j2 +0 -0
  359. {hyperweave-0.3.4 → hyperweave-0.3.5}/src/hyperweave/templates/partials/state-signal-cascade.j2 +0 -0
  360. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/__init__.py +0 -0
  361. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/conftest.py +0 -0
  362. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/fixtures/codex_session.jsonl +0 -0
  363. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/fixtures/codex_session_patches.jsonl +0 -0
  364. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/fixtures/github_contributions/synthetic.html +0 -0
  365. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/fixtures/session.json +0 -0
  366. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/fixtures/session.jsonl +0 -0
  367. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/fixtures/synthetic_session.jsonl +0 -0
  368. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/helpers.py +0 -0
  369. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/snapshots/url_stability/divider_band_chrome_static.svg +0 -0
  370. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/snapshots/url_stability/icon_github_chrome_static.svg +0 -0
  371. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_assembler.py +0 -0
  372. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_badge_brutalist_dark.py +0 -0
  373. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_badge_cellular.py +0 -0
  374. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_badge_layout.py +0 -0
  375. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_badge_mode.py +0 -0
  376. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_chart_engine.py +0 -0
  377. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_chart_frame.py +0 -0
  378. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_chromatic_coverage_validator.py +0 -0
  379. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_chrome_variants.py +0 -0
  380. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_codex_parser.py +0 -0
  381. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_compose_bar_chart.py +0 -0
  382. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_compose_rhythm_strip.py +0 -0
  383. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_compose_treemap.py +0 -0
  384. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_compose_variant_field.py +0 -0
  385. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_connectors.py +0 -0
  386. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_core.py +0 -0
  387. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_data_tokens.py +0 -0
  388. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_divider_cellular.py +0 -0
  389. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_divider_genome_specific.py +0 -0
  390. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_doctor.py +0 -0
  391. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_font_gating.py +0 -0
  392. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_font_metrics_chakra.py +0 -0
  393. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_genome_automata.py +0 -0
  394. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_github_scrape.py +0 -0
  395. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_install_hook.py +0 -0
  396. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_kit.py +0 -0
  397. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_marquee_v0_2_16.py +0 -0
  398. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_mcp.py +0 -0
  399. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_paradigm_cellular.py +0 -0
  400. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_paradigm_dispatch.py +0 -0
  401. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_paradigm_extensibility.py +0 -0
  402. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_parse_transcript_auto.py +0 -0
  403. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_proofset.py +0 -0
  404. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_receipt_paths.py +0 -0
  405. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_receipt_token_compliance.py +0 -0
  406. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_render.py +0 -0
  407. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_resolver_rhythm.py +0 -0
  408. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_runtime_registries.py +0 -0
  409. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_serve.py +0 -0
  410. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_serve_live_state.py +0 -0
  411. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_slot_metric_state.py +0 -0
  412. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_state_inference.py +0 -0
  413. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_stats_brutalist.py +0 -0
  414. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_stats_card.py +0 -0
  415. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_strip_brutalist_grammar.py +0 -0
  416. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_strip_cellular.py +0 -0
  417. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_strip_status_toggle.py +0 -0
  418. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_telemetry.py +0 -0
  419. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_telemetry_contract_per_stage.py +0 -0
  420. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_telemetry_skin_dispatch.py +0 -0
  421. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_tool_class_completeness.py +0 -0
  422. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_url_stability.py +0 -0
  423. {hyperweave-0.3.4 → hyperweave-0.3.5}/tests/test_variant_default_resolution.py +0 -0
  424. {hyperweave-0.3.4 → hyperweave-0.3.5}/uv.lock +0 -0
@@ -5,6 +5,33 @@ All notable changes to HyperWeave are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.5] - 2026-05-17
9
+
10
+ Receipt hero reads `token volume · $cost` with a four-cell decomposition strip below (IN / OUT / CACHED / WRITTEN), making the asymmetric cache-token math legible at a glance. Codex receipts now price tokens against the OpenAI rate card; figures previously inflated ~2× drop to actual GPT rates.
11
+
12
+ ### Added
13
+
14
+ - **Receipt decomposition strip** — four labeled cells below the hero break tokens by type (IN / OUT / CACHED / WRITTEN). Codex sessions render an em-dash in the WRITTEN cell since the runtime has no cache-write concept.
15
+ - **GPT model rates** — gpt-5.3-codex, gpt-5.2-codex, gpt-5.4, gpt-5.4-mini, gpt-5.5 added to the model pricing table; cache reads use the shared 0.1x discount.
16
+ - **Opus 4.7 model rates** — claude-opus-4-7 and claude-opus-4-7-1m entries added; previously fell through to the default block.
17
+
18
+ ### Changed
19
+
20
+ - **Receipt hero label** — "tokens billed" becomes "token volume". The aggregate stays the same; cache reads aren't priced at face value, so volume is the honest framing.
21
+ - **Receipt right-side stats** — three rows show active/total duration, calls/stages, user turns/tool errors. Both values in each row always render (e.g. `6 user turns · 0 tool errors`, `82m active · 84m total`) so receipts read consistently across sessions. Token-by-type rows moved into the decomposition strip beneath the hero.
22
+ - **Receipt treemap header** — tightens the rule-to-header gap above TOKEN MAP and adds the `·` separator between TOKEN MAP and the color legend, both matching the SESSION RHYTHM header treatment.
23
+ - **Receipt footer** — duplicated turns/errors line replaced with an italic `Cost is an estimate based on public per-token rates.` disclaimer in muted text.
24
+
25
+ ### Fixed
26
+
27
+ - **Codex receipt cost** — resolves through GPT rates instead of the Opus 4.6 default fallback. Cost figures drop ~2x to match the OpenAI rate card.
28
+ - **Treemap row spacing** — uniform 4-unit gaps between tier-1, tier-2, and tier-3 cells. Previous v0.2.21 layout had an asymmetric 8/4 step that made the top row gap look looser than the bottom.
29
+ - **Adaptive treemap zone height** — sessions populating fewer than 3 tiers (e.g., short Codex runs) now collapse the zone so the rhythm header sits close to the last cell row instead of below a large gap. Receipt total height stays 500.
30
+
31
+ ### Notes
32
+
33
+ - 1198 tests pass.
34
+
8
35
  ## [0.3.4] - 2026-05-13
9
36
 
10
37
  `install-hook` now detects Claude Code and Codex automatically. A new `hyperweave doctor` command shows hook status, transcripts, and recent receipts at a glance.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperweave
3
- Version: 0.3.4
3
+ Version: 0.3.5
4
4
  Summary: Headless visual output layer for AI agents. One API call → self-contained SVG.
5
5
  Project-URL: Repository, https://github.com/InnerAura/hyperweave
6
6
  Project-URL: Issues, https://github.com/InnerAura/hyperweave/issues
@@ -208,7 +208,7 @@ Why genome and not theme? Because brand isn't a design problem, it's an infrastr
208
208
  <tr>
209
209
  <th align="left">Profile<br/><sub>stats card</sub></th>
210
210
  <td>
211
- <img src="https://hyperweave.app/v1/stats/eli64s/brutalist.static?variant=celadon" alt="stats" width="100%"/>
211
+ <img src="https://hyperweave.app/v1/stats/eli64s/brutalist.static?variant=celadon" alt="stats" width="70%"/>
212
212
  <br/>
213
213
  <ul>
214
214
  <li><sub><code>/v1/stats/{username}/{genome}.static?variant={variant}</code></sub></li>
@@ -219,7 +219,7 @@ Why genome and not theme? Because brand isn't a design problem, it's an infrastr
219
219
  <tr>
220
220
  <th align="left">Star Chart<br/><sub>star history</sub></th>
221
221
  <td>
222
- <img src="https://hyperweave.app/v1/chart/stars/eli64s/readme-ai/brutalist.static?variant=celadon" alt="star chart" width="100%"/>
222
+ <img src="https://hyperweave.app/v1/chart/stars/eli64s/readme-ai/brutalist.static?variant=celadon" alt="star chart" width="70%"/>
223
223
  <br/>
224
224
  <ul>
225
225
  <li><sub><code>/v1/chart/stars/{owner}/{repo}/{genome}.static?variant={variant}</code></sub></li>
@@ -176,7 +176,7 @@ Why genome and not theme? Because brand isn't a design problem, it's an infrastr
176
176
  <tr>
177
177
  <th align="left">Profile<br/><sub>stats card</sub></th>
178
178
  <td>
179
- <img src="https://hyperweave.app/v1/stats/eli64s/brutalist.static?variant=celadon" alt="stats" width="100%"/>
179
+ <img src="https://hyperweave.app/v1/stats/eli64s/brutalist.static?variant=celadon" alt="stats" width="70%"/>
180
180
  <br/>
181
181
  <ul>
182
182
  <li><sub><code>/v1/stats/{username}/{genome}.static?variant={variant}</code></sub></li>
@@ -187,7 +187,7 @@ Why genome and not theme? Because brand isn't a design problem, it's an infrastr
187
187
  <tr>
188
188
  <th align="left">Star Chart<br/><sub>star history</sub></th>
189
189
  <td>
190
- <img src="https://hyperweave.app/v1/chart/stars/eli64s/readme-ai/brutalist.static?variant=celadon" alt="star chart" width="100%"/>
190
+ <img src="https://hyperweave.app/v1/chart/stars/eli64s/readme-ai/brutalist.static?variant=celadon" alt="star chart" width="70%"/>
191
191
  <br/>
192
192
  <ul>
193
193
  <li><sub><code>/v1/chart/stars/{owner}/{repo}/{genome}.static?variant={variant}</code></sub></li>
@@ -0,0 +1,433 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg"
2
+ xmlns:hw="https://hyperweave.app/hw/v1.0"
3
+ role="img"
4
+ aria-labelledby="hw-52df76a9-title hw-52df76a9-desc"
5
+ viewBox="0 0 800 500"
6
+ width="800" height="500"
7
+ shape-rendering="geometricPrecision"
8
+ data-hw-id="52df76a9-fb50-44de-9352-c0e25410e4de"
9
+ data-hw-type="receipt"
10
+ data-hw-frame="receipt"
11
+ data-hw-genome="telemetry-claude-code"
12
+ data-hw-mode="light"
13
+ data-hw-status="active"
14
+ data-hw-profile="brutalist"
15
+ data-hw-motion="static"
16
+ data-hw-generation="1"
17
+ data-hw-contract="52df76a9-fb50-44de-9352-c0e25410e4de"
18
+ data-hw-size="default"
19
+ data-hw-fonts="self-contained"
20
+ data-hw-regime="normal"
21
+ data-hw-glyph="claude-glyph"
22
+ data-hw-chromatic="telemetry-claude-code">
23
+ <title id="hw-52df76a9-title">HyperWeave receipt artifact</title>
24
+ <desc id="hw-52df76a9-desc">A receipt artifact, using telemetry-claude-code genome.</desc>
25
+ <metadata>
26
+ <hw:artifact id="52df76a9-fb50-44de-9352-c0e25410e4de" type="receipt" series="core" version="0.3.2"
27
+ xmlns:hw="https://hyperweave.app/hw/v1.0">
28
+ <hw:provenance>
29
+ <hw:generator>HyperWeave Compositor v0.3.2 (InnerAura Labs)</hw:generator>
30
+ <hw:created>2026-05-18T03:02:20.150123+00:00</hw:created>
31
+ <hw:human-directed>true</hw:human-directed>
32
+ </hw:provenance>
33
+ <hw:spec size="800x500" performance="composite-only"
34
+ theme="light" a11y="WCAG-AA" platform="github-readme"/>
35
+ </hw:artifact>
36
+ <hw:composition xmlns:hw="https://hyperweave.app/hw/v1.0">
37
+ <hw:frame>receipt</hw:frame>
38
+ <hw:genome>telemetry-claude-code@0.3.2</hw:genome>
39
+ <hw:profile>brutalist</hw:profile>
40
+ <hw:slots>
41
+ </hw:slots>
42
+ <hw:environment platform="github-readme" motion="static" status="active"/>
43
+ </hw:composition>
44
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
45
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
46
+ <rdf:Description>
47
+ <dc:title>HyperWeave receipt artifact</dc:title>
48
+ <dc:creator>HyperWeave Compositor v0.3.2 (InnerAura Labs)</dc:creator>
49
+ <dc:date>2026-05-18T03:02:20.150123+00:00</dc:date>
50
+ <dc:rights>CC BY 4.0</dc:rights>
51
+ </rdf:Description>
52
+ </rdf:RDF>
53
+ <hw:aesthetic xmlns:hw="https://hyperweave.app/hw/v1.0">
54
+ <hw:chromatic system="telemetry-claude-code" space="oklch"
55
+ palette="telemetry-claude-code" contrast-ratio="17.1:1"/>
56
+ <hw:motion vocabulary="static" physics="none"
57
+ timing="phi" duration-base="2s"
58
+ stagger-regime="contemplative" cim-compliant="true"/>
59
+ <hw:geometry form-language="" corner-radius="5px"
60
+ grid="auto" proportional-system="phi"
61
+ mathematical-basis="golden-ratio" symmetry="bilateral"/>
62
+ <hw:typography stack="'Söhne','Inter',system-ui,sans-serif, 'JetBrains Mono','IBM Plex Mono','SF Mono',ui-monospace,monospace" hierarchy="11/18/8"
63
+ weight-range="500-900" metrics-method="lut"/>
64
+ <hw:material surface="genome-native" depth="" texture="none"/>
65
+ </hw:aesthetic>
66
+ <hw:reasoning xmlns:hw="https://hyperweave.app/hw/v1.0">
67
+ <hw:intent></hw:intent>
68
+ <hw:approach></hw:approach>
69
+ <hw:tradeoffs></hw:tradeoffs>
70
+ <hw:constraints-applied>self-contained, cim-compliant, wcag-aa</hw:constraints-applied>
71
+ <hw:spatial-notes>800x500 (1.60), left-to-right</hw:spatial-notes>
72
+ </hw:reasoning>
73
+ </metadata>
74
+ <style>/* hw:css-modules: genome,accessibility,fonts */
75
+ svg, :root {
76
+ --dna-surface: #faf7f2;
77
+ --dna-surface-alt: #f3eee2;
78
+ --dna-surface-deep: #f3eee2;
79
+ --dna-ink-primary: #1a1410;
80
+ --dna-ink-muted: #5b4f44;
81
+ --dna-ink-on-accent: #faf7f2;
82
+ --dna-ink-bright: #1a1410;
83
+ --dna-ink-sub: #8a7d6e;
84
+ --dna-signal: #D97757;
85
+ --dna-signal-dim: #e89a85;
86
+ --dna-border: #d8cfbe;
87
+ --dna-border-tint: #e8dcc8;
88
+ --dna-shadow-color: #3d2f24;
89
+ --dna-shadow-opacity: 0.06;
90
+ --dna-glow: 0px;
91
+ --dna-corner: 4;
92
+ --dna-rhythm-base: 2s;
93
+ --dna-bg: #faf7f2;
94
+ --dna-bg-alt: #f3eee2;
95
+ --dna-brand-text: #1a1410;
96
+ --dna-status-passing-core: #6b8e4e;
97
+ --dna-status-warning-core: #b8881e;
98
+ --dna-status-failing-core: #b91c1c;
99
+ --dna-ink-tertiary: #8a7d6e;
100
+ --dna-ink-ghost: #8a7d6e;
101
+ --dna-border-div: #e8dcc8;
102
+ --dna-tool-explore: #2b7a99;
103
+ --dna-tool-execute: #6b8e4e;
104
+ --dna-tool-mutate: #a64273;
105
+ --dna-tool-coordinate: #b8881e;
106
+ --dna-tool-reflect: #a64273;
107
+ --dna-pill-outer-bg: transparent;
108
+ --dna-pill-outer-stroke: transparent;
109
+ --dna-pill-inner-bg: #D97757;
110
+ --dna-pill-text: #FFFFFF;
111
+ --dna-pill-rule-top: transparent;
112
+ --dna-pill-rule-bottom: transparent;
113
+ --dna-glyph-fill: #D97757;
114
+ --dna-card-border: #D97757;
115
+ --dna-card-border-top: #D97757;
116
+ --dna-card-inner-glyph: #faf7f2;
117
+ --dna-font-display: 'Söhne','Inter',system-ui,sans-serif;
118
+ --dna-font-mono: 'JetBrains Mono','IBM Plex Mono','SF Mono',ui-monospace,monospace;
119
+ --dna-sep: #d8cfbe;
120
+ --dna-status-delta-positive: #22C55E;
121
+ --dna-status-delta-negative: #DC2626;
122
+ }
123
+ .m { font-family: var(--dna-font-mono); }
124
+ .s { font-family: var(--dna-font-display); }
125
+ .ink1 { fill: var(--dna-ink-primary); }
126
+ .ink2 { fill: var(--dna-ink-muted); }
127
+ .ink3 { fill: var(--dna-ink-tertiary); }
128
+ @media (forced-colors: active) { text { fill: CanvasText; } }
129
+ /* === HyperWeave Accessibility Layer ===
130
+ * Non-negotiable media queries for motion, color scheme, and forced colors.
131
+ * Included in EVERY artifact.
132
+ *
133
+ * CAMO NOTE: @media (prefers-color-scheme) and @media (forced-colors: active)
134
+ * are INERT when served through GitHub Camo as img tags. The img element
135
+ * creates an isolated browsing context — the parent document's color scheme
136
+ * and forced-colors mode do not propagate into it. Artifacts will always
137
+ * render in their default (dark) theme on GitHub READMEs.
138
+ *
139
+ * These queries DO activate when the SVG is embedded directly (svg inline,
140
+ * object, or opened as a standalone document). This is a known accepted
141
+ * tradeoff: dark-default through Camo, adaptive in direct embed.
142
+ */
143
+
144
+ /* ── Reduced Motion ── */
145
+ @media (prefers-reduced-motion: reduce) {
146
+ .hw-logic-bit { animation: none !important; opacity: .8; }
147
+ .hw-scanner { animation: none; opacity: 0; }
148
+ *, *::before, *::after {
149
+ animation-duration: 0.01ms !important;
150
+ animation-iteration-count: 1 !important;
151
+ transition-duration: 0.01ms !important;
152
+ }
153
+ animate, animateTransform, animateMotion, set {
154
+ display: none !important;
155
+ }
156
+ }
157
+
158
+ /* ── Light Mode Override (see CAMO NOTE above — inert through img) ── */
159
+ /* Light mode: genome alleles injected by CSS assembler into per-artifact @media block. */
160
+
161
+ /* ── Forced Colors (Windows High Contrast) ── */
162
+ @media (forced-colors: active) {
163
+ text { fill: CanvasText !important; }
164
+ rect, path, circle, ellipse, polygon, polyline, line {
165
+ stroke: CanvasText;
166
+ }
167
+ .hw-frame-bg { fill: Canvas !important; }
168
+ .hw-accent-bar { fill: Highlight !important; }
169
+ .hw-signal { fill: Highlight !important; }
170
+ .hw-logic-bit { fill: Highlight !important; }
171
+ }
172
+ </style>
173
+ <defs>
174
+
175
+ <symbol id="claude-glyph" viewBox="0 0 24 24" overflow="visible">
176
+ <path d="M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z" fill="var(--dna-glyph-fill)" fill-rule="nonzero"/>
177
+ </symbol>
178
+
179
+ <symbol id="codex-glyph" viewBox="0 0 24 24" overflow="visible">
180
+ <path d="M19.503 0H4.496A4.496 4.496 0 000 4.496v15.007A4.496 4.496 0 004.496 24h15.007A4.496 4.496 0 0024 19.503V4.496A4.496 4.496 0 0019.503 0z" fill="var(--dna-glyph-fill)"/>
181
+ <path d="M9.064 3.344a4.578 4.578 0 012.285-.312c1 .115 1.891.54 2.673 1.275.01.01.024.017.037.021a.09.09 0 00.043 0 4.55 4.55 0 013.046.275l.047.022.116.057a4.581 4.581 0 012.188 2.399c.209.51.313 1.041.315 1.595a4.24 4.24 0 01-.134 1.223.123.123 0 00.03.115c.594.607.988 1.33 1.183 2.17.289 1.425-.007 2.71-.887 3.854l-.136.166a4.548 4.548 0 01-2.201 1.388.123.123 0 00-.081.076c-.191.551-.383 1.023-.74 1.494-.9 1.187-2.222 1.846-3.711 1.838-1.187-.006-2.239-.44-3.157-1.302a.107.107 0 00-.105-.024c-.388.125-.78.143-1.204.138a4.441 4.441 0 01-1.945-.466 4.544 4.544 0 01-1.61-1.335c-.152-.202-.303-.392-.414-.617a5.81 5.81 0 01-.37-.961 4.582 4.582 0 01-.014-2.298.124.124 0 00.006-.056.085.085 0 00-.027-.048 4.467 4.467 0 01-1.034-1.651 3.896 3.896 0 01-.251-1.192 5.189 5.189 0 01.141-1.6c.337-1.112.982-1.985 1.933-2.618.212-.141.413-.251.601-.33.215-.089.43-.164.646-.227a.098.098 0 00.065-.066 4.51 4.51 0 01.829-1.615 4.535 4.535 0 011.837-1.388zm3.482 10.565a.637.637 0 000 1.272h3.636a.637.637 0 100-1.272h-3.636zM8.462 9.23a.637.637 0 00-1.106.631l1.272 2.224-1.266 2.136a.636.636 0 101.095.649l1.454-2.455a.636.636 0 00.005-.64L8.462 9.23z" fill="var(--dna-card-inner-glyph)"/>
182
+ </symbol>
183
+ <clipPath id="receipt-card-shape">
184
+ <rect width="800" height="500" rx="5.5" ry="5.5"/>
185
+ </clipPath>
186
+ </defs>
187
+ <rect width="800" height="500" rx="5.5" ry="5.5" fill="var(--dna-surface)"/>
188
+
189
+ <use href="#claude-glyph" x="24" y="16" width="18" height="18"/>
190
+ <text x="50" y="31" class="s ink1" font-size="14" font-weight="700">Claude Code</text>
191
+ <text x="147" y="31" class="m ink2" font-size="11" letter-spacing="0.04em">· opus-4.7</text>
192
+ <g transform="translate(718, 14)" data-hw-zone="phase-pill">
193
+ <rect width="58" height="22" rx="0" fill="var(--dna-pill-outer-bg)"/>
194
+ <rect width="58" height="22" rx="0" fill="none" stroke="var(--dna-pill-outer-stroke)" stroke-width="0.75"/>
195
+ <rect class="anchor-live" x="2" y="2" width="54" height="18" rx="0" fill="var(--dna-pill-inner-bg)"/>
196
+ <rect x="2" y="2" width="54" height="1" fill="var(--dna-pill-rule-top)"/>
197
+ <rect x="2" y="19" width="54" height="1" fill="var(--dna-pill-rule-bottom)"/>
198
+ <text class="m" x="29" y="14" text-anchor="middle" font-size="9" font-weight="800" letter-spacing="0.28em" fill="var(--dna-pill-text)">MIXED</text>
199
+ </g>
200
+ <text x="24" y="66" class="s ink1" font-size="26" font-weight="800" letter-spacing="-0.02em"><tspan>262.4M token volume · </tspan><tspan fill="var(--dna-signal)">$175.01</tspan></text>
201
+ <text x="24" y="92" class="m ink3" font-size="10" letter-spacing="0.04em" font-weight="500"><tspan>IN 157.5K</tspan><tspan dx="8" fill="var(--dna-ink-tertiary)" font-weight="400">│</tspan><tspan dx="8">OUT 867.3K</tspan><tspan dx="8" fill="var(--dna-ink-tertiary)" font-weight="400">│</tspan><tspan dx="8">CACHED 257.6M</tspan><tspan dx="8" fill="var(--dna-ink-tertiary)" font-weight="400">│</tspan><tspan dx="8">WRITTEN 3.8M</tspan></text>
202
+ <g data-hw-zone="hero-right">
203
+ <text x="776" y="64" class="m ink2" font-size="10" text-anchor="end" letter-spacing="0.02em"
204
+ >157m active · 350m total</text>
205
+ <text x="776" y="78" class="m ink2" font-size="10" text-anchor="end" letter-spacing="0.02em"
206
+ >562 calls · 55 stages</text>
207
+ <text x="776" y="92" class="m ink2" font-size="10" text-anchor="end" letter-spacing="0.02em"
208
+ fill="var(--dna-status-failing-core)" font-weight="600">31 user turns · 15 tool errors</text>
209
+ </g>
210
+ <line x1="24" y1="104" x2="776" y2="104" stroke="var(--dna-border)" stroke-width="1"/>
211
+
212
+ <g transform="translate(24,108)" data-hw-zone="treemap">
213
+ <text y="12" class="m ink3">
214
+ <tspan font-size="7" font-weight="700" letter-spacing="0.22em">TOKEN MAP ·</tspan>
215
+ <tspan dx="2" fill="var(--dna-tool-coordinate)" font-size="9">▍</tspan>
216
+ <tspan dx="2" font-size="9" letter-spacing="0.04em">coordinate</tspan>
217
+ <tspan dx="6" fill="var(--dna-tool-execute)" font-size="9">▍</tspan>
218
+ <tspan dx="2" font-size="9" letter-spacing="0.04em">execute</tspan>
219
+ <tspan dx="6" fill="var(--dna-tool-explore)" font-size="9">▍</tspan>
220
+ <tspan dx="2" font-size="9" letter-spacing="0.04em">explore</tspan>
221
+ <tspan dx="6" fill="var(--dna-tool-mutate)" font-size="9">▍</tspan>
222
+ <tspan dx="2" font-size="9" letter-spacing="0.04em">mutate</tspan>
223
+ </text>
224
+ <text class="m ink3" x="752" y="12" font-size="9" text-anchor="end"><tspan fill="var(--dna-status-failing-core)" opacity="0.85" font-weight="700">✗N</tspan><tspan dx="3">= failed tool calls</tspan></text>
225
+
226
+ <g transform="translate(0, 22)" data-hw-tier="1" data-hw-tool="Edit">
227
+ <rect width="752" height="88" fill="var(--dna-surface-deep)"/>
228
+ <rect width="4" height="88.0" fill="var(--dna-tool-mutate)" opacity="0.85"/>
229
+ <rect width="752" height="88" fill="none" stroke="var(--dna-border)" stroke-width="0.5"/>
230
+ <text class="m ink1" font-size="13.0" font-weight="600" x="14" y="22">Edit</text>
231
+ <text class="s" font-size="38.0" font-weight="800" fill="var(--dna-tool-mutate)" x="14" y="66" letter-spacing="-0.02em">69%</text>
232
+ <text class="m ink3" font-size="10.0" x="14" y="80">709.3K · 242 calls</text>
233
+ <g transform="translate(744, 14)">
234
+ <rect x="-24" y="-10" width="22" height="14" fill="var(--dna-surface-deep)" stroke="var(--dna-status-failing-core)" stroke-opacity="0.35" stroke-width="0.5"/>
235
+ <text class="m" font-size="8" font-weight="700" fill="var(--dna-status-failing-core)" x="-13" y="0" text-anchor="middle">✗6</text>
236
+ </g>
237
+ </g>
238
+ <g transform="translate(0, 114)" data-hw-tier="2" data-hw-tool="Bash">
239
+ <rect width="359" height="32" fill="var(--dna-surface-deep)"/>
240
+ <rect width="3" height="32.0" fill="var(--dna-tool-execute)" opacity="0.85"/>
241
+ <rect width="359" height="32" fill="none" stroke="var(--dna-border)" stroke-width="0.5"/>
242
+ <text class="m ink1" font-size="9.5" font-weight="600" x="10" y="13">Bash</text>
243
+ <text class="m ink3" font-size="8.0" x="10" y="26">116.4K · 162 calls</text>
244
+ <text class="m" font-size="8" font-weight="700" fill="var(--dna-status-failing-core)" x="351" y="13" text-anchor="end">✗2</text>
245
+ </g>
246
+ <g transform="translate(363, 114)" data-hw-tier="2" data-hw-tool="Read">
247
+ <rect width="291" height="32" fill="var(--dna-surface-deep)"/>
248
+ <rect width="3" height="32.0" fill="var(--dna-tool-explore)" opacity="0.85"/>
249
+ <rect width="291" height="32" fill="none" stroke="var(--dna-border)" stroke-width="0.5"/>
250
+ <text class="m ink1" font-size="9.5" font-weight="600" x="10" y="13">Read</text>
251
+ <text class="m ink3" font-size="8.0" x="10" y="26">94.6K · 116 calls</text>
252
+ <text class="m" font-size="8" font-weight="700" fill="var(--dna-status-failing-core)" x="283" y="13" text-anchor="end">✗1</text>
253
+ </g>
254
+ <g transform="translate(658, 114)" data-hw-tier="2" data-hw-tool="TaskCreate">
255
+ <rect width="93" height="32" fill="var(--dna-surface-deep)"/>
256
+ <rect width="3" height="32.0" fill="var(--dna-tool-coordinate)" opacity="0.85"/>
257
+ <rect width="93" height="32" fill="none" stroke="var(--dna-border)" stroke-width="0.5"/>
258
+ <text class="m ink1" font-size="9.5" font-weight="600" x="10" y="13">TaskCreate</text>
259
+ <text class="m ink3" font-size="8.0" x="10" y="26">30.2K · 9 calls</text>
260
+ </g>
261
+ <g transform="translate(0, 150)" data-hw-tier="3" data-hw-tool="Write">
262
+ <rect width="90" height="24" fill="var(--dna-surface-deep)"/>
263
+ <rect width="3" height="24.0" fill="var(--dna-tool-mutate)" opacity="0.85"/>
264
+ <rect width="90" height="24" fill="none" stroke="var(--dna-border)" stroke-width="0.5"/>
265
+ <text class="m ink1" font-size="9.0" font-weight="600" x="10" y="12">Write</text>
266
+ <text class="m ink3" font-size="8.0" x="10" y="22">3 calls</text>
267
+ </g>
268
+ <g transform="translate(94, 150)" data-hw-tier="3" data-hw-tool="AskUserQuestion">
269
+ <rect width="90" height="24" fill="var(--dna-surface-deep)"/>
270
+ <rect width="3" height="24.0" fill="var(--dna-tool-coordinate)" opacity="0.85"/>
271
+ <rect width="90" height="24" fill="none" stroke="var(--dna-border)" stroke-width="0.5"/>
272
+ <text class="m ink1" font-size="9.0" font-weight="600" x="10" y="12">AskUserQue…</text>
273
+ <text class="m ink3" font-size="8.0" x="10" y="22">3 calls</text>
274
+ <text class="m" font-size="8" font-weight="700" fill="var(--dna-status-failing-core)" x="82" y="12" text-anchor="end">✗3</text>
275
+ </g>
276
+ <g transform="translate(188, 150)" data-hw-tier="3" data-hw-tool="Agent">
277
+ <rect width="90" height="24" fill="var(--dna-surface-deep)"/>
278
+ <rect width="3" height="24.0" fill="var(--dna-tool-execute)" opacity="0.85"/>
279
+ <rect width="90" height="24" fill="none" stroke="var(--dna-border)" stroke-width="0.5"/>
280
+ <text class="m ink1" font-size="9.0" font-weight="600" x="10" y="12">Agent</text>
281
+ <text class="m ink3" font-size="8.0" x="10" y="22">3 calls</text>
282
+ </g>
283
+ <g transform="translate(282, 150)" data-hw-tier="3" data-hw-tool="TaskUpdate">
284
+ <rect width="90" height="24" fill="var(--dna-surface-deep)"/>
285
+ <rect width="3" height="24.0" fill="var(--dna-tool-coordinate)" opacity="0.85"/>
286
+ <rect width="90" height="24" fill="none" stroke="var(--dna-border)" stroke-width="0.5"/>
287
+ <text class="m ink1" font-size="9.0" font-weight="600" x="10" y="12">TaskUpdate</text>
288
+ <text class="m ink3" font-size="8.0" x="10" y="22">18 calls</text>
289
+ </g>
290
+ <g transform="translate(376, 150)" data-hw-tier="3" data-hw-tool="ExitPlanMode">
291
+ <rect width="90" height="24" fill="var(--dna-surface-deep)"/>
292
+ <rect width="3" height="24.0" fill="var(--dna-tool-coordinate)" opacity="0.85"/>
293
+ <rect width="90" height="24" fill="none" stroke="var(--dna-border)" stroke-width="0.5"/>
294
+ <text class="m ink1" font-size="9.0" font-weight="600" x="10" y="12">ExitPlanMo…</text>
295
+ <text class="m ink3" font-size="8.0" x="10" y="22">4 calls</text>
296
+ <text class="m" font-size="8" font-weight="700" fill="var(--dna-status-failing-core)" x="82" y="12" text-anchor="end">✗3</text>
297
+ </g>
298
+ <g transform="translate(470, 150)" data-hw-tier="3" data-hw-tool="ToolSearch">
299
+ <rect width="90" height="24" fill="var(--dna-surface-deep)"/>
300
+ <rect width="3" height="24.0" fill="var(--dna-tool-coordinate)" opacity="0.85"/>
301
+ <rect width="90" height="24" fill="none" stroke="var(--dna-border)" stroke-width="0.5"/>
302
+ <text class="m ink1" font-size="9.0" font-weight="600" x="10" y="12">ToolSearch</text>
303
+ <text class="m ink3" font-size="8.0" x="10" y="22">2 calls</text>
304
+ </g>
305
+ </g>
306
+ <line x1="24" y1="290" x2="776" y2="290" stroke="var(--dna-border)" stroke-width="1"/>
307
+
308
+ <g transform="translate(24,306)" data-hw-zone="rhythm">
309
+ <text class="m ink3" font-size="7" font-weight="700" letter-spacing="0.22em">SESSION RHYTHM · 55 STAGES · HEIGHT ≈ TOKENS</text>
310
+ <text class="m ink3" x="752" y="0" font-size="7.5" text-anchor="end" letter-spacing="0.18em">262M · PEAK 36M</text>
311
+
312
+ <text class="m ink3" x="0" y="20" font-size="8">0m</text>
313
+ <text class="m ink3" x="71" y="20" font-size="8" text-anchor="middle">15m</text>
314
+ <text class="m ink3" x="143" y="20" font-size="8" text-anchor="middle">30m</text>
315
+ <text class="m ink3" x="214" y="20" font-size="8" text-anchor="middle">45m</text>
316
+ <text class="m ink3" x="286" y="20" font-size="8" text-anchor="middle">60m</text>
317
+ <text class="m ink3" x="357" y="20" font-size="8" text-anchor="middle">75m</text>
318
+ <text class="m ink3" x="429" y="20" font-size="8" text-anchor="middle">90m</text>
319
+ <text class="m ink3" x="501" y="20" font-size="8" text-anchor="middle">105m</text>
320
+ <text class="m ink3" x="572" y="20" font-size="8" text-anchor="middle">120m</text>
321
+ <text class="m ink3" x="644" y="20" font-size="8" text-anchor="middle">135m</text>
322
+ <text class="m ink3" x="752" y="20" font-size="8" text-anchor="end">158m</text>
323
+
324
+ <line x1="71" y1="30" x2="71" y2="108" stroke="var(--dna-border-tint)" stroke-width="0.5" opacity="0.55"/>
325
+ <line x1="143" y1="30" x2="143" y2="108" stroke="var(--dna-border-tint)" stroke-width="0.5" opacity="0.55"/>
326
+ <line x1="214" y1="30" x2="214" y2="108" stroke="var(--dna-border-tint)" stroke-width="0.5" opacity="0.55"/>
327
+ <line x1="286" y1="30" x2="286" y2="108" stroke="var(--dna-border-tint)" stroke-width="0.5" opacity="0.55"/>
328
+ <line x1="357" y1="30" x2="357" y2="108" stroke="var(--dna-border-tint)" stroke-width="0.5" opacity="0.55"/>
329
+ <line x1="429" y1="30" x2="429" y2="108" stroke="var(--dna-border-tint)" stroke-width="0.5" opacity="0.55"/>
330
+ <line x1="501" y1="30" x2="501" y2="108" stroke="var(--dna-border-tint)" stroke-width="0.5" opacity="0.55"/>
331
+ <line x1="572" y1="30" x2="572" y2="108" stroke="var(--dna-border-tint)" stroke-width="0.5" opacity="0.55"/>
332
+ <line x1="644" y1="30" x2="644" y2="108" stroke="var(--dna-border-tint)" stroke-width="0.5" opacity="0.55"/>
333
+ <line x1="715" y1="30" x2="715" y2="108" stroke="var(--dna-border-tint)" stroke-width="0.5" opacity="0.55"/>
334
+
335
+ <line x1="0" y1="108" x2="752" y2="108" stroke="var(--dna-border)" stroke-width="1"/>
336
+
337
+ <g data-hw-field="bars">
338
+ <rect x="0" y="103" width="4" height="5" fill="var(--dna-tool-coordinate)" opacity="0.78" rx="0.3"/>
339
+ <rect x="6" y="103" width="4" height="5" fill="var(--dna-tool-execute)" opacity="0.78" rx="0.3"/>
340
+ <rect x="12" y="103" width="4" height="5" fill="var(--dna-tool-execute)" opacity="0.85" rx="0.3"/>
341
+ <rect x="18" y="103" width="4" height="5" fill="var(--dna-tool-explore)" opacity="0.78" rx="0.3"/>
342
+ <rect x="24" y="103" width="42" height="5" fill="var(--dna-tool-explore)" opacity="0.85" rx="0.3"/>
343
+ <rect x="68" y="103" width="4" height="5" fill="var(--dna-tool-coordinate)" opacity="0.78" rx="0.3"/>
344
+ <rect x="74" y="103" width="4" height="5" fill="var(--dna-tool-execute)" opacity="0.78" rx="0.3"/>
345
+ <rect x="80" y="103" width="4" height="5" fill="var(--dna-tool-coordinate)" opacity="0.78" rx="0.3"/>
346
+ <rect x="86" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
347
+ <rect x="92" y="103" width="4" height="5" fill="var(--dna-tool-coordinate)" opacity="0.78" rx="0.3"/>
348
+ <rect x="98" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
349
+ <rect x="104" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.85" rx="0.3"/>
350
+ <rect x="110" y="103" width="4" height="5" fill="var(--dna-tool-coordinate)" opacity="0.78" rx="0.3"/>
351
+ <rect x="116" y="103" width="4" height="5" fill="var(--dna-tool-execute)" opacity="0.78" rx="0.3"/>
352
+ <rect x="122" y="103" width="14" height="5" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
353
+ <rect x="138" y="103" width="4" height="5" fill="var(--dna-tool-coordinate)" opacity="0.78" rx="0.3"/>
354
+ <rect x="144" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
355
+ <rect x="150" y="90" width="15" height="18" fill="var(--dna-tool-mutate)" opacity="0.85" rx="0.3"/>
356
+ <rect x="167" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
357
+ <rect x="173" y="103" width="4" height="5" fill="var(--dna-tool-explore)" opacity="0.78" rx="0.3"/>
358
+ <rect x="179" y="100" width="8" height="8" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
359
+ <rect x="189" y="100" width="7" height="8" fill="var(--dna-tool-explore)" opacity="0.78" rx="0.3"/>
360
+ <rect x="198" y="102" width="6" height="6" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
361
+ <rect x="206" y="103" width="4" height="5" fill="var(--dna-tool-coordinate)" opacity="0.78" rx="0.3"/>
362
+ <rect x="212" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
363
+ <rect x="218" y="73" width="18" height="35" fill="var(--dna-tool-mutate)" opacity="0.85" rx="0.3"/>
364
+ <rect x="238" y="93" width="7" height="15" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
365
+ <rect x="247" y="86" width="11" height="22" fill="var(--dna-tool-mutate)" opacity="0.85" rx="0.3"/>
366
+ <rect x="260" y="101" width="4" height="7" fill="var(--dna-tool-execute)" opacity="0.78" rx="0.3"/>
367
+ <rect x="266" y="103" width="4" height="5" fill="var(--dna-tool-explore)" opacity="0.78" rx="0.3"/>
368
+ <rect x="272" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
369
+ <rect x="278" y="103" width="4" height="5" fill="var(--dna-tool-execute)" opacity="0.78" rx="0.3"/>
370
+ <rect x="284" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
371
+ <rect x="290" y="103" width="4" height="5" fill="var(--dna-tool-execute)" opacity="0.78" rx="0.3"/>
372
+ <rect x="296" y="103" width="4" height="5" fill="var(--dna-tool-execute)" opacity="0.85" rx="0.3"/>
373
+ <rect x="302" y="102" width="19" height="6" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
374
+ <rect x="323" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.85" rx="0.3"/>
375
+ <rect x="329" y="101" width="4" height="7" fill="var(--dna-tool-execute)" opacity="0.78" rx="0.3"/>
376
+ <rect x="335" y="102" width="4" height="6" fill="var(--dna-tool-explore)" opacity="0.78" rx="0.3"/>
377
+ <rect x="341" y="99" width="4" height="9" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
378
+ <rect x="347" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.85" rx="0.3"/>
379
+ <rect x="353" y="103" width="14" height="5" fill="var(--dna-tool-execute)" opacity="0.78" rx="0.3"/>
380
+ <rect x="369" y="103" width="4" height="5" fill="var(--dna-tool-explore)" opacity="0.78" rx="0.3"/>
381
+ <rect x="375" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
382
+ <rect x="381" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.85" rx="0.3"/>
383
+ <rect x="387" y="101" width="8" height="7" fill="var(--dna-tool-execute)" opacity="0.78" rx="0.3"/>
384
+ <rect x="397" y="103" width="4" height="5" fill="var(--dna-tool-execute)" opacity="0.85" rx="0.3"/>
385
+ <rect x="403" y="95" width="28" height="13" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
386
+ <rect x="433" y="103" width="4" height="5" fill="var(--dna-tool-explore)" opacity="0.78" rx="0.3"/>
387
+ <rect x="439" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
388
+ <rect x="445" y="103" width="4" height="5" fill="var(--dna-tool-explore)" opacity="0.78" rx="0.3"/>
389
+ <rect x="451" y="89" width="247" height="19" fill="var(--dna-tool-execute)" opacity="0.78" rx="0.3"/>
390
+ <rect x="700" y="102" width="6" height="6" fill="var(--dna-tool-execute)" opacity="0.85" rx="0.3"/>
391
+ <rect x="708" y="103" width="4" height="5" fill="var(--dna-tool-explore)" opacity="0.78" rx="0.3"/>
392
+ <rect x="714" y="103" width="4" height="5" fill="var(--dna-tool-mutate)" opacity="0.78" rx="0.3"/>
393
+ </g>
394
+
395
+ <rect x="218" y="72" width="18" height="1.5" fill="var(--dna-signal)"/>
396
+
397
+ <g data-hw-field="errors">
398
+ <rect x="45" y="26" width="1.2" height="5" fill="var(--dna-status-failing-core)" opacity="0.85"/>
399
+ <rect x="70" y="26" width="1.2" height="5" fill="var(--dna-status-failing-core)" opacity="0.85"/>
400
+ <rect x="82" y="26" width="1.2" height="5" fill="var(--dna-status-failing-core)" opacity="0.85"/>
401
+ <rect x="94" y="26" width="1.2" height="5" fill="var(--dna-status-failing-core)" opacity="0.85"/>
402
+ <rect x="112" y="26" width="1.2" height="5" fill="var(--dna-status-failing-core)" opacity="0.85"/>
403
+ <rect x="140" y="26" width="1.2" height="5" fill="var(--dna-status-failing-core)" opacity="0.85"/>
404
+ <rect x="157" y="26" width="1.2" height="5" fill="var(--dna-status-failing-core)" opacity="0.85"/>
405
+ <rect x="227" y="26" width="1.2" height="5" fill="var(--dna-status-failing-core)" opacity="0.85"/>
406
+ <rect x="331" y="26" width="1.2" height="5" fill="var(--dna-status-failing-core)" opacity="0.85"/>
407
+ <rect x="574" y="26" width="1.2" height="5" fill="var(--dna-status-failing-core)" opacity="0.85"/>
408
+ </g>
409
+
410
+ <g transform="translate(0, 124)" data-hw-zone="legend">
411
+ <rect x="0" y="0" width="6" height="6" fill="var(--dna-tool-coordinate)"/>
412
+ <text class="m ink3" x="10" y="6" font-size="8.5">coordinate</text>
413
+ <rect x="82" y="0" width="6" height="6" fill="var(--dna-tool-execute)"/>
414
+ <text class="m ink3" x="92" y="6" font-size="8.5">execute</text>
415
+ <rect x="152" y="0" width="6" height="6" fill="var(--dna-tool-explore)"/>
416
+ <text class="m ink3" x="162" y="6" font-size="8.5">explore</text>
417
+ <rect x="220" y="0" width="6" height="6" fill="var(--dna-tool-mutate)"/>
418
+ <text class="m ink3" x="230" y="6" font-size="8.5">mutate</text>
419
+ <rect x="290" y="0" width="2" height="6" fill="var(--dna-status-failing-core)"/>
420
+ <text class="m ink3" x="296" y="6" font-size="8.5">error tick</text>
421
+ <text class="m" x="752" y="6" font-size="9" font-weight="700" fill="var(--dna-signal)" text-anchor="end" letter-spacing="0.14em">IMPLEMENTATION · 13%</text>
422
+ </g>
423
+ </g>
424
+
425
+ <line x1="24" y1="452" x2="776" y2="452" stroke="var(--dna-border)" stroke-width="0.5"/>
426
+ <text x="24" y="470" class="m ink3" font-size="9" letter-spacing="0.04em">hyperweave · main · .hyperweave/receipts/398ce70f-2632-4c61-9eee-659f3e5df19a.svg</text>
427
+ <text x="776" y="470" class="m ink3" font-size="9" text-anchor="end" letter-spacing="0.04em">session 398ce70f · 2026-04-30 20:03</text>
428
+ <text x="24" y="487" class="m ink3" font-size="9" font-style="italic" letter-spacing="0.04em" opacity="0.75">Cost is an estimate based on public per-token rates.</text>
429
+ <text x="776" y="487" class="m ink2" font-size="9" text-anchor="end" letter-spacing="0.04em">hyperweave.app</text>
430
+
431
+ <rect x="0" y="0" width="800" height="2" fill="var(--dna-card-border-top)" fill-opacity="0.85" clip-path="url(#receipt-card-shape)"/>
432
+ <rect x="0.5" y="0.5" width="799" height="499" rx="5.5" ry="5.5" fill="none" stroke="var(--dna-card-border)" stroke-width="1"/>
433
+ </svg>