booley-rtl 0.2.2__tar.gz → 0.2.4__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.4}/PKG-INFO +2 -1
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/THIRD_PARTY_NOTICES.md +1 -1
- booley_rtl-0.2.4/VERSION +1 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/pyproject.toml +4 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/docker/build.sh +10 -5
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/AGENTS_TEMPLATE.md +1 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/steps/3-agents-md.md +3 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/fusesoc/fusesoc_registry.py +18 -1
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/auto_doctor.py +40 -6
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/booley.py +16 -7
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/doctor.py +323 -288
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/init_cmd.py +10 -3
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/init_docker_image.py +16 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/interactive_docker.py +14 -4
- {booley_rtl-0.2.2 → booley_rtl-0.2.4/src/booley_rtl.egg-info}/PKG-INFO +2 -1
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley_rtl.egg-info/SOURCES.txt +1 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley_rtl.egg-info/requires.txt +1 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_fusesoc_registry.py +23 -0
- booley_rtl-0.2.4/tests/test_pytest_configuration.py +44 -0
- booley_rtl-0.2.2/VERSION +0 -1
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/LICENSE +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/README.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/setup.cfg +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/audit/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/audit/agent_schema.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/audit/config_common.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/audit/configs_schema.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/audit/contracts.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/audit/design_size.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/audit/eda_environment.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/audit/flow_schema.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/audit/host_environment.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/audit/project_schema.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/audit/resource_policy.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/audit/target_matrix.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/bwave/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/bwave/cli.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/bwave/contract.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/bwave/sessions.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/bwave/wcp.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/config/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/config/agent.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/config/editor.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/config/guidance_links.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/config/limits.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/config/pricing.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/config/project_config.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/config/settings.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/core/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/core/boundary.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/core/config_paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/core/models.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/core/run_command.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/cheatsheet.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/criteria.toml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/docker/Dockerfile +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/docker/Dockerfile.egress-proxy +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/docker/Dockerfile.flexnet-relay +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/docker/Dockerfile.reaper +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/docker/Dockerfile.riscv +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/docker/agent-clis-package-lock.json +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/docker/agent-clis-package.json +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/docker/build-riscv.sh +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/docker/claude-managed-settings.json +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/docker/codex-requirements.toml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/docker/vivado-wrapper +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/edalize/verible.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/licenses/Nangate-OCL-1.0.txt +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/TROUBLESHOOTING.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/booley_vcd_dump.sv +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/cocotb_tb_style_guide.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/code_review/rtl/bugs.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/code_review/rtl/code_style.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/code_review/rtl/optimization.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/code_review/rtl/protocol-cdc.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/code_review/rtl/security.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/code_review/rtl/spec.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/code_review/testbench/cocotb-tb-review.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/code_review/testbench/tb-review.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/rtl-mutation-testing.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/rtl_style_guide.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/sim_result_sentinel.sv +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/refs/tb_style_guide.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-feedback/SKILL.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-feedback/minimal-reproducer.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-heal/SKILL.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-heal/agents/openai.yaml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/BOOLEY_TEMPLATE.toml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/CORE_TEMPLATE.yaml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/SETUP_PLAN_TEMPLATE.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/SKILL.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/TESTS_TEMPLATE.toml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/agents/openai.yaml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/steps/0-plan.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/steps/2-project-config.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/steps/4-doctor.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/steps/5-parity.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/steps/6-findings.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-setup/steps/new-greenfield.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-create/SKILL.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-create/TICKET_TEMPLATE.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-create/agents/openai.yaml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-create/grilling.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-triage/SKILL.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-triage/agents/openai.yaml +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-triage/explain-diff-prompt.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-triage/flow-specialist-reference.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-triage/review-template.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-triage/steps/01-board-orphans.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-triage/steps/02-blocked.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-triage/steps/03-review.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/data/skills/booley-ticket-triage/steps/04-summary.md +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/commit_git_io.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/commit_message_format.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/commit_msg_hook.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/commit_msg_utils.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/compare_vcd.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/contract_path_policy.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/criteria.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/criteria_reference.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/deploy_skills.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/development_state.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/flow_specialist_reference.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/mut_harness_inject.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/mutation_lock.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/pre-commit-ruff.sh +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/pre_push_hook.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/review_dispositions.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/run_mutmut.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/scope_precommit_hook.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/validate_commit_msg.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/workspace_isolation.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/dev_support/worktree_create.sh +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/docker/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/docker/egress_proxy.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/docker/proxy_entry.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/docker/reaper.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/eda/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/eda/authority.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/eda/cli.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/eda/config.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/eda/flexnet_docker.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/eda/flexnet_relay.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/eda/runtime_spec.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/eda/vivado.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/feedback/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/feedback/cli.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/feedback/findings.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/feedback/redact.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/feedback/render.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/feedback/submit.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/artifacts.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/base.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/baseline_worktree.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/clock_timing.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/criterion_freshness.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/eda_parsers.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/edam.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/elab/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/elab/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/elab/flow.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/execution.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/flow_config.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/fpga/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/fpga/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/fpga/cache.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/fpga/edam.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/fpga/flow.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/fpga/metrics.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/fpga/recipe.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/human_display.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/lint/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/lint/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/lint/flow.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/output_budget.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/recipe_evidence.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/run_evidence.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/sim/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/sim/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/sim/edam.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/sim/flow.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/sim/target_tests.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/source_fingerprint.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/synth/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/synth/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/synth/flow.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/synth/ppa_config.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/synth/recipe.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/synth/threshold_eval.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/target_campaign.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/target_criteria.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/target_parameters.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/flows/target_test_suite.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/fusesoc/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/fusesoc/core_projection.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/fusesoc/core_security.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/fusesoc/fusesoc_trace_overlay.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/fusesoc/selftest_overlay.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/_ticket_ops.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/auth_cmd.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/auto_retry.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/blocked_prep.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/blocking.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/booley_status_display.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/build_stamp.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/cheatsheet.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/colors.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/console/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/console/app.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/console/console.tcss +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/console/criteria_format.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/console/events.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/console/links.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/console/path_backtick.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/console/widgets.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/console_metrics.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/devcontainer.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/developer.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/developer_display.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/developer_guardrails.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/developer_probe.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/developer_prompt.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/doctor_stamp.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/doctor_waivers.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/init_common.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/init_git_hooks.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/init_plan.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/init_scaffold.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/init_skills.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/job_fence.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/logging_utils.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/models.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/nangate_pdk.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/orphan_handler.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/preflight.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/render_md.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/review_artifact.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/review_evidence.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/review_explanation.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/review_prep.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/sandbox.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/scope_policy.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/session_runtime.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/setup/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/setup/intake.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/setup/project_worktree.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/setup/workspace.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/setup/worktree_lock_gc.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/subscription_limit.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/synth_probe.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/terminal.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/ticket_cli.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/transcript_distill.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/triage_package.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/web_isolation.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/harness/worktree_health.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/mcp/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/mcp/base.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/mcp/diff_classify.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/mcp/events.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/mcp/registry.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/mcp/run_lock.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/mcp/schema_extractor.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/mcp/server.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/mcp/submit_run_report.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/_claude_backend.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/_claude_transcript_md.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/_codex_backend.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/_codex_live_usage.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/_codex_transcript_md.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/_cost.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/_retry.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/agent.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/agent_backend.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/agent_errors.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/auth_token.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/bootstrap_mode.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/build_metadata.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/developer_budget.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/eda_tool_lock.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/environment.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/file_lock.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/filesystem_utils.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/git.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/heartbeat.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/incontainer_live_preview.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/incontainer_register.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/incontainer_vaporview.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/init_plan.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/job_records.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/job_slots.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/mcp_config.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/nested_mcp_capabilities.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/pid.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/platform_paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/process_group.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/project_dir.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/project_image.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/prompt_artifacts.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/runtime_context.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/shared_infra.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/ticket_repositories.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/timefmt.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/runtime/zombie_cleanup.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/sim/bwave_fifo.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/sim/cocotb_results.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/sim/cocotb_run.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/sim/iverilog_run.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/sim/run_guard.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/sim/sim_result.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/sim/trace_session.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/sim/vcs_run.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/sim/verilator_run.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/sim/xcelium_run.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/specialists/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/specialists/coverage_analyst.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/specialists/coverage_verilog_utils.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/specialists/mutation_tester.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/specialists/reviewer.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/specialists/specialist.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/specialists/specialist_workspace.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/specialists/tb_coder.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/synthesis/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/synthesis/profiles.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/targets/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/targets/flow_names.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/targets/parameter_integrity.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/targets/target_naming.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/targets/target_surface.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/__init__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/__main__.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/analytics.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/archive.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/cli.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/cli_handlers.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/constants.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/contract_ops.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/criteria_acceptance.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/criteria_markdown.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/criteria_summary_format.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/evidence.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/execution.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/frontmatter.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/git_ops.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/helpers.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/io.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/lifecycle.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/logs.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/notifications.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/operations.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/project_git_ops.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/reporting.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/run_metrics.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/scanner.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/target_contract.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/validation.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/ticket_board/validation_logs.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/vivado/xdc/timing.xdc +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/abc_config.json +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/abc_scripts/abc_aggressive.script +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/abc_scripts/abc_balanced.script +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/abc_scripts/abc_fast.script +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/openroad_timing.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/ppa.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/run_yosys_syn.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/sdc/abc_simple.sdc +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/syn_config.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/syn_core.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/syn_discovery.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/syn_make.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/syn_parse.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/syn_subprocess.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley/yosys/synthesis_watchdog.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley_rtl.egg-info/dependency_links.txt +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley_rtl.egg-info/entry_points.txt +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/src/booley_rtl.egg-info/top_level.txt +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_bootstrap_mode.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_build_metadata.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_core_boundary.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_core_projection.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_core_security.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_dependency_direction.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_eda_tool_lock.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_entry_points.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_filesystem_utils.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_flow_names.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_guidance_links.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_guidance_links_portable.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_heartbeat.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_incontainer_live_preview.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_incontainer_register.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_incontainer_vaporview.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_interactive_smoke.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_job_slots.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_mcp_server.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_native_bwave_resolution.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_nested_mcp_capabilities.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_no_retired_host_execution.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_parameter_integrity.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_platform_paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_pricing.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_project_config_human_in_loop.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_project_config_run_report.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_project_dir.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_run_command.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_run_mutmut.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_runtime_context.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_selftest_overlay.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_shared_infra.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_source_map_from_core.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_target_naming.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_target_surface.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_timefmt.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/tests/test_triage_diff_paths.py +0 -0
- {booley_rtl-0.2.2 → booley_rtl-0.2.4}/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.4
|
|
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.4. 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.4/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.2.4
|
|
@@ -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",
|
|
@@ -65,6 +65,9 @@ echo ">>> Building booley wheel..."
|
|
|
65
65
|
# build/ is generated packaging state, so always recreate it from the source
|
|
66
66
|
# tree before producing the wheel consumed by Docker.
|
|
67
67
|
rm -rf "$BOOLEY_ROOT/build"
|
|
68
|
+
# Docker COPY and pip expand this glob, so an older version must not survive
|
|
69
|
+
# beside the wheel produced by this run (GitHub issue #66).
|
|
70
|
+
rm -f "$BOOLEY_ROOT"/dist/booley_rtl-*.whl
|
|
68
71
|
# Marker predating the build: the freshness check below proves the wheel the
|
|
69
72
|
# docker COPY layer will pick up was actually (re)written by *this* run, not left
|
|
70
73
|
# over from a previous one. Belt-and-suspenders behind `set -e`: if the wheel
|
|
@@ -74,13 +77,15 @@ WHEEL_MARKER="$(mktemp)"
|
|
|
74
77
|
trap 'rm -f "$STAMP" "$WHEEL_MARKER"' EXIT
|
|
75
78
|
(cd "$BOOLEY_ROOT" && "$PYBUILD" -P -m build --wheel --outdir dist/)
|
|
76
79
|
|
|
77
|
-
#
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
echo "
|
|
80
|
+
# Exactly one wheel in dist/ must be newer than the marker, or Docker's glob
|
|
81
|
+
# would either fail to COPY a wheel or pass conflicting versions to pip.
|
|
82
|
+
mapfile -t FRESH_WHEELS < <(find "$BOOLEY_ROOT/dist" -maxdepth 1 -type f -name 'booley_rtl-*.whl' -newer "$WHEEL_MARKER" -print 2>/dev/null)
|
|
83
|
+
if [ "${#FRESH_WHEELS[@]}" -ne 1 ]; then
|
|
84
|
+
echo "ERROR: the wheel step produced ${#FRESH_WHEELS[@]} fresh dist/booley_rtl-*.whl files; expected exactly one." >&2
|
|
85
|
+
echo " The docker COPY requires one unambiguous wheel — aborting." >&2
|
|
82
86
|
exit 1
|
|
83
87
|
fi
|
|
88
|
+
FRESH_WHEEL="${FRESH_WHEELS[0]}"
|
|
84
89
|
echo ">>> Fresh wheel: $(basename "$FRESH_WHEEL")"
|
|
85
90
|
|
|
86
91
|
# Stamp the same build-fingerprint label `booley init` uses, so an image built
|
{booley_rtl-0.2.2 → booley_rtl-0.2.4}/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.4}/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
|