Generated by: prefact v0.1.54 Generated on: 2026-05-03T11:35:31.110672 Generated snapshot: 487 active issues reported; 178 unresolved entries are retained from its displayed slice after removing exact resolved duplicates.
This file is an active-work backlog. Completed maintenance and resolved
generated findings are recorded in CHANGELOG.md.
- planfile/analysis/init.py:18 - Duplicate import: planfile.analysis.generator.generator
- planfile/analysis/init.py:18 - Duplicate import: 'generator' (first at line 6)
- planfile/init.py:1 - Import sections should be separated by blank lines
- planfile/init.py:88 - Function 'get_ticket' missing return type (suggested: -> Any)
- planfile/init.py:91 - Function 'list_tickets' missing return type (suggested: -> Any)
- planfile/init.py:94 - Function 'update_ticket' missing return type (suggested: -> Any)
- planfile/init.py:42 - Imports from 'planfile.dsl' not in alphabetical order
- planfile/init.py:159 - Duplicate import: 'load_valid_strategy' (first at line 60)
- planfile/init.py:159 - Duplicate import: 'run_strategy' (first at line 60)
- planfile/init.py:159 - Duplicate import: 'verify_strategy_post_execution' (first at line 60)
- planfile/init.py:66 - Magic number: 50 - use named constant
- planfile/analysis/file_analyzer.py:1 - Import sections should be separated by blank lines
- planfile/analysis/file_analyzer.py:110 - String concatenation can be converted to f-string
- planfile/analysis/file_analyzer.py:115 - String concatenation can be converted to f-string
- planfile/analysis/external_tools.py:245 - Magic number: 85.0 - use named constant
- planfile/analysis/external_tools.py:254 - Magic number: 12 - use named constant
- planfile/analysis/external_tools.py:84 - Magic number: 300 - use named constant
- planfile/analysis/external_tools.py:258 - LLM-style docstring in run_external_analysis
- planfile/analysis/generator.py:5 - Magic number: 20 - use named constant
- planfile/analysis/generator.py:6 - Magic number: 50 - use named constant
- planfile/analysis/generators/strategy_builder.py:47 - Magic number in comparison: 80
- planfile/analysis/generators/strategy_builder.py:172 - Magic number: 80 - use named constant
- planfile/analysis/generators/strategy_builder.py:47 - Magic number: 80 - use named constant
- planfile/analysis/parsers/init.py:1 - Import sections should be separated by blank lines
- planfile/analysis/parsers/text_parser.py:43 - String concatenation can be converted to f-string
- planfile/analysis/parsers/text_parser.py:94 - Magic number in comparison: 80
- planfile/analysis/parsers/text_parser.py:85 - Magic number in comparison: 80
- planfile/analysis/parsers/text_parser.py:94 - Magic number: 80 - use named constant
- planfile/analysis/parsers/toon_parser.py:112 - String concatenation can be converted to f-string
- planfile/analysis/parsers/toon_parser.py:109 - Magic number in comparison: 20
- planfile/analysis/parsers/toon_parser.py:109 - Magic number: 20 - use named constant
- planfile/analysis/parsers/yaml_parser.py:36 - Magic number in comparison: 500
- planfile/analysis/parsers/yaml_parser.py:36 - Magic number: 500 - use named constant
- planfile/analysis/parsers/yaml_parser.py:25 - Magic number: 200 - use named constant
- planfile/analysis/sprint_generator.py:92 - String concatenation can be converted to f-string
- planfile/analysis/sprint_generator.py:69 - String concatenation can be converted to f-string
- planfile/analysis/sprint_generator.py:15 - Magic number: 25 - use named constant
- planfile/analysis/sprint_generator.py:16 - Magic number: 50 - use named constant
- planfile/analysis/sprint_generator.py:92 - Magic number: 15 - use named constant
- planfile/cli/main.py:3 - module execution block
- planfile/ci.py:423 - String concatenation can be converted to f-string
- planfile/ci.py:143 - String concatenation can be converted to f-string
- planfile/ci.py:101 - String concatenation can be converted to f-string
- planfile/ci.py:178 - Magic number: 2000 - use named constant
- planfile/ci.py:239 - Magic number: 500 - use named constant
- planfile/cli/auto_loop.py:1 - Import sections should be separated by blank lines
- planfile/cli/auto_loop.py:10 - Unused register_auto_commands imported from planfile.cli.groups.auto
- planfile/cli/auto_loop.py:11 - Unused get_backend imported from planfile.cli.groups.auto.commands
- planfile/cli/auto_loop.py:10 - Unused import: 'register_auto_commands'
- planfile/cli/core/init.py:1 - Import sections should be separated by blank lines
- planfile/api/server.py:79 - Function 'list_tickets' missing return type (suggested: -> Any)
- planfile/api/server.py:98 - Function 'create_ticket' missing return type (suggested: -> Any)
- planfile/api/server.py:113 - Function 'get_ticket' missing return type (suggested: -> Any)
- planfile/api/server.py:1 - Import sections should be separated by blank lines
- planfile/api/server.py:192 - String concatenation can be converted to f-string
- planfile/api/server.py:6 - Unused import: 'annotations'
- planfile/api/server.py:183 - Duplicate import: 'yaml' (first at line 170)
- planfile/api/server.py:184 - Duplicate import: 'Path' (first at line 171)
- planfile/api/server.py:205 - Duplicate import: 'yaml' (first at line 170)
- planfile/api/server.py:54 - Magic number: 14 - use named constant
- planfile/api/server.py:97 - Magic number: 201 - use named constant
- planfile/api/server.py:131 - Magic number: 204 - use named constant
- planfile/builder.py:136 - String concatenation can be converted to f-string
- planfile/builder.py:219 - String concatenation can be converted to f-string
- planfile/builder.py:2 - Magic number: 14 - use named constant
- planfile/builder.py:3 - Magic number: 20 - use named constant
- planfile/builder.py:4 - Magic number: 50 - use named constant
- planfile/builder.py:365 - LLM-style docstring in create_strategy_command
- planfile/builder.py:29 - LLM-style docstring in init
- planfile/builder.py:47 - LLM-style docstring in _call_llx
- planfile/cli/extra_commands.py:12 - Function 'add_extra_commands' missing return type (suggested: -> None)
- planfile/cli/extra_commands.py:8 - Suspicious import: from planfile.cli.groups.examples
- planfile/cli/core/registry.py:11 - LLM-style docstring in register_simple_command
- planfile/cli/core/registry.py:31 - LLM-style docstring in register_typer_group
- planfile/cli/groups/apply/utils.py:3 - Unused import: 'annotations'
- planfile/cli/groups/apply/commands.py:8 - Unused Any imported from typing
- planfile/cli/groups/apply/commands.py:3 - Unused import: 'annotations'
- planfile/cli/groups/apply/commands.py:8 - Unused import: 'Any'
- planfile/cli/groups/auto/commands.py:3 - Unused import: 'annotations'
- planfile/cli/groups/auto/commands.py:181 - Magic number: 50 - use named constant
- planfile/cli/groups/backlog/commands.py:1 - Import sections should be separated by blank lines
- planfile/cli/groups/backlog/commands.py:75 - Function 'create_backlog_table' missing return type (suggested: -> Any)
- planfile/cli/groups/backlog/commands.py:182 - String concatenation can be converted to f-string
- planfile/cli/groups/backlog/commands.py:194 - String concatenation can be converted to f-string
- planfile/cli/groups/dsl/commands.py:3 - Unused import: 'annotations'
- planfile/cli/groups/dsl/commands.py:39 - Duplicate import: 'DSLExecutor' (first at line 29)
- planfile/cli/groups/dsl/commands.py:123 - Duplicate import: 'DSLExecutor' (first at line 29)
- planfile/cli/groups/dsl/commands.py:80 - Magic number in comparison: 80
- planfile/cli/groups/dsl/commands.py:80 - Magic number: 80 - use named constant
- planfile/cli/groups/generate/commands.py:3 - Unused import: 'annotations'
- planfile/cli/groups/generate/commands.py:63 - Duplicate import: 'save_strategy_yaml' (first at line 21)
- planfile/cli/groups/init/commands.py:1 - Import sections should be separated by blank lines
- planfile/cli/groups/init/commands.py:62 - String concatenation can be converted to f-string
- planfile/cli/groups/init/commands.py:83 - String concatenation can be converted to f-string
- planfile/cli/groups/init/commands.py:55 - Magic number: 14 - use named constant
- planfile/cli/groups/init/commands.py:55 - Magic number: 21 - use named constant
- planfile/cli/groups/init/commands.py:104 - Magic number: 14 - use named constant
- planfile/cli/groups/review/commands.py:3 - Unused import: 'annotations'
- planfile/cli/groups/review/utils.py:25 - Function 'get_backend' missing return type (suggested: -> Any)
- planfile/cli/groups/query/commands.py:107 - String concatenation can be converted to f-string
- planfile/cli/groups/query/commands.py:108 - String concatenation can be converted to f-string
- planfile/cli/groups/query/commands.py:10 - Unused Console imported from rich.console
- planfile/cli/groups/query/commands.py:3 - Unused import: 'annotations'
- planfile/cli/groups/query/commands.py:10 - Unused import: 'Console'
- planfile/cli/groups/sync/init.py:1 - Import sections should be separated by blank lines
- planfile/cli/groups/sync/commands.py:1 - Import sections should be separated by blank lines
- planfile/cli/groups/sync/commands.py:5 - Unused import os
- planfile/cli/groups/sync/commands.py:12 - Unused print_success imported from planfile.cli.core
- planfile/cli/groups/sync/commands.py:3 - Unused import: 'annotations'
- planfile/cli/groups/sync/commands.py:141 - Duplicate import: 'IntegrationConfig' (first at line 84)
- planfile/cli/groups/sync/core.py:3 - Unused import: 'annotations'
- planfile/cli/groups/validate/init.py:1 - Import sections should be separated by blank lines
- planfile/cli/groups/validate/init.py:5 - Unused register_simple_command imported from planfile.cli.core
- planfile/cli/groups/validate/init.py:5 - Unused import: 'register_simple_command'
- planfile/cli/project_detector/init.py:15 - Relative import (level=1): '.base'
- planfile/cli/project_detector/init.py:16 - Relative import (level=1): '.main'
- planfile/cli/project_detector/init.py:13 - Unused import: 'annotations'
- planfile/cli/project_detector/base.py:3 - Unused import: 'annotations'
- planfile/cli/groups/ticket/commands.py:1 - Import sections should be separated by blank lines
- planfile/cli/groups/ticket/commands.py:3 - Unused import re
- planfile/cli/groups/ticket/commands.py:5 - Unused datetime imported from datetime
- planfile/cli/groups/ticket/commands.py:3 - Unused import: 're'
- planfile/cli/groups/ticket/commands.py:195 - Duplicate import: 'Planfile' (first at line 180)
- planfile/cli/groups/ticket/commands.py:211 - Duplicate import: 'Planfile' (first at line 180)
- planfile/cli/groups/ticket/commands.py:225 - Duplicate import: 'Planfile' (first at line 180)
- planfile/cli/groups/validate/commands.py:3 - Unused import: 'annotations'
- planfile/cli/groups/validate/commands.py:107 - Magic number: 25 - use named constant
- planfile/cli/project_detector/fallback.py:7 - Relative import (level=1): '.base'
- planfile/cli/project_detector/fallback.py:8 - Relative import (level=1): '.gates'
- planfile/cli/project_detector/fallback.py:9 - Relative import (level=1): '.git'
- planfile/cli/project_detector/fallback.py:37 - String concatenation can be converted to f-string
- planfile/cli/project_detector/fallback.py:3 - Unused import: 'annotations'
- planfile/cli/project_detector/gates.py:7 - Relative import (level=1): '.base'
- planfile/cli/project_detector/gates.py:119 - String concatenation can be converted to f-string
- planfile/cli/project_detector/gates.py:3 - Unused import: 'annotations'
- planfile/cli/project_detector/git.py:3 - Unused import: 'annotations'
- planfile/cli/project_detector/inference.py:63 - String concatenation can be converted to f-string
- planfile/cli/project_detector/inference.py:3 - Unused import: 'annotations'
- planfile/cli/project_detector/license.py:3 - Unused import: 'annotations'
- planfile/cli/project_detector/license.py:18 - Magic number: 500 - use named constant
- planfile/cli/project_detector/license.py:20 - Magic number: 500 - use named constant
- planfile/cli/project_detector/license.py:22 - Magic number: 500 - use named constant
- planfile/cli/project_detector/main.py:7 - Relative import (level=1): '.base'
- planfile/cli/project_detector/main.py:8 - Relative import (level=1): '.fallback'
- planfile/cli/project_detector/main.py:9 - Relative import (level=1): '.package'
- planfile/cli/project_detector/main.py:3 - Unused import: 'annotations'
- planfile/cli/project_detector/main.py:13 - LLM-style docstring in detect_project
- planfile/cli/project_detector/main.py:92 - LLM-style docstring in get_detected_values
- planfile/cli/project_detector/model_tier.py:3 - Unused import: 'annotations'
- planfile/cli/project_detector/package.py:8 - Relative import (level=1): '.base'
- planfile/cli/project_detector/package.py:9 - Relative import (level=1): '.gates'
- planfile/cli/project_detector/package.py:10 - Relative import (level=1): '.git'
- planfile/cli/project_detector/package.py:15 - Imports from 'inference' not in alphabetical order
- planfile/cli/project_detector/package.py:38 - String concatenation can be converted to f-string
- planfile/cli/project_detector/package.py:3 - Unused import: 'annotations'
- planfile/cli/project_detector/pyproject.py:3 - Relative import (level=1): '.base'
- planfile/cli/project_detector/pyproject.py:14 - Duplicate import: 'tomllib' (first at line 9)
- planfile/cli/project_detector/readme.py:3 - Unused import: 'annotations'
- planfile/cli/project_detector/readme.py:33 - Magic number in comparison: 30
- planfile/cli/project_detector/readme.py:29 - Magic number in comparison: 20
- planfile/cli/project_detector/readme.py:33 - Magic number: 30 - use named constant
- planfile/cli/project_detector/readme.py:38 - LLM-style docstring in _find_readme_content
- planfile/cli/project_detector/structure.py:3 - Unused import: 'annotations'
- planfile/cli/project_detector/structure.py:62 - LLM-style docstring in _analyze_directory_structure
- planfile/core/init.py:1 - Relative import (level=1): '.store'
- planfile/core/init.py:2 - Relative import (level=1): '.store_files'
- planfile/core/init.py:3 - Relative import (level=1): '.store_tickets'
- planfile/core/models/init.py:4 - Relative import (level=1): '.base'
- planfile/core/models/init.py:21 - Relative import (level=1): '.strategy'
- planfile/core/models/init.py:32 - Relative import (level=1): '.ticket'
- planfile/core/models/init.py:4 - Imports from 'base' not in alphabetical order
- planfile/core/models/base.py:3 - Unused import: 'annotations'
- planfile/core/models/base.py:8 - Magic number: 14 - use named constant
- planfile/core/models/base.py:13 - Magic number: 30 - use named constant
- planfile/core/models.py:7 - Star import from planfile.core.models
- planfile/core/models.py:7 - Unused import: '*'
- planfile/core/store.py:8 - Relative import (level=1): '.store_files'
- planfile/core/store.py:9 - Relative import (level=1): '.store_tickets'
To execute all tasks, run: prefact -a --execute-todos