taskill 0.1.3__tar.gz → 0.1.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 (76) hide show
  1. {taskill-0.1.3 → taskill-0.1.4}/CHANGELOG.md +23 -0
  2. {taskill-0.1.3 → taskill-0.1.4}/PKG-INFO +5 -5
  3. {taskill-0.1.3 → taskill-0.1.4}/README.md +4 -4
  4. {taskill-0.1.3 → taskill-0.1.4}/SUMD.md +22 -24
  5. {taskill-0.1.3 → taskill-0.1.4}/SUMR.md +49 -57
  6. {taskill-0.1.3 → taskill-0.1.4}/TODO.md +1 -1
  7. taskill-0.1.4/VERSION +1 -0
  8. {taskill-0.1.3 → taskill-0.1.4}/app.doql.less +1 -1
  9. {taskill-0.1.3 → taskill-0.1.4}/project/README.md +1 -1
  10. {taskill-0.1.3 → taskill-0.1.4}/project/analysis.toon.yaml +11 -15
  11. {taskill-0.1.3 → taskill-0.1.4}/project/calls.mmd +36 -39
  12. taskill-0.1.4/project/calls.png +0 -0
  13. {taskill-0.1.3 → taskill-0.1.4}/project/calls.toon.yaml +15 -17
  14. {taskill-0.1.3 → taskill-0.1.4}/project/calls.yaml +217 -225
  15. taskill-0.1.4/project/compact_flow.mmd +3 -0
  16. taskill-0.1.4/project/compact_flow.png +0 -0
  17. {taskill-0.1.3 → taskill-0.1.4}/project/context.md +35 -41
  18. {taskill-0.1.3 → taskill-0.1.4}/project/duplication.toon.yaml +1 -1
  19. {taskill-0.1.3 → taskill-0.1.4}/project/evolution.toon.yaml +1 -1
  20. {taskill-0.1.3 → taskill-0.1.4}/project/flow.mmd +4 -4
  21. taskill-0.1.4/project/flow.png +0 -0
  22. taskill-0.1.4/project/index.html +623 -0
  23. {taskill-0.1.3 → taskill-0.1.4}/project/mermaid.export +14 -14
  24. {taskill-0.1.3 → taskill-0.1.4}/project/project.toon.yaml +9 -9
  25. {taskill-0.1.3 → taskill-0.1.4}/pyproject.toml +1 -1
  26. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/__init__.py +1 -1
  27. taskill-0.1.3/VERSION +0 -1
  28. taskill-0.1.3/project/calls.png +0 -0
  29. taskill-0.1.3/project/compact_flow.mmd +0 -4
  30. taskill-0.1.3/project/compact_flow.png +0 -0
  31. taskill-0.1.3/project/flow.png +0 -0
  32. taskill-0.1.3/project/index.html +0 -623
  33. {taskill-0.1.3 → taskill-0.1.4}/.gitignore +0 -0
  34. {taskill-0.1.3 → taskill-0.1.4}/.windsurf/workflows/daily-docs-update.md +0 -0
  35. {taskill-0.1.3 → taskill-0.1.4}/LICENSE +0 -0
  36. {taskill-0.1.3 → taskill-0.1.4}/ROADMAP.md +0 -0
  37. {taskill-0.1.3 → taskill-0.1.4}/daily_update.sh +0 -0
  38. {taskill-0.1.3 → taskill-0.1.4}/examples/ansible-playbook.yml +0 -0
  39. {taskill-0.1.3 → taskill-0.1.4}/examples/github-action.yml +0 -0
  40. {taskill-0.1.3 → taskill-0.1.4}/examples/gitlab-ci.yml +0 -0
  41. {taskill-0.1.3 → taskill-0.1.4}/examples/systemd-timer/taskill.service +0 -0
  42. {taskill-0.1.3 → taskill-0.1.4}/examples/systemd-timer/taskill.timer +0 -0
  43. {taskill-0.1.3 → taskill-0.1.4}/goal.yaml +0 -0
  44. {taskill-0.1.3 → taskill-0.1.4}/planfile.yaml +0 -0
  45. {taskill-0.1.3 → taskill-0.1.4}/prefact.yaml +0 -0
  46. {taskill-0.1.3 → taskill-0.1.4}/project/map.toon.yaml +0 -0
  47. {taskill-0.1.3 → taskill-0.1.4}/project/prompt.txt +0 -0
  48. {taskill-0.1.3 → taskill-0.1.4}/project.sh +0 -0
  49. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/bulk.py +0 -0
  50. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/cli.py +0 -0
  51. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/config.py +0 -0
  52. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/core.py +0 -0
  53. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/git_state.py +0 -0
  54. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/providers/__init__.py +0 -0
  55. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/providers/algorithmic.py +0 -0
  56. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/providers/base.py +0 -0
  57. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/providers/openrouter.py +0 -0
  58. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/providers/windsurf_mcp.py +0 -0
  59. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/state.py +0 -0
  60. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/triggers.py +0 -0
  61. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/updaters/__init__.py +0 -0
  62. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/updaters/base.py +0 -0
  63. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/updaters/changelog.py +0 -0
  64. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/updaters/readme.py +0 -0
  65. {taskill-0.1.3 → taskill-0.1.4}/src/taskill/updaters/todo.py +0 -0
  66. {taskill-0.1.3 → taskill-0.1.4}/taskill.yaml +0 -0
  67. {taskill-0.1.3 → taskill-0.1.4}/testql-scenarios/generated-cli-tests.testql.toon.yaml +0 -0
  68. {taskill-0.1.3 → taskill-0.1.4}/tests/__init__.py +0 -0
  69. {taskill-0.1.3 → taskill-0.1.4}/tests/test_algorithmic.py +0 -0
  70. {taskill-0.1.3 → taskill-0.1.4}/tests/test_bulk.py +0 -0
  71. {taskill-0.1.3 → taskill-0.1.4}/tests/test_config.py +0 -0
  72. {taskill-0.1.3 → taskill-0.1.4}/tests/test_providers.py +0 -0
  73. {taskill-0.1.3 → taskill-0.1.4}/tests/test_triggers.py +0 -0
  74. {taskill-0.1.3 → taskill-0.1.4}/tests/test_updaters.py +0 -0
  75. {taskill-0.1.3 → taskill-0.1.4}/tree.sh +0 -0
  76. {taskill-0.1.3 → taskill-0.1.4}/tree.txt +0 -0
