booley-rtl 0.2.2__tar.gz → 0.2.3__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.
- {booley_rtl-0.2.2/src/booley_rtl.egg-info → booley_rtl-0.2.3}/PKG-INFO +2 -1
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/THIRD_PARTY_NOTICES.md +1 -1
- booley_rtl-0.2.3/VERSION +1 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/pyproject.toml +4 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/AGENTS_TEMPLATE.md +1 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/steps/3-agents-md.md +3 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/fusesoc/fusesoc_registry.py +18 -1
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/auto_doctor.py +40 -6
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/booley.py +16 -7
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/doctor.py +323 -288
- {booley_rtl-0.2.2 → booley_rtl-0.2.3/src/booley_rtl.egg-info}/PKG-INFO +2 -1
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley_rtl.egg-info/SOURCES.txt +1 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley_rtl.egg-info/requires.txt +1 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_fusesoc_registry.py +23 -0
- booley_rtl-0.2.3/tests/test_pytest_configuration.py +44 -0
- booley_rtl-0.2.2/VERSION +0 -1
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/LICENSE +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/README.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/setup.cfg +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/audit/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/audit/agent_schema.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/audit/config_common.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/audit/configs_schema.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/audit/contracts.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/audit/design_size.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/audit/eda_environment.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/audit/flow_schema.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/audit/host_environment.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/audit/project_schema.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/audit/resource_policy.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/audit/target_matrix.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/bwave/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/bwave/cli.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/bwave/contract.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/bwave/sessions.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/bwave/wcp.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/config/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/config/agent.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/config/editor.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/config/guidance_links.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/config/limits.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/config/pricing.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/config/project_config.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/config/settings.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/core/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/core/boundary.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/core/config_paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/core/models.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/core/run_command.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/cheatsheet.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/criteria.toml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/docker/Dockerfile +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/docker/Dockerfile.egress-proxy +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/docker/Dockerfile.flexnet-relay +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/docker/Dockerfile.reaper +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/docker/Dockerfile.riscv +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/docker/agent-clis-package-lock.json +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/docker/agent-clis-package.json +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/docker/build-riscv.sh +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/docker/build.sh +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/docker/claude-managed-settings.json +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/docker/codex-requirements.toml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/docker/vivado-wrapper +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/edalize/verible.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/licenses/Nangate-OCL-1.0.txt +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/TROUBLESHOOTING.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/booley_vcd_dump.sv +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/cocotb_tb_style_guide.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/code_review/rtl/bugs.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/code_review/rtl/code_style.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/code_review/rtl/optimization.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/code_review/rtl/protocol-cdc.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/code_review/rtl/security.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/code_review/rtl/spec.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/code_review/testbench/cocotb-tb-review.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/code_review/testbench/tb-review.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/rtl-mutation-testing.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/rtl_style_guide.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/sim_result_sentinel.sv +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/refs/tb_style_guide.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-feedback/SKILL.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-feedback/minimal-reproducer.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-heal/SKILL.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-heal/agents/openai.yaml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/BOOLEY_TEMPLATE.toml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/CORE_TEMPLATE.yaml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/SETUP_PLAN_TEMPLATE.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/SKILL.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/TESTS_TEMPLATE.toml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/agents/openai.yaml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/steps/0-plan.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/steps/2-project-config.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/steps/4-doctor.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/steps/5-parity.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/steps/6-findings.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/steps/new-greenfield.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-create/SKILL.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-create/TICKET_TEMPLATE.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-create/agents/openai.yaml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-create/grilling.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-triage/SKILL.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-triage/agents/openai.yaml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-triage/explain-diff-prompt.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-triage/flow-specialist-reference.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-triage/review-template.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-triage/steps/01-board-orphans.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-triage/steps/02-blocked.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-triage/steps/03-review.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-ticket-triage/steps/04-summary.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/commit_git_io.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/commit_message_format.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/commit_msg_hook.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/commit_msg_utils.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/compare_vcd.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/contract_path_policy.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/criteria.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/criteria_reference.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/deploy_skills.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/development_state.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/flow_specialist_reference.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/mut_harness_inject.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/mutation_lock.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/pre-commit-ruff.sh +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/pre_push_hook.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/review_dispositions.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/run_mutmut.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/scope_precommit_hook.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/validate_commit_msg.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/workspace_isolation.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/dev_support/worktree_create.sh +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/docker/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/docker/egress_proxy.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/docker/proxy_entry.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/docker/reaper.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/eda/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/eda/authority.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/eda/cli.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/eda/config.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/eda/flexnet_docker.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/eda/flexnet_relay.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/eda/runtime_spec.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/eda/vivado.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/feedback/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/feedback/cli.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/feedback/findings.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/feedback/redact.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/feedback/render.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/feedback/submit.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/artifacts.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/base.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/baseline_worktree.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/clock_timing.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/criterion_freshness.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/eda_parsers.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/edam.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/elab/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/elab/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/elab/flow.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/execution.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/flow_config.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/fpga/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/fpga/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/fpga/cache.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/fpga/edam.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/fpga/flow.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/fpga/metrics.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/fpga/recipe.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/human_display.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/lint/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/lint/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/lint/flow.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/output_budget.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/recipe_evidence.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/run_evidence.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/sim/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/sim/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/sim/edam.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/sim/flow.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/sim/target_tests.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/source_fingerprint.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/synth/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/synth/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/synth/flow.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/synth/ppa_config.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/synth/recipe.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/synth/threshold_eval.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/target_campaign.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/target_criteria.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/target_parameters.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/flows/target_test_suite.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/fusesoc/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/fusesoc/core_projection.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/fusesoc/core_security.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/fusesoc/fusesoc_trace_overlay.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/fusesoc/selftest_overlay.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/_ticket_ops.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/auth_cmd.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/auto_retry.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/blocked_prep.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/blocking.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/booley_status_display.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/build_stamp.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/cheatsheet.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/colors.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/console/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/console/app.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/console/console.tcss +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/console/criteria_format.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/console/events.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/console/links.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/console/path_backtick.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/console/widgets.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/console_metrics.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/devcontainer.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/developer.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/developer_display.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/developer_guardrails.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/developer_probe.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/developer_prompt.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/doctor_stamp.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/doctor_waivers.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/init_cmd.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/init_common.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/init_docker_image.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/init_git_hooks.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/init_plan.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/init_scaffold.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/init_skills.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/interactive_docker.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/job_fence.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/logging_utils.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/models.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/nangate_pdk.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/orphan_handler.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/preflight.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/render_md.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/review_artifact.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/review_evidence.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/review_explanation.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/review_prep.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/sandbox.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/scope_policy.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/session_runtime.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/setup/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/setup/intake.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/setup/project_worktree.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/setup/workspace.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/setup/worktree_lock_gc.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/subscription_limit.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/synth_probe.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/terminal.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/ticket_cli.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/transcript_distill.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/triage_package.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/web_isolation.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/harness/worktree_health.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/mcp/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/mcp/base.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/mcp/diff_classify.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/mcp/events.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/mcp/registry.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/mcp/run_lock.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/mcp/schema_extractor.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/mcp/server.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/mcp/submit_run_report.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/_claude_backend.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/_claude_transcript_md.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/_codex_backend.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/_codex_live_usage.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/_codex_transcript_md.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/_cost.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/_retry.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/agent.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/agent_backend.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/agent_errors.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/auth_token.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/bootstrap_mode.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/build_metadata.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/developer_budget.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/eda_tool_lock.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/environment.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/file_lock.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/filesystem_utils.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/git.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/heartbeat.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/incontainer_live_preview.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/incontainer_register.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/incontainer_vaporview.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/init_plan.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/job_records.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/job_slots.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/mcp_config.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/nested_mcp_capabilities.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/pid.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/platform_paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/process_group.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/project_dir.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/project_image.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/prompt_artifacts.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/runtime_context.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/shared_infra.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/ticket_repositories.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/timefmt.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/runtime/zombie_cleanup.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/sim/bwave_fifo.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/sim/cocotb_results.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/sim/cocotb_run.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/sim/iverilog_run.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/sim/run_guard.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/sim/sim_result.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/sim/trace_session.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/sim/vcs_run.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/sim/verilator_run.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/sim/xcelium_run.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/specialists/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/specialists/coverage_analyst.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/specialists/coverage_verilog_utils.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/specialists/mutation_tester.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/specialists/reviewer.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/specialists/specialist.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/specialists/specialist_workspace.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/specialists/tb_coder.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/synthesis/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/synthesis/profiles.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/targets/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/targets/flow_names.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/targets/parameter_integrity.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/targets/target_naming.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/targets/target_surface.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/analytics.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/archive.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/cli.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/cli_handlers.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/constants.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/contract_ops.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/criteria_acceptance.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/criteria_markdown.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/criteria_summary_format.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/evidence.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/execution.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/frontmatter.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/git_ops.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/helpers.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/io.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/lifecycle.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/logs.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/notifications.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/operations.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/project_git_ops.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/reporting.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/run_metrics.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/scanner.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/target_contract.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/validation.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/ticket_board/validation_logs.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/vivado/xdc/timing.xdc +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/abc_config.json +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/abc_scripts/abc_aggressive.script +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/abc_scripts/abc_balanced.script +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/abc_scripts/abc_fast.script +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/openroad_timing.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/ppa.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/run_yosys_syn.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/sdc/abc_simple.sdc +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/syn_config.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/syn_core.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/syn_discovery.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/syn_make.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/syn_parse.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/syn_subprocess.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/yosys/synthesis_watchdog.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley_rtl.egg-info/dependency_links.txt +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley_rtl.egg-info/entry_points.txt +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley_rtl.egg-info/top_level.txt +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_bootstrap_mode.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_build_metadata.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_core_boundary.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_core_projection.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_core_security.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_dependency_direction.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_eda_tool_lock.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_entry_points.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_filesystem_utils.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_flow_names.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_guidance_links.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_guidance_links_portable.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_heartbeat.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_incontainer_live_preview.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_incontainer_register.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_incontainer_vaporview.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_interactive_smoke.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_job_slots.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_mcp_server.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_native_bwave_resolution.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_nested_mcp_capabilities.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_no_retired_host_execution.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_parameter_integrity.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_platform_paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_pricing.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_project_config_human_in_loop.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_project_config_run_report.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_project_dir.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_run_command.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_run_mutmut.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_runtime_context.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_selftest_overlay.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_shared_infra.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_source_map_from_core.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_target_naming.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_target_surface.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_timefmt.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_triage_diff_paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.3}/tests/test_zombie_cleanup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: booley-rtl
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: RTL development harness with ticket-based workflow automation
|
|
5
5
|
Author-email: "A.R." <boldaxolotl@proton.me>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -39,6 +39,7 @@ Provides-Extra: dev
|
|
|
39
39
|
Requires-Dist: build>=1.0; extra == "dev"
|
|
40
40
|
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
41
41
|
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
42
|
+
Requires-Dist: pytest-xdist>=3.8; extra == "dev"
|
|
42
43
|
Requires-Dist: pytest-timeout>=2.3; extra == "dev"
|
|
43
44
|
Requires-Dist: coverage>=7.0; extra == "dev"
|
|
44
45
|
Requires-Dist: ruff==0.15.18; extra == "dev"
|
|
@@ -64,7 +64,7 @@ THE LIBRARY.
|
|
|
64
64
|
|
|
65
65
|
The `bwave` executable statically links Rust crates recorded in
|
|
66
66
|
`crates/bwave/Cargo.lock`. The dependency versions below describe the lockfile at
|
|
67
|
-
Booley 0.2.
|
|
67
|
+
Booley 0.2.3. Where a crate offers a choice of licenses, this distribution uses
|
|
68
68
|
the license named by the group.
|
|
69
69
|
|
|
70
70
|
### BSD-3-Clause
|
booley_rtl-0.2.3/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.2.3
|
|
@@ -59,6 +59,10 @@ dev = [
|
|
|
59
59
|
"build>=1.0",
|
|
60
60
|
"pytest>=8.0",
|
|
61
61
|
"pytest-asyncio>=0.23",
|
|
62
|
+
# Run independent test modules concurrently in CI. loadscope scheduling
|
|
63
|
+
# keeps each module/class together while tests/conftest.py gives every
|
|
64
|
+
# worker its own temp root for subprocess-visible caches.
|
|
65
|
+
"pytest-xdist>=3.8",
|
|
62
66
|
# Bounds every test's wall-clock so a wedged subprocess/stall test fails
|
|
63
67
|
# loudly instead of hanging the whole suite (default applied in tests/conftest.py).
|
|
64
68
|
"pytest-timeout>=2.3",
|
{booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/AGENTS_TEMPLATE.md
RENAMED
|
@@ -19,6 +19,7 @@ tracks a content-identical root `AGENTS.md` (see `steps/3-agents-md.md`, Step 3)
|
|
|
19
19
|
## Booley-Specific Instructions
|
|
20
20
|
|
|
21
21
|
- Project-specific Booley data lives in `.booley_project/`.
|
|
22
|
+
- This repo is operating in stealth mode. No changes to `.booley_project/` may be visible in the main repo. (Keep only for `[stealth].enabled = true`.)
|
|
22
23
|
- Keep `booley doctor` green. After changing project configuration, EDA-tool Targets, dependencies, or the Session Runtime, fix every finding or add a narrow, reviewed `doctor-waivers.toml` entry for a deliberate constraint. Before handoff, run plain Doctor on the host and plain plus `--deep` in the Session Runtime; leave no active warnings or errors.
|
|
23
24
|
- Keep handoffs and plans under `.booley_project/` (e.g. `.booley_project/plans/`, `.booley_project/handoffs/`), never in the RTL repo. They are agent working notes, not project source, and do not belong in source history.
|
|
24
25
|
- In Interactive Mode, the editor extension uses the user's shared VS Code window attached to this Project's Session Runtime (devcontainer). Use it as the human-facing surface: when useful, open files with `code --goto <path>[:<line>]` and side-by-side diffs with `code --diff <left> <right>` instead of only printing paths.
|
{booley_rtl-0.2.2 → booley_rtl-0.2.3}/src/booley/data/skills/booley-setup/steps/3-agents-md.md
RENAMED
|
@@ -37,6 +37,9 @@ file is high leverage: do not auto-write, pad, or invent facts.
|
|
|
37
37
|
- When `booley.toml` selects `booley-sandbox-riscv`, keep the template's RISC-V
|
|
38
38
|
reference-docs bullet verbatim so agents can find the image's offline manuals.
|
|
39
39
|
Remove that conditional bullet for every other sandbox image.
|
|
40
|
+
- When `booley.toml` has `[stealth].enabled = true`, keep the template's stealth
|
|
41
|
+
mode bullet verbatim so agents do not expose `.booley_project/` changes in the
|
|
42
|
+
main repository. Remove that conditional bullet when stealth mode is disabled.
|
|
40
43
|
- Do not read RTL, testbench, or test contents by default. Stable docs and
|
|
41
44
|
config are enough for this task.
|
|
42
45
|
- Bad content — omit all of it: repo maps and large directory listings;
|
|
@@ -1304,6 +1304,22 @@ def target_source_files(
|
|
|
1304
1304
|
*target* is not a single selectable Target (ADR 0030).
|
|
1305
1305
|
"""
|
|
1306
1306
|
ref = resolve_ref(project_root, target)
|
|
1307
|
+
return target_source_files_for_ref(
|
|
1308
|
+
project_root,
|
|
1309
|
+
ref,
|
|
1310
|
+
include_dependencies=include_dependencies,
|
|
1311
|
+
include_headers=include_headers,
|
|
1312
|
+
)
|
|
1313
|
+
|
|
1314
|
+
|
|
1315
|
+
def target_source_files_for_ref(
|
|
1316
|
+
project_root: Path | str,
|
|
1317
|
+
ref: TargetRef,
|
|
1318
|
+
include_dependencies: bool = False,
|
|
1319
|
+
*,
|
|
1320
|
+
include_headers: bool = False,
|
|
1321
|
+
) -> CoreSources:
|
|
1322
|
+
"""Partition sources for a Target reference already resolved by the caller."""
|
|
1307
1323
|
doc = read_core(ref.core_file)
|
|
1308
1324
|
targets = doc.get("targets") or {}
|
|
1309
1325
|
target_def = targets.get(ref.name) if isinstance(targets, Mapping) else None
|
|
@@ -1320,7 +1336,8 @@ def target_source_files(
|
|
|
1320
1336
|
)
|
|
1321
1337
|
|
|
1322
1338
|
if include_dependencies:
|
|
1323
|
-
|
|
1339
|
+
token = f"{ref.vlnv}#{ref.name}"
|
|
1340
|
+
closure = selectable_core_closure(project_root, [token]) or frozenset()
|
|
1324
1341
|
for core_file in sorted(closure):
|
|
1325
1342
|
if core_file == ref.core_file:
|
|
1326
1343
|
continue # already partitioned above, per the selected Target
|
|
@@ -18,6 +18,7 @@ import os
|
|
|
18
18
|
import subprocess
|
|
19
19
|
import sys
|
|
20
20
|
import time
|
|
21
|
+
from collections.abc import Callable
|
|
21
22
|
from dataclasses import asdict
|
|
22
23
|
from datetime import UTC, datetime, timedelta
|
|
23
24
|
from pathlib import Path
|
|
@@ -41,6 +42,12 @@ _TIME_FORMAT = MACHINE_TIMESTAMP_FORMAT # Compatibility for report fixtures.
|
|
|
41
42
|
_HEALTHY_MAX_AGE = timedelta(days=doctor_stamp.MAX_AGE_DAYS)
|
|
42
43
|
_UNHEALTHY_RETRY_AGE = timedelta(days=1)
|
|
43
44
|
|
|
45
|
+
Progress = Callable[[str], None]
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def _ignore_progress(_message: str) -> None:
|
|
49
|
+
"""Accept progress when the caller has no visible sink."""
|
|
50
|
+
|
|
44
51
|
|
|
45
52
|
def state_dir(project_dir: Path) -> Path:
|
|
46
53
|
"""Return the automatic Doctor runtime directory."""
|
|
@@ -204,7 +211,13 @@ def _exception_report(exc: Exception) -> tuple[dict[str, int], list[dict[str, An
|
|
|
204
211
|
return counts, [finding], 1
|
|
205
212
|
|
|
206
213
|
|
|
207
|
-
def _execute(
|
|
214
|
+
def _execute(
|
|
215
|
+
project_root: Path,
|
|
216
|
+
project_dir: Path,
|
|
217
|
+
trigger: str,
|
|
218
|
+
*,
|
|
219
|
+
progress: Progress | None = None,
|
|
220
|
+
) -> dict[str, Any]:
|
|
208
221
|
"""Execute read-only Doctor and persist its structured result."""
|
|
209
222
|
from booley.harness.doctor import run_doctor_result
|
|
210
223
|
|
|
@@ -217,6 +230,7 @@ def _execute(project_root: Path, project_dir: Path, trigger: str) -> dict[str, A
|
|
|
217
230
|
project_root,
|
|
218
231
|
read_only=True,
|
|
219
232
|
record_clean=False,
|
|
233
|
+
progress=progress,
|
|
220
234
|
)
|
|
221
235
|
counts = result.counts
|
|
222
236
|
findings = [asdict(finding) for finding in result.findings]
|
|
@@ -224,16 +238,21 @@ def _execute(project_root: Path, project_dir: Path, trigger: str) -> dict[str, A
|
|
|
224
238
|
except Exception as exc: # noqa: BLE001 — automatic health must record crashes, never break startup
|
|
225
239
|
counts, findings, exit_code = _exception_report(exc)
|
|
226
240
|
output.write(f"\n{findings[0]['message']}\n")
|
|
227
|
-
|
|
241
|
+
duration_s = time.monotonic() - started
|
|
242
|
+
report = _persist_report(
|
|
228
243
|
project_root,
|
|
229
244
|
project_dir,
|
|
230
245
|
trigger=trigger,
|
|
231
|
-
duration_s=
|
|
246
|
+
duration_s=duration_s,
|
|
232
247
|
counts=counts,
|
|
233
248
|
findings=findings,
|
|
234
249
|
exit_code=exit_code,
|
|
235
250
|
transcript=output.getvalue(),
|
|
236
251
|
)
|
|
252
|
+
(progress or _ignore_progress)(
|
|
253
|
+
f"completed in {duration_s:.1f}s; transcript: {transcript_path(project_dir)}"
|
|
254
|
+
)
|
|
255
|
+
return report
|
|
237
256
|
|
|
238
257
|
|
|
239
258
|
def _persist_report(
|
|
@@ -292,15 +311,30 @@ def record_manual_result(project_root: Path, result: DoctorRunResult) -> dict[st
|
|
|
292
311
|
return None
|
|
293
312
|
|
|
294
313
|
|
|
295
|
-
def run_if_due(
|
|
314
|
+
def run_if_due(
|
|
315
|
+
project_root: Path,
|
|
316
|
+
*,
|
|
317
|
+
trigger: str,
|
|
318
|
+
progress: Progress | None = None,
|
|
319
|
+
) -> dict[str, Any] | None:
|
|
296
320
|
"""Run one automatic Doctor attempt when stale; never raises."""
|
|
297
321
|
try:
|
|
298
322
|
project_dir = resolve_project_dir(project_root)
|
|
299
323
|
lock_path = state_dir(project_dir) / _RUN_LOCK_NAME
|
|
300
324
|
with _try_lock(lock_path) as acquired:
|
|
301
|
-
if not acquired
|
|
325
|
+
if not acquired:
|
|
326
|
+
return None
|
|
327
|
+
reason = due_reason(project_root)
|
|
328
|
+
if reason is None:
|
|
302
329
|
return None
|
|
303
|
-
|
|
330
|
+
emit_progress = progress or _ignore_progress
|
|
331
|
+
emit_progress(f"starting ({reason})")
|
|
332
|
+
report = _execute(
|
|
333
|
+
project_root,
|
|
334
|
+
project_dir,
|
|
335
|
+
trigger,
|
|
336
|
+
progress=emit_progress,
|
|
337
|
+
)
|
|
304
338
|
_notify_if_changed(project_root, report)
|
|
305
339
|
return report
|
|
306
340
|
except Exception: # noqa: BLE001 — lifecycle advisory must never block a session or ticket sweep
|
|
@@ -1895,18 +1895,18 @@ def _sleep_until_next_ticket(args: argparse.Namespace, project_root: Path) -> bo
|
|
|
1895
1895
|
return interruptible_sleep(args.wait)
|
|
1896
1896
|
|
|
1897
1897
|
|
|
1898
|
-
def
|
|
1899
|
-
|
|
1900
|
-
project_root: Path,
|
|
1901
|
-
venv_py: str,
|
|
1902
|
-
) -> int:
|
|
1903
|
-
"""Run the main ticket-processing loop; returns exit code."""
|
|
1898
|
+
def _run_automatic_doctor(project_root: Path) -> None:
|
|
1899
|
+
"""Run and report the stale startup Doctor without hiding its progress."""
|
|
1904
1900
|
# Once per sweep (not per ticket): a stale automatic Doctor runs before
|
|
1905
1901
|
# unattended work begins. It is advisory and fail-soft; the normal
|
|
1906
1902
|
# preflight remains the blocking gate for ticket execution.
|
|
1907
1903
|
from booley.harness import auto_doctor
|
|
1908
1904
|
|
|
1909
|
-
auto_doctor.run_if_due(
|
|
1905
|
+
auto_doctor.run_if_due(
|
|
1906
|
+
project_root,
|
|
1907
|
+
trigger="booley-run",
|
|
1908
|
+
progress=lambda message: logger.info("Automatic Doctor — %s", message),
|
|
1909
|
+
)
|
|
1910
1910
|
health_summary = auto_doctor.consume_changed_summary(project_root, channel="booley-run")
|
|
1911
1911
|
if health_summary:
|
|
1912
1912
|
report = auto_doctor.load_report(project_root) or {}
|
|
@@ -1914,6 +1914,15 @@ def _ticket_loop(
|
|
|
1914
1914
|
emit(health_summary)
|
|
1915
1915
|
elif auto_doctor.load_report(project_root) is None:
|
|
1916
1916
|
doctor_stamp.warn_if_stale(project_root, logger.warning)
|
|
1917
|
+
|
|
1918
|
+
|
|
1919
|
+
def _ticket_loop(
|
|
1920
|
+
args: argparse.Namespace,
|
|
1921
|
+
project_root: Path,
|
|
1922
|
+
venv_py: str,
|
|
1923
|
+
) -> int:
|
|
1924
|
+
"""Run the main ticket-processing loop; returns exit code."""
|
|
1925
|
+
_run_automatic_doctor(project_root)
|
|
1917
1926
|
handle_startup_orphans(project_root)
|
|
1918
1927
|
os.chdir(str(project_root))
|
|
1919
1928
|
attempt = 0
|