specfact-cli 0.46.25__tar.gz → 0.46.28__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.
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/PKG-INFO +3 -1
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/README.md +2 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/pyproject.toml +1 -1
- specfact_cli-0.46.28/resources/bundled-module-registry/index.json +26 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/__init__.py +1 -1
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/__init__.py +1 -1
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/upgrade/module-package.yaml +3 -3
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/upgrade/src/commands.py +56 -2
- specfact_cli-0.46.25/resources/bundled-module-registry/index.json +0 -20
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/.gitignore +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/LICENSE +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/keys/README.md +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/keys/module-signing-public.pem +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/mappings/node-async.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/mappings/python-async.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/mappings/speckit-default.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/schemas/deviation.schema.json +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/schemas/plan.schema.json +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/schemas/protocol.schema.json +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/github-action.yml.j2 +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/persona/architect.md.j2 +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/persona/developer.md.j2 +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/persona/product-owner.md.j2 +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/plan.bundle.yaml.j2 +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/policies/kanban.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/policies/mixed.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/policies/safe.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/policies/scrum.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/pr-template.md.j2 +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/protocol.yaml.j2 +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/telemetry.yaml.example +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/__main__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/adapters/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/adapters/ado.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/adapters/backlog_base.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/adapters/base.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/adapters/github.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/adapters/openspec.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/adapters/openspec_parser.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/adapters/registry.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/adapters/speckit.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/agents/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/agents/analyze_agent.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/agents/base.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/agents/plan_agent.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/agents/registry.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/agents/sync_agent.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/ambiguity_scanner.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/code_analyzer.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/constitution_evidence_extractor.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/contract_extractor.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/control_flow_analyzer.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/graph_analyzer.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/relationship_mapper.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/requirement_extractor.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/test_pattern_extractor.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/adapters/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/adapters/base.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/converter.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/filters.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/mappers/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/mappers/ado_mapper.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/mappers/base.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/mappers/github_mapper.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/mappers/template_config.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/cli.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/_bundle_shim.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/analyze.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/contract_cmd.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/drift.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/enforce.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/generate.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/import_cmd.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/init.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/migrate.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/plan.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/project_cmd.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/repro.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/sdd.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/spec.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/sync.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/update.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/commands/validate.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/common/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/common/bundle_factory.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/common/logger_setup.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/common/logging_utils.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/common/text_utils.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/common/utils.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/comparators/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/comparators/plan_comparator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/contracts/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/contracts/crosshair_props.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/contracts/module_interface.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/enrichers/constitution_enricher.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/enrichers/plan_enricher.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/contract_generator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/openapi_extractor.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/persona_exporter.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/plan_generator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/protocol_generator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/report_generator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/task_generator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/test_to_openapi.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/workflow_generator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/groups/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/groups/codebase_group.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/groups/govern_group.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/groups/member_group.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/groups/project_group.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/groups/spec_group.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/importers/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/importers/speckit_converter.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/importers/speckit_scanner.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/integrations/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/integrations/specmatic.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/merge/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/merge/resolver.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/migrations/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/migrations/plan_migrator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/backlog_item.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/bridge.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/capabilities.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/change.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/contract.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/deviation.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/dor_config.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/enforcement.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/module_package.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/persona_template.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/plan.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/project.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/protocol.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/quality.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/sdd.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/source_tracking.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/task.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/models/validation.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modes/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modes/detector.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modes/router.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/_bundle_import.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/init/module-package.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/init/src/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/init/src/app.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/init/src/commands.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/init/src/first_run_selection.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/module_io_shim.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/module_registry/module-package.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/module_registry/src/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/module_registry/src/app.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/module_registry/src/commands.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/upgrade/src/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/upgrade/src/app.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/parsers/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/parsers/persona_importer.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/alias_manager.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/bootstrap.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/bridge_registry.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/crypto_validator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/custom_registries.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/dependency_resolver.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/extension_registry.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/help_cache.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/marketplace_client.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/metadata.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/module_availability.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/module_discovery.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/module_grouping.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/module_installer.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/module_lifecycle.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/module_packages.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/module_security.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/module_state.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/registry/registry.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/resources/semgrep/async.yml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/resources/semgrep/code-quality.yml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/resources/semgrep/feature-detection.yml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/runtime.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/bridge_probe.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/bridge_sync.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/bridge_sync_openspec_md_parse.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/bridge_sync_requirement_from_proposal.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/bridge_sync_requirement_helpers.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/bridge_sync_tasks_from_proposal.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/bridge_sync_what_changes_format.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/bridge_sync_write_openspec_from_proposal.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/bridge_watch.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/change_detector.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/code_to_spec.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/drift_detector.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/repository_sync.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/spec_to_code.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/spec_to_tests.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/watcher.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/sync/watcher_enhanced.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/telemetry.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/templates/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/templates/defaults/defect_v1.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/templates/defaults/enabler_v1.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/templates/defaults/spike_v1.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/templates/defaults/user_story_v1.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/templates/frameworks/scrum/user_story_v1.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/templates/personas/product-owner/user_story_v1.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/templates/providers/ado/work_item_v1.yaml +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/templates/registry.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/templates/specification_templates.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/acceptance_criteria.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/auth_tokens.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/bundle_converters.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/bundle_loader.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/code_change_detector.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/console.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/content_sanitizer.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/context_detection.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/contract_predicates.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/enrichment_context.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/enrichment_parser.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/env_manager.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/feature_keys.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/git.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/github_annotations.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/icontract_helpers.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/ide_setup.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/incremental_check.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/metadata.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/optional_deps.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/performance.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/persona_ownership.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/progress.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/progressive_disclosure.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/project_artifact_write.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/prompts.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/sdd_discovery.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/source_scanner.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/startup_checks.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/structure.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/structured_io.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/suggestions.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/terminal.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/utils/yaml_utils.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validation/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validation/command_audit.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/agile_validation.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/change_proposal_integration.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/cli_first_validator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/contract_validator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/fsm.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/repro_checker.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/schema.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/contract_populator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/crosshair_runner.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/crosshair_summary.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/dependency_installer.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/framework_detector.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/frameworks/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/frameworks/base.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/frameworks/django.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/frameworks/drf.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/frameworks/fastapi.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/frameworks/flask.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/harness_generator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/models.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/orchestrator.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/specmatic_runner.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/validators/sidecar/unannotated_detector.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/versioning/__init__.py +0 -0
- {specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/versioning/analyzer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specfact-cli
|
|
3
|
-
Version: 0.46.
|
|
3
|
+
Version: 0.46.28
|
|
4
4
|
Summary: The swiss knife CLI for agile DevOps teams. Keep backlog, specs, tests, and code in sync with validation and contract enforcement for new projects and long-lived codebases.
|
|
5
5
|
Project-URL: Homepage, https://github.com/nold-ai/specfact-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/nold-ai/specfact-cli.git
|
|
@@ -342,6 +342,8 @@ specfact code review run --path . --scope full
|
|
|
342
342
|
|
|
343
343
|
The sample output comes from a pinned capture against `nold-ai/specfact-demo-repo`. Reproduce it with `docs/_support/readme-first-contact/capture-readme-output.sh`; capture metadata lives alongside the raw logs in `docs/_support/readme-first-contact/sample-output/`.
|
|
344
344
|
|
|
345
|
+
The Code Review bundle also reports `ai_bloat` advisories for code shapes that AI-assisted coding often amplifies, such as redundant wrappers, passthrough lambdas, identity `try`/`except` blocks, and avoidable intermediate lists. These findings are advisory, score-neutral, and not AI-authorship detection. Use the generated `.specfact/code-review.json` report with the Project bundle's `/specfact.08-simplify` IDE prompt to review each cleanup before accepting it. See the [AI bloat quickstart](https://modules.specfact.io/quickstart-ai-bloat/) on the modules docs site.
|
|
346
|
+
|
|
345
347
|
## What SpecFact does
|
|
346
348
|
|
|
347
349
|
- **Reviews AI-assisted changes deterministically** — compare code against contracts, clean-code rules, and policy gates
|
|
@@ -59,6 +59,8 @@ specfact code review run --path . --scope full
|
|
|
59
59
|
|
|
60
60
|
The sample output comes from a pinned capture against `nold-ai/specfact-demo-repo`. Reproduce it with `docs/_support/readme-first-contact/capture-readme-output.sh`; capture metadata lives alongside the raw logs in `docs/_support/readme-first-contact/sample-output/`.
|
|
61
61
|
|
|
62
|
+
The Code Review bundle also reports `ai_bloat` advisories for code shapes that AI-assisted coding often amplifies, such as redundant wrappers, passthrough lambdas, identity `try`/`except` blocks, and avoidable intermediate lists. These findings are advisory, score-neutral, and not AI-authorship detection. Use the generated `.specfact/code-review.json` report with the Project bundle's `/specfact.08-simplify` IDE prompt to review each cleanup before accepting it. See the [AI bloat quickstart](https://modules.specfact.io/quickstart-ai-bloat/) on the modules docs site.
|
|
63
|
+
|
|
62
64
|
## What SpecFact does
|
|
63
65
|
|
|
64
66
|
- **Reviews AI-assisted changes deterministically** — compare code against contracts, clean-code rules, and policy gates
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "specfact-cli"
|
|
7
|
-
version = "0.46.
|
|
7
|
+
version = "0.46.28"
|
|
8
8
|
description = "The swiss knife CLI for agile DevOps teams. Keep backlog, specs, tests, and code in sync with validation and contract enforcement for new projects and long-lived codebases."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"modules": [
|
|
3
|
+
{
|
|
4
|
+
"checksum_sha256": "ce82ea7d2a48dfa8b16ad48599ec6daa922d6aa1a61c242da1143366d5d53ec4",
|
|
5
|
+
"download_url": "https://github.com/nold-ai/specfact-cli/releases/download/init-0.1.33.tar.gz",
|
|
6
|
+
"id": "init",
|
|
7
|
+
"latest_version": "0.1.33"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"checksum_sha256": "49c5bcbef6ce4aba3302b8209d3641cc34430f3fe4754423d61428557f8c641d",
|
|
11
|
+
"download_url": "https://github.com/nold-ai/specfact-cli/releases/download/upgrade-0.1.19.tar.gz",
|
|
12
|
+
"id": "upgrade",
|
|
13
|
+
"latest_version": "0.1.19"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"checksum_sha256": "79359da27cb1c734a928a453a786b626e7b06654f515f32ead0cf96fa8e70bc2",
|
|
17
|
+
"download_url": "https://github.com/nold-ai/specfact-cli/releases/download/module-registry-0.1.26.tar.gz",
|
|
18
|
+
"id": "module-registry",
|
|
19
|
+
"latest_version": "0.1.26"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "bundle-mapper",
|
|
23
|
+
"latest_version": "0.1.9"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/upgrade/module-package.yaml
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: upgrade
|
|
2
|
-
version: 0.1.
|
|
2
|
+
version: 0.1.19
|
|
3
3
|
commands:
|
|
4
4
|
- upgrade
|
|
5
5
|
category: core
|
|
@@ -17,5 +17,5 @@ publisher:
|
|
|
17
17
|
description: Check and apply SpecFact CLI version upgrades.
|
|
18
18
|
license: Apache-2.0
|
|
19
19
|
integrity:
|
|
20
|
-
checksum: sha256:
|
|
21
|
-
signature:
|
|
20
|
+
checksum: sha256:fda269f874f7b61ad5ec8217ba1550e49b1e2e17b23aafd08b39df1a98d66ee1
|
|
21
|
+
signature: yx89WfwC8DQUkAw2WD1EdHp08Ug0dFw3gNbIXbwgcdoxUBa9qA/0TaHHNBbyhVIxgL6wb+H4XCbYjdwb6XU1Bg==
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/upgrade/src/commands.py
RENAMED
|
@@ -23,6 +23,7 @@ from icontract import ensure
|
|
|
23
23
|
from rich.console import Console
|
|
24
24
|
from rich.panel import Panel
|
|
25
25
|
from rich.prompt import Confirm
|
|
26
|
+
from rich.text import Text
|
|
26
27
|
|
|
27
28
|
from specfact_cli import __version__
|
|
28
29
|
from specfact_cli.contracts.module_interface import ModuleIOContract
|
|
@@ -223,16 +224,27 @@ def _build_upgrade_command(method: InstallationMethod) -> list[str] | None:
|
|
|
223
224
|
def _execute_upgrade_command(command: list[str]) -> bool:
|
|
224
225
|
try:
|
|
225
226
|
console.print("[cyan]Updating SpecFact CLI...[/cyan]")
|
|
226
|
-
result = subprocess.run(command, check=False, timeout=300)
|
|
227
|
-
except subprocess.TimeoutExpired:
|
|
227
|
+
result = subprocess.run(command, check=False, timeout=300, capture_output=True)
|
|
228
|
+
except subprocess.TimeoutExpired as exc:
|
|
229
|
+
_replay_upgrade_output(_coerce_subprocess_output(exc.stdout))
|
|
230
|
+
_replay_upgrade_output(_coerce_subprocess_output(exc.stderr))
|
|
228
231
|
console.print("[red]✗ Update timed out (exceeded 5 minutes)[/red]")
|
|
229
232
|
return False
|
|
230
233
|
except OSError as e:
|
|
231
234
|
console.print(f"[red]✗ Update failed: {e}[/red]")
|
|
232
235
|
return False
|
|
236
|
+
stdout = _coerce_subprocess_output(result.stdout)
|
|
237
|
+
stderr = _coerce_subprocess_output(result.stderr)
|
|
233
238
|
if result.returncode != 0:
|
|
239
|
+
_replay_upgrade_output(stdout)
|
|
240
|
+
_replay_upgrade_output(stderr)
|
|
234
241
|
console.print(f"[red]✗ Update failed with exit code {result.returncode}[/red]")
|
|
235
242
|
return False
|
|
243
|
+
if _is_pipx_upgrade_command(command):
|
|
244
|
+
stdout = _filter_pipx_spaced_home_warning(stdout)
|
|
245
|
+
stderr = _filter_pipx_spaced_home_warning(stderr)
|
|
246
|
+
_replay_upgrade_output(stdout)
|
|
247
|
+
_replay_upgrade_output(stderr)
|
|
236
248
|
console.print("[green]✓ Update successful![/green]")
|
|
237
249
|
from datetime import datetime
|
|
238
250
|
|
|
@@ -243,6 +255,48 @@ def _execute_upgrade_command(command: list[str]) -> bool:
|
|
|
243
255
|
return True
|
|
244
256
|
|
|
245
257
|
|
|
258
|
+
def _coerce_subprocess_output(output: object) -> str:
|
|
259
|
+
"""Return subprocess output as displayable text."""
|
|
260
|
+
if isinstance(output, str):
|
|
261
|
+
return output
|
|
262
|
+
if isinstance(output, bytes):
|
|
263
|
+
return output.decode(errors="replace")
|
|
264
|
+
return ""
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
def _is_pipx_upgrade_command(command: list[str]) -> bool:
|
|
268
|
+
"""Return whether command is the supported pipx upgrade invocation."""
|
|
269
|
+
return len(command) >= 3 and command[:3] == ["pipx", "upgrade", "specfact-cli"]
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
def _replay_upgrade_output(output: str) -> None:
|
|
273
|
+
"""Replay captured child-process output without Rich markup parsing."""
|
|
274
|
+
if output:
|
|
275
|
+
console.print(Text(output), end="")
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
def _filter_pipx_spaced_home_warning(output: str) -> str:
|
|
279
|
+
"""Remove only pipx's known spaced-home warning block from successful output."""
|
|
280
|
+
if not output:
|
|
281
|
+
return output
|
|
282
|
+
warning_markers = (
|
|
283
|
+
"Found a space in the pipx home path",
|
|
284
|
+
"To see your PIPX_HOME dir",
|
|
285
|
+
"Most likely fix on macOS",
|
|
286
|
+
)
|
|
287
|
+
filtered_lines: list[str] = []
|
|
288
|
+
skipping_wrapped_warning = False
|
|
289
|
+
for line in output.splitlines(keepends=True):
|
|
290
|
+
if any(marker in line for marker in warning_markers):
|
|
291
|
+
skipping_wrapped_warning = "Found a space in the pipx home path" in line
|
|
292
|
+
continue
|
|
293
|
+
if skipping_wrapped_warning and line[:1].isspace():
|
|
294
|
+
continue
|
|
295
|
+
skipping_wrapped_warning = False
|
|
296
|
+
filtered_lines.append(line)
|
|
297
|
+
return "".join(filtered_lines)
|
|
298
|
+
|
|
299
|
+
|
|
246
300
|
def _upgrade_log_started(check_only: bool, yes: bool) -> None:
|
|
247
301
|
if is_debug_mode():
|
|
248
302
|
debug_log_operation(
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"modules": [
|
|
3
|
-
{
|
|
4
|
-
"id": "init",
|
|
5
|
-
"latest_version": "0.1.30"
|
|
6
|
-
},
|
|
7
|
-
{
|
|
8
|
-
"id": "upgrade",
|
|
9
|
-
"latest_version": "0.1.4"
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
"id": "module-registry",
|
|
13
|
-
"latest_version": "0.1.19"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"id": "bundle-mapper",
|
|
17
|
-
"latest_version": "0.1.9"
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/resources/templates/persona/product-owner.md.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/ambiguity_scanner.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/contract_extractor.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/control_flow_analyzer.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/relationship_mapper.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/requirement_extractor.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/analyzers/test_pattern_extractor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/mappers/ado_mapper.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/mappers/github_mapper.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/backlog/mappers/template_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/comparators/plan_comparator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/contracts/module_interface.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/enrichers/constitution_enricher.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/contract_generator.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/openapi_extractor.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/persona_exporter.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/protocol_generator.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/report_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/test_to_openapi.py
RENAMED
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/generators/workflow_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/importers/speckit_converter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/init/module-package.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/module_registry/src/app.py
RENAMED
|
File without changes
|
|
File without changes
|
{specfact_cli-0.46.25 → specfact_cli-0.46.28}/src/specfact_cli/modules/upgrade/src/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|