@@ -81,6 +81,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
81
81
  - README: new "Bulk / fleet-wide runs" and "Extending taskill" sections
82
82
  - ROADMAP: marked v0.2.1, v0.2.3, and v0.5 baseline as shipped
83
83
 
84
+ ## [0.1.4] - 2026-04-25
85
+
86
+ ### Docs
87
+ - Update README.md
88
+ - Update SUMD.md
89
+ - Update SUMR.md
90
+ - Update TODO.md
91
+ - Update project/README.md
92
+ - Update project/context.md
93
+
94
+ ### Other
95
+ - Update app.doql.less
96
+ - Update project/analysis.toon.yaml
97
+ - Update project/calls.mmd
98
+ - Update project/calls.png
99
+ - Update project/calls.toon.yaml
100
+ - Update project/calls.yaml
101
+ - Update project/compact_flow.mmd
102
+ - Update project/compact_flow.png
103
+ - Update project/duplication.toon.yaml
104
+ - Update project/evolution.toon.yaml
105
+ - ... and 5 more files
106
+
84
107
  ## [0.1.3] - 2026-04-25
85
108
 
86
109
  ### Docs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: taskill
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary: Daily project hygiene: keep README / CHANGELOG / TODO in sync with reality. LLM-first, algorithmic fallback.
5
5
  Project-URL: Homepage, https://github.com/oqlos/taskill
6
6
  Project-URL: Issues, https://github.com/oqlos/taskill/issues
@@ -37,11 +37,11 @@ Description-Content-Type: text/markdown
37
37
 
38
38
  ## AI Cost Tracking
39
39
 
40
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.1.3-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
41
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$0.30-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-2.0h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
40
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.1.4-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
41
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$0.45-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-3.3h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
42
42
 
43
- - 🤖 **LLM usage:** $0.3000 (2 commits)
44
- - 👤 **Human dev:** ~$200 (2.0h @ $100/h, 30min dedup)
43
+ - 🤖 **LLM usage:** $0.4500 (3 commits)
44
+ - 👤 **Human dev:** ~$333 (3.3h @ $100/h, 30min dedup)
45
45
 
46
46
  Generated on 2026-04-25 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
47
47
 
@@ -3,11 +3,11 @@
3
3
 
4
4
  ## AI Cost Tracking
5
5
 
6
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.1.3-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
7
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$0.30-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-2.0h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
6
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.1.4-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
7
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$0.45-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-3.3h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
8
8
 
9
- - 🤖 **LLM usage:** $0.3000 (2 commits)
10
- - 👤 **Human dev:** ~$200 (2.0h @ $100/h, 30min dedup)
9
+ - 🤖 **LLM usage:** $0.4500 (3 commits)
10
+ - 👤 **Human dev:** ~$333 (3.3h @ $100/h, 30min dedup)
11
11
 
12
12
  Generated on 2026-04-25 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
13
13
 
@@ -20,7 +20,7 @@ Daily project hygiene: keep README / CHANGELOG / TODO in sync with reality. LLM-
20
20
  ## Metadata
21
21
 
22
22
  - **name**: `taskill`
23
- - **version**: `0.1.2`
23
+ - **version**: `0.1.3`
24
24
  - **python_requires**: `>=3.10`
25
25
  - **license**: Apache-2.0
26
26
  - **ai_model**: `openrouter/qwen/qwen3-coder-next`
