specsmith 0.16.1.dev605__tar.gz → 0.16.1.dev606__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.
- {specsmith-0.16.1.dev605/src/specsmith.egg-info → specsmith-0.16.1.dev606}/PKG-INFO +1 -1
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/pyproject.toml +1 -1
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/auditor.py +13 -3
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/sync.py +5 -2
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606/src/specsmith.egg-info}/PKG-INFO +1 -1
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_auditor.py +49 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/LICENSE +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/README.md +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/setup.cfg +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/epistemic/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/epistemic/belief.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/epistemic/certainty.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/epistemic/failure_graph.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/epistemic/py.typed +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/epistemic/recovery.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/epistemic/session.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/epistemic/stress_tester.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/epistemic/trace.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/__main__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/broker.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/chat_runner.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/cleanup.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/context_seed.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/core.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/dispatch/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/dispatch/_status.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/dispatch/dag.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/dispatch/dispatcher.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/dispatch/events.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/dispatch/result.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/endpoints.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/events.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/execution_profiles.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/fallback.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/hf_leaderboard.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/hf_sync.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/indexer.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/llm_client.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/mcp.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/memory.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/model_intelligence.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/model_profiles.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/orchestrator.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/permissions.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/profiles.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/provider_registry.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/repl.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/router.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/rules.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/runner.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/safety.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/spawner.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/suggester.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/teams.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/tools.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/verifier.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/voice.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/approvals.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/architect.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/auth.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/block_export.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/channel.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/ci_manager.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/cli.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/commands/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/commands/intelligence.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/commands/issues_policy.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/commands/reporting.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/compliance/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/compliance/_compat.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/compliance/checker.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/compliance/evidence.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/compliance/regulations.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/compliance/reporter.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/compressor.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/config.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/console_utils.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/context_orchestrator.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/context_window.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/credit_analyzer.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/credits.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/dashboard.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/datasources/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/datasources/base.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/datasources/citations.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/datasources/fpd.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/datasources/odp.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/datasources/patentsview.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/datasources/pfw.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/datasources/ppubs.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/datasources/ptab.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/differ.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/doctor.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/drive.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/editor.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/epistemic/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/epistemic/belief.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/epistemic/certainty.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/epistemic/failure_graph.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/epistemic/recovery.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/epistemic/stress_tester.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/esdb/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/esdb/_license.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/esdb/bridge.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/esdb/sqlite_store.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/eval/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/eval/builtins.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/eval/runner.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/executor.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/exporter.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/governance_logic.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/governance_store.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/governance_yaml.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/governed_pr.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/app.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/main_window.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/session_tab.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/theme.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/widgets/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/widgets/chat_view.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/widgets/input_bar.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/widgets/provider_bar.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/widgets/token_meter.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/widgets/tool_panel.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/widgets/update_checker.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/worker.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/history_search.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/importer.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/instinct.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/integrations/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/integrations/agent_skill.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/integrations/aider.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/integrations/base.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/integrations/claude_code.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/integrations/codity.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/integrations/copilot.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/integrations/cursor.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/integrations/gemini.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/integrations/windsurf.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/issue_reporter.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/languages.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/ledger.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/mcp_generator.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/mcp_server.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/m001_governance_yaml.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/m002_agents_slim.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/m003_compliance_init.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/m004_ledger_esdb.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/m005_agent_run_tool.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/m006_session_governance.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/runner.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/ollama_cmds.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/patent.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/paths.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/phase.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/plugins.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/policy.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/profiles.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/rate_limits.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/recover.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/releaser.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/requirements.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/requirements_parser.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/retrieval.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/risk.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/safe_write.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/scaffolder.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/serve.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/session.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/session_init.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/session_store.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/ai_agents.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/cloud.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/corporate.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/cross_platform.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/data_engineering.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/devops.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/docs.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/embedded.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/governance.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/hardware.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/mobile.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/platform_engineering.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/productivity.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/software_engineering.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/specsmith_skills.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/ssh.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/web_backend.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills_builder.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/agents.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/community/bug_report.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/community/code_of_conduct.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/community/contributing.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/community/feature_request.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/community/license-Apache-2.0.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/community/license-MIT.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/community/pull_request_template.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/community/security.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/docs/architecture.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/docs/mkdocs.yml.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/docs/readthedocs.yaml.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/docs/requirements.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/docs/test-spec.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/editorconfig.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/gitattributes.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/gitignore.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/go/go.mod.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/go/main.go.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/governance/belief-registry.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/governance/context-budget.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/governance/drift-metrics.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/governance/epistemic-axioms.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/governance/failure-modes.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/governance/lifecycle.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/governance/roles.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/governance/rules.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/governance/session-protocol.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/governance/uncertainty-map.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/governance/verification.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/js/package.json.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/ledger.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/python/cli.py.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/python/init.py.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/python/pyproject.toml.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/readme.md.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/rust/Cargo.toml.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/rust/main.rs.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/scripts/exec.cmd.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/scripts/exec.sh.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/scripts/run.cmd.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/scripts/run.sh.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/scripts/setup.cmd.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/scripts/setup.sh.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/templates/workflows/release.yml.j2 +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/tool_installer.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/toolrules.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/tools.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/trace.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/transcripts.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/updater.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/upgrader.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/validator.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/vcs/__init__.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/vcs/base.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/vcs/bitbucket.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/vcs/github.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/vcs/gitlab.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/vcs_commands.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/wi_store.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/wireframes.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/workspace.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith.egg-info/SOURCES.txt +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith.egg-info/dependency_links.txt +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith.egg-info/entry_points.txt +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith.egg-info/requires.txt +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith.egg-info/top_level.txt +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_CMD_001.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_agent_profiles.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_agent_run_feedback.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_agent_runner_ready.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_ai_client.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_ai_intelligence.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_architecture.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_channel.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_chat_diff_decision.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_chat_runner_openai_compat.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_chat_stdin_protocol.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_cli.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_cli_regressions.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_cli_workflows_history_drive.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_compliance.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_compliance_governance.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_compressor.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_dispatch.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_e2e_nexus.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_endpoints_cli.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_endpoints_store.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_epistemic.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_esdb_enforcement.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_esdb_license.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_esdb_sqlite.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_esdb_verify_chain_cli.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_fallback_chain.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_golden_path.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_importer.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_init_modes.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_integrations.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_integrations_codity.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_intelligence.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_issue_policy_features.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_issue_reporter.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_mcp_client.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_mcp_server.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_new_modules.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_nexus.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_permissions.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_phase1_4_new.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_phase34_completion.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_rate_limits.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_reporting_commands.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_req_248_262.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_req_358_359.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_scaffolder.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_schema_migrations.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_skill_marketplace.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_skills_mcp.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_smoke.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_suggester.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_tools.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_typing_guardrails.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_validator.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_vcs.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_warp_parity.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_warp_parity_followup.py +0 -0
- {specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/tests/test_wi_lifecycle.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specsmith
|
|
3
|
-
Version: 0.16.1.
|
|
3
|
+
Version: 0.16.1.dev606
|
|
4
4
|
Summary: AEE governance toolkit for AI-assisted development — session preflight gates, multi-agent dispatch, requirements↔test traceability, ESDB persistence, MCP server, and skills for Warp, Cursor, Claude Code, Copilot, Windsurf, and Aider.
|
|
5
5
|
Author: Layer1Labs Silicon, Inc.
|
|
6
6
|
License-Expression: MIT
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "specsmith"
|
|
7
|
-
version = "0.16.1.
|
|
7
|
+
version = "0.16.1.dev606"
|
|
8
8
|
description = "AEE governance toolkit for AI-assisted development — session preflight gates, multi-agent dispatch, requirements↔test traceability, ESDB persistence, MCP server, and skills for Warp, Cursor, Claude Code, Copilot, Windsurf, and Aider."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -1132,9 +1132,19 @@ def check_industrial_artifacts(root: Path) -> list[AuditResult]:
|
|
|
1132
1132
|
declared_eds = declared.get("canopen_eds", []) or []
|
|
1133
1133
|
# Normalise declared paths to forward slashes and lowercase so they match
|
|
1134
1134
|
# on Windows where YAML uses '/' but Path.relative_to() returns '\\' (#251).
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1135
|
+
# canopen_eds entries may be plain strings ("path/to/file.eds") or dicts
|
|
1136
|
+
# ({path: "path/to/file.eds", device: "..."}). Handle both to avoid false
|
|
1137
|
+
# positives when users use the simpler string form (#257).
|
|
1138
|
+
declared_paths: set[str] = set()
|
|
1139
|
+
for e in declared_eds:
|
|
1140
|
+
if isinstance(e, dict):
|
|
1141
|
+
_p = e.get("path", "")
|
|
1142
|
+
elif isinstance(e, str):
|
|
1143
|
+
_p = e
|
|
1144
|
+
else:
|
|
1145
|
+
_p = str(e)
|
|
1146
|
+
if _p:
|
|
1147
|
+
declared_paths.add(_p.replace("\\", "/").lower())
|
|
1138
1148
|
|
|
1139
1149
|
# Scan for .eds and .xdd files — respect scan_exclude_dirs and
|
|
1140
1150
|
# scan_exclude_patterns from scaffold.yml (#175).
|
|
@@ -602,8 +602,11 @@ def auto_migrate_if_needed(root: Path) -> dict[str, int]:
|
|
|
602
602
|
return {}
|
|
603
603
|
|
|
604
604
|
class _MigratableStore(Protocol):
|
|
605
|
-
def record_count(self) -> int:
|
|
606
|
-
|
|
605
|
+
def record_count(self) -> int:
|
|
606
|
+
pass # noqa: E704
|
|
607
|
+
|
|
608
|
+
def migrate_from_json(self, specsmith_dir: Path) -> dict[str, int] | Any:
|
|
609
|
+
pass # noqa: E704
|
|
607
610
|
|
|
608
611
|
try:
|
|
609
612
|
with open_default_store(root, warn=False) as store:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specsmith
|
|
3
|
-
Version: 0.16.1.
|
|
3
|
+
Version: 0.16.1.dev606
|
|
4
4
|
Summary: AEE governance toolkit for AI-assisted development — session preflight gates, multi-agent dispatch, requirements↔test traceability, ESDB persistence, MCP server, and skills for Warp, Cursor, Claude Code, Copilot, Windsurf, and Aider.
|
|
5
5
|
Author: Layer1Labs Silicon, Inc.
|
|
6
6
|
License-Expression: MIT
|
|
@@ -90,6 +90,10 @@ class TestAuditDetectsIssues:
|
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
def test_industrial_artifacts_normalizes_windows_declared_paths(tmp_path: Path) -> None:
|
|
93
|
+
# Simulate a Windows user who put a single backslash path in scaffold.yml.
|
|
94
|
+
# YAML plain scalars treat backslash as literal, so the parsed value is
|
|
95
|
+
# "hardware\device.eds" (one backslash) which must normalise to the posix
|
|
96
|
+
# found path "hardware/device.eds".
|
|
93
97
|
(tmp_path / "scaffold.yml").write_text(
|
|
94
98
|
"name: test\n"
|
|
95
99
|
"type: cli-python\n"
|
|
@@ -106,6 +110,51 @@ def test_industrial_artifacts_normalizes_windows_declared_paths(tmp_path: Path)
|
|
|
106
110
|
assert any(r.name == "industrial-artifacts" and r.passed for r in results)
|
|
107
111
|
|
|
108
112
|
|
|
113
|
+
def test_industrial_artifacts_plain_string_entries_no_false_positive(tmp_path: Path) -> None:
|
|
114
|
+
"""Regression test for #257: plain string canopen_eds entries must not be
|
|
115
|
+
treated as undeclared even though they pass isinstance(e, dict) == False."""
|
|
116
|
+
(tmp_path / "scaffold.yml").write_text(
|
|
117
|
+
"name: test\n"
|
|
118
|
+
"type: cli-python\n"
|
|
119
|
+
"industrial_artifacts:\n"
|
|
120
|
+
" canopen_eds:\n"
|
|
121
|
+
" - application/canopen/device.eds\n"
|
|
122
|
+
" - application/canopen/device.xdd\n",
|
|
123
|
+
encoding="utf-8",
|
|
124
|
+
)
|
|
125
|
+
can_dir = tmp_path / "application" / "canopen"
|
|
126
|
+
can_dir.mkdir(parents=True)
|
|
127
|
+
(can_dir / "device.eds").write_text("EDS", encoding="utf-8")
|
|
128
|
+
(can_dir / "device.xdd").write_text("XDD", encoding="utf-8")
|
|
129
|
+
|
|
130
|
+
results = check_industrial_artifacts(tmp_path)
|
|
131
|
+
assert results
|
|
132
|
+
assert any(r.name == "industrial-artifacts" and r.passed for r in results), (
|
|
133
|
+
f"Expected pass but got: {[r.message for r in results]}"
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def test_industrial_artifacts_mixed_string_and_dict_entries(tmp_path: Path) -> None:
|
|
138
|
+
"""Mixed plain-string and dict entries should both be recognised (#257)."""
|
|
139
|
+
(tmp_path / "scaffold.yml").write_text(
|
|
140
|
+
"name: test\n"
|
|
141
|
+
"type: cli-python\n"
|
|
142
|
+
"industrial_artifacts:\n"
|
|
143
|
+
" canopen_eds:\n"
|
|
144
|
+
" - application/canopen/a.eds\n"
|
|
145
|
+
" - path: application/canopen/b.eds\n"
|
|
146
|
+
" device: MyDevice\n",
|
|
147
|
+
encoding="utf-8",
|
|
148
|
+
)
|
|
149
|
+
can_dir = tmp_path / "application" / "canopen"
|
|
150
|
+
can_dir.mkdir(parents=True)
|
|
151
|
+
(can_dir / "a.eds").write_text("EDS", encoding="utf-8")
|
|
152
|
+
(can_dir / "b.eds").write_text("EDS", encoding="utf-8")
|
|
153
|
+
|
|
154
|
+
results = check_industrial_artifacts(tmp_path)
|
|
155
|
+
assert any(r.name == "industrial-artifacts" and r.passed for r in results)
|
|
156
|
+
|
|
157
|
+
|
|
109
158
|
# ---------------------------------------------------------------------------
|
|
110
159
|
# Regression: issue #183 — letter-suffix TEST IDs in req trace
|
|
111
160
|
# ---------------------------------------------------------------------------
|
|
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
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/dispatch/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/dispatch/dispatcher.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/execution_profiles.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
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/model_intelligence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/agent/provider_registry.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
|
|
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
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/datasources/patentsview.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
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/epistemic/failure_graph.py
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/epistemic/stress_tester.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
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/widgets/provider_bar.py
RENAMED
|
File without changes
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/widgets/token_meter.py
RENAMED
|
File without changes
|
|
File without changes
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/gui/widgets/update_checker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/integrations/agent_skill.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/integrations/claude_code.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
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/m001_governance_yaml.py
RENAMED
|
File without changes
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/m002_agents_slim.py
RENAMED
|
File without changes
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/m003_compliance_init.py
RENAMED
|
File without changes
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/m004_ledger_esdb.py
RENAMED
|
File without changes
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/migrations/m005_agent_run_tool.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
|
{specsmith-0.16.1.dev605 → specsmith-0.16.1.dev606}/src/specsmith/skills/data_engineering.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|