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.
- {dotscope-1.2.2 → dotscope-1.5.4}/.claude/hooks/pre-commit-check.sh +41 -41
- {dotscope-1.2.2 → dotscope-1.5.4}/.claude/settings.json +15 -15
- dotscope-1.5.4/.claude/settings.local.json +7 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/.claude/hooks/pre-commit-check.sh +41 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/.claude/settings.json +15 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/.claude/settings.local.json +7 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/.git +1 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/.github/workflows/python-publish.yml +70 -70
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/.gitignore +10 -10
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/.mcp.json +8 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/.scopes +28 -28
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/AGENT_INSTRUCTIONS.md +129 -129
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/CLAUDE.md +10 -10
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/LICENSE +21 -21
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/README.md +46 -46
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/docs/architecture.md +72 -72
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/docs/cli-reference.md +67 -67
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/docs/how-it-works.md +146 -146
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/docs/mcp-setup.md +333 -255
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/docs/scope-file.md +285 -285
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/.scope +78 -82
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/__init__.py +3 -3
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/absorber.py +390 -390
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/assertions.py +127 -127
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/bench.py +141 -141
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/cli/.scope +35 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/cli/__init__.py +320 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/cli/core.py +214 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/cli/hooks.py +491 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/cli/ingest.py +243 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/cli/observability.py +342 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/composer.py +231 -229
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/constants.py +71 -69
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/context.py +60 -60
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/counterfactual.py +180 -180
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/debug.py +220 -220
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/discovery.py +117 -138
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/.scope +27 -27
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/__init__.py +18 -18
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/bootstrap.py +231 -231
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/compare.py +147 -147
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/corpus.py +214 -214
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/harness.py +310 -310
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/eval/replay.py +356 -356
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/explain.py +189 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/formatter.py +169 -169
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/.scope +24 -24
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/__init__.py +1 -1
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/atlas.py +341 -341
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/contracts.py +296 -296
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/engine.py +189 -189
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/models.py +27 -27
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/generate/network.py +284 -284
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/health.py +336 -272
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/help.py +218 -218
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/ignore.py +59 -59
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/ingest.py +1024 -1020
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/intent.py +614 -614
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/lessons.py +223 -223
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/matcher.py +104 -104
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/mcp/.scope +35 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/mcp/__init__.py +139 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/mcp/core.py +459 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/mcp/hooks.py +8 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/mcp/ingest.py +99 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/mcp/observability.py +289 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/.scope +34 -34
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/__init__.py +1 -1
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/classifier.py +83 -83
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/composer.py +210 -210
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/differ.py +178 -178
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/driver.py +147 -147
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/imports.py +114 -114
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/models.py +62 -62
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/merge/swarm.py +346 -336
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/.scope +46 -45
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/__init__.py +8 -8
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/core.py +332 -332
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/eval.py +96 -96
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/history.py +73 -73
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/intent.py +216 -214
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/passes.py +58 -58
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/models/state.py +252 -251
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/parser.py +395 -395
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/.scope +108 -105
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/__init__.py +1 -1
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/ast_analyzer.py +757 -757
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/backtest.py +198 -198
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/budget_allocator.py +343 -343
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/convention_compliance.py +40 -40
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/convention_discovery.py +385 -345
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/convention_parser.py +235 -235
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/graph_builder.py +451 -448
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/hint_generator.py +128 -128
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/history_miner.py +336 -336
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/incremental.py +221 -221
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/passes/lang/.scope +31 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/lang/__init__.py +45 -38
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/lang/_base.py +20 -20
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/lang/_treesitter.py +96 -93
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/lang/go.py +334 -334
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/lang/javascript.py +431 -431
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/passes/lang/solidity.py +375 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/lazy.py +178 -177
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/preflight.py +117 -117
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/semantic_diff.py +160 -160
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/passes/sentinel/.scope +34 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/__init__.py +1 -1
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/acknowledge.py +222 -222
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checker.py +429 -428
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/passes/sentinel/checks/.scope +19 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/__init__.py +1 -1
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/antipattern.py +86 -84
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/boundary.py +48 -46
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/contracts.py +152 -148
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/convention.py +56 -54
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/direction.py +73 -71
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/intent.py +215 -207
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/network.py +93 -91
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/spatial.py +117 -115
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/stability.py +68 -66
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/checks/voice.py +112 -108
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/constraints.py +472 -472
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/line_filter.py +88 -88
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/sentinel/models.py +15 -15
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/spatial_autofix.py +206 -206
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/virtual.py +247 -247
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/voice.py +161 -161
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/voice_defaults.py +68 -68
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/passes/voice_discovery.py +245 -245
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/paths/.scope +22 -0
- dotscope-1.2.2/dotscope/paths.py → dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/paths/__init__.py +83 -83
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/paths/repo.py +24 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/progress.py +44 -44
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/refresh.py +676 -543
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/regression.py +147 -147
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/resolver.py +229 -198
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/runtime_overlay.py +403 -403
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/scanner.py +263 -263
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/.scope +29 -29
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/__init__.py +1 -1
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/chunker.py +343 -343
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/expander.py +129 -129
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/flattener.py +187 -187
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/models.py +70 -70
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/observation.py +279 -279
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/reranker.py +85 -85
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/retriever.py +386 -386
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/search/synthesizer.py +302 -302
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/.scope +66 -64
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/__init__.py +1 -1
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/cache.py +177 -177
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/claude_hooks.py +166 -166
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/git_hooks.py +503 -500
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/incremental_state.py +124 -124
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/dotscope/storage/mcp_config.py +216 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/near_miss.py +183 -183
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/onboarding.py +150 -150
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/session_manager.py +195 -195
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/swarm_state.py +211 -144
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/storage/timing.py +84 -84
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/textio.py +122 -122
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/tokens.py +53 -53
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/utility.py +123 -123
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/dotscope/visibility.py +687 -687
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/pyproject.toml +46 -45
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/.scope +29 -29
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/conftest.py +152 -152
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_absorber.py +91 -91
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_ast_analyzer.py +168 -168
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_backtest.py +114 -114
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_budget.py +124 -124
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_canonical_snippet.py +70 -70
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_cli.py +122 -122
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_composer.py +125 -125
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_constants.py +43 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_context.py +52 -52
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_discovery.py +100 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_enforcement.py +423 -423
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_eval_harness.py +376 -376
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_experience.py +237 -237
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_explain.py +141 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_formatter.py +88 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_graph.py +78 -78
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_health.py +142 -142
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_history.py +71 -71
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_ignore.py +64 -64
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_ingest.py +319 -319
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_lang_solidity.py +272 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_lessons.py +91 -91
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_line_filter.py +67 -67
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_loop.py +384 -384
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_matcher.py +47 -47
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_mcp_config.py +153 -0
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_mcp_server.py +67 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_near_miss.py +161 -161
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_parser.py +180 -180
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_refresh.py +251 -251
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_resolver.py +100 -100
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_rigor.py +2 -2
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_routing.py +207 -207
- dotscope-1.5.4/.claude/worktrees/dazzling-hugle/tests/test_runtime_overlay.py +52 -0
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_scanner.py +54 -54
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_sessions.py +5 -5
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_textio.py +85 -85
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_treesitter.py +359 -359
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_utility.py +48 -48
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_virtual.py +95 -95
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_visibility.py +417 -417
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_voice_check.py +123 -123
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/tests/test_voice_discovery.py +143 -143
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/uv.lock +2375 -2375
- dotscope-1.5.4/.github/workflows/python-publish.yml +70 -0
- dotscope-1.5.4/.gitignore +12 -0
- dotscope-1.5.4/.mcp.json +8 -0
- dotscope-1.5.4/.scopes +28 -0
- dotscope-1.5.4/.virtual/isolated-hubs.scope +14 -0
- dotscope-1.5.4/AGENT_INSTRUCTIONS.md +107 -0
- dotscope-1.5.4/CLAUDE.md +10 -0
- dotscope-1.5.4/LICENSE +21 -0
- {dotscope-1.2.2 → dotscope-1.5.4}/PKG-INFO +28 -14
- dotscope-1.5.4/README.md +57 -0
- dotscope-1.5.4/docs/architecture.md +72 -0
- dotscope-1.5.4/docs/cli-reference.md +67 -0
- dotscope-1.5.4/docs/how-it-works.md +146 -0
- dotscope-1.5.4/docs/mcp-integration.md +475 -0
- dotscope-1.5.4/docs/mcp-setup.md +333 -0
- dotscope-1.5.4/docs/scope-file.md +285 -0
- dotscope-1.5.4/dotscope/.scope +78 -0
- dotscope-1.5.4/dotscope/__init__.py +3 -0
- dotscope-1.5.4/dotscope/assets/ui/bundle.js +602 -0
- dotscope-1.5.4/dotscope/assets/ui/index.html +662 -0
- dotscope-1.5.4/dotscope/cli/.scope +35 -0
- dotscope-1.5.4/dotscope/cli/__init__.py +327 -0
- dotscope-1.5.4/dotscope/cli/core.py +214 -0
- dotscope-1.5.4/dotscope/cli/hooks.py +491 -0
- dotscope-1.5.4/dotscope/cli/ingest.py +243 -0
- dotscope-1.5.4/dotscope/cli/observability.py +342 -0
- dotscope-1.5.4/dotscope/cli/serve.py +189 -0
- dotscope-1.5.4/dotscope/engine/__init__.py +1 -0
- dotscope-1.5.4/dotscope/engine/assertions.py +127 -0
- dotscope-1.5.4/dotscope/engine/composer.py +231 -0
- dotscope-1.5.4/dotscope/engine/constants.py +71 -0
- dotscope-1.5.4/dotscope/engine/context.py +60 -0
- dotscope-1.5.4/dotscope/engine/discovery.py +117 -0
- dotscope-1.5.4/dotscope/engine/ignore.py +59 -0
- dotscope-1.5.4/dotscope/engine/matcher.py +104 -0
- dotscope-1.5.4/dotscope/engine/parser.py +395 -0
- dotscope-1.5.4/dotscope/engine/resolver.py +229 -0
- dotscope-1.5.4/dotscope/engine/runtime_overlay.py +403 -0
- dotscope-1.5.4/dotscope/engine/scanner.py +263 -0
- dotscope-1.5.4/dotscope/engine/tokens.py +53 -0
- dotscope-1.5.4/dotscope/engine/utility.py +123 -0
- dotscope-1.5.4/dotscope/eval/.scope +27 -0
- dotscope-1.5.4/dotscope/eval/__init__.py +18 -0
- dotscope-1.5.4/dotscope/eval/bootstrap.py +231 -0
- dotscope-1.5.4/dotscope/eval/compare.py +147 -0
- dotscope-1.5.4/dotscope/eval/corpus.py +214 -0
- dotscope-1.5.4/dotscope/eval/harness.py +310 -0
- dotscope-1.5.4/dotscope/eval/replay.py +356 -0
- dotscope-1.5.4/dotscope/generate/.scope +24 -0
- dotscope-1.5.4/dotscope/generate/__init__.py +1 -0
- dotscope-1.5.4/dotscope/generate/atlas.py +341 -0
- dotscope-1.5.4/dotscope/generate/contracts.py +296 -0
- dotscope-1.5.4/dotscope/generate/engine.py +189 -0
- dotscope-1.5.4/dotscope/generate/models.py +27 -0
- dotscope-1.5.4/dotscope/generate/network.py +284 -0
- dotscope-1.5.4/dotscope/mcp/.scope +35 -0
- dotscope-1.5.4/dotscope/mcp/__init__.py +139 -0
- dotscope-1.5.4/dotscope/mcp/core.py +154 -0
- dotscope-1.5.4/dotscope/mcp/hooks.py +8 -0
- dotscope-1.5.4/dotscope/mcp/ingest.py +92 -0
- dotscope-1.5.4/dotscope/mcp/logger.py +56 -0
- dotscope-1.5.4/dotscope/mcp/middleware.py +45 -0
- dotscope-1.5.4/dotscope/mcp/observability.py +260 -0
- dotscope-1.5.4/dotscope/mcp/pipelines.py +338 -0
- dotscope-1.5.4/dotscope/merge/.scope +34 -0
- dotscope-1.5.4/dotscope/merge/__init__.py +1 -0
- dotscope-1.5.4/dotscope/merge/classifier.py +83 -0
- dotscope-1.5.4/dotscope/merge/composer.py +210 -0
- dotscope-1.5.4/dotscope/merge/differ.py +178 -0
- dotscope-1.5.4/dotscope/merge/driver.py +147 -0
- dotscope-1.5.4/dotscope/merge/imports.py +114 -0
- dotscope-1.5.4/dotscope/merge/models.py +62 -0
- dotscope-1.5.4/dotscope/merge/swarm.py +346 -0
- dotscope-1.5.4/dotscope/models/.scope +46 -0
- dotscope-1.5.4/dotscope/models/__init__.py +8 -0
- dotscope-1.5.4/dotscope/models/core.py +332 -0
- dotscope-1.5.4/dotscope/models/eval.py +96 -0
- dotscope-1.5.4/dotscope/models/history.py +73 -0
- dotscope-1.5.4/dotscope/models/intent.py +216 -0
- dotscope-1.5.4/dotscope/models/passes.py +58 -0
- dotscope-1.5.4/dotscope/models/state.py +252 -0
- dotscope-1.5.4/dotscope/passes/.scope +108 -0
- dotscope-1.5.4/dotscope/passes/__init__.py +1 -0
- dotscope-1.5.4/dotscope/passes/ast_analyzer.py +809 -0
- dotscope-1.5.4/dotscope/passes/backtest.py +198 -0
- dotscope-1.5.4/dotscope/passes/budget_allocator.py +343 -0
- dotscope-1.5.4/dotscope/passes/convention_compliance.py +40 -0
- dotscope-1.5.4/dotscope/passes/convention_discovery.py +385 -0
- dotscope-1.5.4/dotscope/passes/convention_parser.py +235 -0
- dotscope-1.5.4/dotscope/passes/graph_builder.py +457 -0
- dotscope-1.5.4/dotscope/passes/hint_generator.py +128 -0
- dotscope-1.5.4/dotscope/passes/history_miner.py +336 -0
- dotscope-1.5.4/dotscope/passes/incremental.py +221 -0
- dotscope-1.5.4/dotscope/passes/lang/.scope +31 -0
- dotscope-1.5.4/dotscope/passes/lang/__init__.py +59 -0
- dotscope-1.5.4/dotscope/passes/lang/_base.py +20 -0
- dotscope-1.5.4/dotscope/passes/lang/_treesitter.py +102 -0
- dotscope-1.5.4/dotscope/passes/lang/go.py +334 -0
- dotscope-1.5.4/dotscope/passes/lang/java.py +125 -0
- dotscope-1.5.4/dotscope/passes/lang/javascript.py +431 -0
- dotscope-1.5.4/dotscope/passes/lang/rust.py +110 -0
- dotscope-1.5.4/dotscope/passes/lang/solidity.py +375 -0
- dotscope-1.5.4/dotscope/passes/lazy.py +178 -0
- dotscope-1.5.4/dotscope/passes/preflight.py +117 -0
- dotscope-1.5.4/dotscope/passes/semantic_diff.py +160 -0
- dotscope-1.5.4/dotscope/passes/sentinel/.scope +34 -0
- dotscope-1.5.4/dotscope/passes/sentinel/__init__.py +1 -0
- dotscope-1.5.4/dotscope/passes/sentinel/acknowledge.py +222 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checker.py +429 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checks/.scope +19 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checks/__init__.py +1 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checks/antipattern.py +86 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checks/boundary.py +48 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checks/contracts.py +152 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checks/convention.py +56 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checks/direction.py +73 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checks/intent.py +215 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checks/network.py +93 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checks/spatial.py +117 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checks/stability.py +68 -0
- dotscope-1.5.4/dotscope/passes/sentinel/checks/voice.py +112 -0
- dotscope-1.5.4/dotscope/passes/sentinel/constraints.py +472 -0
- dotscope-1.5.4/dotscope/passes/sentinel/line_filter.py +88 -0
- {dotscope-1.2.2/dotscope/check → dotscope-1.5.4/dotscope/passes/sentinel}/models.py +15 -15
- dotscope-1.5.4/dotscope/passes/spatial_autofix.py +206 -0
- dotscope-1.5.4/dotscope/passes/virtual.py +247 -0
- dotscope-1.5.4/dotscope/passes/voice.py +161 -0
- dotscope-1.5.4/dotscope/passes/voice_defaults.py +68 -0
- dotscope-1.5.4/dotscope/passes/voice_discovery.py +245 -0
- dotscope-1.5.4/dotscope/passes/z3_transpiler.py +68 -0
- dotscope-1.5.4/dotscope/paths/.scope +22 -0
- dotscope-1.5.4/dotscope/paths/__init__.py +83 -0
- dotscope-1.5.4/dotscope/paths/repo.py +24 -0
- dotscope-1.5.4/dotscope/search/.scope +29 -0
- dotscope-1.5.4/dotscope/search/__init__.py +1 -0
- dotscope-1.5.4/dotscope/search/chunker.py +343 -0
- dotscope-1.5.4/dotscope/search/expander.py +129 -0
- dotscope-1.5.4/dotscope/search/flattener.py +187 -0
- dotscope-1.5.4/dotscope/search/models.py +70 -0
- dotscope-1.5.4/dotscope/search/observation.py +279 -0
- dotscope-1.5.4/dotscope/search/reranker.py +85 -0
- dotscope-1.5.4/dotscope/search/retriever.py +386 -0
- dotscope-1.5.4/dotscope/search/synthesizer.py +302 -0
- dotscope-1.5.4/dotscope/storage/.scope +66 -0
- dotscope-1.5.4/dotscope/storage/__init__.py +1 -0
- dotscope-1.5.4/dotscope/storage/cache.py +177 -0
- dotscope-1.5.4/dotscope/storage/claude_hooks.py +166 -0
- dotscope-1.5.4/dotscope/storage/git_hooks.py +503 -0
- dotscope-1.5.4/dotscope/storage/incremental_state.py +124 -0
- dotscope-1.5.4/dotscope/storage/mcp_config.py +216 -0
- dotscope-1.5.4/dotscope/storage/near_miss.py +183 -0
- dotscope-1.5.4/dotscope/storage/onboarding.py +150 -0
- dotscope-1.5.4/dotscope/storage/session_manager.py +195 -0
- dotscope-1.5.4/dotscope/storage/swarm_state.py +211 -0
- dotscope-1.5.4/dotscope/storage/timing.py +84 -0
- dotscope-1.5.4/dotscope/ux/__init__.py +1 -0
- dotscope-1.5.4/dotscope/ux/bench.py +141 -0
- dotscope-1.5.4/dotscope/ux/counterfactual.py +180 -0
- dotscope-1.5.4/dotscope/ux/debug.py +220 -0
- dotscope-1.5.4/dotscope/ux/explain.py +189 -0
- dotscope-1.5.4/dotscope/ux/formatter.py +169 -0
- dotscope-1.5.4/dotscope/ux/health.py +336 -0
- dotscope-1.5.4/dotscope/ux/help.py +220 -0
- dotscope-1.5.4/dotscope/ux/progress.py +44 -0
- dotscope-1.5.4/dotscope/ux/textio.py +122 -0
- dotscope-1.5.4/dotscope/ux/visibility.py +687 -0
- dotscope-1.5.4/dotscope/workflows/__init__.py +1 -0
- dotscope-1.5.4/dotscope/workflows/absorber.py +390 -0
- dotscope-1.5.4/dotscope/workflows/ingest.py +1030 -0
- dotscope-1.5.4/dotscope/workflows/intent.py +614 -0
- dotscope-1.5.4/dotscope/workflows/lessons.py +223 -0
- dotscope-1.5.4/dotscope/workflows/refresh.py +676 -0
- dotscope-1.5.4/dotscope/workflows/regression.py +147 -0
- dotscope-1.5.4/epic.yaml +75 -0
- dotscope-1.5.4/intent.yaml +82 -0
- dotscope-1.5.4/logo.png +0 -0
- dotscope-1.5.4/pyproject.toml +53 -0
- dotscope-1.5.4/run_epic.py +108 -0
- dotscope-1.5.4/sync_ui.py +43 -0
- dotscope-1.5.4/tests/.scope +29 -0
- dotscope-1.5.4/tests/__init__.py +0 -0
- dotscope-1.5.4/tests/conftest.py +152 -0
- dotscope-1.5.4/tests/test_absorber.py +91 -0
- dotscope-1.5.4/tests/test_ast_analyzer.py +168 -0
- dotscope-1.5.4/tests/test_backtest.py +114 -0
- dotscope-1.5.4/tests/test_budget.py +124 -0
- dotscope-1.5.4/tests/test_canonical_snippet.py +70 -0
- dotscope-1.5.4/tests/test_cli.py +122 -0
- dotscope-1.5.4/tests/test_composer.py +125 -0
- dotscope-1.5.4/tests/test_constants.py +43 -0
- dotscope-1.5.4/tests/test_context.py +52 -0
- dotscope-1.5.4/tests/test_discovery.py +100 -0
- dotscope-1.5.4/tests/test_enforcement.py +423 -0
- dotscope-1.5.4/tests/test_eval_harness.py +376 -0
- dotscope-1.5.4/tests/test_experience.py +237 -0
- dotscope-1.5.4/tests/test_explain.py +141 -0
- dotscope-1.5.4/tests/test_formatter.py +88 -0
- dotscope-1.5.4/tests/test_graph.py +78 -0
- dotscope-1.5.4/tests/test_health.py +142 -0
- dotscope-1.5.4/tests/test_history.py +71 -0
- dotscope-1.5.4/tests/test_ignore.py +64 -0
- dotscope-1.5.4/tests/test_ingest.py +319 -0
- dotscope-1.5.4/tests/test_lang_solidity.py +272 -0
- dotscope-1.5.4/tests/test_lessons.py +91 -0
- dotscope-1.5.4/tests/test_line_filter.py +67 -0
- dotscope-1.5.4/tests/test_loop.py +384 -0
- dotscope-1.5.4/tests/test_matcher.py +47 -0
- dotscope-1.5.4/tests/test_mcp_config.py +153 -0
- dotscope-1.5.4/tests/test_mcp_server.py +67 -0
- dotscope-1.5.4/tests/test_near_miss.py +161 -0
- dotscope-1.5.4/tests/test_parser.py +180 -0
- dotscope-1.5.4/tests/test_refresh.py +251 -0
- dotscope-1.5.4/tests/test_resolver.py +100 -0
- dotscope-1.5.4/tests/test_rigor.py +223 -0
- dotscope-1.5.4/tests/test_routing.py +207 -0
- dotscope-1.5.4/tests/test_runtime_overlay.py +52 -0
- dotscope-1.5.4/tests/test_scanner.py +54 -0
- dotscope-1.5.4/tests/test_serve.py +56 -0
- dotscope-1.5.4/tests/test_sessions.py +122 -0
- dotscope-1.5.4/tests/test_textio.py +85 -0
- dotscope-1.5.4/tests/test_treesitter.py +359 -0
- dotscope-1.5.4/tests/test_utility.py +48 -0
- dotscope-1.5.4/tests/test_virtual.py +95 -0
- dotscope-1.5.4/tests/test_visibility.py +417 -0
- dotscope-1.5.4/tests/test_voice_check.py +123 -0
- dotscope-1.5.4/tests/test_voice_discovery.py +143 -0
- dotscope-1.5.4/uv.lock +2375 -0
- dotscope-1.5.4/virtual/_treesitter_lifecycle/.scope +26 -0
- dotscope-1.5.4/virtual/absorber_lifecycle/.scope +34 -0
- dotscope-1.5.4/virtual/acknowledge_lifecycle/.scope +40 -0
- dotscope-1.5.4/virtual/assertions_lifecycle/.scope +39 -0
- dotscope-1.5.4/virtual/ast_analyzer_lifecycle/.scope +31 -0
- dotscope-1.5.4/virtual/backtest_lifecycle/.scope +35 -0
- dotscope-1.5.4/virtual/budget_allocator_lifecycle/.scope +41 -0
- dotscope-1.5.4/virtual/checker_lifecycle/.scope +45 -0
- dotscope-1.5.4/virtual/composer_lifecycle/.scope +58 -0
- dotscope-1.5.4/virtual/constants_lifecycle/.scope +34 -0
- dotscope-1.5.4/virtual/constraints_lifecycle/.scope +55 -0
- dotscope-1.5.4/virtual/context_lifecycle/.scope +54 -0
- dotscope-1.5.4/virtual/core_lifecycle/.scope +61 -0
- dotscope-1.5.4/virtual/counterfactual_lifecycle/.scope +27 -0
- dotscope-1.5.4/virtual/eval_lifecycle/.scope +26 -0
- dotscope-1.5.4/virtual/explain_lifecycle/.scope +36 -0
- dotscope-1.5.4/virtual/formatter_lifecycle/.scope +45 -0
- dotscope-1.5.4/virtual/git_hooks_lifecycle/.scope +36 -0
- dotscope-1.5.4/virtual/go_lifecycle/.scope +24 -0
- dotscope-1.5.4/virtual/graph_builder_lifecycle/.scope +62 -0
- dotscope-1.5.4/virtual/health_lifecycle/.scope +34 -0
- dotscope-1.5.4/virtual/ignore_lifecycle/.scope +21 -0
- dotscope-1.5.4/virtual/incremental_lifecycle/.scope +33 -0
- dotscope-1.5.4/virtual/incremental_state_lifecycle/.scope +49 -0
- dotscope-1.5.4/virtual/ingest_lifecycle/.scope +39 -0
- dotscope-1.5.4/virtual/intent_lifecycle/.scope +92 -0
- dotscope-1.5.4/virtual/line_filter_lifecycle/.scope +22 -0
- dotscope-1.5.4/virtual/matcher_lifecycle/.scope +38 -0
- dotscope-1.5.4/virtual/models_lifecycle/.scope +63 -0
- dotscope-1.5.4/virtual/near_miss_lifecycle/.scope +36 -0
- dotscope-1.5.4/virtual/onboarding_lifecycle/.scope +44 -0
- dotscope-1.5.4/virtual/parser_lifecycle/.scope +92 -0
- dotscope-1.5.4/virtual/refresh_lifecycle/.scope +51 -0
- dotscope-1.5.4/virtual/resolver_lifecycle/.scope +36 -0
- dotscope-1.5.4/virtual/runtime_overlay_lifecycle/.scope +43 -0
- dotscope-1.5.4/virtual/session_manager_lifecycle/.scope +61 -0
- dotscope-1.5.4/virtual/solidity_lifecycle/.scope +23 -0
- dotscope-1.5.4/virtual/state_lifecycle/.scope +49 -0
- dotscope-1.5.4/virtual/textio_lifecycle/.scope +38 -0
- dotscope-1.5.4/virtual/timing_lifecycle/.scope +31 -0
- dotscope-1.5.4/virtual/virtual_lifecycle/.scope +34 -0
- dotscope-1.5.4/virtual/voice_defaults_lifecycle/.scope +46 -0
- dotscope-1.2.2/dotscope/ast_analyzer.py +0 -2
- dotscope-1.2.2/dotscope/backtest.py +0 -2
- dotscope-1.2.2/dotscope/budget.py +0 -3
- dotscope-1.2.2/dotscope/cache.py +0 -2
- dotscope-1.2.2/dotscope/check/__init__.py +0 -1
- dotscope-1.2.2/dotscope/check/acknowledge.py +0 -2
- dotscope-1.2.2/dotscope/check/checker.py +0 -3
- dotscope-1.2.2/dotscope/check/checks/__init__.py +0 -1
- dotscope-1.2.2/dotscope/check/checks/antipattern.py +0 -2
- dotscope-1.2.2/dotscope/check/checks/boundary.py +0 -2
- dotscope-1.2.2/dotscope/check/checks/contracts.py +0 -3
- dotscope-1.2.2/dotscope/check/checks/direction.py +0 -2
- dotscope-1.2.2/dotscope/check/checks/intent.py +0 -2
- dotscope-1.2.2/dotscope/check/checks/stability.py +0 -2
- dotscope-1.2.2/dotscope/check/constraints.py +0 -2
- dotscope-1.2.2/dotscope/cli.py +0 -1567
- dotscope-1.2.2/dotscope/graph.py +0 -3
- dotscope-1.2.2/dotscope/history.py +0 -6
- dotscope-1.2.2/dotscope/hooks.py +0 -2
- dotscope-1.2.2/dotscope/mcp_server.py +0 -1577
- dotscope-1.2.2/dotscope/models.py +0 -9
- dotscope-1.2.2/dotscope/near_miss.py +0 -3
- dotscope-1.2.2/dotscope/onboarding.py +0 -2
- dotscope-1.2.2/dotscope/sessions.py +0 -2
- dotscope-1.2.2/dotscope/storage/mcp_config.py +0 -98
- dotscope-1.2.2/dotscope/swarm/__init__.py +0 -13
- dotscope-1.2.2/dotscope/swarm/merge.py +0 -161
- dotscope-1.2.2/dotscope/swarm/partition.py +0 -236
- dotscope-1.2.2/dotscope/swarm/trace.py +0 -251
- dotscope-1.2.2/dotscope/timing.py +0 -2
- dotscope-1.2.2/dotscope/virtual.py +0 -3
- dotscope-1.2.2/tests/test_swarm.py +0 -300
- {dotscope-1.2.2 → dotscope-1.5.4/.claude/worktrees/dazzling-hugle}/logo.png +0 -0
- {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,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 @@
|
|
|
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/
|
|
@@ -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
|