@@ -40,7 +40,7 @@ SUMD (description) → DOQL/source (code) → taskfile (automation) → testql (
40
40
 
41
41
  app {
42
42
  name: taskill;
43
- version: 0.1.2;
43
+ version: 0.1.3;
44
44
  }
45
45
 
46
46
  dependencies {
@@ -100,7 +100,7 @@ LOG[3]{message}:
100
100
  ```yaml
101
101
  project:
102
102
  name: taskill
103
- version: 0.1.2
103
+ version: 0.1.3
104
104
  env: local
105
105
  ```
106
106
 
@@ -379,7 +379,7 @@ D:
379
379
 
380
380
  ## Call Graph
381
381
 
382
- *44 nodes · 35 edges · 14 modules · CC̄=2.0*
382
+ *43 nodes · 35 edges · 13 modules · CC̄=2.0*
383
383
 
384
384
  ### Hubs (by degree)
385
385
 
@@ -387,16 +387,16 @@ D:
387
387
  |----------|----|----|-----|-------|
388
388
  | `load_config` *(in src.taskill.config)* | 8 | 6 | 35 | **41** |
389
389
  | `bulk_run_cmd` *(in src.taskill.cli)* | 17 ⚠ | 0 | 38 | **38** |
390
- | `generate` *(in src.taskill.providers.windsurf_mcp.WindsurfMcpProvider)* | 7 | 0 | 32 | **32** |
391
390
  | `run` *(in src.taskill.cli)* | 16 ⚠ | 0 | 32 | **32** |
391
+ | `generate` *(in src.taskill.providers.windsurf_mcp.WindsurfMcpProvider)* | 7 | 0 | 32 | **32** |
392
392
  | `generate` *(in src.taskill.providers.openrouter.OpenRouterProvider)* | 6 | 0 | 27 | **27** |
393
- | `bulk_run` *(in src.taskill.bulk)* | 17 ⚠ | 0 | 26 | **26** |
394
- | `status` *(in src.taskill.cli)* | 11 ⚠ | 0 | 25 | **25** |
393
+ | `bulk_run` *(in src.taskill.bulk)* | 17 ⚠ | 1 | 26 | **27** |
395
394
  | `evaluate` *(in src.taskill.triggers)* | 21 ⚠ | 2 | 23 | **25** |
395
+ | `status` *(in src.taskill.cli)* | 11 ⚠ | 0 | 25 | **25** |
396
396
 
397
397
  ```toon markpact:analysis path=project/calls.toon.yaml
398
398
  # code2llm call graph | /home/tom/github/semcod/taskill
399
- # nodes: 44 | edges: 35 | modules: 14
399
+ # nodes: 43 | edges: 35 | modules: 13
400
400
  # CC̄=2.0
401
401
 
402
402
  HUBS[20]:
@@ -404,34 +404,34 @@ HUBS[20]:
404
404
  CC=8 in:6 out:35 total:41
405
405
  src.taskill.cli.bulk_run_cmd
406
406
  CC=17 in:0 out:38 total:38
407
- src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate
408
- CC=7 in:0 out:32 total:32
409
407
  src.taskill.cli.run
410
408
  CC=16 in:0 out:32 total:32
409
+ src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate
410
+ CC=7 in:0 out:32 total:32
411
411
  src.taskill.providers.openrouter.OpenRouterProvider.generate
412
412
  CC=6 in:0 out:27 total:27
413
413
  src.taskill.bulk.bulk_run
414
- CC=17 in:0 out:26 total:26
415
- src.taskill.cli.status
416
- CC=11 in:0 out:25 total:25
414
+ CC=17 in:1 out:26 total:27
417
415
  src.taskill.triggers.evaluate
418
416
  CC=21 in:2 out:23 total:25
417
+ src.taskill.cli.status
418
+ CC=11 in:0 out:25 total:25
419
419
  src.taskill.core.Taskill.run
420
420
  CC=11 in:0 out:20 total:20
421
421
  src.taskill.git_state.collect_snapshot
422
422
  CC=3 in:1 out:13 total:14
423
- src.taskill.git_state.read_coverage
424
- CC=7 in:1 out:11 total:12
425
423
  src.taskill.core.Taskill._apply
426
424
  CC=4 in:0 out:12 total:12
425
+ src.taskill.git_state.read_coverage
426
+ CC=7 in:1 out:11 total:12
427
427
  src.taskill.updaters.readme.ReadmeUpdater._update_readme
428
428
  CC=6 in:0 out:11 total:11
429
+ src.taskill.providers.windsurf_mcp._candidate_endpoints
430
+ CC=5 in:2 out:7 total:9
429
431
  src.taskill.bulk._scan
430
432
  CC=9 in:2 out:7 total:9
431
433
  src.taskill.git_state.commits_since
432
434
  CC=7 in:1 out:8 total:9
433
- src.taskill.providers.windsurf_mcp._candidate_endpoints
434
- CC=5 in:2 out:7 total:9
435
435
  src.taskill.git_state.read_failed_tests
436
436
  CC=5 in:1 out:8 total:9
437
437
  src.taskill.cli.release
@@ -442,8 +442,6 @@ HUBS[20]:
442
442
  CC=3 in:1 out:6 total:7
443
443
 
444
444
  MODULES:
445
- project.map.toon [1 funcs]
446
- bulk_run CC=0 out:0
447
445
  src.taskill.bulk [5 funcs]
448
446
  _rebase_config CC=1 out:3
449
447
  _scan CC=9 out:7
@@ -506,7 +504,7 @@ EDGES:
506
504
  src.taskill.cli.run → src.taskill.config.load_config
507
505
  src.taskill.cli.status → src.taskill.config.load_config
508
506
  src.taskill.cli.release → src.taskill.updaters.changelog.release_unreleased
509
- src.taskill.cli.bulk_run_cmd → project.map.toon.bulk_run
507
+ src.taskill.cli.bulk_run_cmd → src.taskill.bulk.bulk_run
510
508
  src.taskill.cli.clean_todo → src.taskill.updaters.todo.empty_todo
511
509
  src.taskill.git_state.head_sha → src.taskill.git_state._run
512
510
  src.taskill.git_state.commits_since → src.taskill.git_state._run
@@ -526,6 +524,10 @@ EDGES:
526
524
  src.taskill.core.Taskill._apply → src.taskill.updaters.changelog.update_changelog
527
525
  src.taskill.core.Taskill._apply → src.taskill.updaters.todo.update_todo
528
526
  src.taskill.core.Taskill._apply → src.taskill.updaters.readme.update_readme
527
+ src.taskill.bulk.find_repos → src.taskill.bulk._scan
528
+ src.taskill.bulk.resolve_repo_config → src.taskill.config.load_config
529
+ src.taskill.bulk.resolve_repo_config → src.taskill.bulk._rebase_config
530
+ src.taskill.bulk.bulk_run → src.taskill.bulk.find_repos
529
531
  src.taskill.updaters.readme.ReadmeUpdater._update_readme → src.taskill.updaters.readme.render_status_block
530
532
  src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.is_available → src.taskill.providers.windsurf_mcp._mcp_lib_present
531
533
  src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.is_available → src.taskill.providers.windsurf_mcp._candidate_endpoints
@@ -533,10 +535,6 @@ EDGES:
533
535
  src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate → src.taskill.providers.windsurf_mcp._mcp_lib_present
534
536
  src.taskill.providers.openrouter.OpenRouterProvider.generate → src.taskill.providers.openrouter._normalize_model
535
537
  src.taskill.providers.build_chain → src.taskill.providers.discover_providers
536
- src.taskill.bulk.find_repos → src.taskill.bulk._scan
537
- src.taskill.bulk.resolve_repo_config → src.taskill.config.load_config
538
- src.taskill.bulk.resolve_repo_config → src.taskill.bulk._rebase_config
539
- src.taskill.bulk.bulk_run → src.taskill.bulk.find_repos
540
538
  ```
541
539
 
542
540
  ## Test Contracts
@@ -15,7 +15,7 @@ SUMD - Structured Unified Markdown Descriptor for AI-aware project refactorizati
15
15
  ## Metadata
16
16
 
17
17
  - **name**: `taskill`
18
- - **version**: `0.1.2`
18
+ - **version**: `0.1.3`
19
19
  - **python_requires**: `>=3.10`
20
20
  - **license**: Apache-2.0
21
21
  - **ai_model**: `openrouter/qwen/qwen3-coder-next`
@@ -35,7 +35,7 @@ SUMD (description) → DOQL/source (code) → taskfile (automation) → testql (
35
35
 
36
36
  app {
37
37
  name: taskill;
38
- version: 0.1.2;
38
+ version: 0.1.3;
39
39
  }
40
40
 
41
41
  dependencies {
@@ -94,7 +94,7 @@ pfix>=0.1.60
94
94
 
95
95
  ## Call Graph
96
96
 
97
- *44 nodes · 35 edges · 14 modules · CC̄=2.0*
97
+ *43 nodes · 35 edges · 13 modules · CC̄=2.0*
98
98
 
99
99
  ### Hubs (by degree)
100
100
 
@@ -102,16 +102,16 @@ pfix>=0.1.60
102
102
  |----------|----|----|-----|-------|
103
103
  | `load_config` *(in src.taskill.config)* | 8 | 6 | 35 | **41** |
104
104
  | `bulk_run_cmd` *(in src.taskill.cli)* | 17 ⚠ | 0 | 38 | **38** |
105
- | `generate` *(in src.taskill.providers.windsurf_mcp.WindsurfMcpProvider)* | 7 | 0 | 32 | **32** |
106
105
  | `run` *(in src.taskill.cli)* | 16 ⚠ | 0 | 32 | **32** |
106
+ | `generate` *(in src.taskill.providers.windsurf_mcp.WindsurfMcpProvider)* | 7 | 0 | 32 | **32** |
107
107
  | `generate` *(in src.taskill.providers.openrouter.OpenRouterProvider)* | 6 | 0 | 27 | **27** |
108
- | `bulk_run` *(in src.taskill.bulk)* | 17 ⚠ | 0 | 26 | **26** |
109
- | `status` *(in src.taskill.cli)* | 11 ⚠ | 0 | 25 | **25** |
108
+ | `bulk_run` *(in src.taskill.bulk)* | 17 ⚠ | 1 | 26 | **27** |
110
109
  | `evaluate` *(in src.taskill.triggers)* | 21 ⚠ | 2 | 23 | **25** |
110
+ | `status` *(in src.taskill.cli)* | 11 ⚠ | 0 | 25 | **25** |
111
111
 
112
112
  ```toon markpact:analysis path=project/calls.toon.yaml
113
113
  # code2llm call graph | /home/tom/github/semcod/taskill
114
- # nodes: 44 | edges: 35 | modules: 14
114
+ # nodes: 43 | edges: 35 | modules: 13
115
115
  # CC̄=2.0
116
116
 
117
117
  HUBS[20]:
@@ -119,34 +119,34 @@ HUBS[20]:
119
119
  CC=8 in:6 out:35 total:41
120
120
  src.taskill.cli.bulk_run_cmd
121
121
  CC=17 in:0 out:38 total:38
122
- src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate
123
- CC=7 in:0 out:32 total:32
124
122
  src.taskill.cli.run
125
123
  CC=16 in:0 out:32 total:32
124
+ src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate
125
+ CC=7 in:0 out:32 total:32
126
126
  src.taskill.providers.openrouter.OpenRouterProvider.generate
127
127
  CC=6 in:0 out:27 total:27
128
128
  src.taskill.bulk.bulk_run
129
- CC=17 in:0 out:26 total:26
130
- src.taskill.cli.status
131
- CC=11 in:0 out:25 total:25
129
+ CC=17 in:1 out:26 total:27
132
130
  src.taskill.triggers.evaluate
133
131
  CC=21 in:2 out:23 total:25
132
+ src.taskill.cli.status
133
+ CC=11 in:0 out:25 total:25
134
134
  src.taskill.core.Taskill.run
135
135
  CC=11 in:0 out:20 total:20
136
136
  src.taskill.git_state.collect_snapshot
137
137
  CC=3 in:1 out:13 total:14
138
- src.taskill.git_state.read_coverage
139
- CC=7 in:1 out:11 total:12
140
138
  src.taskill.core.Taskill._apply
141
139
  CC=4 in:0 out:12 total:12
140
+ src.taskill.git_state.read_coverage
141
+ CC=7 in:1 out:11 total:12
142
142
  src.taskill.updaters.readme.ReadmeUpdater._update_readme
143
143
  CC=6 in:0 out:11 total:11
144
+ src.taskill.providers.windsurf_mcp._candidate_endpoints
145
+ CC=5 in:2 out:7 total:9
144
146
  src.taskill.bulk._scan
145
147
  CC=9 in:2 out:7 total:9
146
148
  src.taskill.git_state.commits_since
147
149
  CC=7 in:1 out:8 total:9
148
- src.taskill.providers.windsurf_mcp._candidate_endpoints
149
- CC=5 in:2 out:7 total:9
150
150
  src.taskill.git_state.read_failed_tests
151
151
  CC=5 in:1 out:8 total:9
152
152
  src.taskill.cli.release
@@ -157,8 +157,6 @@ HUBS[20]:
157
157
  CC=3 in:1 out:6 total:7
158
158
 
159
159
  MODULES:
160
- project.map.toon [1 funcs]
161
- bulk_run CC=0 out:0
162
160
  src.taskill.bulk [5 funcs]
163
161
  _rebase_config CC=1 out:3
164
162
  _scan CC=9 out:7
@@ -221,7 +219,7 @@ EDGES:
221
219
  src.taskill.cli.run → src.taskill.config.load_config
222
220
  src.taskill.cli.status → src.taskill.config.load_config
223
221
  src.taskill.cli.release → src.taskill.updaters.changelog.release_unreleased
224
- src.taskill.cli.bulk_run_cmd → project.map.toon.bulk_run
222
+ src.taskill.cli.bulk_run_cmd → src.taskill.bulk.bulk_run
225
223
  src.taskill.cli.clean_todo → src.taskill.updaters.todo.empty_todo
226
224
  src.taskill.git_state.head_sha → src.taskill.git_state._run
227
225
  src.taskill.git_state.commits_since → src.taskill.git_state._run
@@ -241,6 +239,10 @@ EDGES:
241
239
  src.taskill.core.Taskill._apply → src.taskill.updaters.changelog.update_changelog
242
240
  src.taskill.core.Taskill._apply → src.taskill.updaters.todo.update_todo
243
241
  src.taskill.core.Taskill._apply → src.taskill.updaters.readme.update_readme
242
+ src.taskill.bulk.find_repos → src.taskill.bulk._scan
243
+ src.taskill.bulk.resolve_repo_config → src.taskill.config.load_config
244
+ src.taskill.bulk.resolve_repo_config → src.taskill.bulk._rebase_config
245
+ src.taskill.bulk.bulk_run → src.taskill.bulk.find_repos
244
246
  src.taskill.updaters.readme.ReadmeUpdater._update_readme → src.taskill.updaters.readme.render_status_block
245
247
  src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.is_available → src.taskill.providers.windsurf_mcp._mcp_lib_present
246
248
  src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.is_available → src.taskill.providers.windsurf_mcp._candidate_endpoints
@@ -248,10 +250,6 @@ EDGES:
248
250
  src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate → src.taskill.providers.windsurf_mcp._mcp_lib_present
249
251
  src.taskill.providers.openrouter.OpenRouterProvider.generate → src.taskill.providers.openrouter._normalize_model
250
252
  src.taskill.providers.build_chain → src.taskill.providers.discover_providers
251
- src.taskill.bulk.find_repos → src.taskill.bulk._scan
252
- src.taskill.bulk.resolve_repo_config → src.taskill.config.load_config
253
- src.taskill.bulk.resolve_repo_config → src.taskill.bulk._rebase_config
254
- src.taskill.bulk.bulk_run → src.taskill.bulk.find_repos
255
253
  ```
256
254
 
257
255
  ## Test Contracts
@@ -270,7 +268,7 @@ EDGES:
270
268
 
271
269
  ```toon markpact:analysis path=project/calls.toon.yaml
272
270
  # code2llm call graph | /home/tom/github/semcod/taskill
273
- # nodes: 44 | edges: 35 | modules: 14
271
+ # nodes: 43 | edges: 35 | modules: 13
274
272
  # CC̄=2.0
275
273
 
276
274
  HUBS[20]:
@@ -278,34 +276,34 @@ HUBS[20]:
278
276
  CC=8 in:6 out:35 total:41
279
277
  src.taskill.cli.bulk_run_cmd
280
278
  CC=17 in:0 out:38 total:38
281
- src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate
282
- CC=7 in:0 out:32 total:32
283
279
  src.taskill.cli.run
284
280
  CC=16 in:0 out:32 total:32
281
+ src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate
282
+ CC=7 in:0 out:32 total:32
285
283
  src.taskill.providers.openrouter.OpenRouterProvider.generate
286
284
  CC=6 in:0 out:27 total:27
287
285
  src.taskill.bulk.bulk_run
288
- CC=17 in:0 out:26 total:26
289
- src.taskill.cli.status
290
- CC=11 in:0 out:25 total:25
286
+ CC=17 in:1 out:26 total:27
291
287
  src.taskill.triggers.evaluate
292
288
  CC=21 in:2 out:23 total:25
289
+ src.taskill.cli.status
290
+ CC=11 in:0 out:25 total:25
293
291
  src.taskill.core.Taskill.run
294
292
  CC=11 in:0 out:20 total:20
295
293
  src.taskill.git_state.collect_snapshot
296
294
  CC=3 in:1 out:13 total:14
297
- src.taskill.git_state.read_coverage
298
- CC=7 in:1 out:11 total:12
299
295
  src.taskill.core.Taskill._apply
300
296
  CC=4 in:0 out:12 total:12
297
+ src.taskill.git_state.read_coverage
298
+ CC=7 in:1 out:11 total:12
301
299
  src.taskill.updaters.readme.ReadmeUpdater._update_readme
302
300
  CC=6 in:0 out:11 total:11
301
+ src.taskill.providers.windsurf_mcp._candidate_endpoints
302
+ CC=5 in:2 out:7 total:9
303
303
  src.taskill.bulk._scan
304
304
  CC=9 in:2 out:7 total:9
305
305
  src.taskill.git_state.commits_since
306
306
  CC=7 in:1 out:8 total:9
307
- src.taskill.providers.windsurf_mcp._candidate_endpoints
308
- CC=5 in:2 out:7 total:9
309
307
  src.taskill.git_state.read_failed_tests
310
308
  CC=5 in:1 out:8 total:9
311
309
  src.taskill.cli.release
@@ -316,8 +314,6 @@ HUBS[20]:
316
314
  CC=3 in:1 out:6 total:7
317
315
 
318
316
  MODULES:
319
- project.map.toon [1 funcs]
320
- bulk_run CC=0 out:0
321
317
  src.taskill.bulk [5 funcs]
322
318
  _rebase_config CC=1 out:3
323
319
  _scan CC=9 out:7
@@ -380,7 +376,7 @@ EDGES:
380
376
  src.taskill.cli.run → src.taskill.config.load_config
381
377
  src.taskill.cli.status → src.taskill.config.load_config
382
378
  src.taskill.cli.release → src.taskill.updaters.changelog.release_unreleased
383
- src.taskill.cli.bulk_run_cmd → project.map.toon.bulk_run
379
+ src.taskill.cli.bulk_run_cmd → src.taskill.bulk.bulk_run
384
380
  src.taskill.cli.clean_todo → src.taskill.updaters.todo.empty_todo
385
381
  src.taskill.git_state.head_sha → src.taskill.git_state._run
386
382
  src.taskill.git_state.commits_since → src.taskill.git_state._run
@@ -400,6 +396,10 @@ EDGES:
400
396
  src.taskill.core.Taskill._apply → src.taskill.updaters.changelog.update_changelog
401
397
  src.taskill.core.Taskill._apply → src.taskill.updaters.todo.update_todo
402
398
  src.taskill.core.Taskill._apply → src.taskill.updaters.readme.update_readme
399
+ src.taskill.bulk.find_repos → src.taskill.bulk._scan
400
+ src.taskill.bulk.resolve_repo_config → src.taskill.config.load_config
401
+ src.taskill.bulk.resolve_repo_config → src.taskill.bulk._rebase_config
402
+ src.taskill.bulk.bulk_run → src.taskill.bulk.find_repos
403
403
  src.taskill.updaters.readme.ReadmeUpdater._update_readme → src.taskill.updaters.readme.render_status_block
404
404
  src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.is_available → src.taskill.providers.windsurf_mcp._mcp_lib_present
405
405
  src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.is_available → src.taskill.providers.windsurf_mcp._candidate_endpoints
@@ -407,30 +407,26 @@ EDGES:
407
407
  src.taskill.providers.windsurf_mcp.WindsurfMcpProvider.generate → src.taskill.providers.windsurf_mcp._mcp_lib_present
408
408
  src.taskill.providers.openrouter.OpenRouterProvider.generate → src.taskill.providers.openrouter._normalize_model
409
409
  src.taskill.providers.build_chain → src.taskill.providers.discover_providers
410
- src.taskill.bulk.find_repos → src.taskill.bulk._scan
411
- src.taskill.bulk.resolve_repo_config → src.taskill.config.load_config
412
- src.taskill.bulk.resolve_repo_config → src.taskill.bulk._rebase_config
413
- src.taskill.bulk.bulk_run → src.taskill.bulk.find_repos
414
410
  ```
415
411
 
416
412
  ### Code Analysis (`project/analysis.toon.yaml`)
417
413
 
418
414
  ```toon markpact:analysis path=project/analysis.toon.yaml
419
- # code2llm | 38f 5234L | python:18,yaml:12,shell:3,yml:3,toml:1,txt:1 | 2026-04-25
420
- # CC̄=2.0 | critical:5/171 | dups:0 | cycles:1
415
+ # code2llm | 38f 5318L | python:18,yaml:12,yml:3,txt:2,shell:2,toml:1 | 2026-04-25
416
+ # CC̄=2.0 | critical:5/172 | dups:0 | cycles:1
421
417
 
422
418
  HEALTH[5]:
423
419
  🟡 CC run CC=16 (limit:15)
424
420
  🟡 CC bulk_run_cmd CC=17 (limit:15)
425
421
  🟡 CC evaluate CC=21 (limit:15)
426
- 🟡 CC _update_todo CC=21 (limit:15)
427
422
  🟡 CC bulk_run CC=17 (limit:15)
423
+ 🟡 CC _update_todo CC=21 (limit:15)
428
424
 
429
425
  REFACTOR[2]:
430
426
  1. split 5 high-CC methods (CC>15)
431
427
  2. break 1 circular dependencies
432
428
 
433
- PIPELINES[37]:
429
+ PIPELINES[36]:
434
430
  [1] Src [stamp]: stamp
435
431
  PURITY: 100% pure
436
432
  [2] Src [main]: main → _setup_logging
@@ -445,7 +441,7 @@ PIPELINES[37]:
445
441
  LAYERS:
446
442
  src/ CC̄=4.7 ←in:0 →out:0
447
443
  │ !! cli 347L 0C 8m CC=17 ←0
448
- │ !! bulk 249L 1C 7m CC=17 ←0
444
+ │ !! bulk 249L 1C 7m CC=17 ←1
449
445
  │ core 211L 2C 9m CC=11 ←0
450
446
  │ config 170L 4C 1m CC=8 ←3
451
447
  │ algorithmic 155L 1C 5m CC=10 ←0
@@ -464,12 +460,12 @@ LAYERS:
464
460
  │ __init__ 30L 0C 0m CC=0.0 ←0
465
461
 
466
462
  project/ CC̄=0.0 ←in:0 →out:0
467
- │ !! calls.yaml 620L 0C 0m CC=0.0 ←0
468
- │ map.toon.yaml 208L 0C 98m CC=0.0 ←1
463
+ │ !! calls.yaml 622L 0C 0m CC=0.0 ←0
464
+ │ map.toon.yaml 209L 0C 99m CC=0.0 ←0
469
465
  │ calls.toon.yaml 142L 0C 0m CC=0.0 ←0
470
- │ analysis.toon.yaml 87L 0C 0m CC=0.0 ←0
466
+ │ analysis.toon.yaml 85L 0C 0m CC=0.0 ←0
467
+ │ evolution.toon.yaml 59L 0C 0m CC=0.0 ←0
471
468
  │ project.toon.yaml 56L 0C 0m CC=0.0 ←0
472
- │ evolution.toon.yaml 55L 0C 0m CC=0.0 ←0
473
469
  │ prompt.txt 47L 0C 0m CC=0.0 ←0
474
470
  │ duplication.toon.yaml 34L 0C 0m CC=0.0 ←0
475
471
 
@@ -479,9 +475,9 @@ LAYERS:
479
475
  │ pyproject.toml 97L 0C 0m CC=0.0 ←0
480
476
  │ daily_update.sh 93L 0C 0m CC=0.0 ←0
481
477
  │ prefact.yaml 91L 0C 0m CC=0.0 ←0
478
+ │ tree.txt 80L 0C 0m CC=0.0 ←0
482
479
  │ taskill.yaml 57L 0C 0m CC=0.0 ←0
483
480
  │ project.sh 47L 0C 0m CC=0.0 ←0
484
- │ tree.sh 1L 0C 0m CC=0.0 ←0
485
481
 
486
482
  examples/ CC̄=0.0 ←in:0 →out:0
487
483
  │ ansible-playbook.yml 52L 0C 0m CC=0.0 ←0
@@ -492,11 +488,7 @@ LAYERS:
492
488
  │ generated-cli-tests.testql.toon.yaml 12L 0C 0m CC=0.0 ←0
493
489
 
494
490
 
495
- COUPLING:
496
- project.map src.taskill
497
- project.map ── ←1
498
- src.taskill 1 ──
499
- CYCLES: 1
491
+ COUPLING: no cross-package imports detected
500
492
 
501
493
  EXTERNAL:
502
494
  validation: run `vallm batch .` → validation.toon
@@ -514,7 +506,7 @@ SUMMARY:
514
506
  dup_groups: 1
515
507
  dup_fragments: 2
516
508
  saved_lines: 29
517
- scan_ms: 4227
509
+ scan_ms: 4828
518
510
 
519
511
  HOTSPOTS[2] (files with most duplication):
520
512
  src/taskill/providers/__init__.py dup=29L groups=1 frags=1 (1.3%)
@@ -545,7 +537,7 @@ METRICS-TARGET:
545
537
  ### Evolution / Churn (`project/evolution.toon.yaml`)
546
538
 
547
539
  ```toon markpact:analysis path=project/evolution.toon.yaml
548
- # code2llm/evolution | 171 func | 18f | 2026-04-25
540
+ # code2llm/evolution | 172 func | 18f | 2026-04-25
549
541
 
550
542
  NEXT[5] (ranked by impact):
551
543
  [1] ! SPLIT-FUNC TodoUpdater._update_todo CC=21 fan=20
@@ -1,7 +1,7 @@
1
1
  # TODO
2
2
 
3
3
  **Generated by:** prefact v0.1.48
4
- **Generated on:** 2026-04-25T12:50:38.811058
4
+ **Generated on:** 2026-04-25T12:53:43.987234
5
5
  **Total issues:** 76 active, 0 completed
6
6
 
7
7
  ---
taskill-0.1.4/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.4
@@ -2,7 +2,7 @@
2
2
 
3
3
  app {
4
4
  name: taskill;
5
- version: 0.1.2;
5
+ version: 0.1.3;
6
6
  }
7
7
 
8
8
  dependencies {
@@ -332,7 +332,7 @@ code2llm ./ -f yaml --separate-orphans
332
332
 
333
333
  **Generated by**: `code2llm ./ -f all --readme`
334
334
  **Analysis Date**: 2026-04-25
335
- **Total Functions**: 171
335
+ **Total Functions**: 172
336
336
  **Total Classes**: 22
337
337
  **Modules**: 38
338
338
 
@@ -1,18 +1,18 @@
1
- # code2llm | 38f 5234L | python:18,yaml:12,shell:3,yml:3,toml:1,txt:1 | 2026-04-25
2
- # CC̄=2.0 | critical:5/171 | dups:0 | cycles:1
1
+ # code2llm | 38f 5318L | python:18,yaml:12,yml:3,txt:2,shell:2,toml:1 | 2026-04-25
2
+ # CC̄=2.0 | critical:5/172 | dups:0 | cycles:1
3
3
 
4
4
  HEALTH[5]:
5
5
  🟡 CC run CC=16 (limit:15)
6
6
  🟡 CC bulk_run_cmd CC=17 (limit:15)
7
7
  🟡 CC evaluate CC=21 (limit:15)
8
- 🟡 CC _update_todo CC=21 (limit:15)
9
8
  🟡 CC bulk_run CC=17 (limit:15)
9
+ 🟡 CC _update_todo CC=21 (limit:15)
10
10
 
11
11
  REFACTOR[2]:
12
12
  1. split 5 high-CC methods (CC>15)
13
13
  2. break 1 circular dependencies
14
14
 
15
- PIPELINES[37]:
15
+ PIPELINES[36]:
16
16
  [1] Src [stamp]: stamp
17
17
  PURITY: 100% pure
18
18
  [2] Src [main]: main → _setup_logging
@@ -27,7 +27,7 @@ PIPELINES[37]:
27
27
  LAYERS:
28
28
  src/ CC̄=4.7 ←in:0 →out:0
29
29
  │ !! cli 347L 0C 8m CC=17 ←0
30
- │ !! bulk 249L 1C 7m CC=17 ←0
30
+ │ !! bulk 249L 1C 7m CC=17 ←1
31
31
  │ core 211L 2C 9m CC=11 ←0
32
32
  │ config 170L 4C 1m CC=8 ←3
33
33
  │ algorithmic 155L 1C 5m CC=10 ←0
@@ -46,12 +46,12 @@ LAYERS:
46
46
  │ __init__ 30L 0C 0m CC=0.0 ←0
47
47
 
48
48
  project/ CC̄=0.0 ←in:0 →out:0
49
- │ !! calls.yaml 620L 0C 0m CC=0.0 ←0
50
- │ map.toon.yaml 208L 0C 98m CC=0.0 ←1
49
+ │ !! calls.yaml 622L 0C 0m CC=0.0 ←0
50
+ │ map.toon.yaml 209L 0C 99m CC=0.0 ←0
51
51
  │ calls.toon.yaml 142L 0C 0m CC=0.0 ←0
52
- │ analysis.toon.yaml 87L 0C 0m CC=0.0 ←0
52
+ │ analysis.toon.yaml 85L 0C 0m CC=0.0 ←0
53
+ │ evolution.toon.yaml 59L 0C 0m CC=0.0 ←0
53
54
  │ project.toon.yaml 56L 0C 0m CC=0.0 ←0
54
- │ evolution.toon.yaml 55L 0C 0m CC=0.0 ←0
55
55
  │ prompt.txt 47L 0C 0m CC=0.0 ←0
56
56
  │ duplication.toon.yaml 34L 0C 0m CC=0.0 ←0
57
57
 
@@ -61,9 +61,9 @@ LAYERS:
61
61
  │ pyproject.toml 97L 0C 0m CC=0.0 ←0
62
62
  │ daily_update.sh 93L 0C 0m CC=0.0 ←0
63
63
  │ prefact.yaml 91L 0C 0m CC=0.0 ←0
64
+ │ tree.txt 80L 0C 0m CC=0.0 ←0
64
65
  │ taskill.yaml 57L 0C 0m CC=0.0 ←0
65
66
  │ project.sh 47L 0C 0m CC=0.0 ←0
66
- │ tree.sh 1L 0C 0m CC=0.0 ←0
67
67
 
68
68
  examples/ CC̄=0.0 ←in:0 →out:0
69
69
  │ ansible-playbook.yml 52L 0C 0m CC=0.0 ←0
@@ -74,11 +74,7 @@ LAYERS:
74
74
  │ generated-cli-tests.testql.toon.yaml 12L 0C 0m CC=0.0 ←0
75
75
 
76
76
 
77
- COUPLING:
78
- project.map src.taskill
79
- project.map ── ←1
80
- src.taskill 1 ──
81
- CYCLES: 1
77
+ COUPLING: no cross-package imports detected
82
78
 
83
79
  EXTERNAL:
84
80
  validation: run `vallm batch .` → validation.toon