dotscope 1.2.2__tar.gz → 1.5.4__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 (515) hide show
  1. {dotscope-1.2.2 → dotscope-1.5.4}/.claude/hooks/pre-commit-check.sh +41 -41
  2. {dotscope-1.2.2 → dotscope-1.5.4}/.claude/settings.json +15 -15
  3. dotscope-1.5.4/.claude/settings.local.json +7 -0
  4. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/.claude/hooks/pre-commit-check.sh +41 -0
  5. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/.claude/settings.json +15 -0
  6. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/.claude/settings.local.json +7 -0
  7. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/.git +1 -0
  8. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/.github/workflows/python-publish.yml +70 -70
  9. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/.gitignore +10 -10
  10. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/.mcp.json +8 -0
  11. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/.scopes +28 -28
  12. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/AGENT_INSTRUCTIONS.md +129 -129
  13. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/CLAUDE.md +10 -10
  14. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/LICENSE +21 -21
  15. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/README.md +46 -46
  16. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/docs/architecture.md +72 -72
  17. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/docs/cli-reference.md +67 -67
  18. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/docs/how-it-works.md +146 -146
  19. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/docs/mcp-setup.md +333 -255
  20. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/docs/scope-file.md +285 -285
  21. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/.scope +78 -82
  22. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/__init__.py +3 -3
  23. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/absorber.py +390 -390
  24. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/assertions.py +127 -127
  25. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/bench.py +141 -141
  26. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/cli/.scope +35 -0
  27. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/cli/__init__.py +320 -0
  28. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/cli/core.py +214 -0
  29. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/cli/hooks.py +491 -0
  30. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/cli/ingest.py +243 -0
  31. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/cli/observability.py +342 -0
  32. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/composer.py +231 -229
  33. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/constants.py +71 -69
  34. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/context.py +60 -60
  35. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/counterfactual.py +180 -180
  36. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/debug.py +220 -220
  37. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/discovery.py +117 -138
  38. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/.scope +27 -27
  39. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/__init__.py +18 -18
  40. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/bootstrap.py +231 -231
  41. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/compare.py +147 -147
  42. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/corpus.py +214 -214
  43. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/harness.py +310 -310
  44. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/replay.py +356 -356
  45. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/explain.py +189 -0
  46. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/formatter.py +169 -169
  47. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/.scope +24 -24
  48. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/__init__.py +1 -1
  49. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/atlas.py +341 -341
  50. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/contracts.py +296 -296
  51. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/engine.py +189 -189
  52. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/models.py +27 -27
  53. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/network.py +284 -284
  54. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/health.py +336 -272
  55. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/help.py +218 -218
  56. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/ignore.py +59 -59
  57. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/ingest.py +1024 -1020
  58. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/intent.py +614 -614
  59. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/lessons.py +223 -223
  60. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/matcher.py +104 -104
  61. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/mcp/.scope +35 -0
  62. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/mcp/__init__.py +139 -0
  63. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/mcp/core.py +459 -0
  64. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/mcp/hooks.py +8 -0
  65. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/mcp/ingest.py +99 -0
  66. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/mcp/observability.py +289 -0
  67. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/.scope +34 -34
  68. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/__init__.py +1 -1
  69. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/classifier.py +83 -83
  70. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/composer.py +210 -210
  71. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/differ.py +178 -178
  72. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/driver.py +147 -147
  73. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/imports.py +114 -114
  74. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/models.py +62 -62
  75. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/swarm.py +346 -336
  76. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/.scope +46 -45
  77. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/__init__.py +8 -8
  78. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/core.py +332 -332
  79. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/eval.py +96 -96
  80. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/history.py +73 -73
  81. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/intent.py +216 -214
  82. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/passes.py +58 -58
  83. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/state.py +252 -251
  84. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/parser.py +395 -395
  85. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/.scope +108 -105
  86. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/__init__.py +1 -1
  87. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/ast_analyzer.py +757 -757
  88. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/backtest.py +198 -198
  89. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/budget_allocator.py +343 -343
  90. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/convention_compliance.py +40 -40
  91. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/convention_discovery.py +385 -345
  92. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/convention_parser.py +235 -235
  93. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/graph_builder.py +451 -448
  94. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/hint_generator.py +128 -128
  95. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/history_miner.py +336 -336
  96. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/incremental.py +221 -221
  97. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/passes/lang/.scope +31 -0
  98. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/lang/__init__.py +45 -38
  99. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/lang/_base.py +20 -20
  100. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/lang/_treesitter.py +96 -93
  101. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/lang/go.py +334 -334
  102. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/lang/javascript.py +431 -431
  103. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/passes/lang/solidity.py +375 -0
  104. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/lazy.py +178 -177
  105. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/preflight.py +117 -117
  106. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/semantic_diff.py +160 -160
  107. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/passes/sentinel/.scope +34 -0
  108. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/__init__.py +1 -1
  109. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/acknowledge.py +222 -222
  110. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checker.py +429 -428
  111. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/passes/sentinel/checks/.scope +19 -0
  112. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/__init__.py +1 -1
  113. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/antipattern.py +86 -84
  114. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/boundary.py +48 -46
  115. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/contracts.py +152 -148
  116. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/convention.py +56 -54
  117. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/direction.py +73 -71
  118. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/intent.py +215 -207
  119. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/network.py +93 -91
  120. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/spatial.py +117 -115
  121. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/stability.py +68 -66
  122. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/voice.py +112 -108
  123. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/constraints.py +472 -472
  124. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/line_filter.py +88 -88
  125. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/models.py +15 -15
  126. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/spatial_autofix.py +206 -206
  127. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/virtual.py +247 -247
  128. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/voice.py +161 -161
  129. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/voice_defaults.py +68 -68
  130. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/voice_discovery.py +245 -245
  131. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/paths/.scope +22 -0
  132. dotscope-1.2.2/dotscope/paths.py → dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/paths/__init__.py +83 -83
  133. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/paths/repo.py +24 -0
  134. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/progress.py +44 -44
  135. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/refresh.py +676 -543
  136. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/regression.py +147 -147
  137. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/resolver.py +229 -198
  138. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/runtime_overlay.py +403 -403
  139. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/scanner.py +263 -263
  140. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/.scope +29 -29
  141. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/__init__.py +1 -1
  142. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/chunker.py +343 -343
  143. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/expander.py +129 -129
  144. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/flattener.py +187 -187
  145. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/models.py +70 -70
  146. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/observation.py +279 -279
  147. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/reranker.py +85 -85
  148. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/retriever.py +386 -386
  149. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/synthesizer.py +302 -302
  150. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/.scope +66 -64
  151. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/__init__.py +1 -1
  152. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/cache.py +177 -177
  153. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/claude_hooks.py +166 -166
  154. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/git_hooks.py +503 -500
  155. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/incremental_state.py +124 -124
  156. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/storage/mcp_config.py +216 -0
  157. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/near_miss.py +183 -183
  158. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/onboarding.py +150 -150
  159. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/session_manager.py +195 -195
  160. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/swarm_state.py +211 -144
  161. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/timing.py +84 -84
  162. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/textio.py +122 -122
  163. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/tokens.py +53 -53
  164. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/utility.py +123 -123
  165. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/visibility.py +687 -687
  166. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/pyproject.toml +46 -45
  167. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/.scope +29 -29
  168. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/conftest.py +152 -152
  169. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_absorber.py +91 -91
  170. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_ast_analyzer.py +168 -168
  171. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_backtest.py +114 -114
  172. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_budget.py +124 -124
  173. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_canonical_snippet.py +70 -70
  174. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_cli.py +122 -122
  175. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_composer.py +125 -125
  176. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_constants.py +43 -0
  177. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_context.py +52 -52
  178. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_discovery.py +100 -0
  179. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_enforcement.py +423 -423
  180. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_eval_harness.py +376 -376
  181. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_experience.py +237 -237
  182. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_explain.py +141 -0
  183. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_formatter.py +88 -0
  184. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_graph.py +78 -78
  185. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_health.py +142 -142
  186. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_history.py +71 -71
  187. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_ignore.py +64 -64
  188. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_ingest.py +319 -319
  189. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_lang_solidity.py +272 -0
  190. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_lessons.py +91 -91
  191. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_line_filter.py +67 -67
  192. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_loop.py +384 -384
  193. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_matcher.py +47 -47
  194. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_mcp_config.py +153 -0
  195. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_mcp_server.py +67 -0
  196. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_near_miss.py +161 -161
  197. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_parser.py +180 -180
  198. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_refresh.py +251 -251
  199. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_resolver.py +100 -100
  200. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_rigor.py +2 -2
  201. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_routing.py +207 -207
  202. dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_runtime_overlay.py +52 -0
  203. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_scanner.py +54 -54
  204. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_sessions.py +5 -5
  205. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_textio.py +85 -85
  206. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_treesitter.py +359 -359
  207. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_utility.py +48 -48
  208. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_virtual.py +95 -95
  209. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_visibility.py +417 -417
  210. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_voice_check.py +123 -123
  211. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_voice_discovery.py +143 -143
  212. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/uv.lock +2375 -2375
  213. dotscope-1.5.4/.github/workflows/python-publish.yml +70 -0
  214. dotscope-1.5.4/.gitignore +12 -0
  215. dotscope-1.5.4/.mcp.json +8 -0
  216. dotscope-1.5.4/.scopes +28 -0
  217. dotscope-1.5.4/.virtual/isolated-hubs.scope +14 -0
  218. dotscope-1.5.4/AGENT_INSTRUCTIONS.md +107 -0
  219. dotscope-1.5.4/CLAUDE.md +10 -0
  220. dotscope-1.5.4/LICENSE +21 -0
  221. {dotscope-1.2.2 → dotscope-1.5.4}/PKG-INFO +28 -14
  222. dotscope-1.5.4/README.md +57 -0
  223. dotscope-1.5.4/docs/architecture.md +72 -0
  224. dotscope-1.5.4/docs/cli-reference.md +67 -0
  225. dotscope-1.5.4/docs/how-it-works.md +146 -0
  226. dotscope-1.5.4/docs/mcp-integration.md +475 -0
  227. dotscope-1.5.4/docs/mcp-setup.md +333 -0
  228. dotscope-1.5.4/docs/scope-file.md +285 -0
  229. dotscope-1.5.4/dotscope/.scope +78 -0
  230. dotscope-1.5.4/dotscope/__init__.py +3 -0
  231. dotscope-1.5.4/dotscope/assets/ui/bundle.js +602 -0
  232. dotscope-1.5.4/dotscope/assets/ui/index.html +662 -0
  233. dotscope-1.5.4/dotscope/cli/.scope +35 -0
  234. dotscope-1.5.4/dotscope/cli/__init__.py +327 -0
  235. dotscope-1.5.4/dotscope/cli/core.py +214 -0
  236. dotscope-1.5.4/dotscope/cli/hooks.py +491 -0
  237. dotscope-1.5.4/dotscope/cli/ingest.py +243 -0
  238. dotscope-1.5.4/dotscope/cli/observability.py +342 -0
  239. dotscope-1.5.4/dotscope/cli/serve.py +189 -0
  240. dotscope-1.5.4/dotscope/engine/__init__.py +1 -0
  241. dotscope-1.5.4/dotscope/engine/assertions.py +127 -0
  242. dotscope-1.5.4/dotscope/engine/composer.py +231 -0
  243. dotscope-1.5.4/dotscope/engine/constants.py +71 -0
  244. dotscope-1.5.4/dotscope/engine/context.py +60 -0
  245. dotscope-1.5.4/dotscope/engine/discovery.py +117 -0
  246. dotscope-1.5.4/dotscope/engine/ignore.py +59 -0
  247. dotscope-1.5.4/dotscope/engine/matcher.py +104 -0
  248. dotscope-1.5.4/dotscope/engine/parser.py +395 -0
  249. dotscope-1.5.4/dotscope/engine/resolver.py +229 -0
  250. dotscope-1.5.4/dotscope/engine/runtime_overlay.py +403 -0
  251. dotscope-1.5.4/dotscope/engine/scanner.py +263 -0
  252. dotscope-1.5.4/dotscope/engine/tokens.py +53 -0
  253. dotscope-1.5.4/dotscope/engine/utility.py +123 -0
  254. dotscope-1.5.4/dotscope/eval/.scope +27 -0
  255. dotscope-1.5.4/dotscope/eval/__init__.py +18 -0
  256. dotscope-1.5.4/dotscope/eval/bootstrap.py +231 -0
  257. dotscope-1.5.4/dotscope/eval/compare.py +147 -0
  258. dotscope-1.5.4/dotscope/eval/corpus.py +214 -0
  259. dotscope-1.5.4/dotscope/eval/harness.py +310 -0
  260. dotscope-1.5.4/dotscope/eval/replay.py +356 -0
  261. dotscope-1.5.4/dotscope/generate/.scope +24 -0
  262. dotscope-1.5.4/dotscope/generate/__init__.py +1 -0
  263. dotscope-1.5.4/dotscope/generate/atlas.py +341 -0
  264. dotscope-1.5.4/dotscope/generate/contracts.py +296 -0
  265. dotscope-1.5.4/dotscope/generate/engine.py +189 -0
  266. dotscope-1.5.4/dotscope/generate/models.py +27 -0
  267. dotscope-1.5.4/dotscope/generate/network.py +284 -0
  268. dotscope-1.5.4/dotscope/mcp/.scope +35 -0
  269. dotscope-1.5.4/dotscope/mcp/__init__.py +139 -0
  270. dotscope-1.5.4/dotscope/mcp/core.py +154 -0
  271. dotscope-1.5.4/dotscope/mcp/hooks.py +8 -0
  272. dotscope-1.5.4/dotscope/mcp/ingest.py +92 -0
  273. dotscope-1.5.4/dotscope/mcp/logger.py +56 -0
  274. dotscope-1.5.4/dotscope/mcp/middleware.py +45 -0
  275. dotscope-1.5.4/dotscope/mcp/observability.py +260 -0
  276. dotscope-1.5.4/dotscope/mcp/pipelines.py +338 -0
  277. dotscope-1.5.4/dotscope/merge/.scope +34 -0
  278. dotscope-1.5.4/dotscope/merge/__init__.py +1 -0
  279. dotscope-1.5.4/dotscope/merge/classifier.py +83 -0
  280. dotscope-1.5.4/dotscope/merge/composer.py +210 -0
  281. dotscope-1.5.4/dotscope/merge/differ.py +178 -0
  282. dotscope-1.5.4/dotscope/merge/driver.py +147 -0
  283. dotscope-1.5.4/dotscope/merge/imports.py +114 -0
  284. dotscope-1.5.4/dotscope/merge/models.py +62 -0
  285. dotscope-1.5.4/dotscope/merge/swarm.py +346 -0
  286. dotscope-1.5.4/dotscope/models/.scope +46 -0
  287. dotscope-1.5.4/dotscope/models/__init__.py +8 -0
  288. dotscope-1.5.4/dotscope/models/core.py +332 -0
  289. dotscope-1.5.4/dotscope/models/eval.py +96 -0
  290. dotscope-1.5.4/dotscope/models/history.py +73 -0
  291. dotscope-1.5.4/dotscope/models/intent.py +216 -0
  292. dotscope-1.5.4/dotscope/models/passes.py +58 -0
  293. dotscope-1.5.4/dotscope/models/state.py +252 -0
  294. dotscope-1.5.4/dotscope/passes/.scope +108 -0
  295. dotscope-1.5.4/dotscope/passes/__init__.py +1 -0
  296. dotscope-1.5.4/dotscope/passes/ast_analyzer.py +809 -0
  297. dotscope-1.5.4/dotscope/passes/backtest.py +198 -0
  298. dotscope-1.5.4/dotscope/passes/budget_allocator.py +343 -0
  299. dotscope-1.5.4/dotscope/passes/convention_compliance.py +40 -0
  300. dotscope-1.5.4/dotscope/passes/convention_discovery.py +385 -0
  301. dotscope-1.5.4/dotscope/passes/convention_parser.py +235 -0
  302. dotscope-1.5.4/dotscope/passes/graph_builder.py +457 -0
  303. dotscope-1.5.4/dotscope/passes/hint_generator.py +128 -0
  304. dotscope-1.5.4/dotscope/passes/history_miner.py +336 -0
  305. dotscope-1.5.4/dotscope/passes/incremental.py +221 -0
  306. dotscope-1.5.4/dotscope/passes/lang/.scope +31 -0
  307. dotscope-1.5.4/dotscope/passes/lang/__init__.py +59 -0
  308. dotscope-1.5.4/dotscope/passes/lang/_base.py +20 -0
  309. dotscope-1.5.4/dotscope/passes/lang/_treesitter.py +102 -0
  310. dotscope-1.5.4/dotscope/passes/lang/go.py +334 -0
  311. dotscope-1.5.4/dotscope/passes/lang/java.py +125 -0
  312. dotscope-1.5.4/dotscope/passes/lang/javascript.py +431 -0
  313. dotscope-1.5.4/dotscope/passes/lang/rust.py +110 -0
  314. dotscope-1.5.4/dotscope/passes/lang/solidity.py +375 -0
  315. dotscope-1.5.4/dotscope/passes/lazy.py +178 -0
  316. dotscope-1.5.4/dotscope/passes/preflight.py +117 -0
  317. dotscope-1.5.4/dotscope/passes/semantic_diff.py +160 -0
  318. dotscope-1.5.4/dotscope/passes/sentinel/.scope +34 -0
  319. dotscope-1.5.4/dotscope/passes/sentinel/__init__.py +1 -0
  320. dotscope-1.5.4/dotscope/passes/sentinel/acknowledge.py +222 -0
  321. dotscope-1.5.4/dotscope/passes/sentinel/checker.py +429 -0
  322. dotscope-1.5.4/dotscope/passes/sentinel/checks/.scope +19 -0
  323. dotscope-1.5.4/dotscope/passes/sentinel/checks/__init__.py +1 -0
  324. dotscope-1.5.4/dotscope/passes/sentinel/checks/antipattern.py +86 -0
  325. dotscope-1.5.4/dotscope/passes/sentinel/checks/boundary.py +48 -0
  326. dotscope-1.5.4/dotscope/passes/sentinel/checks/contracts.py +152 -0
  327. dotscope-1.5.4/dotscope/passes/sentinel/checks/convention.py +56 -0
  328. dotscope-1.5.4/dotscope/passes/sentinel/checks/direction.py +73 -0
  329. dotscope-1.5.4/dotscope/passes/sentinel/checks/intent.py +215 -0
  330. dotscope-1.5.4/dotscope/passes/sentinel/checks/network.py +93 -0
  331. dotscope-1.5.4/dotscope/passes/sentinel/checks/spatial.py +117 -0
  332. dotscope-1.5.4/dotscope/passes/sentinel/checks/stability.py +68 -0
  333. dotscope-1.5.4/dotscope/passes/sentinel/checks/voice.py +112 -0
  334. dotscope-1.5.4/dotscope/passes/sentinel/constraints.py +472 -0
  335. dotscope-1.5.4/dotscope/passes/sentinel/line_filter.py +88 -0
  336. {dotscope-1.2.2/dotscope/check → dotscope-1.5.4/dotscope/passes/sentinel}/models.py +15 -15
  337. dotscope-1.5.4/dotscope/passes/spatial_autofix.py +206 -0
  338. dotscope-1.5.4/dotscope/passes/virtual.py +247 -0
  339. dotscope-1.5.4/dotscope/passes/voice.py +161 -0
  340. dotscope-1.5.4/dotscope/passes/voice_defaults.py +68 -0
  341. dotscope-1.5.4/dotscope/passes/voice_discovery.py +245 -0
  342. dotscope-1.5.4/dotscope/passes/z3_transpiler.py +68 -0
  343. dotscope-1.5.4/dotscope/paths/.scope +22 -0
  344. dotscope-1.5.4/dotscope/paths/__init__.py +83 -0
  345. dotscope-1.5.4/dotscope/paths/repo.py +24 -0
  346. dotscope-1.5.4/dotscope/search/.scope +29 -0
  347. dotscope-1.5.4/dotscope/search/__init__.py +1 -0
  348. dotscope-1.5.4/dotscope/search/chunker.py +343 -0
  349. dotscope-1.5.4/dotscope/search/expander.py +129 -0
  350. dotscope-1.5.4/dotscope/search/flattener.py +187 -0
  351. dotscope-1.5.4/dotscope/search/models.py +70 -0
  352. dotscope-1.5.4/dotscope/search/observation.py +279 -0
  353. dotscope-1.5.4/dotscope/search/reranker.py +85 -0
  354. dotscope-1.5.4/dotscope/search/retriever.py +386 -0
  355. dotscope-1.5.4/dotscope/search/synthesizer.py +302 -0
  356. dotscope-1.5.4/dotscope/storage/.scope +66 -0
  357. dotscope-1.5.4/dotscope/storage/__init__.py +1 -0
  358. dotscope-1.5.4/dotscope/storage/cache.py +177 -0
  359. dotscope-1.5.4/dotscope/storage/claude_hooks.py +166 -0
  360. dotscope-1.5.4/dotscope/storage/git_hooks.py +503 -0
  361. dotscope-1.5.4/dotscope/storage/incremental_state.py +124 -0
  362. dotscope-1.5.4/dotscope/storage/mcp_config.py +216 -0
  363. dotscope-1.5.4/dotscope/storage/near_miss.py +183 -0
  364. dotscope-1.5.4/dotscope/storage/onboarding.py +150 -0
  365. dotscope-1.5.4/dotscope/storage/session_manager.py +195 -0
  366. dotscope-1.5.4/dotscope/storage/swarm_state.py +211 -0
  367. dotscope-1.5.4/dotscope/storage/timing.py +84 -0
  368. dotscope-1.5.4/dotscope/ux/__init__.py +1 -0
  369. dotscope-1.5.4/dotscope/ux/bench.py +141 -0
  370. dotscope-1.5.4/dotscope/ux/counterfactual.py +180 -0
  371. dotscope-1.5.4/dotscope/ux/debug.py +220 -0
  372. dotscope-1.5.4/dotscope/ux/explain.py +189 -0
  373. dotscope-1.5.4/dotscope/ux/formatter.py +169 -0
  374. dotscope-1.5.4/dotscope/ux/health.py +336 -0
  375. dotscope-1.5.4/dotscope/ux/help.py +220 -0
  376. dotscope-1.5.4/dotscope/ux/progress.py +44 -0
  377. dotscope-1.5.4/dotscope/ux/textio.py +122 -0
  378. dotscope-1.5.4/dotscope/ux/visibility.py +687 -0
  379. dotscope-1.5.4/dotscope/workflows/__init__.py +1 -0
  380. dotscope-1.5.4/dotscope/workflows/absorber.py +390 -0
  381. dotscope-1.5.4/dotscope/workflows/ingest.py +1030 -0
  382. dotscope-1.5.4/dotscope/workflows/intent.py +614 -0
  383. dotscope-1.5.4/dotscope/workflows/lessons.py +223 -0
  384. dotscope-1.5.4/dotscope/workflows/refresh.py +676 -0
  385. dotscope-1.5.4/dotscope/workflows/regression.py +147 -0
  386. dotscope-1.5.4/epic.yaml +75 -0
  387. dotscope-1.5.4/intent.yaml +82 -0
  388. dotscope-1.5.4/logo.png +0 -0
  389. dotscope-1.5.4/pyproject.toml +53 -0
  390. dotscope-1.5.4/run_epic.py +108 -0
  391. dotscope-1.5.4/sync_ui.py +43 -0
  392. dotscope-1.5.4/tests/.scope +29 -0
  393. dotscope-1.5.4/tests/__init__.py +0 -0
  394. dotscope-1.5.4/tests/conftest.py +152 -0
  395. dotscope-1.5.4/tests/test_absorber.py +91 -0
  396. dotscope-1.5.4/tests/test_ast_analyzer.py +168 -0
  397. dotscope-1.5.4/tests/test_backtest.py +114 -0
  398. dotscope-1.5.4/tests/test_budget.py +124 -0
  399. dotscope-1.5.4/tests/test_canonical_snippet.py +70 -0
  400. dotscope-1.5.4/tests/test_cli.py +122 -0
  401. dotscope-1.5.4/tests/test_composer.py +125 -0
  402. dotscope-1.5.4/tests/test_constants.py +43 -0
  403. dotscope-1.5.4/tests/test_context.py +52 -0
  404. dotscope-1.5.4/tests/test_discovery.py +100 -0
  405. dotscope-1.5.4/tests/test_enforcement.py +423 -0
  406. dotscope-1.5.4/tests/test_eval_harness.py +376 -0
  407. dotscope-1.5.4/tests/test_experience.py +237 -0
  408. dotscope-1.5.4/tests/test_explain.py +141 -0
  409. dotscope-1.5.4/tests/test_formatter.py +88 -0
  410. dotscope-1.5.4/tests/test_graph.py +78 -0
  411. dotscope-1.5.4/tests/test_health.py +142 -0
  412. dotscope-1.5.4/tests/test_history.py +71 -0
  413. dotscope-1.5.4/tests/test_ignore.py +64 -0
  414. dotscope-1.5.4/tests/test_ingest.py +319 -0
  415. dotscope-1.5.4/tests/test_lang_solidity.py +272 -0
  416. dotscope-1.5.4/tests/test_lessons.py +91 -0
  417. dotscope-1.5.4/tests/test_line_filter.py +67 -0
  418. dotscope-1.5.4/tests/test_loop.py +384 -0
  419. dotscope-1.5.4/tests/test_matcher.py +47 -0
  420. dotscope-1.5.4/tests/test_mcp_config.py +153 -0
  421. dotscope-1.5.4/tests/test_mcp_server.py +67 -0
  422. dotscope-1.5.4/tests/test_near_miss.py +161 -0
  423. dotscope-1.5.4/tests/test_parser.py +180 -0
  424. dotscope-1.5.4/tests/test_refresh.py +251 -0
  425. dotscope-1.5.4/tests/test_resolver.py +100 -0
  426. dotscope-1.5.4/tests/test_rigor.py +223 -0
  427. dotscope-1.5.4/tests/test_routing.py +207 -0
  428. dotscope-1.5.4/tests/test_runtime_overlay.py +52 -0
  429. dotscope-1.5.4/tests/test_scanner.py +54 -0
  430. dotscope-1.5.4/tests/test_serve.py +56 -0
  431. dotscope-1.5.4/tests/test_sessions.py +122 -0
  432. dotscope-1.5.4/tests/test_textio.py +85 -0
  433. dotscope-1.5.4/tests/test_treesitter.py +359 -0
  434. dotscope-1.5.4/tests/test_utility.py +48 -0
  435. dotscope-1.5.4/tests/test_virtual.py +95 -0
  436. dotscope-1.5.4/tests/test_visibility.py +417 -0
  437. dotscope-1.5.4/tests/test_voice_check.py +123 -0
  438. dotscope-1.5.4/tests/test_voice_discovery.py +143 -0
  439. dotscope-1.5.4/uv.lock +2375 -0
  440. dotscope-1.5.4/virtual/_treesitter_lifecycle/.scope +26 -0
  441. dotscope-1.5.4/virtual/absorber_lifecycle/.scope +34 -0
  442. dotscope-1.5.4/virtual/acknowledge_lifecycle/.scope +40 -0
  443. dotscope-1.5.4/virtual/assertions_lifecycle/.scope +39 -0
  444. dotscope-1.5.4/virtual/ast_analyzer_lifecycle/.scope +31 -0
  445. dotscope-1.5.4/virtual/backtest_lifecycle/.scope +35 -0
  446. dotscope-1.5.4/virtual/budget_allocator_lifecycle/.scope +41 -0
  447. dotscope-1.5.4/virtual/checker_lifecycle/.scope +45 -0
  448. dotscope-1.5.4/virtual/composer_lifecycle/.scope +58 -0
  449. dotscope-1.5.4/virtual/constants_lifecycle/.scope +34 -0
  450. dotscope-1.5.4/virtual/constraints_lifecycle/.scope +55 -0
  451. dotscope-1.5.4/virtual/context_lifecycle/.scope +54 -0
  452. dotscope-1.5.4/virtual/core_lifecycle/.scope +61 -0
  453. dotscope-1.5.4/virtual/counterfactual_lifecycle/.scope +27 -0
  454. dotscope-1.5.4/virtual/eval_lifecycle/.scope +26 -0
  455. dotscope-1.5.4/virtual/explain_lifecycle/.scope +36 -0
  456. dotscope-1.5.4/virtual/formatter_lifecycle/.scope +45 -0
  457. dotscope-1.5.4/virtual/git_hooks_lifecycle/.scope +36 -0
  458. dotscope-1.5.4/virtual/go_lifecycle/.scope +24 -0
  459. dotscope-1.5.4/virtual/graph_builder_lifecycle/.scope +62 -0
  460. dotscope-1.5.4/virtual/health_lifecycle/.scope +34 -0
  461. dotscope-1.5.4/virtual/ignore_lifecycle/.scope +21 -0
  462. dotscope-1.5.4/virtual/incremental_lifecycle/.scope +33 -0
  463. dotscope-1.5.4/virtual/incremental_state_lifecycle/.scope +49 -0
  464. dotscope-1.5.4/virtual/ingest_lifecycle/.scope +39 -0
  465. dotscope-1.5.4/virtual/intent_lifecycle/.scope +92 -0
  466. dotscope-1.5.4/virtual/line_filter_lifecycle/.scope +22 -0
  467. dotscope-1.5.4/virtual/matcher_lifecycle/.scope +38 -0
  468. dotscope-1.5.4/virtual/models_lifecycle/.scope +63 -0
  469. dotscope-1.5.4/virtual/near_miss_lifecycle/.scope +36 -0
  470. dotscope-1.5.4/virtual/onboarding_lifecycle/.scope +44 -0
  471. dotscope-1.5.4/virtual/parser_lifecycle/.scope +92 -0
  472. dotscope-1.5.4/virtual/refresh_lifecycle/.scope +51 -0
  473. dotscope-1.5.4/virtual/resolver_lifecycle/.scope +36 -0
  474. dotscope-1.5.4/virtual/runtime_overlay_lifecycle/.scope +43 -0
  475. dotscope-1.5.4/virtual/session_manager_lifecycle/.scope +61 -0
  476. dotscope-1.5.4/virtual/solidity_lifecycle/.scope +23 -0
  477. dotscope-1.5.4/virtual/state_lifecycle/.scope +49 -0
  478. dotscope-1.5.4/virtual/textio_lifecycle/.scope +38 -0
  479. dotscope-1.5.4/virtual/timing_lifecycle/.scope +31 -0
  480. dotscope-1.5.4/virtual/virtual_lifecycle/.scope +34 -0
  481. dotscope-1.5.4/virtual/voice_defaults_lifecycle/.scope +46 -0
  482. dotscope-1.2.2/dotscope/ast_analyzer.py +0 -2
  483. dotscope-1.2.2/dotscope/backtest.py +0 -2
  484. dotscope-1.2.2/dotscope/budget.py +0 -3
  485. dotscope-1.2.2/dotscope/cache.py +0 -2
  486. dotscope-1.2.2/dotscope/check/__init__.py +0 -1
  487. dotscope-1.2.2/dotscope/check/acknowledge.py +0 -2
  488. dotscope-1.2.2/dotscope/check/checker.py +0 -3
  489. dotscope-1.2.2/dotscope/check/checks/__init__.py +0 -1
  490. dotscope-1.2.2/dotscope/check/checks/antipattern.py +0 -2
  491. dotscope-1.2.2/dotscope/check/checks/boundary.py +0 -2
  492. dotscope-1.2.2/dotscope/check/checks/contracts.py +0 -3
  493. dotscope-1.2.2/dotscope/check/checks/direction.py +0 -2
  494. dotscope-1.2.2/dotscope/check/checks/intent.py +0 -2
  495. dotscope-1.2.2/dotscope/check/checks/stability.py +0 -2
  496. dotscope-1.2.2/dotscope/check/constraints.py +0 -2
  497. dotscope-1.2.2/dotscope/cli.py +0 -1567
  498. dotscope-1.2.2/dotscope/graph.py +0 -3
  499. dotscope-1.2.2/dotscope/history.py +0 -6
  500. dotscope-1.2.2/dotscope/hooks.py +0 -2
  501. dotscope-1.2.2/dotscope/mcp_server.py +0 -1577
  502. dotscope-1.2.2/dotscope/models.py +0 -9
  503. dotscope-1.2.2/dotscope/near_miss.py +0 -3
  504. dotscope-1.2.2/dotscope/onboarding.py +0 -2
  505. dotscope-1.2.2/dotscope/sessions.py +0 -2
  506. dotscope-1.2.2/dotscope/storage/mcp_config.py +0 -98
  507. dotscope-1.2.2/dotscope/swarm/__init__.py +0 -13
  508. dotscope-1.2.2/dotscope/swarm/merge.py +0 -161
  509. dotscope-1.2.2/dotscope/swarm/partition.py +0 -236
  510. dotscope-1.2.2/dotscope/swarm/trace.py +0 -251
  511. dotscope-1.2.2/dotscope/timing.py +0 -2
  512. dotscope-1.2.2/dotscope/virtual.py +0 -3
  513. dotscope-1.2.2/tests/test_swarm.py +0 -300
  514. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/logo.png +0 -0
  515. {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/__init__.py +0 -0
@@ -1,41 +1,41 @@
1
- #!/bin/bash
2
- # dotscope pre-commit enforcement for Claude Code
3
- #
4
- # Intercepts git commit commands and runs dotscope check on staged changes.
5
- # Exit 2 blocks the commit and feeds the error back to the agent.
6
- # Non-commit Bash commands pass through untouched.
7
-
8
- set -e
9
-
10
- INPUT=$(cat)
11
- COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty' 2>/dev/null)
12
-
13
- # Only intercept git commit commands
14
- case "$COMMAND" in
15
- git\ commit*) ;;
16
- *) exit 0 ;;
17
- esac
18
-
19
- # Run dotscope check on staged changes (30s timeout, fail open)
20
- if command -v timeout >/dev/null 2>&1; then
21
- OUTPUT=$(timeout 30 python3 -m dotscope.cli check 2>&1) || true
22
- elif command -v gtimeout >/dev/null 2>&1; then
23
- OUTPUT=$(gtimeout 30 python3 -m dotscope.cli check 2>&1) || true
24
- else
25
- OUTPUT=$(python3 -m dotscope.cli check 2>&1) || true
26
- fi
27
-
28
- # Only GUARDs block. NUDGEs and NOTEs pass through.
29
- if echo "$OUTPUT" | grep -qE "GUARD|HOLD"; then
30
- echo "$OUTPUT" >&2
31
- echo "" >&2
32
- echo "dotscope: commit blocked -- address guards before committing" >&2
33
- exit 2
34
- fi
35
-
36
- # NUDGEs and NOTEs are guidance, not gates
37
- if echo "$OUTPUT" | grep -qE "NUDGE|NOTE"; then
38
- echo "$OUTPUT" >&2
39
- fi
40
-
41
- exit 0
1
+ #!/bin/bash
2
+ # dotscope pre-commit enforcement for Claude Code
3
+ #
4
+ # Intercepts git commit commands and runs dotscope check on staged changes.
5
+ # Exit 2 blocks the commit and feeds the error back to the agent.
6
+ # Non-commit Bash commands pass through untouched.
7
+
8
+ set -e
9
+
10
+ INPUT=$(cat)
11
+ COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty' 2>/dev/null)
12
+
13
+ # Only intercept git commit commands
14
+ case "$COMMAND" in
15
+ git\ commit*) ;;
16
+ *) exit 0 ;;
17
+ esac
18
+
19
+ # Run dotscope check on staged changes (30s timeout, fail open)
20
+ if command -v timeout >/dev/null 2>&1; then
21
+ OUTPUT=$(timeout 30 python3 -m dotscope.cli check 2>&1) || true
22
+ elif command -v gtimeout >/dev/null 2>&1; then
23
+ OUTPUT=$(gtimeout 30 python3 -m dotscope.cli check 2>&1) || true
24
+ else
25
+ OUTPUT=$(python3 -m dotscope.cli check 2>&1) || true
26
+ fi
27
+
28
+ # Only GUARDs block. NUDGEs and NOTEs pass through.
29
+ if echo "$OUTPUT" | grep -qE "GUARD|HOLD"; then
30
+ echo "$OUTPUT" >&2
31
+ echo "" >&2
32
+ echo "dotscope: commit blocked -- address guards before committing" >&2
33
+ exit 2
34
+ fi
35
+
36
+ # NUDGEs and NOTEs are guidance, not gates
37
+ if echo "$OUTPUT" | grep -qE "NUDGE|NOTE"; then
38
+ echo "$OUTPUT" >&2
39
+ fi
40
+
41
+ exit 0
@@ -1,15 +1,15 @@
1
- {
2
- "hooks": {
3
- "PreToolUse": [
4
- {
5
- "matcher": "Bash",
6
- "hooks": [
7
- {
8
- "type": "command",
9
- "command": ".claude/hooks/pre-commit-check.sh"
10
- }
11
- ]
12
- }
13
- ]
14
- }
15
- }
1
+ {
2
+ "hooks": {
3
+ "PreToolUse": [
4
+ {
5
+ "matcher": "Bash",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": ".claude/hooks/pre-commit-check.sh"
10
+ }
11
+ ]
12
+ }
13
+ ]
14
+ }
15
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(python -m pytest tests/test_mcp_config.py tests/test_mcp_server.py -v)"
5
+ ]
6
+ }
7
+ }
@@ -0,0 +1,41 @@
1
+ #!/bin/bash
2
+ # dotscope pre-commit enforcement for Claude Code
3
+ #
4
+ # Intercepts git commit commands and runs dotscope check on staged changes.
5
+ # Exit 2 blocks the commit and feeds the error back to the agent.
6
+ # Non-commit Bash commands pass through untouched.
7
+
8
+ set -e
9
+
10
+ INPUT=$(cat)
11
+ COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command // empty' 2>/dev/null)
12
+
13
+ # Only intercept git commit commands
14
+ case "$COMMAND" in
15
+ git\ commit*) ;;
16
+ *) exit 0 ;;
17
+ esac
18
+
19
+ # Run dotscope check on staged changes (30s timeout, fail open)
20
+ if command -v timeout >/dev/null 2>&1; then
21
+ OUTPUT=$(timeout 30 python3 -m dotscope.cli check 2>&1) || true
22
+ elif command -v gtimeout >/dev/null 2>&1; then
23
+ OUTPUT=$(gtimeout 30 python3 -m dotscope.cli check 2>&1) || true
24
+ else
25
+ OUTPUT=$(python3 -m dotscope.cli check 2>&1) || true
26
+ fi
27
+
28
+ # Only GUARDs block. NUDGEs and NOTEs pass through.
29
+ if echo "$OUTPUT" | grep -qE "GUARD|HOLD"; then
30
+ echo "$OUTPUT" >&2
31
+ echo "" >&2
32
+ echo "dotscope: commit blocked -- address guards before committing" >&2
33
+ exit 2
34
+ fi
35
+
36
+ # NUDGEs and NOTEs are guidance, not gates
37
+ if echo "$OUTPUT" | grep -qE "NUDGE|NOTE"; then
38
+ echo "$OUTPUT" >&2
39
+ fi
40
+
41
+ exit 0
@@ -0,0 +1,15 @@
1
+ {
2
+ "hooks": {
3
+ "PreToolUse": [
4
+ {
5
+ "matcher": "Bash",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": ".claude/hooks/pre-commit-check.sh"
10
+ }
11
+ ]
12
+ }
13
+ ]
14
+ }
15
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(python -m pytest tests/test_mcp_config.py tests/test_mcp_server.py -v)"
5
+ ]
6
+ }
7
+ }
@@ -0,0 +1 @@
1
+ gitdir: D:/dotscope/.git/worktrees/dazzling-hugle
@@ -1,70 +1,70 @@
1
- # This workflow will upload a Python Package to PyPI when a release is created
2
- # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
3
-
4
- # This workflow uses actions that are not certified by GitHub.
5
- # They are provided by a third-party and are governed by
6
- # separate terms of service, privacy policy, and support
7
- # documentation.
8
-
9
- name: Upload Python Package
10
-
11
- on:
12
- release:
13
- types: [published]
14
-
15
- permissions:
16
- contents: read
17
-
18
- jobs:
19
- release-build:
20
- runs-on: ubuntu-latest
21
-
22
- steps:
23
- - uses: actions/checkout@v4
24
-
25
- - uses: actions/setup-python@v5
26
- with:
27
- python-version: "3.x"
28
-
29
- - name: Build release distributions
30
- run: |
31
- # NOTE: put your own distribution build steps here.
32
- python -m pip install build
33
- python -m build
34
-
35
- - name: Upload distributions
36
- uses: actions/upload-artifact@v4
37
- with:
38
- name: release-dists
39
- path: dist/
40
-
41
- pypi-publish:
42
- runs-on: ubuntu-latest
43
- needs:
44
- - release-build
45
- permissions:
46
- # IMPORTANT: this permission is mandatory for trusted publishing
47
- id-token: write
48
-
49
- # Dedicated environments with protections for publishing are strongly recommended.
50
- # For more information, see: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules
51
- environment:
52
- name: dotscope environment
53
- # OPTIONAL: uncomment and update to include your PyPI project URL in the deployment status:
54
- # url: https://pypi.org/p/YOURPROJECT
55
- #
56
- # ALTERNATIVE: if your GitHub Release name is the PyPI project version string
57
- # ALTERNATIVE: exactly, uncomment the following line instead:
58
- # url: https://pypi.org/project/YOURPROJECT/${{ github.event.release.name }}
59
-
60
- steps:
61
- - name: Retrieve release distributions
62
- uses: actions/download-artifact@v4
63
- with:
64
- name: release-dists
65
- path: dist/
66
-
67
- - name: Publish release distributions to PyPI
68
- uses: pypa/gh-action-pypi-publish@release/v1
69
- with:
70
- packages-dir: dist/
1
+ # This workflow will upload a Python Package to PyPI when a release is created
2
+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
3
+
4
+ # This workflow uses actions that are not certified by GitHub.
5
+ # They are provided by a third-party and are governed by
6
+ # separate terms of service, privacy policy, and support
7
+ # documentation.
8
+
9
+ name: Upload Python Package
10
+
11
+ on:
12
+ release:
13
+ types: [published]
14
+
15
+ permissions:
16
+ contents: read
17
+
18
+ jobs:
19
+ release-build:
20
+ runs-on: ubuntu-latest
21
+
22
+ steps:
23
+ - uses: actions/checkout@v4
24
+
25
+ - uses: actions/setup-python@v5
26
+ with:
27
+ python-version: "3.x"
28
+
29
+ - name: Build release distributions
30
+ run: |
31
+ # NOTE: put your own distribution build steps here.
32
+ python -m pip install build
33
+ python -m build
34
+
35
+ - name: Upload distributions
36
+ uses: actions/upload-artifact@v4
37
+ with:
38
+ name: release-dists
39
+ path: dist/
40
+
41
+ pypi-publish:
42
+ runs-on: ubuntu-latest
43
+ needs:
44
+ - release-build
45
+ permissions:
46
+ # IMPORTANT: this permission is mandatory for trusted publishing
47
+ id-token: write
48
+
49
+ # Dedicated environments with protections for publishing are strongly recommended.
50
+ # For more information, see: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules
51
+ environment:
52
+ name: dotscope environment
53
+ # OPTIONAL: uncomment and update to include your PyPI project URL in the deployment status:
54
+ # url: https://pypi.org/p/YOURPROJECT
55
+ #
56
+ # ALTERNATIVE: if your GitHub Release name is the PyPI project version string
57
+ # ALTERNATIVE: exactly, uncomment the following line instead:
58
+ # url: https://pypi.org/project/YOURPROJECT/${{ github.event.release.name }}
59
+
60
+ steps:
61
+ - name: Retrieve release distributions
62
+ uses: actions/download-artifact@v4
63
+ with:
64
+ name: release-dists
65
+ path: dist/
66
+
67
+ - name: Publish release distributions to PyPI
68
+ uses: pypa/gh-action-pypi-publish@release/v1
69
+ with:
70
+ packages-dir: dist/
@@ -1,10 +1,10 @@
1
- __pycache__/
2
- *.pyc
3
- .venv/
4
- *.egg-info/
5
- dist/
6
- build/
7
- .pytest_cache/
8
- .ruff_cache/
9
- .mypy_cache/
10
- .dotscope/
1
+ __pycache__/
2
+ *.pyc
3
+ .venv/
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .pytest_cache/
8
+ .ruff_cache/
9
+ .mypy_cache/
10
+ .dotscope/
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "dotscope": {
4
+ "type": "stdio",
5
+ "command": "dotscope-mcp"
6
+ }
7
+ }
8
+ }
@@ -1,28 +1,28 @@
1
- version: 1
2
- total_repo_tokens: 42000
3
-
4
- scopes:
5
- models:
6
- path: dotscope/models/.scope
7
- keywords: [models, dataclasses, types, core, history, intent, state]
8
- description: Data models — the single source of truth for all types
9
- passes:
10
- path: dotscope/passes/.scope
11
- keywords: [analysis, ast, graph, budget, enforcement, sentinel, checks]
12
- description: Analysis engine — the active verbs of the compiler
13
- storage:
14
- path: dotscope/storage/.scope
15
- keywords: [storage, sessions, hooks, cache, onboarding, timing]
16
- description: Infrastructure — disk I/O, hooks, caching, state persistence
17
- dotscope:
18
- path: dotscope/.scope
19
- keywords: [cli, mcp, resolve, ingest, compose, parse, format, visibility]
20
- description: Root interfaces and orchestrators
21
- tests:
22
- path: tests/.scope
23
- keywords: [tests, pytest, enforcement, experience, rigor, e2e]
24
- description: Test suite — 266 tests across all features
25
-
26
- defaults:
27
- max_tokens: 8000
28
- include_related: false
1
+ version: 1
2
+ total_repo_tokens: 42000
3
+
4
+ scopes:
5
+ models:
6
+ path: dotscope/models/.scope
7
+ keywords: [models, dataclasses, types, core, history, intent, state]
8
+ description: Data models — the single source of truth for all types
9
+ passes:
10
+ path: dotscope/passes/.scope
11
+ keywords: [analysis, ast, graph, budget, enforcement, sentinel, checks]
12
+ description: Analysis engine — the active verbs of the compiler
13
+ storage:
14
+ path: dotscope/storage/.scope
15
+ keywords: [storage, sessions, hooks, cache, onboarding, timing]
16
+ description: Infrastructure — disk I/O, hooks, caching, state persistence
17
+ dotscope:
18
+ path: dotscope/.scope
19
+ keywords: [cli, mcp, resolve, ingest, compose, parse, format, visibility]
20
+ description: Root interfaces and orchestrators
21
+ tests:
22
+ path: tests/.scope
23
+ keywords: [tests, pytest, enforcement, experience, rigor, e2e]
24
+ description: Test suite — 266 tests across all features
25
+
26
+ defaults:
27
+ max_tokens: 8000
28
+ include_related: false