-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Summary
{"project":{"root":"/Users/rkakengi/coding_projects/specleft","languages":["python"],"test_frameworks":["pytest"],"files_scanned":7354},"discovery":{"features":5,"scenarios":84,"items_by_kind":{"test_function":0,"api_route":0,"docstring":1,"git_commit":83}},"comparison":[{"feature_id":"examples","name":"Examples","code_scenarios":4,"spec_scenarios":0},{"feature_id":"project","name":"Project","code_scenarios":1,"spec_scenarios":0},{"feature_id":"scripts","name":"Scripts","code_scenarios":4,"spec_scenarios":0},{"feature_id":"src","name":"Src","code_scenarios":65,"spec_scenarios":0},{"feature_id":"tests","name":"Tests","code_scenarios":10,"spec_scenarios":0}],"saved":false,"errors":["Failed to parse Python test files: .future-features/tests/acceptance/test_feature-5-policy-enforcement.py, .future-features/tests/acceptance/test_feature-6-ci-experience-messaging.py, .future-features/tests/commands/test_enforce.py, .future-features/tests/commands/test_enforce_integration.py, .future-features/tests/commands/test_license.py, .future-features/tests/license/test_repo_identity.py, .future-features/tests/test_cli.py, .future-features/tests/test_pytest_plugin.py, .future-features/tests/test_revisor.py, .future-features/tests/test_spec_differ.py, .venv-uv/lib/python3.11/site-packages/annotated_types/test_cases.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_epydoc.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_google.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_numpydoc.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_parse_from_object.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_parser.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_rest.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_util.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_cli.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_deprecations.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_format.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_jsonschema_test_suite.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_types.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_utils.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_validators.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/typing/test_all_concrete_validators_match_protocol.py, .venv-uv/lib/python3.11/site-packages/jsonschema_specifications/tests/test_jsonschema_specifications.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_diff_helper.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_parse_data.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_update_data.py, .venv-uv/lib/python3.11/site-packages/mypy/test/test_find_sources.py, .venv-uv/lib/python3.11/site-packages/mypy/test/test_ref_info.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_alwaysdefined.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_analysis.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_cheader.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_commandline.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emit.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitclass.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitfunc.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitwrapper.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_external.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_irbuild.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_ircheck.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_literals.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_lowering.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_namegen.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_optimizations.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_pprint.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_rarray.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_refcount.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_run.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_serialization.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_struct.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_tuplename.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_typeops.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_core.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_jsonschema.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_referencing_suite.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_retrieval.py, .venv-uv/lib/python3.11/site-packages/regex/tests/test_regex.py, examples/test_example_old.py, src/specleft/utils/test_discovery.py, tests/acceptance/test_feature-1-planning-mode.py, tests/acceptance/test_feature-2-specification-format.py, tests/acceptance/test_feature-3-canonical-json-output.py, tests/acceptance/test_feature-4-status-coverage-inspection.py, tests/acceptance/test_feature-7-autonomous-agent-test-execution.py, tests/acceptance/test_feature-8-agent-contract-introspection.py, tests/acceptance/test_feature-9-cli-feature-authoring.py, tests/cli/test_cli_base.py, tests/cli/test_discover.py, tests/cli/test_start.py, tests/collector/test_collector.py, tests/commands/test_contract.py, tests/commands/test_contract_runner.py, tests/commands/test_contract_table.py, tests/commands/test_coverage.py, tests/commands/test_doctor.py, tests/commands/test_features.py, tests/commands/test_features_add.py, tests/commands/test_formatters.py, tests/commands/test_guide.py, tests/commands/test_init.py, tests/commands/test_next.py, tests/commands/test_plan.py, tests/commands/test_prd_template.py, tests/commands/test_skill.py, tests/commands/test_status.py, tests/commands/test_test_report.py, tests/commands/test_test_skeleton.py, tests/commands/test_test_stub.py, tests/decorators/test_decorators.py, tests/discovery/miners/test_docstrings.py, tests/discovery/miners/test_git_history.py, tests/discovery/miners/test_python_routes.py, tests/discovery/miners/test_python_tests.py, tests/discovery/miners/test_typescript_routes.py, tests/discovery/miners/test_typescript_tests.py, tests/discovery/test_config.py, tests/discovery/test_file_index.py, tests/discovery/test_framework_detector.py, tests/discovery/test_grouping.py, tests/discovery/test_language_detect.py, tests/discovery/test_language_registry.py, tests/discovery/test_models.py, tests/discovery/test_pipeline.py, tests/discovery/test_spec_writer.py, tests/discovery/test_traceability.py, tests/mcp/test_security.py, tests/mcp/test_server.py, tests/mcp/test_token_budget.py, tests/parser/test_parser.py, tests/pytest_plugin/test_pytest_plugin.py, tests/schema/test_schema.py, tests/test_init.py, tests/utils/test_feature_writer.py, tests/utils/test_history.py, tests/utils/test_specs_dir.py, tests/utils/test_text.py"]} currently prints discovery outcomes too quickly, which makes the process feel instantaneous and opaque.
Add visible scanning progress bars for each discovery scanning step to create clear user-facing feedback that scanning is actively happening.
Scope
- {"project":{"root":"/Users/rkakengi/coding_projects/specleft","languages":["python"],"test_frameworks":["pytest"],"files_scanned":7354},"discovery":{"features":5,"scenarios":84,"items_by_kind":{"test_function":0,"api_route":0,"docstring":1,"git_commit":83}},"comparison":[{"feature_id":"examples","name":"Examples","code_scenarios":4,"spec_scenarios":0},{"feature_id":"project","name":"Project","code_scenarios":1,"spec_scenarios":0},{"feature_id":"scripts","name":"Scripts","code_scenarios":4,"spec_scenarios":0},{"feature_id":"src","name":"Src","code_scenarios":65,"spec_scenarios":0},{"feature_id":"tests","name":"Tests","code_scenarios":10,"spec_scenarios":0}],"saved":false,"errors":["Failed to parse Python test files: .future-features/tests/acceptance/test_feature-5-policy-enforcement.py, .future-features/tests/acceptance/test_feature-6-ci-experience-messaging.py, .future-features/tests/commands/test_enforce.py, .future-features/tests/commands/test_enforce_integration.py, .future-features/tests/commands/test_license.py, .future-features/tests/license/test_repo_identity.py, .future-features/tests/test_cli.py, .future-features/tests/test_pytest_plugin.py, .future-features/tests/test_revisor.py, .future-features/tests/test_spec_differ.py, .venv-uv/lib/python3.11/site-packages/annotated_types/test_cases.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_epydoc.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_google.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_numpydoc.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_parse_from_object.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_parser.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_rest.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_util.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_cli.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_deprecations.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_format.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_jsonschema_test_suite.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_types.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_utils.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_validators.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/typing/test_all_concrete_validators_match_protocol.py, .venv-uv/lib/python3.11/site-packages/jsonschema_specifications/tests/test_jsonschema_specifications.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_diff_helper.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_parse_data.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_update_data.py, .venv-uv/lib/python3.11/site-packages/mypy/test/test_find_sources.py, .venv-uv/lib/python3.11/site-packages/mypy/test/test_ref_info.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_alwaysdefined.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_analysis.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_cheader.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_commandline.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emit.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitclass.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitfunc.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitwrapper.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_external.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_irbuild.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_ircheck.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_literals.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_lowering.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_namegen.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_optimizations.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_pprint.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_rarray.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_refcount.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_run.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_serialization.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_struct.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_tuplename.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_typeops.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_core.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_jsonschema.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_referencing_suite.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_retrieval.py, .venv-uv/lib/python3.11/site-packages/regex/tests/test_regex.py, examples/test_example_old.py, src/specleft/utils/test_discovery.py, tests/acceptance/test_feature-1-planning-mode.py, tests/acceptance/test_feature-2-specification-format.py, tests/acceptance/test_feature-3-canonical-json-output.py, tests/acceptance/test_feature-4-status-coverage-inspection.py, tests/acceptance/test_feature-7-autonomous-agent-test-execution.py, tests/acceptance/test_feature-8-agent-contract-introspection.py, tests/acceptance/test_feature-9-cli-feature-authoring.py, tests/cli/test_cli_base.py, tests/cli/test_discover.py, tests/cli/test_start.py, tests/collector/test_collector.py, tests/commands/test_contract.py, tests/commands/test_contract_runner.py, tests/commands/test_contract_table.py, tests/commands/test_coverage.py, tests/commands/test_doctor.py, tests/commands/test_features.py, tests/commands/test_features_add.py, tests/commands/test_formatters.py, tests/commands/test_guide.py, tests/commands/test_init.py, tests/commands/test_next.py, tests/commands/test_plan.py, tests/commands/test_prd_template.py, tests/commands/test_skill.py, tests/commands/test_status.py, tests/commands/test_test_report.py, tests/commands/test_test_skeleton.py, tests/commands/test_test_stub.py, tests/decorators/test_decorators.py, tests/discovery/miners/test_docstrings.py, tests/discovery/miners/test_git_history.py, tests/discovery/miners/test_python_routes.py, tests/discovery/miners/test_python_tests.py, tests/discovery/miners/test_typescript_routes.py, tests/discovery/miners/test_typescript_tests.py, tests/discovery/test_config.py, tests/discovery/test_file_index.py, tests/discovery/test_framework_detector.py, tests/discovery/test_grouping.py, tests/discovery/test_language_detect.py, tests/discovery/test_language_registry.py, tests/discovery/test_models.py, tests/discovery/test_pipeline.py, tests/discovery/test_spec_writer.py, tests/discovery/test_traceability.py, tests/mcp/test_security.py, tests/mcp/test_server.py, tests/mcp/test_token_budget.py, tests/parser/test_parser.py, tests/pytest_plugin/test_pytest_plugin.py, tests/schema/test_schema.py, tests/test_init.py, tests/utils/test_feature_writer.py, tests/utils/test_history.py, tests/utils/test_specs_dir.py, tests/utils/test_text.py"]}
- {"features":[{"feature_id":"examples","name":"Examples","scenario_count":4,"output_file":".specleft/specs/_discovered/examples.md","confidence":0.6},{"feature_id":"project","name":"Project","scenario_count":1,"output_file":".specleft/specs/_discovered/project.md","confidence":0.6},{"feature_id":"scripts","name":"Scripts","scenario_count":4,"output_file":".specleft/specs/_discovered/scripts.md","confidence":0.6},{"feature_id":"src","name":"Src","scenario_count":65,"output_file":".specleft/specs/_discovered/src.md","confidence":0.6},{"feature_id":"tests","name":"Tests","scenario_count":10,"output_file":".specleft/specs/_discovered/tests.md","confidence":0.6}],"total_features":5,"total_scenarios":84,"output_dir":".specleft/specs/_discovered","dry_run":false,"written":[".specleft/specs/_discovered/examples.md",".specleft/specs/_discovered/project.md",".specleft/specs/_discovered/scripts.md",".specleft/specs/_discovered/src.md",".specleft/specs/_discovered/tests.md"],"errors":["Failed to parse Python test files: .future-features/tests/acceptance/test_feature-5-policy-enforcement.py, .future-features/tests/acceptance/test_feature-6-ci-experience-messaging.py, .future-features/tests/commands/test_enforce.py, .future-features/tests/commands/test_enforce_integration.py, .future-features/tests/commands/test_license.py, .future-features/tests/license/test_repo_identity.py, .future-features/tests/test_cli.py, .future-features/tests/test_pytest_plugin.py, .future-features/tests/test_revisor.py, .future-features/tests/test_spec_differ.py, .venv-uv/lib/python3.11/site-packages/annotated_types/test_cases.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_epydoc.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_google.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_numpydoc.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_parse_from_object.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_parser.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_rest.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_util.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_cli.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_deprecations.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_format.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_jsonschema_test_suite.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_types.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_utils.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_validators.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/typing/test_all_concrete_validators_match_protocol.py, .venv-uv/lib/python3.11/site-packages/jsonschema_specifications/tests/test_jsonschema_specifications.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_diff_helper.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_parse_data.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_update_data.py, .venv-uv/lib/python3.11/site-packages/mypy/test/test_find_sources.py, .venv-uv/lib/python3.11/site-packages/mypy/test/test_ref_info.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_alwaysdefined.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_analysis.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_cheader.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_commandline.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emit.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitclass.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitfunc.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitwrapper.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_external.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_irbuild.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_ircheck.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_literals.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_lowering.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_namegen.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_optimizations.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_pprint.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_rarray.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_refcount.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_run.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_serialization.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_struct.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_tuplename.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_typeops.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_core.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_jsonschema.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_referencing_suite.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_retrieval.py, .venv-uv/lib/python3.11/site-packages/regex/tests/test_regex.py, examples/test_example_old.py, src/specleft/utils/test_discovery.py, tests/acceptance/test_feature-1-planning-mode.py, tests/acceptance/test_feature-2-specification-format.py, tests/acceptance/test_feature-3-canonical-json-output.py, tests/acceptance/test_feature-4-status-coverage-inspection.py, tests/acceptance/test_feature-7-autonomous-agent-test-execution.py, tests/acceptance/test_feature-8-agent-contract-introspection.py, tests/acceptance/test_feature-9-cli-feature-authoring.py, tests/cli/test_cli_base.py, tests/cli/test_discover.py, tests/cli/test_start.py, tests/collector/test_collector.py, tests/commands/test_contract.py, tests/commands/test_contract_runner.py, tests/commands/test_contract_table.py, tests/commands/test_coverage.py, tests/commands/test_doctor.py, tests/commands/test_features.py, tests/commands/test_features_add.py, tests/commands/test_formatters.py, tests/commands/test_guide.py, tests/commands/test_init.py, tests/commands/test_next.py, tests/commands/test_plan.py, tests/commands/test_prd_template.py, tests/commands/test_skill.py, tests/commands/test_status.py, tests/commands/test_test_report.py, tests/commands/test_test_skeleton.py, tests/commands/test_test_stub.py, tests/decorators/test_decorators.py, tests/discovery/miners/test_docstrings.py, tests/discovery/miners/test_git_history.py, tests/discovery/miners/test_python_routes.py, tests/discovery/miners/test_python_tests.py, tests/discovery/miners/test_typescript_routes.py, tests/discovery/miners/test_typescript_tests.py, tests/discovery/test_config.py, tests/discovery/test_file_index.py, tests/discovery/test_framework_detector.py, tests/discovery/test_grouping.py, tests/discovery/test_language_detect.py, tests/discovery/test_language_registry.py, tests/discovery/test_models.py, tests/discovery/test_pipeline.py, tests/discovery/test_spec_writer.py, tests/discovery/test_traceability.py, tests/mcp/test_security.py, tests/mcp/test_server.py, tests/mcp/test_token_budget.py, tests/parser/test_parser.py, tests/pytest_plugin/test_pytest_plugin.py, tests/schema/test_schema.py, tests/test_init.py, tests/utils/test_feature_writer.py, tests/utils/test_history.py, tests/utils/test_specs_dir.py, tests/utils/test_text.py"]}
Priority
P1
Problem
The command output appears immediately with little sense of incremental work being performed.
Expected Behavior
During discovery, users should see per-step scanning progress updates (progress bars) before final results are printed.
Acceptance Criteria
- Both {"project":{"root":"/Users/rkakengi/coding_projects/specleft","languages":["python"],"test_frameworks":["pytest"],"files_scanned":7359},"discovery":{"features":5,"scenarios":84,"items_by_kind":{"test_function":0,"api_route":0,"docstring":1,"git_commit":83}},"comparison":[{"feature_id":"examples","name":"Examples","code_scenarios":4,"spec_scenarios":0},{"feature_id":"project","name":"Project","code_scenarios":1,"spec_scenarios":0},{"feature_id":"scripts","name":"Scripts","code_scenarios":4,"spec_scenarios":0},{"feature_id":"src","name":"Src","code_scenarios":65,"spec_scenarios":0},{"feature_id":"tests","name":"Tests","code_scenarios":10,"spec_scenarios":0}],"saved":false,"errors":["Failed to parse Python test files: .future-features/tests/acceptance/test_feature-5-policy-enforcement.py, .future-features/tests/acceptance/test_feature-6-ci-experience-messaging.py, .future-features/tests/commands/test_enforce.py, .future-features/tests/commands/test_enforce_integration.py, .future-features/tests/commands/test_license.py, .future-features/tests/license/test_repo_identity.py, .future-features/tests/test_cli.py, .future-features/tests/test_pytest_plugin.py, .future-features/tests/test_revisor.py, .future-features/tests/test_spec_differ.py, .venv-uv/lib/python3.11/site-packages/annotated_types/test_cases.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_epydoc.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_google.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_numpydoc.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_parse_from_object.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_parser.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_rest.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_util.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_cli.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_deprecations.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_format.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_jsonschema_test_suite.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_types.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_utils.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_validators.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/typing/test_all_concrete_validators_match_protocol.py, .venv-uv/lib/python3.11/site-packages/jsonschema_specifications/tests/test_jsonschema_specifications.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_diff_helper.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_parse_data.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_update_data.py, .venv-uv/lib/python3.11/site-packages/mypy/test/test_find_sources.py, .venv-uv/lib/python3.11/site-packages/mypy/test/test_ref_info.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_alwaysdefined.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_analysis.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_cheader.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_commandline.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emit.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitclass.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitfunc.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitwrapper.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_external.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_irbuild.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_ircheck.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_literals.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_lowering.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_namegen.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_optimizations.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_pprint.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_rarray.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_refcount.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_run.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_serialization.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_struct.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_tuplename.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_typeops.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_core.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_jsonschema.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_referencing_suite.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_retrieval.py, .venv-uv/lib/python3.11/site-packages/regex/tests/test_regex.py, examples/test_example_old.py, src/specleft/utils/test_discovery.py, tests/acceptance/test_feature-1-planning-mode.py, tests/acceptance/test_feature-2-specification-format.py, tests/acceptance/test_feature-3-canonical-json-output.py, tests/acceptance/test_feature-4-status-coverage-inspection.py, tests/acceptance/test_feature-7-autonomous-agent-test-execution.py, tests/acceptance/test_feature-8-agent-contract-introspection.py, tests/acceptance/test_feature-9-cli-feature-authoring.py, tests/cli/test_cli_base.py, tests/cli/test_discover.py, tests/cli/test_start.py, tests/collector/test_collector.py, tests/commands/test_contract.py, tests/commands/test_contract_runner.py, tests/commands/test_contract_table.py, tests/commands/test_coverage.py, tests/commands/test_doctor.py, tests/commands/test_features.py, tests/commands/test_features_add.py, tests/commands/test_formatters.py, tests/commands/test_guide.py, tests/commands/test_init.py, tests/commands/test_next.py, tests/commands/test_plan.py, tests/commands/test_prd_template.py, tests/commands/test_skill.py, tests/commands/test_status.py, tests/commands/test_test_report.py, tests/commands/test_test_skeleton.py, tests/commands/test_test_stub.py, tests/decorators/test_decorators.py, tests/discovery/miners/test_docstrings.py, tests/discovery/miners/test_git_history.py, tests/discovery/miners/test_python_routes.py, tests/discovery/miners/test_python_tests.py, tests/discovery/miners/test_typescript_routes.py, tests/discovery/miners/test_typescript_tests.py, tests/discovery/test_config.py, tests/discovery/test_file_index.py, tests/discovery/test_framework_detector.py, tests/discovery/test_grouping.py, tests/discovery/test_language_detect.py, tests/discovery/test_language_registry.py, tests/discovery/test_models.py, tests/discovery/test_pipeline.py, tests/discovery/test_spec_writer.py, tests/discovery/test_traceability.py, tests/mcp/test_security.py, tests/mcp/test_server.py, tests/mcp/test_token_budget.py, tests/parser/test_parser.py, tests/pytest_plugin/test_pytest_plugin.py, tests/schema/test_schema.py, tests/test_init.py, tests/utils/test_feature_writer.py, tests/utils/test_history.py, tests/utils/test_specs_dir.py, tests/utils/test_text.py"]} and {"features":[{"feature_id":"examples","name":"Examples","scenario_count":4,"output_file":".specleft/specs/_discovered/examples.md","confidence":0.6},{"feature_id":"project","name":"Project","scenario_count":1,"output_file":".specleft/specs/_discovered/project.md","confidence":0.6},{"feature_id":"scripts","name":"Scripts","scenario_count":4,"output_file":".specleft/specs/_discovered/scripts.md","confidence":0.6},{"feature_id":"src","name":"Src","scenario_count":65,"output_file":".specleft/specs/_discovered/src.md","confidence":0.6},{"feature_id":"tests","name":"Tests","scenario_count":10,"output_file":".specleft/specs/_discovered/tests.md","confidence":0.6}],"total_features":5,"total_scenarios":84,"output_dir":".specleft/specs/_discovered","dry_run":false,"written":[],"errors":["Failed to parse Python test files: .future-features/tests/acceptance/test_feature-5-policy-enforcement.py, .future-features/tests/acceptance/test_feature-6-ci-experience-messaging.py, .future-features/tests/commands/test_enforce.py, .future-features/tests/commands/test_enforce_integration.py, .future-features/tests/commands/test_license.py, .future-features/tests/license/test_repo_identity.py, .future-features/tests/test_cli.py, .future-features/tests/test_pytest_plugin.py, .future-features/tests/test_revisor.py, .future-features/tests/test_spec_differ.py, .venv-uv/lib/python3.11/site-packages/annotated_types/test_cases.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_epydoc.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_google.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_numpydoc.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_parse_from_object.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_parser.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_rest.py, .venv-uv/lib/python3.11/site-packages/docstring_parser/tests/test_util.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_cli.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_deprecations.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_format.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_jsonschema_test_suite.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_types.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_utils.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/test_validators.py, .venv-uv/lib/python3.11/site-packages/jsonschema/tests/typing/test_all_concrete_validators_match_protocol.py, .venv-uv/lib/python3.11/site-packages/jsonschema_specifications/tests/test_jsonschema_specifications.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_diff_helper.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_parse_data.py, .venv-uv/lib/python3.11/site-packages/mypy/test/meta/test_update_data.py, .venv-uv/lib/python3.11/site-packages/mypy/test/test_find_sources.py, .venv-uv/lib/python3.11/site-packages/mypy/test/test_ref_info.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_alwaysdefined.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_analysis.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_cheader.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_commandline.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emit.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitclass.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitfunc.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_emitwrapper.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_external.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_irbuild.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_ircheck.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_literals.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_lowering.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_namegen.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_optimizations.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_pprint.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_rarray.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_refcount.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_run.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_serialization.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_struct.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_tuplename.py, .venv-uv/lib/python3.11/site-packages/mypyc/test/test_typeops.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_core.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_exceptions.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_jsonschema.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_referencing_suite.py, .venv-uv/lib/python3.11/site-packages/referencing/tests/test_retrieval.py, .venv-uv/lib/python3.11/site-packages/regex/tests/test_regex.py, examples/test_example_old.py, src/specleft/utils/test_discovery.py, tests/acceptance/test_feature-1-planning-mode.py, tests/acceptance/test_feature-2-specification-format.py, tests/acceptance/test_feature-3-canonical-json-output.py, tests/acceptance/test_feature-4-status-coverage-inspection.py, tests/acceptance/test_feature-7-autonomous-agent-test-execution.py, tests/acceptance/test_feature-8-agent-contract-introspection.py, tests/acceptance/test_feature-9-cli-feature-authoring.py, tests/cli/test_cli_base.py, tests/cli/test_discover.py, tests/cli/test_start.py, tests/collector/test_collector.py, tests/commands/test_contract.py, tests/commands/test_contract_runner.py, tests/commands/test_contract_table.py, tests/commands/test_coverage.py, tests/commands/test_doctor.py, tests/commands/test_features.py, tests/commands/test_features_add.py, tests/commands/test_formatters.py, tests/commands/test_guide.py, tests/commands/test_init.py, tests/commands/test_next.py, tests/commands/test_plan.py, tests/commands/test_prd_template.py, tests/commands/test_skill.py, tests/commands/test_status.py, tests/commands/test_test_report.py, tests/commands/test_test_skeleton.py, tests/commands/test_test_stub.py, tests/decorators/test_decorators.py, tests/discovery/miners/test_docstrings.py, tests/discovery/miners/test_git_history.py, tests/discovery/miners/test_python_routes.py, tests/discovery/miners/test_python_tests.py, tests/discovery/miners/test_typescript_routes.py, tests/discovery/miners/test_typescript_tests.py, tests/discovery/test_config.py, tests/discovery/test_file_index.py, tests/discovery/test_framework_detector.py, tests/discovery/test_grouping.py, tests/discovery/test_language_detect.py, tests/discovery/test_language_registry.py, tests/discovery/test_models.py, tests/discovery/test_pipeline.py, tests/discovery/test_spec_writer.py, tests/discovery/test_traceability.py, tests/mcp/test_security.py, tests/mcp/test_server.py, tests/mcp/test_token_budget.py, tests/parser/test_parser.py, tests/pytest_plugin/test_pytest_plugin.py, tests/schema/test_schema.py, tests/test_init.py, tests/utils/test_feature_writer.py, tests/utils/test_history.py, tests/utils/test_specs_dir.py, tests/utils/test_text.py"]} display progress bars for scanning steps.
- Progress output is step-based and visibly updates while work is running.
- Final summary output remains clear and readable after progress completes.
- Non-interactive/CI output remains sane (no broken control characters).
Parent
- Parent tracking issue: Discovery Review Feedback (Parent) #157