chipgraph 0.1.0__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.
- chipgraph-0.1.0/.claude-plugin/marketplace.json +15 -0
- chipgraph-0.1.0/.dockerignore +31 -0
- chipgraph-0.1.0/.editorconfig +15 -0
- chipgraph-0.1.0/.github/CODEOWNERS +5 -0
- chipgraph-0.1.0/.github/workflows/ci.yml +144 -0
- chipgraph-0.1.0/.github/workflows/evals.yml +132 -0
- chipgraph-0.1.0/.github/workflows/image.yml +194 -0
- chipgraph-0.1.0/.github/workflows/release-please.yml +17 -0
- chipgraph-0.1.0/.github/workflows/release-uv-lock.yml +77 -0
- chipgraph-0.1.0/.github/workflows/release.yml +138 -0
- chipgraph-0.1.0/.github/workflows/security.yml +52 -0
- chipgraph-0.1.0/.gitignore +24 -0
- chipgraph-0.1.0/.gitleaks.toml +13 -0
- chipgraph-0.1.0/.pre-commit-config.yaml +7 -0
- chipgraph-0.1.0/.python-version +1 -0
- chipgraph-0.1.0/.release-please-manifest.json +1 -0
- chipgraph-0.1.0/AGENTS.md +68 -0
- chipgraph-0.1.0/CHANGELOG.md +99 -0
- chipgraph-0.1.0/CLAUDE.md +1 -0
- chipgraph-0.1.0/CONTRIBUTING.md +17 -0
- chipgraph-0.1.0/DESIGN.md +1191 -0
- chipgraph-0.1.0/LICENSE +202 -0
- chipgraph-0.1.0/Makefile +54 -0
- chipgraph-0.1.0/PKG-INFO +53 -0
- chipgraph-0.1.0/README.md +27 -0
- chipgraph-0.1.0/SECURITY.md +20 -0
- chipgraph-0.1.0/docker/Dockerfile +134 -0
- chipgraph-0.1.0/docker/README.md +86 -0
- chipgraph-0.1.0/docs/DECISIONS.md +475 -0
- chipgraph-0.1.0/docs/IMPLEMENTATION_PLAN.md +298 -0
- chipgraph-0.1.0/docs/RELEASING.md +85 -0
- chipgraph-0.1.0/docs/REQUIREMENT_IDS.md +268 -0
- chipgraph-0.1.0/docs/RESEARCH.md +99 -0
- chipgraph-0.1.0/docs/agent-loop-claude-code/fixture.py +208 -0
- chipgraph-0.1.0/docs/agent-loop-claude-code/report.py +320 -0
- chipgraph-0.1.0/docs/agent-loop-claude-code/run.sh +85 -0
- chipgraph-0.1.0/docs/archive/DESIGN_v0.1.md +1119 -0
- chipgraph-0.1.0/docs/ask-claude-code/report.py +188 -0
- chipgraph-0.1.0/docs/ask-claude-code/run.sh +93 -0
- chipgraph-0.1.0/docs/examples/README.md +24 -0
- chipgraph-0.1.0/docs/examples/qsoc.chipgraph.yml +166 -0
- chipgraph-0.1.0/docs/isolation-claude-code/fixture.py +302 -0
- chipgraph-0.1.0/docs/isolation-claude-code/report.py +494 -0
- chipgraph-0.1.0/docs/isolation-claude-code/run.sh +188 -0
- chipgraph-0.1.0/docs/plugin-claude-code/report.py +333 -0
- chipgraph-0.1.0/docs/plugin-claude-code/run.sh +132 -0
- chipgraph-0.1.0/docs/roles-claude-code/fixture.py +173 -0
- chipgraph-0.1.0/docs/roles-claude-code/report.py +268 -0
- chipgraph-0.1.0/docs/roles-claude-code/run.sh +87 -0
- chipgraph-0.1.0/docs/rtl-claude-code/TINY_PWM_MAS.md +123 -0
- chipgraph-0.1.0/docs/rtl-claude-code/exemplars/a/ex_a_counter.sv +37 -0
- chipgraph-0.1.0/docs/rtl-claude-code/exemplars/a/ex_a_flag.sv +34 -0
- chipgraph-0.1.0/docs/rtl-claude-code/exemplars/b/ex_b_counter.sv +42 -0
- chipgraph-0.1.0/docs/rtl-claude-code/exemplars/b/ex_b_flag.sv +43 -0
- chipgraph-0.1.0/docs/rtl-claude-code/fixture.py +242 -0
- chipgraph-0.1.0/docs/rtl-claude-code/fmt_trim.py +30 -0
- chipgraph-0.1.0/docs/rtl-claude-code/pwm.plan.yml +28 -0
- chipgraph-0.1.0/docs/rtl-claude-code/report.py +299 -0
- chipgraph-0.1.0/docs/rtl-claude-code/run.sh +100 -0
- chipgraph-0.1.0/docs/rtl-target-claude-code/fixture.py +241 -0
- chipgraph-0.1.0/docs/rtl-target-claude-code/report.py +551 -0
- chipgraph-0.1.0/docs/rtl-target-claude-code/run.sh +169 -0
- chipgraph-0.1.0/docs/rtl-target-claude-code/sandbox.py +179 -0
- chipgraph-0.1.0/docs/runtime-claude-code/report.py +140 -0
- chipgraph-0.1.0/docs/runtime-claude-code/run.sh +80 -0
- chipgraph-0.1.0/docs/spikes/S2.md +66 -0
- chipgraph-0.1.0/docs/spikes/S3.md +251 -0
- chipgraph-0.1.0/docs/spikes/S5.md +68 -0
- chipgraph-0.1.0/docs/spikes/S7.md +101 -0
- chipgraph-0.1.0/docs/spikes/s3/gpio_tb.py +93 -0
- chipgraph-0.1.0/docs/spikes/s3/icarus_dump.v +8 -0
- chipgraph-0.1.0/docs/spikes/s3/parse_results.py +171 -0
- chipgraph-0.1.0/docs/spikes/s3/probe_configure.py +64 -0
- chipgraph-0.1.0/docs/spikes/s3/run.sh +26 -0
- chipgraph-0.1.0/docs/spikes/s3/run_all.py +243 -0
- chipgraph-0.1.0/docs/spikes/s3/run_edalize.py +183 -0
- chipgraph-0.1.0/docs/spikes/s3/run_runner.py +91 -0
- chipgraph-0.1.0/docs/spikes/s3/s3_common.py +144 -0
- chipgraph-0.1.0/docs/spikes/s3/setup_venv.sh +39 -0
- chipgraph-0.1.0/docs/spikes/s7/hook_guard.py +95 -0
- chipgraph-0.1.0/docs/spikes/s7/report.py +84 -0
- chipgraph-0.1.0/docs/spikes/s7/run.sh +40 -0
- chipgraph-0.1.0/docs/spikes/s7/s7_server.py +171 -0
- chipgraph-0.1.0/docs/spikes/s7/selftest.py +144 -0
- chipgraph-0.1.0/docs/spikes/s7/setup.sh +79 -0
- chipgraph-0.1.0/docs/tb-claude-code/fixture.py +139 -0
- chipgraph-0.1.0/docs/tb-claude-code/report.py +329 -0
- chipgraph-0.1.0/docs/tb-claude-code/run.sh +95 -0
- chipgraph-0.1.0/docs/triage-claude-code/report.py +210 -0
- chipgraph-0.1.0/docs/triage-claude-code/rules_only_holdout.py +105 -0
- chipgraph-0.1.0/docs/triage-claude-code/rules_only_holdout2.py +138 -0
- chipgraph-0.1.0/docs/triage-claude-code/run.sh +124 -0
- chipgraph-0.1.0/docs/wrapper-claude-code/fixture.py +102 -0
- chipgraph-0.1.0/docs/wrapper-claude-code/report.py +317 -0
- chipgraph-0.1.0/docs/wrapper-claude-code/run.sh +110 -0
- chipgraph-0.1.0/evals/README.md +397 -0
- chipgraph-0.1.0/evals/ask/grade.py +312 -0
- chipgraph-0.1.0/evals/ask/tinysoc.yml +206 -0
- chipgraph-0.1.0/evals/harness/__init__.py +41 -0
- chipgraph-0.1.0/evals/harness/authors.py +397 -0
- chipgraph-0.1.0/evals/harness/project.py +67 -0
- chipgraph-0.1.0/evals/harness/report.py +232 -0
- chipgraph-0.1.0/evals/harness/review.py +355 -0
- chipgraph-0.1.0/evals/harness/run.py +286 -0
- chipgraph-0.1.0/evals/harness/runtimes.py +373 -0
- chipgraph-0.1.0/evals/harness/streams.py +183 -0
- chipgraph-0.1.0/evals/harness/suites.py +210 -0
- chipgraph-0.1.0/evals/harness/tasks.py +91 -0
- chipgraph-0.1.0/evals/review/defects.yml +278 -0
- chipgraph-0.1.0/evals/review/defects2.yml +350 -0
- chipgraph-0.1.0/evals/review/grade.py +370 -0
- chipgraph-0.1.0/evals/rtl/__init__.py +43 -0
- chipgraph-0.1.0/evals/rtl/diffsim.py +360 -0
- chipgraph-0.1.0/evals/rtl/fixtures/common/design/common/rtl/qnsc_sync.sv +42 -0
- chipgraph-0.1.0/evals/rtl/fixtures/rom/design/rom/rom.f +45 -0
- chipgraph-0.1.0/evals/rtl/fixtures/rom/design/rom/rtl/m_qnsc_rom_wr_resp.sv +83 -0
- chipgraph-0.1.0/evals/rtl/fixtures/rom/doc/specs/QNSC_ROM_MAS.md +264 -0
- chipgraph-0.1.0/evals/rtl/fixtures/syscsr/design/syscsr/rtl/m_qnsc_syscsr_dbg_en.sv +36 -0
- chipgraph-0.1.0/evals/rtl/fixtures/syscsr/design/syscsr/syscsr.f +32 -0
- chipgraph-0.1.0/evals/rtl/fixtures/syscsr/doc/specs/QNSC_SYSCSR_MAS.md +382 -0
- chipgraph-0.1.0/evals/rtl/fixtures.py +254 -0
- chipgraph-0.1.0/evals/rtl/grade.py +267 -0
- chipgraph-0.1.0/evals/rtl/metrics.py +200 -0
- chipgraph-0.1.0/evals/rtl/mutants.py +316 -0
- chipgraph-0.1.0/evals/rtl/plans/rom_wr_resp.plan.yml +52 -0
- chipgraph-0.1.0/evals/rtl/plans/syscsr_dbg_en.plan.yml +44 -0
- chipgraph-0.1.0/evals/rtl/problems.py +285 -0
- chipgraph-0.1.0/evals/rtl/problems.yml +179 -0
- chipgraph-0.1.0/evals/rtl/project.py +348 -0
- chipgraph-0.1.0/evals/rtl/reference/rom_wr_resp.py +146 -0
- chipgraph-0.1.0/evals/rtl/reference/syscsr_dbg_en.py +84 -0
- chipgraph-0.1.0/evals/rtl/static.py +89 -0
- chipgraph-0.1.0/evals/rtl/stimulus.py +78 -0
- chipgraph-0.1.0/evals/rtl/tbsim.py +227 -0
- chipgraph-0.1.0/evals/run-claude-code.sh +45 -0
- chipgraph-0.1.0/evals/triage/faults.yml +277 -0
- chipgraph-0.1.0/evals/triage/gen_logs.py +441 -0
- chipgraph-0.1.0/evals/triage/grade.py +230 -0
- chipgraph-0.1.0/evals/triage/holdout.yml +167 -0
- chipgraph-0.1.0/evals/triage/holdout2.yml +215 -0
- chipgraph-0.1.0/evals/triage/logs/log-01.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-01.log +8 -0
- chipgraph-0.1.0/evals/triage/logs/log-02.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-02.log +3 -0
- chipgraph-0.1.0/evals/triage/logs/log-03.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-03.log +2 -0
- chipgraph-0.1.0/evals/triage/logs/log-04.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-04.log +4 -0
- chipgraph-0.1.0/evals/triage/logs/log-05.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-05.log +17 -0
- chipgraph-0.1.0/evals/triage/logs/log-06.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-06.log +14 -0
- chipgraph-0.1.0/evals/triage/logs/log-07.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-07.log +17 -0
- chipgraph-0.1.0/evals/triage/logs/log-08.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-08.log +9 -0
- chipgraph-0.1.0/evals/triage/logs/log-09.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-09.log +2 -0
- chipgraph-0.1.0/evals/triage/logs/log-10.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-10.log +1 -0
- chipgraph-0.1.0/evals/triage/logs/log-11.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-11.log +17 -0
- chipgraph-0.1.0/evals/triage/logs/log-12.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-12.log +17 -0
- chipgraph-0.1.0/evals/triage/logs/log-13.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-13.log +2 -0
- chipgraph-0.1.0/evals/triage/logs/log-14.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-14.log +5 -0
- chipgraph-0.1.0/evals/triage/logs/log-15.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-15.log +14 -0
- chipgraph-0.1.0/evals/triage/logs/log-16.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-16.log +23 -0
- chipgraph-0.1.0/evals/triage/logs/log-17.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-17.log +3 -0
- chipgraph-0.1.0/evals/triage/logs/log-18.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-18.log +23 -0
- chipgraph-0.1.0/evals/triage/logs/log-19.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-19.log +2 -0
- chipgraph-0.1.0/evals/triage/logs/log-20.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-20.log +2 -0
- chipgraph-0.1.0/evals/triage/logs/log-21.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-21.log +16 -0
- chipgraph-0.1.0/evals/triage/logs/log-22.json +7 -0
- chipgraph-0.1.0/evals/triage/logs/log-22.log +3 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-01.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-01.log +2 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-02.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-02.log +1 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-03.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-03.log +19 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-04.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-04.log +17 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-05.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-05.log +2 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-06.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-06.log +1 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-07.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-07.log +2 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-08.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-08.log +5 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-09.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-09.log +4 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-10.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-10.log +19 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-11.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-11.log +16 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-12.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout/hold-12.log +2 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-01.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-01.log +36 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-02.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-02.log +2 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-03.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-03.log +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-04.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-04.log +2 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-05.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-05.log +9 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-06.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-06.log +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-07.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-07.log +1 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-08.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-08.log +2 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-09.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-09.log +9 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-10.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-10.log +4 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-11.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-11.log +8 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-12.json +7 -0
- chipgraph-0.1.0/evals/triage/logs-holdout2/h2-12.log +2 -0
- chipgraph-0.1.0/evals/triage/rules_only.py +90 -0
- chipgraph-0.1.0/evals/triage/tb/holdout/tb_soc_regs.sv +144 -0
- chipgraph-0.1.0/evals/triage/tb/holdout2/tb_gpio_pins.sv +89 -0
- chipgraph-0.1.0/evals/triage/tb/holdout2/tb_timer_sva.sv +98 -0
- chipgraph-0.1.0/evals/triage/tb/holdout2/tb_top_irq.sv +108 -0
- chipgraph-0.1.0/evals/triage/tb/holdout2/tb_top_scoreboard.sv +148 -0
- chipgraph-0.1.0/evals/triage/tb/tb_tiny_gpio.sv +101 -0
- chipgraph-0.1.0/evals/triage/tb/tb_tiny_timer.sv +106 -0
- chipgraph-0.1.0/examples/tinysoc/.chipgraph/naming.yml +48 -0
- chipgraph-0.1.0/examples/tinysoc/.chipgraph/packs/tinysoc/pack.yml +21 -0
- chipgraph-0.1.0/examples/tinysoc/.chipgraph/packs/tinysoc/rules/lint_manifest.yml +17 -0
- chipgraph-0.1.0/examples/tinysoc/.chipgraph/packs/tinysoc/rules/rtl.yml +22 -0
- chipgraph-0.1.0/examples/tinysoc/.chipgraph.yml +87 -0
- chipgraph-0.1.0/examples/tinysoc/.gitignore +3 -0
- chipgraph-0.1.0/examples/tinysoc/Makefile +36 -0
- chipgraph-0.1.0/examples/tinysoc/README.md +88 -0
- chipgraph-0.1.0/examples/tinysoc/chip.yml +42 -0
- chipgraph-0.1.0/examples/tinysoc/doc/specs/TINY_GPIO_MAS.md +124 -0
- chipgraph-0.1.0/examples/tinysoc/doc/specs/TINY_TIMER_MAS.md +131 -0
- chipgraph-0.1.0/examples/tinysoc/dv/tb_tiny_gpio.py +82 -0
- chipgraph-0.1.0/examples/tinysoc/dv/test_tiny_gpio.py +26 -0
- chipgraph-0.1.0/examples/tinysoc/dv/test_tiny_timer.py +38 -0
- chipgraph-0.1.0/examples/tinysoc/filelists/gpio.f +1 -0
- chipgraph-0.1.0/examples/tinysoc/filelists/timer.f +1 -0
- chipgraph-0.1.0/examples/tinysoc/filelists/tiny_fifo_wrap.f +2 -0
- chipgraph-0.1.0/examples/tinysoc/filelists/top.f +3 -0
- chipgraph-0.1.0/examples/tinysoc/rtl/emacs/tiny_fifo_wrap.src.sv +41 -0
- chipgraph-0.1.0/examples/tinysoc/rtl/tiny_fifo_wrap.sv +82 -0
- chipgraph-0.1.0/examples/tinysoc/rtl/tiny_gpio.sv +54 -0
- chipgraph-0.1.0/examples/tinysoc/rtl/tiny_timer.sv +68 -0
- chipgraph-0.1.0/examples/tinysoc/rtl/tiny_top.sv +67 -0
- chipgraph-0.1.0/examples/tinysoc/scripts/gen_manifest.py +47 -0
- chipgraph-0.1.0/examples/tinysoc/vendor/MANIFEST.sha256 +5 -0
- chipgraph-0.1.0/examples/tinysoc/vendor/vendor_fifo/vendor_fifo.f +1 -0
- chipgraph-0.1.0/examples/tinysoc/vendor/vendor_fifo/vendor_fifo.sv +71 -0
- chipgraph-0.1.0/plugin/.claude-plugin/plugin.json +14 -0
- chipgraph-0.1.0/plugin/.mcp.json +8 -0
- chipgraph-0.1.0/plugin/README.md +388 -0
- chipgraph-0.1.0/plugin/agents/asker.md +34 -0
- chipgraph-0.1.0/plugin/agents/author.md +37 -0
- chipgraph-0.1.0/plugin/agents/critic.md +50 -0
- chipgraph-0.1.0/plugin/agents/decider.md +26 -0
- chipgraph-0.1.0/plugin/agents/planner.md +34 -0
- chipgraph-0.1.0/plugin/agents/researcher.md +32 -0
- chipgraph-0.1.0/plugin/agents/rtl-author.md +42 -0
- chipgraph-0.1.0/plugin/agents/tb-author.md +41 -0
- chipgraph-0.1.0/plugin/commands/ask.md +29 -0
- chipgraph-0.1.0/plugin/commands/decide.md +34 -0
- chipgraph-0.1.0/plugin/commands/init-chipgraph.md +34 -0
- chipgraph-0.1.0/plugin/commands/plan.md +84 -0
- chipgraph-0.1.0/plugin/commands/rtl.md +74 -0
- chipgraph-0.1.0/plugin/commands/run.md +72 -0
- chipgraph-0.1.0/plugin/commands/status.md +31 -0
- chipgraph-0.1.0/plugin/commands/trace.md +54 -0
- chipgraph-0.1.0/plugin/commands/triage.md +44 -0
- chipgraph-0.1.0/plugin/hooks/guard.py +612 -0
- chipgraph-0.1.0/plugin/hooks/hooks.json +18 -0
- chipgraph-0.1.0/pyproject.toml +154 -0
- chipgraph-0.1.0/release-please-config.json +28 -0
- chipgraph-0.1.0/renovate.json +19 -0
- chipgraph-0.1.0/schemas/AgentResult.schema.json +84 -0
- chipgraph-0.1.0/schemas/Approval.schema.json +65 -0
- chipgraph-0.1.0/schemas/Artifact.schema.json +160 -0
- chipgraph-0.1.0/schemas/ArtifactRef.schema.json +80 -0
- chipgraph-0.1.0/schemas/CheckResult.schema.json +125 -0
- chipgraph-0.1.0/schemas/CheckSpec.schema.json +42 -0
- chipgraph-0.1.0/schemas/Decision.schema.json +61 -0
- chipgraph-0.1.0/schemas/Event.schema.json +95 -0
- chipgraph-0.1.0/schemas/Finding.schema.json +277 -0
- chipgraph-0.1.0/schemas/GateSpec.schema.json +134 -0
- chipgraph-0.1.0/schemas/README.md +8 -0
- chipgraph-0.1.0/schemas/RuleInstance.schema.json +140 -0
- chipgraph-0.1.0/schemas/RuleSpec.schema.json +262 -0
- chipgraph-0.1.0/schemas/RunManifest.schema.json +100 -0
- chipgraph-0.1.0/schemas/formats/chip.schema.json +311 -0
- chipgraph-0.1.0/schemas/formats/naming-rules.schema.json +180 -0
- chipgraph-0.1.0/schemas/formats/plan.schema.json +265 -0
- chipgraph-0.1.0/schemas/model/BlockEntity.schema.json +175 -0
- chipgraph-0.1.0/schemas/model/ClockEntity.schema.json +163 -0
- chipgraph-0.1.0/schemas/model/DecisionEntity.schema.json +175 -0
- chipgraph-0.1.0/schemas/model/ExtEntity.schema.json +149 -0
- chipgraph-0.1.0/schemas/model/FieldEntity.schema.json +219 -0
- chipgraph-0.1.0/schemas/model/InterfaceEntity.schema.json +162 -0
- chipgraph-0.1.0/schemas/model/InterruptEntity.schema.json +176 -0
- chipgraph-0.1.0/schemas/model/MemoryRegionEntity.schema.json +194 -0
- chipgraph-0.1.0/schemas/model/ModuleEntity.schema.json +175 -0
- chipgraph-0.1.0/schemas/model/OpenItemEntity.schema.json +166 -0
- chipgraph-0.1.0/schemas/model/ParameterEntity.schema.json +184 -0
- chipgraph-0.1.0/schemas/model/PortEntity.schema.json +222 -0
- chipgraph-0.1.0/schemas/model/ProjectEntity.schema.json +149 -0
- chipgraph-0.1.0/schemas/model/RegisterEntity.schema.json +221 -0
- chipgraph-0.1.0/schemas/model/Relation.schema.json +149 -0
- chipgraph-0.1.0/schemas/model/RequirementEntity.schema.json +234 -0
- chipgraph-0.1.0/schemas/model/ResetEntity.schema.json +175 -0
- chipgraph-0.1.0/schemas/model/TestEntity.schema.json +158 -0
- chipgraph-0.1.0/schemas/roles/ReviewReport.schema.json +155 -0
- chipgraph-0.1.0/schemas/roles/RoleSpec.schema.json +187 -0
- chipgraph-0.1.0/schemas/roles/SkillSpec.schema.json +56 -0
- chipgraph-0.1.0/src/chipgraph/__init__.py +7 -0
- chipgraph-0.1.0/src/chipgraph/adapters/__init__.py +1 -0
- chipgraph-0.1.0/src/chipgraph/adapters/format/__init__.py +6 -0
- chipgraph-0.1.0/src/chipgraph/adapters/format/__main__.py +16 -0
- chipgraph-0.1.0/src/chipgraph/adapters/format/_yaml_lines.py +54 -0
- chipgraph-0.1.0/src/chipgraph/adapters/format/chip_yaml.py +323 -0
- chipgraph-0.1.0/src/chipgraph/adapters/format/qsoc_contract.py +246 -0
- chipgraph-0.1.0/src/chipgraph/adapters/llm/__init__.py +58 -0
- chipgraph-0.1.0/src/chipgraph/adapters/llm/_budget.py +173 -0
- chipgraph-0.1.0/src/chipgraph/adapters/llm/_errors.py +50 -0
- chipgraph-0.1.0/src/chipgraph/adapters/llm/_nda.py +30 -0
- chipgraph-0.1.0/src/chipgraph/adapters/llm/_retry.py +85 -0
- chipgraph-0.1.0/src/chipgraph/adapters/llm/anthropic.py +247 -0
- chipgraph-0.1.0/src/chipgraph/adapters/llm/decide_backend.py +179 -0
- chipgraph-0.1.0/src/chipgraph/adapters/llm/fake.py +87 -0
- chipgraph-0.1.0/src/chipgraph/adapters/llm/guard.py +68 -0
- chipgraph-0.1.0/src/chipgraph/adapters/parser/__init__.py +22 -0
- chipgraph-0.1.0/src/chipgraph/adapters/parser/cocotb.py +304 -0
- chipgraph-0.1.0/src/chipgraph/adapters/parser/generic_regex.py +75 -0
- chipgraph-0.1.0/src/chipgraph/adapters/parser/verible.py +55 -0
- chipgraph-0.1.0/src/chipgraph/adapters/parser/verilator.py +46 -0
- chipgraph-0.1.0/src/chipgraph/adapters/review/__init__.py +7 -0
- chipgraph-0.1.0/src/chipgraph/adapters/review/file.py +123 -0
- chipgraph-0.1.0/src/chipgraph/adapters/review/github.py +886 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runner/__init__.py +7 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runner/local.py +122 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runtime/__init__.py +5 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runtime/claude_code/__init__.py +24 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runtime/claude_code/agents.py +158 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runtime/claude_code/decisions.py +280 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runtime/claude_code/guarded.py +310 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runtime/claude_code/isolation.py +482 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runtime/claude_code/loop.py +342 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runtime/claude_code/previous.py +419 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runtime/claude_code/review.py +492 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runtime/claude_code/runtime.py +192 -0
- chipgraph-0.1.0/src/chipgraph/adapters/runtime/claude_code/service.py +2285 -0
- chipgraph-0.1.0/src/chipgraph/adapters/tool/__init__.py +7 -0
- chipgraph-0.1.0/src/chipgraph/adapters/tool/cmd.py +229 -0
- chipgraph-0.1.0/src/chipgraph/adapters/tool/edalize.py +773 -0
- chipgraph-0.1.0/src/chipgraph/adapters/tool/filelist.py +259 -0
- chipgraph-0.1.0/src/chipgraph/adapters/tool/pyslang.py +485 -0
- chipgraph-0.1.0/src/chipgraph/adapters/vcs/__init__.py +1 -0
- chipgraph-0.1.0/src/chipgraph/adapters/vcs/git.py +521 -0
- chipgraph-0.1.0/src/chipgraph/app/__init__.py +10 -0
- chipgraph-0.1.0/src/chipgraph/app/baseline.py +339 -0
- chipgraph-0.1.0/src/chipgraph/app/build.py +332 -0
- chipgraph-0.1.0/src/chipgraph/app/checks.py +202 -0
- chipgraph-0.1.0/src/chipgraph/app/context.py +191 -0
- chipgraph-0.1.0/src/chipgraph/app/errors.py +11 -0
- chipgraph-0.1.0/src/chipgraph/app/executors.py +79 -0
- chipgraph-0.1.0/src/chipgraph/app/findings.py +203 -0
- chipgraph-0.1.0/src/chipgraph/app/ingest.py +523 -0
- chipgraph-0.1.0/src/chipgraph/checks/__init__.py +52 -0
- chipgraph-0.1.0/src/chipgraph/checks/_cdc_analyze.py +272 -0
- chipgraph-0.1.0/src/chipgraph/checks/_cdc_elaborate.py +455 -0
- chipgraph-0.1.0/src/chipgraph/checks/_common.py +268 -0
- chipgraph-0.1.0/src/chipgraph/checks/_cross.py +96 -0
- chipgraph-0.1.0/src/chipgraph/checks/_model.py +64 -0
- chipgraph-0.1.0/src/chipgraph/checks/_naming_pyslang.py +235 -0
- chipgraph-0.1.0/src/chipgraph/checks/_naming_rules.py +127 -0
- chipgraph-0.1.0/src/chipgraph/checks/_xref_syntax.py +260 -0
- chipgraph-0.1.0/src/chipgraph/checks/cdc_struct.py +235 -0
- chipgraph-0.1.0/src/chipgraph/checks/connect.py +353 -0
- chipgraph-0.1.0/src/chipgraph/checks/cross_chip.py +454 -0
- chipgraph-0.1.0/src/chipgraph/checks/duplicate.py +153 -0
- chipgraph-0.1.0/src/chipgraph/checks/filelist.py +323 -0
- chipgraph-0.1.0/src/chipgraph/checks/format.py +268 -0
- chipgraph-0.1.0/src/chipgraph/checks/generated.py +151 -0
- chipgraph-0.1.0/src/chipgraph/checks/hardcode.py +233 -0
- chipgraph-0.1.0/src/chipgraph/checks/layout.py +155 -0
- chipgraph-0.1.0/src/chipgraph/checks/naming.py +311 -0
- chipgraph-0.1.0/src/chipgraph/checks/plan_check.py +901 -0
- chipgraph-0.1.0/src/chipgraph/checks/ports_diff.py +203 -0
- chipgraph-0.1.0/src/chipgraph/checks/spec_schema.py +277 -0
- chipgraph-0.1.0/src/chipgraph/checks/style.py +910 -0
- chipgraph-0.1.0/src/chipgraph/checks/tb_static.py +599 -0
- chipgraph-0.1.0/src/chipgraph/checks/trace.py +224 -0
- chipgraph-0.1.0/src/chipgraph/checks/vendor_guard.py +369 -0
- chipgraph-0.1.0/src/chipgraph/checks/wrap_check.py +486 -0
- chipgraph-0.1.0/src/chipgraph/cli/__init__.py +1688 -0
- chipgraph-0.1.0/src/chipgraph/cli/next_steps.py +137 -0
- chipgraph-0.1.0/src/chipgraph/core/__init__.py +1 -0
- chipgraph-0.1.0/src/chipgraph/core/config/__init__.py +93 -0
- chipgraph-0.1.0/src/chipgraph/core/config/defaults.py +14 -0
- chipgraph-0.1.0/src/chipgraph/core/config/errors.py +32 -0
- chipgraph-0.1.0/src/chipgraph/core/config/loader.py +766 -0
- chipgraph-0.1.0/src/chipgraph/core/config/models.py +845 -0
- chipgraph-0.1.0/src/chipgraph/core/config/templates.py +340 -0
- chipgraph-0.1.0/src/chipgraph/core/contracts/__init__.py +75 -0
- chipgraph-0.1.0/src/chipgraph/core/contracts/_paths.py +26 -0
- chipgraph-0.1.0/src/chipgraph/core/contracts/agent.py +49 -0
- chipgraph-0.1.0/src/chipgraph/core/contracts/artifact.py +68 -0
- chipgraph-0.1.0/src/chipgraph/core/contracts/check.py +76 -0
- chipgraph-0.1.0/src/chipgraph/core/contracts/event.py +70 -0
- chipgraph-0.1.0/src/chipgraph/core/contracts/export.py +128 -0
- chipgraph-0.1.0/src/chipgraph/core/contracts/finding.py +171 -0
- chipgraph-0.1.0/src/chipgraph/core/contracts/gate.py +50 -0
- chipgraph-0.1.0/src/chipgraph/core/contracts/rule.py +177 -0
- chipgraph-0.1.0/src/chipgraph/core/contracts/types.py +45 -0
- chipgraph-0.1.0/src/chipgraph/core/engine/__init__.py +70 -0
- chipgraph-0.1.0/src/chipgraph/core/engine/agent_rule.py +1362 -0
- chipgraph-0.1.0/src/chipgraph/core/engine/baseline.py +283 -0
- chipgraph-0.1.0/src/chipgraph/core/engine/decide.py +462 -0
- chipgraph-0.1.0/src/chipgraph/core/engine/fanout.py +1358 -0
- chipgraph-0.1.0/src/chipgraph/core/engine/gate.py +170 -0
- chipgraph-0.1.0/src/chipgraph/core/engine/graph.py +647 -0
- chipgraph-0.1.0/src/chipgraph/core/engine/records.py +60 -0
- chipgraph-0.1.0/src/chipgraph/core/engine/rules.py +92 -0
- chipgraph-0.1.0/src/chipgraph/core/engine/scheduler.py +637 -0
- chipgraph-0.1.0/src/chipgraph/core/engine/select.py +1239 -0
- chipgraph-0.1.0/src/chipgraph/core/engine/targets.py +342 -0
- chipgraph-0.1.0/src/chipgraph/core/model/__init__.py +98 -0
- chipgraph-0.1.0/src/chipgraph/core/model/entities.py +244 -0
- chipgraph-0.1.0/src/chipgraph/core/model/export.py +16 -0
- chipgraph-0.1.0/src/chipgraph/core/model/ingest.py +693 -0
- chipgraph-0.1.0/src/chipgraph/core/model/json_value.py +4 -0
- chipgraph-0.1.0/src/chipgraph/core/model/keys.py +95 -0
- chipgraph-0.1.0/src/chipgraph/core/model/model.py +153 -0
- chipgraph-0.1.0/src/chipgraph/core/model/provenance.py +27 -0
- chipgraph-0.1.0/src/chipgraph/core/model/query.py +583 -0
- chipgraph-0.1.0/src/chipgraph/core/model/registry.py +80 -0
- chipgraph-0.1.0/src/chipgraph/core/model/relations.py +61 -0
- chipgraph-0.1.0/src/chipgraph/core/model/store.py +279 -0
- chipgraph-0.1.0/src/chipgraph/core/plugin_api/__init__.py +81 -0
- chipgraph-0.1.0/src/chipgraph/core/plugin_api/local.py +167 -0
- chipgraph-0.1.0/src/chipgraph/core/plugin_api/pack.py +159 -0
- chipgraph-0.1.0/src/chipgraph/core/plugin_api/protocols.py +177 -0
- chipgraph-0.1.0/src/chipgraph/core/plugin_api/registry.py +111 -0
- chipgraph-0.1.0/src/chipgraph/core/plugin_api/types.py +94 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/__init__.py +41 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/executor.py +79 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/queue.py +565 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/__init__.py +91 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/data/author.md +41 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/data/critic.md +56 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/data/planner.md +38 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/data/researcher.md +37 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/data/rtl-author.md +64 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/data/tb-author.md +48 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/data/triage.md +34 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/policy.py +299 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/registry.py +52 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/review.py +275 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/schema.py +82 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/skills.py +134 -0
- chipgraph-0.1.0/src/chipgraph/core/runtime/roles/spec.py +232 -0
- chipgraph-0.1.0/src/chipgraph/core/state/__init__.py +1 -0
- chipgraph-0.1.0/src/chipgraph/core/state/artifacts.py +156 -0
- chipgraph-0.1.0/src/chipgraph/core/state/backend.py +117 -0
- chipgraph-0.1.0/src/chipgraph/core/state/findings.py +151 -0
- chipgraph-0.1.0/src/chipgraph/core/state/handoff.py +411 -0
- chipgraph-0.1.0/src/chipgraph/core/state/idempotency.py +59 -0
- chipgraph-0.1.0/src/chipgraph/core/state/journal.py +238 -0
- chipgraph-0.1.0/src/chipgraph/core/state/layout.py +82 -0
- chipgraph-0.1.0/src/chipgraph/core/state/lock.py +195 -0
- chipgraph-0.1.0/src/chipgraph/core/state/trace.py +225 -0
- chipgraph-0.1.0/src/chipgraph/learn/__init__.py +96 -0
- chipgraph-0.1.0/src/chipgraph/learn/draft.py +187 -0
- chipgraph-0.1.0/src/chipgraph/learn/infer.py +580 -0
- chipgraph-0.1.0/src/chipgraph/learn/models.py +145 -0
- chipgraph-0.1.0/src/chipgraph/learn/try_run.py +228 -0
- chipgraph-0.1.0/src/chipgraph/mcp/__init__.py +12 -0
- chipgraph-0.1.0/src/chipgraph/mcp/model_tools.py +167 -0
- chipgraph-0.1.0/src/chipgraph/mcp/server.py +787 -0
- chipgraph-0.1.0/src/chipgraph/orgs/qnsc/naming-v1.yml +113 -0
- chipgraph-0.1.0/src/chipgraph/orgs/qnsc/profile.yml +5 -0
- chipgraph-0.1.0/src/chipgraph/packs/__init__.py +8 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/__init__.py +16 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/ask/__init__.py +58 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/ask/_db.py +57 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/ask/_project.py +230 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/ask/answer.py +266 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/ask/check.py +182 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/ask/contract.py +115 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/ask/documents.py +157 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/ask/fts.py +80 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/ask/retrieve.py +331 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/audit/__init__.py +383 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/pack.yml +13 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/triage/__init__.py +64 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/triage/contract.py +94 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/triage/parse.py +371 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/triage/question.py +384 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/triage/report.py +160 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/triage/rules.py +447 -0
- chipgraph-0.1.0/src/chipgraph/packs/assist/triage/run.py +224 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/__init__.py +19 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/layout.py +144 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/pack.yml +25 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/plan/__init__.py +34 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/plan/__main__.py +16 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/plan/context.py +82 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/plan/expand.py +94 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/plan/model.py +150 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/plan/resolver.py +400 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/plan/show.py +176 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/pr/__init__.py +11 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/pr/body.py +165 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/pr/gate.py +110 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/pr/open.py +397 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/rtl/__init__.py +9 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/rtl/context.py +272 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/rules/open_pr.yml +30 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/rules/plan.yml +28 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/rules/plan_expand.yml +29 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/rules/pr_gate.yml +27 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/rules/review.yml +31 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/rules/rtl_module.yml +53 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/skills/lang-sv-rtl.md +58 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/skills/org-naming.md +29 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/skills/plan-modules.md +63 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/skills/review-diff.md +41 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/targets/plan.yml +11 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/targets/rtl.yml +20 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/wrapper/__init__.py +24 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/wrapper/common.py +171 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/wrapper/context.py +222 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/wrapper/emacs.py +626 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/wrapper/expansion.py +304 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/wrapper/lisp.py +504 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/wrapper/resolver.py +60 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/wrapper/rules/wrapper.yml +41 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/wrapper/rules/wrapper_gen.yml +35 -0
- chipgraph-0.1.0/src/chipgraph/packs/digital_rtl/wrapper/skills/wrapper-auto.md +120 -0
- chipgraph-0.1.0/src/chipgraph/packs/dv/__init__.py +15 -0
- chipgraph-0.1.0/src/chipgraph/packs/dv/declaration.py +392 -0
- chipgraph-0.1.0/src/chipgraph/packs/dv/interface.py +596 -0
- chipgraph-0.1.0/src/chipgraph/packs/dv/pack.yml +14 -0
- chipgraph-0.1.0/src/chipgraph/packs/dv/rules/tb_module.yml +42 -0
- chipgraph-0.1.0/src/chipgraph/packs/dv/skills/dv/cocotb.md +72 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/__init__.py +9 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/extract/__init__.py +12 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/extract/_markdown.py +371 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/extract/_text.py +116 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/extract/mas.py +975 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/gen/__init__.py +11 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/gen/agents_md/__init__.py +148 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/gen/agents_md/_context.py +239 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/gen/agents_md/_markers.py +131 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/gen/agents_md/agents_md.md.j2 +178 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/gen/diagram/__init__.py +110 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/gen/diagram/__main__.py +44 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/gen/diagram/_diagrams.py +403 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/gen/diagram/_scene.py +163 -0
- chipgraph-0.1.0/src/chipgraph/packs/spec_core/pack.yml +6 -0
- chipgraph-0.1.0/src/chipgraph/py.typed +0 -0
- chipgraph-0.1.0/tests/adapters/format/__init__.py +1 -0
- chipgraph-0.1.0/tests/adapters/format/fixtures/qsoc_contract.yml +356 -0
- chipgraph-0.1.0/tests/adapters/format/fixtures/tiny_chip.yml +46 -0
- chipgraph-0.1.0/tests/adapters/format/test_chip_yaml.py +172 -0
- chipgraph-0.1.0/tests/adapters/format/test_qsoc_contract.py +176 -0
- chipgraph-0.1.0/tests/adapters/llm/llm_helpers.py +29 -0
- chipgraph-0.1.0/tests/adapters/llm/test_decide_backend.py +193 -0
- chipgraph-0.1.0/tests/adapters/llm/test_llm_anthropic.py +264 -0
- chipgraph-0.1.0/tests/adapters/llm/test_llm_entry_points.py +23 -0
- chipgraph-0.1.0/tests/adapters/llm/test_llm_fake.py +77 -0
- chipgraph-0.1.0/tests/adapters/llm/test_llm_guard.py +275 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/cocotb/icarus_assert.xml +8 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/cocotb/icarus_build_error.log +4 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/cocotb/icarus_crash.xml +10 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/cocotb/icarus_import_error.log +33 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/cocotb/icarus_no_gpi_users.log +5 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/cocotb/icarus_pass.xml +2 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/cocotb/verilator_assert.xml +8 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/cocotb/verilator_build_error.log +7 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/cocotb/verilator_crash.xml +10 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/cocotb/verilator_import_error.log +33 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/cocotb/verilator_no_gpi_users.log +1 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/cocotb/verilator_pass.xml +2 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/verible.log +4 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/verilator_5020.log +6 -0
- chipgraph-0.1.0/tests/adapters/parser/logs/verilator_5052.log +25 -0
- chipgraph-0.1.0/tests/adapters/parser/test_cocotb.py +324 -0
- chipgraph-0.1.0/tests/adapters/parser/test_generic_regex.py +82 -0
- chipgraph-0.1.0/tests/adapters/parser/test_init.py +20 -0
- chipgraph-0.1.0/tests/adapters/parser/test_verible.py +80 -0
- chipgraph-0.1.0/tests/adapters/parser/test_verilator.py +112 -0
- chipgraph-0.1.0/tests/adapters/review/github_api_helpers.py +281 -0
- chipgraph-0.1.0/tests/adapters/review/test_file.py +148 -0
- chipgraph-0.1.0/tests/adapters/review/test_github_http.py +64 -0
- chipgraph-0.1.0/tests/adapters/review/test_github_no_merge.py +128 -0
- chipgraph-0.1.0/tests/adapters/review/test_github_review.py +505 -0
- chipgraph-0.1.0/tests/adapters/review/test_github_wiring.py +98 -0
- chipgraph-0.1.0/tests/adapters/runner/test_local.py +105 -0
- chipgraph-0.1.0/tests/adapters/runner/test_local_process_group.py +90 -0
- chipgraph-0.1.0/tests/adapters/runtime/agent_loop_helpers.py +66 -0
- chipgraph-0.1.0/tests/adapters/runtime/claude_code/test_isolation.py +1040 -0
- chipgraph-0.1.0/tests/adapters/runtime/previous_helpers.py +187 -0
- chipgraph-0.1.0/tests/adapters/runtime/tb_author_helpers.py +160 -0
- chipgraph-0.1.0/tests/adapters/runtime/test_claude_code_agents.py +118 -0
- chipgraph-0.1.0/tests/adapters/runtime/test_claude_code_decisions.py +300 -0
- chipgraph-0.1.0/tests/adapters/runtime/test_claude_code_loop.py +326 -0
- chipgraph-0.1.0/tests/adapters/runtime/test_claude_code_loop_bound.py +108 -0
- chipgraph-0.1.0/tests/adapters/runtime/test_claude_code_previous.py +525 -0
- chipgraph-0.1.0/tests/adapters/runtime/test_claude_code_review.py +410 -0
- chipgraph-0.1.0/tests/adapters/runtime/test_claude_code_roles.py +221 -0
- chipgraph-0.1.0/tests/adapters/runtime/test_claude_code_runtime.py +186 -0
- chipgraph-0.1.0/tests/adapters/runtime/test_claude_code_tb_author.py +262 -0
- chipgraph-0.1.0/tests/adapters/runtime/test_tb_acceptance_report.py +140 -0
- chipgraph-0.1.0/tests/adapters/test_entry_points.py +14 -0
- chipgraph-0.1.0/tests/adapters/tool/rtl_fixtures/fsm.sv +47 -0
- chipgraph-0.1.0/tests/adapters/tool/rtl_fixtures/simple_core.sv +31 -0
- chipgraph-0.1.0/tests/adapters/tool/rtl_fixtures/test.f +5 -0
- chipgraph-0.1.0/tests/adapters/tool/rtl_fixtures/types_pkg.sv +14 -0
- chipgraph-0.1.0/tests/adapters/tool/rtl_fixtures/wrapper.sv +26 -0
- chipgraph-0.1.0/tests/adapters/tool/test_cmd.py +292 -0
- chipgraph-0.1.0/tests/adapters/tool/test_edalize.py +700 -0
- chipgraph-0.1.0/tests/adapters/tool/test_filelist_reader.py +240 -0
- chipgraph-0.1.0/tests/adapters/tool/test_pyslang.py +375 -0
- chipgraph-0.1.0/tests/adapters/vcs/test_git.py +131 -0
- chipgraph-0.1.0/tests/adapters/vcs/test_git_fanout.py +166 -0
- chipgraph-0.1.0/tests/adapters/vcs/test_git_push.py +307 -0
- chipgraph-0.1.0/tests/app/conftest.py +43 -0
- chipgraph-0.1.0/tests/app/test_app_findings.py +174 -0
- chipgraph-0.1.0/tests/app/test_baseline_app.py +144 -0
- chipgraph-0.1.0/tests/app/test_build.py +164 -0
- chipgraph-0.1.0/tests/app/test_checks.py +196 -0
- chipgraph-0.1.0/tests/app/test_context.py +79 -0
- chipgraph-0.1.0/tests/app/test_context_local_plugins.py +152 -0
- chipgraph-0.1.0/tests/app/test_executors.py +84 -0
- chipgraph-0.1.0/tests/app/test_ingest_app.py +202 -0
- chipgraph-0.1.0/tests/app/test_ingest_documents.py +117 -0
- chipgraph-0.1.0/tests/checks/cdc_fixtures/hier_cross.sv +24 -0
- chipgraph-0.1.0/tests/checks/cdc_fixtures/hier_same.sv +23 -0
- chipgraph-0.1.0/tests/checks/cdc_helpers.py +151 -0
- chipgraph-0.1.0/tests/checks/conftest.py +45 -0
- chipgraph-0.1.0/tests/checks/cross_a_helpers.py +126 -0
- chipgraph-0.1.0/tests/checks/naming_fixtures/clean.sv +22 -0
- chipgraph-0.1.0/tests/checks/naming_fixtures/violations.sv +21 -0
- chipgraph-0.1.0/tests/checks/test_cdc_struct.py +221 -0
- chipgraph-0.1.0/tests/checks/test_cross_chip.py +243 -0
- chipgraph-0.1.0/tests/checks/test_cross_duplicate.py +80 -0
- chipgraph-0.1.0/tests/checks/test_cross_ports_diff.py +145 -0
- chipgraph-0.1.0/tests/checks/test_cross_spec_schema.py +124 -0
- chipgraph-0.1.0/tests/checks/test_filelist.py +191 -0
- chipgraph-0.1.0/tests/checks/test_format_check.py +134 -0
- chipgraph-0.1.0/tests/checks/test_generated.py +110 -0
- chipgraph-0.1.0/tests/checks/test_layout.py +128 -0
- chipgraph-0.1.0/tests/checks/test_naming.py +268 -0
- chipgraph-0.1.0/tests/checks/test_spec_schema_missing_id.py +123 -0
- chipgraph-0.1.0/tests/checks/test_style_check.py +357 -0
- chipgraph-0.1.0/tests/checks/test_tb_static.py +360 -0
- chipgraph-0.1.0/tests/checks/test_trace_req_ids.py +118 -0
- chipgraph-0.1.0/tests/checks/test_vendor_guard.py +193 -0
- chipgraph-0.1.0/tests/checks/test_vendor_guard_hostile.py +247 -0
- chipgraph-0.1.0/tests/checks/test_xref_connect.py +108 -0
- chipgraph-0.1.0/tests/checks/test_xref_hardcode.py +150 -0
- chipgraph-0.1.0/tests/checks/test_xref_trace.py +140 -0
- chipgraph-0.1.0/tests/checks/xref_b_helpers.py +138 -0
- chipgraph-0.1.0/tests/cli/conftest.py +23 -0
- chipgraph-0.1.0/tests/cli/test_audit_cli.py +160 -0
- chipgraph-0.1.0/tests/cli/test_baseline_cli.py +171 -0
- chipgraph-0.1.0/tests/cli/test_check_per_block.py +58 -0
- chipgraph-0.1.0/tests/cli/test_cli.py +314 -0
- chipgraph-0.1.0/tests/cli/test_cli_findings.py +147 -0
- chipgraph-0.1.0/tests/cli/test_cli_severity_bind.py +129 -0
- chipgraph-0.1.0/tests/cli/test_config_check_plugins.py +86 -0
- chipgraph-0.1.0/tests/cli/test_eval_cli.py +71 -0
- chipgraph-0.1.0/tests/cli/test_ingest_cli.py +78 -0
- chipgraph-0.1.0/tests/cli/test_learn_cli.py +111 -0
- chipgraph-0.1.0/tests/cli/test_rtl_target_cli.py +211 -0
- chipgraph-0.1.0/tests/core/config/config_fakes.py +19 -0
- chipgraph-0.1.0/tests/core/config/templates_fixtures/block/rtl_module.sv.j2 +5 -0
- chipgraph-0.1.0/tests/core/config/templates_fixtures/org/rtl_module.sv.j2 +3 -0
- chipgraph-0.1.0/tests/core/config/templates_fixtures/pack/needs_var.j2 +1 -0
- chipgraph-0.1.0/tests/core/config/templates_fixtures/pack/rtl_module.sv.j2 +18 -0
- chipgraph-0.1.0/tests/core/config/templates_fixtures/pack/sandbox_probe.j2 +1 -0
- chipgraph-0.1.0/tests/core/config/templates_fixtures/pack/whole_replace.j2 +3 -0
- chipgraph-0.1.0/tests/core/config/templates_fixtures/project/header_override.j2 +4 -0
- chipgraph-0.1.0/tests/core/config/templates_fixtures/project/rtl_module.sv.j2 +5 -0
- chipgraph-0.1.0/tests/core/config/templates_fixtures/project_whole/whole_replace.j2 +1 -0
- chipgraph-0.1.0/tests/core/config/test_loader.py +377 -0
- chipgraph-0.1.0/tests/core/config/test_models.py +227 -0
- chipgraph-0.1.0/tests/core/config/test_plan_cfg.py +54 -0
- chipgraph-0.1.0/tests/core/config/test_policy.py +113 -0
- chipgraph-0.1.0/tests/core/config/test_resolved.py +259 -0
- chipgraph-0.1.0/tests/core/config/test_select_cfg.py +72 -0
- chipgraph-0.1.0/tests/core/config/test_style_config.py +37 -0
- chipgraph-0.1.0/tests/core/config/test_templates.py +204 -0
- chipgraph-0.1.0/tests/core/config/test_wrappers_cfg.py +123 -0
- chipgraph-0.1.0/tests/core/contracts/test_agent.py +41 -0
- chipgraph-0.1.0/tests/core/contracts/test_artifact.py +67 -0
- chipgraph-0.1.0/tests/core/contracts/test_check.py +76 -0
- chipgraph-0.1.0/tests/core/contracts/test_event.py +58 -0
- chipgraph-0.1.0/tests/core/contracts/test_export.py +57 -0
- chipgraph-0.1.0/tests/core/contracts/test_finding.py +122 -0
- chipgraph-0.1.0/tests/core/contracts/test_gate.py +85 -0
- chipgraph-0.1.0/tests/core/contracts/test_rule.py +167 -0
- chipgraph-0.1.0/tests/core/engine/_fanout_kill_worker.py +39 -0
- chipgraph-0.1.0/tests/core/engine/_resume_kill_worker.py +76 -0
- chipgraph-0.1.0/tests/core/engine/agent_rule_helpers.py +238 -0
- chipgraph-0.1.0/tests/core/engine/fanout_helpers.py +110 -0
- chipgraph-0.1.0/tests/core/engine/scheduler_fixtures.py +116 -0
- chipgraph-0.1.0/tests/core/engine/select_helpers.py +282 -0
- chipgraph-0.1.0/tests/core/engine/test_agent_rule_loop.py +407 -0
- chipgraph-0.1.0/tests/core/engine/test_agent_rule_pieces.py +322 -0
- chipgraph-0.1.0/tests/core/engine/test_agent_rule_wiring.py +139 -0
- chipgraph-0.1.0/tests/core/engine/test_baseline_core.py +169 -0
- chipgraph-0.1.0/tests/core/engine/test_decide.py +460 -0
- chipgraph-0.1.0/tests/core/engine/test_decide_cfg.py +87 -0
- chipgraph-0.1.0/tests/core/engine/test_fanout.py +570 -0
- chipgraph-0.1.0/tests/core/engine/test_fanout_candidates.py +172 -0
- chipgraph-0.1.0/tests/core/engine/test_fanout_cleanup.py +259 -0
- chipgraph-0.1.0/tests/core/engine/test_fanout_pieces.py +132 -0
- chipgraph-0.1.0/tests/core/engine/test_feedback_filter.py +207 -0
- chipgraph-0.1.0/tests/core/engine/test_gate_evaluator.py +211 -0
- chipgraph-0.1.0/tests/core/engine/test_graph.py +372 -0
- chipgraph-0.1.0/tests/core/engine/test_graph_entries.py +105 -0
- chipgraph-0.1.0/tests/core/engine/test_records.py +82 -0
- chipgraph-0.1.0/tests/core/engine/test_resume_kill.py +132 -0
- chipgraph-0.1.0/tests/core/engine/test_rules.py +130 -0
- chipgraph-0.1.0/tests/core/engine/test_scheduler.py +461 -0
- chipgraph-0.1.0/tests/core/engine/test_scheduler_trace.py +153 -0
- chipgraph-0.1.0/tests/core/engine/test_select_budget.py +324 -0
- chipgraph-0.1.0/tests/core/engine/test_select_key.py +394 -0
- chipgraph-0.1.0/tests/core/engine/test_select_workspace.py +353 -0
- chipgraph-0.1.0/tests/core/engine/test_targets.py +183 -0
- chipgraph-0.1.0/tests/core/engine/test_targets_hostile.py +200 -0
- chipgraph-0.1.0/tests/core/model/test_entities.py +223 -0
- chipgraph-0.1.0/tests/core/model/test_entity_registry.py +71 -0
- chipgraph-0.1.0/tests/core/model/test_ingest_core.py +245 -0
- chipgraph-0.1.0/tests/core/model/test_ingest_instances.py +209 -0
- chipgraph-0.1.0/tests/core/model/test_keys.py +79 -0
- chipgraph-0.1.0/tests/core/model/test_model.py +150 -0
- chipgraph-0.1.0/tests/core/model/test_query.py +516 -0
- chipgraph-0.1.0/tests/core/model/test_relations.py +27 -0
- chipgraph-0.1.0/tests/core/model/test_store.py +236 -0
- chipgraph-0.1.0/tests/core/plugin_api/fakes.py +152 -0
- chipgraph-0.1.0/tests/core/plugin_api/local_plugin_fixtures/duplicate.py +23 -0
- chipgraph-0.1.0/tests/core/plugin_api/local_plugin_fixtures/no_register.py +3 -0
- chipgraph-0.1.0/tests/core/plugin_api/local_plugin_fixtures/raises_on_import.py +3 -0
- chipgraph-0.1.0/tests/core/plugin_api/local_plugin_fixtures/tiny_layout.py +63 -0
- chipgraph-0.1.0/tests/core/plugin_api/test_local_plugins.py +265 -0
- chipgraph-0.1.0/tests/core/plugin_api/test_pack.py +148 -0
- chipgraph-0.1.0/tests/core/plugin_api/test_protocols.py +73 -0
- chipgraph-0.1.0/tests/core/plugin_api/test_registry.py +123 -0
- chipgraph-0.1.0/tests/core/plugin_api/test_tool_context.py +18 -0
- chipgraph-0.1.0/tests/core/runtime/skill_fixtures/README.md +7 -0
- chipgraph-0.1.0/tests/core/runtime/skill_fixtures/alpha/pack.yml +5 -0
- chipgraph-0.1.0/tests/core/runtime/skill_fixtures/alpha/skills/cocotb.md +7 -0
- chipgraph-0.1.0/tests/core/runtime/skill_fixtures/alpha/skills/rtl.md +7 -0
- chipgraph-0.1.0/tests/core/runtime/skill_fixtures/badrole/pack.yml +5 -0
- chipgraph-0.1.0/tests/core/runtime/skill_fixtures/badrole/writer.md +7 -0
- chipgraph-0.1.0/tests/core/runtime/skill_fixtures/beta/more/naming.md +7 -0
- chipgraph-0.1.0/tests/core/runtime/skill_fixtures/beta/pack.yml +5 -0
- chipgraph-0.1.0/tests/core/runtime/skill_fixtures/dup/pack.yml +5 -0
- chipgraph-0.1.0/tests/core/runtime/skill_fixtures/dup/rtl.md +7 -0
- chipgraph-0.1.0/tests/core/runtime/test_review_report.py +225 -0
- chipgraph-0.1.0/tests/core/runtime/test_role_policy.py +241 -0
- chipgraph-0.1.0/tests/core/runtime/test_roles.py +248 -0
- chipgraph-0.1.0/tests/core/runtime/test_rtl_author_role.py +103 -0
- chipgraph-0.1.0/tests/core/runtime/test_skills.py +96 -0
- chipgraph-0.1.0/tests/core/runtime/test_task_queue.py +277 -0
- chipgraph-0.1.0/tests/core/runtime/test_task_queue_budget.py +134 -0
- chipgraph-0.1.0/tests/core/state/test_artifacts.py +141 -0
- chipgraph-0.1.0/tests/core/state/test_backend.py +116 -0
- chipgraph-0.1.0/tests/core/state/test_findings.py +145 -0
- chipgraph-0.1.0/tests/core/state/test_handoff.py +302 -0
- chipgraph-0.1.0/tests/core/state/test_idempotency.py +53 -0
- chipgraph-0.1.0/tests/core/state/test_journal.py +170 -0
- chipgraph-0.1.0/tests/core/state/test_lock.py +102 -0
- chipgraph-0.1.0/tests/core/state/test_trace.py +120 -0
- chipgraph-0.1.0/tests/e2e/conftest.py +69 -0
- chipgraph-0.1.0/tests/e2e/fixtures/cocotb/gpio_tb_broken.py +60 -0
- chipgraph-0.1.0/tests/e2e/fixtures/cocotb/gpio_tb_import_error.py +6 -0
- chipgraph-0.1.0/tests/e2e/test_sim_edalize.py +188 -0
- chipgraph-0.1.0/tests/e2e/test_tb_module_sim.py +111 -0
- chipgraph-0.1.0/tests/e2e/test_tinysoc.py +203 -0
- chipgraph-0.1.0/tests/e2e_github/test_rtl_target_pr.py +203 -0
- chipgraph-0.1.0/tests/e2e_github/test_sandbox_pr.py +118 -0
- chipgraph-0.1.0/tests/evals/rtl_eval_helpers.py +66 -0
- chipgraph-0.1.0/tests/evals/test_ask_grader.py +247 -0
- chipgraph-0.1.0/tests/evals/test_eval_claude_code.py +302 -0
- chipgraph-0.1.0/tests/evals/test_eval_framework.py +202 -0
- chipgraph-0.1.0/tests/evals/test_eval_review.py +343 -0
- chipgraph-0.1.0/tests/evals/test_eval_review_holdout2.py +355 -0
- chipgraph-0.1.0/tests/evals/test_eval_review_toolsearch.py +53 -0
- chipgraph-0.1.0/tests/evals/test_eval_workflow.py +84 -0
- chipgraph-0.1.0/tests/evals/test_rtl_data.py +192 -0
- chipgraph-0.1.0/tests/evals/test_rtl_fixtures.py +104 -0
- chipgraph-0.1.0/tests/evals/test_rtl_graders.py +139 -0
- chipgraph-0.1.0/tests/evals/test_rtl_suites.py +326 -0
- chipgraph-0.1.0/tests/evals/test_triage_grader.py +126 -0
- chipgraph-0.1.0/tests/evals/test_triage_holdout.py +251 -0
- chipgraph-0.1.0/tests/evals/test_triage_holdout2.py +344 -0
- chipgraph-0.1.0/tests/evals/test_triage_samples.py +201 -0
- chipgraph-0.1.0/tests/learn/learn_helpers.py +149 -0
- chipgraph-0.1.0/tests/learn/test_learn_accept.py +170 -0
- chipgraph-0.1.0/tests/learn/test_learn_infer.py +160 -0
- chipgraph-0.1.0/tests/mcp/conftest.py +52 -0
- chipgraph-0.1.0/tests/mcp/runtime_tools_helpers.py +176 -0
- chipgraph-0.1.0/tests/mcp/test_audit_mcp.py +113 -0
- chipgraph-0.1.0/tests/mcp/test_model_tools.py +444 -0
- chipgraph-0.1.0/tests/mcp/test_plan_rtl_session.py +293 -0
- chipgraph-0.1.0/tests/mcp/test_runtime_tools.py +227 -0
- chipgraph-0.1.0/tests/mcp/test_server.py +224 -0
- chipgraph-0.1.0/tests/mcp/test_stdio.py +53 -0
- chipgraph-0.1.0/tests/packs/assist/ask_helpers.py +45 -0
- chipgraph-0.1.0/tests/packs/assist/audit_helpers.py +95 -0
- chipgraph-0.1.0/tests/packs/assist/test_ask_answer.py +147 -0
- chipgraph-0.1.0/tests/packs/assist/test_ask_check.py +144 -0
- chipgraph-0.1.0/tests/packs/assist/test_ask_context.py +139 -0
- chipgraph-0.1.0/tests/packs/assist/test_ask_fts.py +99 -0
- chipgraph-0.1.0/tests/packs/assist/test_ask_surfaces.py +155 -0
- chipgraph-0.1.0/tests/packs/assist/test_audit.py +227 -0
- chipgraph-0.1.0/tests/packs/assist/test_triage_question.py +180 -0
- chipgraph-0.1.0/tests/packs/assist/test_triage_rules.py +320 -0
- chipgraph-0.1.0/tests/packs/assist/test_triage_run.py +359 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/plan_fixtures/gpio.plan.yml +44 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/plan_fixtures/timer.plan.yml +56 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/plan_helpers.py +186 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/rtl_author_helpers.py +322 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/rtl_target_helpers.py +457 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_digital_rtl_pack.py +70 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_isolated_flow.py +498 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_plan_check_rules.py +371 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_plan_e2e.py +99 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_plan_pack.py +195 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_plan_resolver.py +245 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_plan_show_cli.py +114 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_rtl_acceptance_report.py +139 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_rtl_claude_code.py +267 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_rtl_context.py +83 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_rtl_e2e.py +61 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_rtl_module_rule.py +125 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_rtl_previous_e2e.py +88 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_rtl_style_follows.py +80 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_rtl_target_chain.py +260 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_rtl_target_denied.py +214 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_rtl_target_graph.py +284 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_rtl_target_layout.py +214 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_rtl_target_pull_request.py +753 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_wrap_check.py +438 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_wrap_check_hostile.py +212 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_wrapper_acceptance_report.py +204 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_wrapper_e2e.py +122 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_wrapper_expansion.py +144 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_wrapper_generator.py +345 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_wrapper_generator_hostile.py +336 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_wrapper_lisp.py +106 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_wrapper_lisp_emacs.py +350 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_wrapper_lisp_hostile.py +242 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/test_wrapper_pack.py +311 -0
- chipgraph-0.1.0/tests/packs/digital_rtl/wrapper_helpers.py +284 -0
- chipgraph-0.1.0/tests/packs/dv/test_dv_cocotb_skill.py +60 -0
- chipgraph-0.1.0/tests/packs/dv/test_dv_declaration.py +181 -0
- chipgraph-0.1.0/tests/packs/dv/test_dv_interface.py +268 -0
- chipgraph-0.1.0/tests/packs/dv/test_dv_pack.py +128 -0
- chipgraph-0.1.0/tests/packs/spec_core/agents_md_snapshots/full.md +140 -0
- chipgraph-0.1.0/tests/packs/spec_core/agents_md_snapshots/qsoc.md +120 -0
- chipgraph-0.1.0/tests/packs/spec_core/agents_md_snapshots/tinysoc.md +99 -0
- chipgraph-0.1.0/tests/packs/spec_core/conftest.py +15 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/qsoc/block_diagram.drawio +66 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/qsoc/block_diagram.svg +44 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/qsoc/clock_reset_tree.drawio +102 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/qsoc/clock_reset_tree.svg +56 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/qsoc/interrupt_map.drawio +48 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/qsoc/interrupt_map.svg +32 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/qsoc/memory_map.drawio +84 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/qsoc/memory_map.svg +62 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/tiny_chip/block_diagram.drawio +26 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/tiny_chip/block_diagram.svg +16 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/tiny_chip/clock_reset_tree.drawio +39 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/tiny_chip/clock_reset_tree.svg +22 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/tiny_chip/interrupt_map.drawio +18 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/tiny_chip/interrupt_map.svg +12 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/tiny_chip/memory_map.drawio +20 -0
- chipgraph-0.1.0/tests/packs/spec_core/diagram_snapshots/tiny_chip/memory_map.svg +14 -0
- chipgraph-0.1.0/tests/packs/spec_core/mas_fixtures/QNSC_DMA_MAS.md +407 -0
- chipgraph-0.1.0/tests/packs/spec_core/mas_fixtures/QNSC_Interrupt_Map_MAS.md +288 -0
- chipgraph-0.1.0/tests/packs/spec_core/mas_fixtures/QNSC_SCRC_MAS.md +591 -0
- chipgraph-0.1.0/tests/packs/spec_core/mas_fixtures/QNSC_SYSCSR_MAS.md +314 -0
- chipgraph-0.1.0/tests/packs/spec_core/mas_fixtures/QNSC_TIMER_MAS.md +314 -0
- chipgraph-0.1.0/tests/packs/spec_core/mas_fixtures/QNSC_UART_MAS.md +318 -0
- chipgraph-0.1.0/tests/packs/spec_core/test_agents_md.py +326 -0
- chipgraph-0.1.0/tests/packs/spec_core/test_agents_md_cli.py +169 -0
- chipgraph-0.1.0/tests/packs/spec_core/test_agents_md_markers.py +111 -0
- chipgraph-0.1.0/tests/packs/spec_core/test_diagram.py +267 -0
- chipgraph-0.1.0/tests/packs/spec_core/test_mas_extract.py +156 -0
- chipgraph-0.1.0/tests/packs/spec_core/test_mas_fixtures.py +133 -0
- chipgraph-0.1.0/tests/packs/spec_core/test_mas_missing_id.py +263 -0
- chipgraph-0.1.0/tests/packs/spec_core/test_mas_modes.py +230 -0
- chipgraph-0.1.0/tests/packs/spec_core/test_mas_shorthand.py +120 -0
- chipgraph-0.1.0/tests/packs/spec_core/test_registration.py +25 -0
- chipgraph-0.1.0/tests/plugin/agent_loop_helpers_plugin.py +23 -0
- chipgraph-0.1.0/tests/plugin/test_agent_loop_acceptance_report.py +163 -0
- chipgraph-0.1.0/tests/plugin/test_guard.py +347 -0
- chipgraph-0.1.0/tests/plugin/test_guard_budget_state.py +63 -0
- chipgraph-0.1.0/tests/plugin/test_guard_reads.py +338 -0
- chipgraph-0.1.0/tests/plugin/test_init_tool.py +205 -0
- chipgraph-0.1.0/tests/plugin/test_plan_rtl_commands.py +140 -0
- chipgraph-0.1.0/tests/plugin/test_plugin_acceptance_report.py +166 -0
- chipgraph-0.1.0/tests/plugin/test_plugin_commands.py +228 -0
- chipgraph-0.1.0/tests/plugin/test_roles_acceptance_report.py +196 -0
- chipgraph-0.1.0/tests/plugin/test_rtl_target_acceptance.py +377 -0
- chipgraph-0.1.0/tests/plugin/test_run_command_loop.py +55 -0
- chipgraph-0.1.0/tests/plugin/test_two_way_permissions.py +347 -0
- chipgraph-0.1.0/tests/test_example_profiles.py +38 -0
- chipgraph-0.1.0/tests/test_image_workflow.py +63 -0
- chipgraph-0.1.0/tests/test_release_metadata.py +70 -0
- chipgraph-0.1.0/tests/test_release_workflow.py +54 -0
- chipgraph-0.1.0/tests/test_version.py +17 -0
- chipgraph-0.1.0/uv.lock +3381 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "chipgraph",
|
|
3
|
+
"description": "chipgraph: an AI agent system for chip (IC) design",
|
|
4
|
+
"owner": {
|
|
5
|
+
"name": "quynhonsemiconductor",
|
|
6
|
+
"url": "https://github.com/quynhonsemiconductor"
|
|
7
|
+
},
|
|
8
|
+
"plugins": [
|
|
9
|
+
{
|
|
10
|
+
"name": "chipgraph",
|
|
11
|
+
"source": "./plugin",
|
|
12
|
+
"description": "chipgraph for chip (IC) design in Claude Code: /chipgraph:status, /chipgraph:trace, /chipgraph:ask, /chipgraph:triage, /chipgraph:init-chipgraph and /chipgraph:run, over the chipgraph MCP server."
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Root .dockerignore — the build context is the repo root (docker/Dockerfile COPYs
|
|
2
|
+
# pyproject.toml, uv.lock, README.md, src/, and, for the `test` target, tests/ and
|
|
3
|
+
# examples/ from there), so this lives at the root rather than under docker/.
|
|
4
|
+
|
|
5
|
+
.git
|
|
6
|
+
.github
|
|
7
|
+
.venv
|
|
8
|
+
venv
|
|
9
|
+
**/__pycache__
|
|
10
|
+
**/*.py[cod]
|
|
11
|
+
*.egg-info
|
|
12
|
+
.eggs
|
|
13
|
+
.mypy_cache
|
|
14
|
+
.ruff_cache
|
|
15
|
+
.pytest_cache
|
|
16
|
+
.cache
|
|
17
|
+
dist
|
|
18
|
+
build
|
|
19
|
+
docs
|
|
20
|
+
!docs/tb-claude-code/
|
|
21
|
+
!docs/tb-claude-code/fixture.py
|
|
22
|
+
doc
|
|
23
|
+
plugin
|
|
24
|
+
.claude-plugin
|
|
25
|
+
evals
|
|
26
|
+
interfaces
|
|
27
|
+
presets
|
|
28
|
+
orgs
|
|
29
|
+
*.md
|
|
30
|
+
!README.md
|
|
31
|
+
.DS_Store
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
root = true
|
|
2
|
+
|
|
3
|
+
[*]
|
|
4
|
+
charset = utf-8
|
|
5
|
+
end_of_line = lf
|
|
6
|
+
insert_final_newline = true
|
|
7
|
+
trim_trailing_whitespace = true
|
|
8
|
+
|
|
9
|
+
[*.py]
|
|
10
|
+
indent_style = space
|
|
11
|
+
indent_size = 4
|
|
12
|
+
|
|
13
|
+
[*.{yml,yaml,json,toml,md}]
|
|
14
|
+
indent_style = space
|
|
15
|
+
indent_size = 2
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
check:
|
|
17
|
+
strategy:
|
|
18
|
+
matrix:
|
|
19
|
+
os: [ubuntu-latest, macos-latest]
|
|
20
|
+
python: ["3.13", "3.14"]
|
|
21
|
+
runs-on: ${{ matrix.os }}
|
|
22
|
+
timeout-minutes: 20
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
25
|
+
with:
|
|
26
|
+
persist-credentials: false
|
|
27
|
+
|
|
28
|
+
- uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
|
29
|
+
with:
|
|
30
|
+
python-version: ${{ matrix.python }}
|
|
31
|
+
|
|
32
|
+
- run: uv sync --locked
|
|
33
|
+
|
|
34
|
+
- run: uv run ruff check .
|
|
35
|
+
|
|
36
|
+
- run: uv run ruff format --check .
|
|
37
|
+
|
|
38
|
+
- run: uv run lint-imports
|
|
39
|
+
|
|
40
|
+
- run: uv run mypy
|
|
41
|
+
|
|
42
|
+
- run: uv run pytest
|
|
43
|
+
|
|
44
|
+
- run: make schemas-check
|
|
45
|
+
|
|
46
|
+
# The `edalize` sim adapter (M2-05) on Linux: Verilator from the OSS CAD Suite release
|
|
47
|
+
# docker/Dockerfile pins, the C++ build deps of a Verilator model and Icarus from apt,
|
|
48
|
+
# and the `sim` extra. Runs the sample cocotb testbench (examples/tinysoc/dv) and the
|
|
49
|
+
# failure cases through EdalizeTool with a real LocalRunner, and fails on any skip.
|
|
50
|
+
sim:
|
|
51
|
+
name: sim (cocotb, verilator + icarus, py${{ matrix.python }})
|
|
52
|
+
strategy:
|
|
53
|
+
fail-fast: false
|
|
54
|
+
matrix:
|
|
55
|
+
python: ["3.13", "3.14"]
|
|
56
|
+
runs-on: ubuntu-latest
|
|
57
|
+
timeout-minutes: 30
|
|
58
|
+
steps:
|
|
59
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
60
|
+
with:
|
|
61
|
+
persist-credentials: false
|
|
62
|
+
|
|
63
|
+
- uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
|
64
|
+
with:
|
|
65
|
+
python-version: ${{ matrix.python }}
|
|
66
|
+
|
|
67
|
+
- name: Install OSS CAD Suite (the release docker/Dockerfile pins), for Verilator
|
|
68
|
+
run: |
|
|
69
|
+
set -euo pipefail
|
|
70
|
+
date="$(sed -n 's/^ARG OSS_CAD_SUITE_DATE=//p' docker/Dockerfile)"
|
|
71
|
+
sha256="$(sed -n 's/^ARG OSS_CAD_SUITE_SHA256_AMD64=//p' docker/Dockerfile)"
|
|
72
|
+
file="oss-cad-suite-linux-x64-${date//-/}.tgz"
|
|
73
|
+
url="https://github.com/YosysHQ/oss-cad-suite-build/releases/download/${date}/${file}"
|
|
74
|
+
curl -fsSL -o "$RUNNER_TEMP/oss-cad-suite.tgz" "$url"
|
|
75
|
+
echo "${sha256} $RUNNER_TEMP/oss-cad-suite.tgz" | sha256sum -c -
|
|
76
|
+
tar -xzf "$RUNNER_TEMP/oss-cad-suite.tgz" -C "$RUNNER_TEMP"
|
|
77
|
+
rm -f "$RUNNER_TEMP/oss-cad-suite.tgz"
|
|
78
|
+
echo "$RUNNER_TEMP/oss-cad-suite/bin" >> "$GITHUB_PATH"
|
|
79
|
+
|
|
80
|
+
# g++: Verilator compiles the model; liblz4-dev/zlib1g-dev: its FST writer. Icarus
|
|
81
|
+
# from apt, ahead of the suite's on PATH: the suite's `vvp` wrapper loads the
|
|
82
|
+
# suite's own cocotb libgpi and no test runs (docs/spikes/S3.md, pitfall 4).
|
|
83
|
+
- name: Install the C++ build deps of a Verilator model, and Icarus from apt
|
|
84
|
+
run: |
|
|
85
|
+
set -euo pipefail
|
|
86
|
+
sudo apt-get update
|
|
87
|
+
sudo apt-get install -y --no-install-recommends \
|
|
88
|
+
g++ make liblz4-dev zlib1g-dev iverilog
|
|
89
|
+
mkdir -p "$RUNNER_TEMP/apt-icarus"
|
|
90
|
+
ln -sf /usr/bin/iverilog /usr/bin/vvp "$RUNNER_TEMP/apt-icarus/"
|
|
91
|
+
echo "$RUNNER_TEMP/apt-icarus" >> "$GITHUB_PATH"
|
|
92
|
+
|
|
93
|
+
- run: uv sync --locked --extra sim
|
|
94
|
+
|
|
95
|
+
- name: Tool versions
|
|
96
|
+
env:
|
|
97
|
+
PYTHON_VERSION: ${{ matrix.python }}
|
|
98
|
+
run: |
|
|
99
|
+
{
|
|
100
|
+
echo "### sim toolchain, py${PYTHON_VERSION}"
|
|
101
|
+
echo '```'
|
|
102
|
+
echo "verilator: $(verilator --version) ($(command -v verilator))"
|
|
103
|
+
echo "iverilog: $(iverilog -V 2>&1 | head -n 1) ($(command -v vvp))"
|
|
104
|
+
echo "g++: $(g++ --version | head -n 1)"
|
|
105
|
+
echo "python: $(uv run --no-sync python --version)"
|
|
106
|
+
uv run --no-sync python -c 'import importlib.metadata as m; print("edalize: ", m.version("edalize")); print("cocotb: ", m.version("cocotb"))'
|
|
107
|
+
echo "cocotb-config: $(uv run --no-sync which cocotb-config)"
|
|
108
|
+
echo '```'
|
|
109
|
+
} | tee -a "$GITHUB_STEP_SUMMARY"
|
|
110
|
+
|
|
111
|
+
- name: Run the cocotb testbenches through EdalizeTool
|
|
112
|
+
run: >-
|
|
113
|
+
uv run --no-sync pytest -q
|
|
114
|
+
tests/e2e/test_sim_edalize.py tests/adapters/tool/test_edalize.py
|
|
115
|
+
tests/adapters/parser/test_cocotb.py
|
|
116
|
+
--junitxml="$RUNNER_TEMP/sim-junit.xml"
|
|
117
|
+
|
|
118
|
+
- name: Fail if a sim test was skipped
|
|
119
|
+
run: |
|
|
120
|
+
python3 - "$RUNNER_TEMP/sim-junit.xml" <<'PY'
|
|
121
|
+
import sys
|
|
122
|
+
import xml.etree.ElementTree as ET
|
|
123
|
+
|
|
124
|
+
root = ET.parse(sys.argv[1]).getroot()
|
|
125
|
+
suite = root if root.tag == "testsuite" else root.find("testsuite")
|
|
126
|
+
tests, skipped = int(suite.get("tests", 0)), int(suite.get("skipped", 0))
|
|
127
|
+
print(f"tests={tests} skipped={skipped}")
|
|
128
|
+
if skipped or tests == 0:
|
|
129
|
+
raise SystemExit("sim tests were skipped: the toolchain or the `sim` extra is missing")
|
|
130
|
+
PY
|
|
131
|
+
|
|
132
|
+
secrets:
|
|
133
|
+
runs-on: ubuntu-latest
|
|
134
|
+
timeout-minutes: 10
|
|
135
|
+
steps:
|
|
136
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
137
|
+
with:
|
|
138
|
+
persist-credentials: false
|
|
139
|
+
fetch-depth: 0
|
|
140
|
+
|
|
141
|
+
# The org's shared scanner (gitleaks CLI, canary-checked before trusting a
|
|
142
|
+
# clean result), pinned like every other ci ref. Replaces the upstream
|
|
143
|
+
# trufflehog action this repo carried on its own.
|
|
144
|
+
- uses: quynhonsemiconductor/ci/actions/scan-secrets@956804ad4aa2dcf930909553d306d72b3708fd5d # v1.34.1+ci#308
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
name: evals
|
|
2
|
+
|
|
3
|
+
# Real-model evals (task M1-17): `chipgraph eval` with runtime claude-code (headless
|
|
4
|
+
# Claude Code, haiku main session by default) on the ask, triage, triage-holdout and
|
|
5
|
+
# triage-holdout2 suites. Never on push or pull requests: started by hand or weekly. The
|
|
6
|
+
# framework itself is checked on every PR by the fake-runtime tests in the normal CI
|
|
7
|
+
# (tests/evals).
|
|
8
|
+
#
|
|
9
|
+
# Auth: the repository secret CHIPGRAPH_EVALS_CLAUDE_TOKEN, a Claude Code OAuth token of
|
|
10
|
+
# a separate account (`claude setup-token`), passed to `claude` as
|
|
11
|
+
# CLAUDE_CODE_OAUTH_TOKEN. Without the secret the job skips cleanly, green, with a
|
|
12
|
+
# ::notice:: and a line in the run summary (owner decision 2026-11-04). There is no
|
|
13
|
+
# schedule: this workflow runs by hand only, so a green skip can never read as a weekly
|
|
14
|
+
# eval that passed.
|
|
15
|
+
# Cost cap: --budget-usd per suite (claude's --max-budget-usd per sample, and the suite
|
|
16
|
+
# stops once the summed total_cost_usd reaches it); --time-limit per suite.
|
|
17
|
+
|
|
18
|
+
on:
|
|
19
|
+
workflow_dispatch:
|
|
20
|
+
inputs:
|
|
21
|
+
suite:
|
|
22
|
+
description: Suite to run
|
|
23
|
+
type: choice
|
|
24
|
+
options: [all, ask, triage, triage-holdout, triage-holdout2]
|
|
25
|
+
default: all
|
|
26
|
+
main_model:
|
|
27
|
+
description: Main session model (workers stay on haiku)
|
|
28
|
+
type: string
|
|
29
|
+
default: sonnet
|
|
30
|
+
budget_usd:
|
|
31
|
+
description: Cost cap per suite, in USD
|
|
32
|
+
type: string
|
|
33
|
+
default: "3"
|
|
34
|
+
permissions:
|
|
35
|
+
contents: read
|
|
36
|
+
|
|
37
|
+
concurrency:
|
|
38
|
+
group: ${{ github.workflow }}
|
|
39
|
+
cancel-in-progress: false
|
|
40
|
+
|
|
41
|
+
env:
|
|
42
|
+
CLAUDE_CODE_VERSION: 2.1.286
|
|
43
|
+
|
|
44
|
+
jobs:
|
|
45
|
+
evals:
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
timeout-minutes: 240
|
|
48
|
+
steps:
|
|
49
|
+
- name: Check for the evals secret
|
|
50
|
+
id: auth
|
|
51
|
+
env:
|
|
52
|
+
TOKEN: ${{ secrets.CHIPGRAPH_EVALS_CLAUDE_TOKEN }}
|
|
53
|
+
run: |
|
|
54
|
+
if [ -n "$TOKEN" ]; then
|
|
55
|
+
echo "ok=true" >> "$GITHUB_OUTPUT"
|
|
56
|
+
else
|
|
57
|
+
echo "ok=false" >> "$GITHUB_OUTPUT"
|
|
58
|
+
msg="CHIPGRAPH_EVALS_CLAUDE_TOKEN is not set: real-model evals skipped (see evals/README.md)."
|
|
59
|
+
echo "::notice::$msg"
|
|
60
|
+
echo "$msg" >> "$GITHUB_STEP_SUMMARY"
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
64
|
+
if: steps.auth.outputs.ok == 'true'
|
|
65
|
+
with:
|
|
66
|
+
persist-credentials: false
|
|
67
|
+
|
|
68
|
+
- uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
|
69
|
+
if: steps.auth.outputs.ok == 'true'
|
|
70
|
+
with:
|
|
71
|
+
python-version: "3.14"
|
|
72
|
+
|
|
73
|
+
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
|
74
|
+
if: steps.auth.outputs.ok == 'true'
|
|
75
|
+
with:
|
|
76
|
+
node-version: "24"
|
|
77
|
+
|
|
78
|
+
- name: Install Claude Code
|
|
79
|
+
if: steps.auth.outputs.ok == 'true'
|
|
80
|
+
run: |
|
|
81
|
+
npm install -g "@anthropic-ai/claude-code@${CLAUDE_CODE_VERSION}"
|
|
82
|
+
claude --version
|
|
83
|
+
|
|
84
|
+
- run: uv sync --locked
|
|
85
|
+
if: steps.auth.outputs.ok == 'true'
|
|
86
|
+
|
|
87
|
+
- name: Run the evals
|
|
88
|
+
id: run
|
|
89
|
+
if: steps.auth.outputs.ok == 'true'
|
|
90
|
+
env:
|
|
91
|
+
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CHIPGRAPH_EVALS_CLAUDE_TOKEN }}
|
|
92
|
+
SUITE: ${{ inputs.suite || 'all' }}
|
|
93
|
+
MAIN_MODEL: ${{ inputs.main_model || 'sonnet' }}
|
|
94
|
+
BUDGET_USD: ${{ inputs.budget_usd || '3' }}
|
|
95
|
+
EVAL_OUT: ${{ runner.temp }}/eval-report
|
|
96
|
+
run: |
|
|
97
|
+
set -u
|
|
98
|
+
if [ "$SUITE" = all ]; then suites="ask triage triage-holdout triage-holdout2"; else suites="$SUITE"; fi
|
|
99
|
+
mkdir -p "$EVAL_OUT"
|
|
100
|
+
failed=""
|
|
101
|
+
for suite in $suites; do
|
|
102
|
+
echo "::group::chipgraph eval $suite"
|
|
103
|
+
rc=0
|
|
104
|
+
uv run chipgraph eval "$suite" --runtime claude-code \
|
|
105
|
+
--main-model "$MAIN_MODEL" --budget-usd "$BUDGET_USD" \
|
|
106
|
+
--out "$EVAL_OUT/$suite" || rc=$?
|
|
107
|
+
echo "::endgroup::"
|
|
108
|
+
if [ -f "$EVAL_OUT/$suite/summary.md" ]; then
|
|
109
|
+
cat "$EVAL_OUT/$suite/summary.md" >> "$GITHUB_STEP_SUMMARY"
|
|
110
|
+
else
|
|
111
|
+
echo "chipgraph eval $suite: no report (exit $rc)" >> "$GITHUB_STEP_SUMMARY"
|
|
112
|
+
fi
|
|
113
|
+
[ "$rc" -eq 0 ] || failed="$failed $suite"
|
|
114
|
+
done
|
|
115
|
+
echo "failed=$failed" >> "$GITHUB_OUTPUT"
|
|
116
|
+
|
|
117
|
+
- name: Upload the eval report
|
|
118
|
+
if: always() && steps.auth.outputs.ok == 'true'
|
|
119
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
120
|
+
with:
|
|
121
|
+
name: eval-report-${{ github.run_id }}
|
|
122
|
+
path: ${{ runner.temp }}/eval-report
|
|
123
|
+
if-no-files-found: error
|
|
124
|
+
retention-days: 90
|
|
125
|
+
|
|
126
|
+
- name: Fail if a suite failed
|
|
127
|
+
if: steps.auth.outputs.ok == 'true' && steps.run.outputs.failed != ''
|
|
128
|
+
env:
|
|
129
|
+
FAILED: ${{ steps.run.outputs.failed }}
|
|
130
|
+
run: |
|
|
131
|
+
echo "::error::eval suites failed:$FAILED"
|
|
132
|
+
exit 1
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
name: image
|
|
2
|
+
|
|
3
|
+
# zizmor 1.5.2 (the version the shared action installs) anchors cache-poisoning at
|
|
4
|
+
# the workflow's trigger, not at the cache step, so the inline form on the build
|
|
5
|
+
# actions does not cover it — CONFIRMED 2026-11-04 against a local 1.5.2 (two
|
|
6
|
+
# findings, both image.yml:3:1). The risk is closed in the workflow instead: the
|
|
7
|
+
# PR-running build job READS the GHA cache but never writes it (cache-to is
|
|
8
|
+
# conditional on a push), and the job that writes and publishes runs only on
|
|
9
|
+
# push/tag. OWNER RE-CHECK: when the shared action's pinned zizmor is raised to
|
|
10
|
+
# >=1.30 (which reports nothing here), delete this ignore and confirm the check
|
|
11
|
+
# still passes.
|
|
12
|
+
on: # zizmor: ignore[cache-poisoning]
|
|
13
|
+
pull_request:
|
|
14
|
+
push:
|
|
15
|
+
branches: [main]
|
|
16
|
+
tags: ["v*"]
|
|
17
|
+
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
|
|
21
|
+
concurrency:
|
|
22
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
23
|
+
cancel-in-progress: true
|
|
24
|
+
|
|
25
|
+
env:
|
|
26
|
+
IMAGE: ghcr.io/quynhonsemiconductor/chipgraph-eda
|
|
27
|
+
|
|
28
|
+
jobs:
|
|
29
|
+
build-test:
|
|
30
|
+
name: build test image, run tinysoc e2e
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
timeout-minutes: 30
|
|
33
|
+
outputs:
|
|
34
|
+
relevant: ${{ steps.changes.outputs.relevant }}
|
|
35
|
+
permissions:
|
|
36
|
+
contents: read
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
39
|
+
with:
|
|
40
|
+
persist-credentials: false
|
|
41
|
+
fetch-depth: 2 # the merge commit and both parents: enough to diff against the base
|
|
42
|
+
|
|
43
|
+
# The job always runs, so it can be a required check; when nothing the image is built
|
|
44
|
+
# from changed, every later step is skipped and the job still reports success.
|
|
45
|
+
- name: Decide whether the image is affected
|
|
46
|
+
id: changes
|
|
47
|
+
env:
|
|
48
|
+
EVENT: ${{ github.event_name }}
|
|
49
|
+
REF: ${{ github.ref }}
|
|
50
|
+
# Paths the test image is built from or tested with.
|
|
51
|
+
RELEVANT: '^(docker/|pyproject\.toml$|uv\.lock$|src/|tests/e2e/|examples/|docs/tb-claude-code/|\.dockerignore$|\.github/workflows/image\.yml$)'
|
|
52
|
+
run: |
|
|
53
|
+
set -eu
|
|
54
|
+
relevant=false
|
|
55
|
+
files=""
|
|
56
|
+
if [ "$EVENT" = push ] && [ "${REF#refs/tags/}" != "$REF" ]; then
|
|
57
|
+
relevant=true # a release tag always builds
|
|
58
|
+
elif ! files="$(git diff --name-only HEAD^1 HEAD)"; then
|
|
59
|
+
relevant=true # cannot tell: build
|
|
60
|
+
elif printf '%s\n' "$files" | grep -Eq "$RELEVANT"; then
|
|
61
|
+
relevant=true
|
|
62
|
+
fi
|
|
63
|
+
echo "relevant=$relevant" >> "$GITHUB_OUTPUT"
|
|
64
|
+
{
|
|
65
|
+
echo "### image job: relevant=$relevant"
|
|
66
|
+
echo '```'
|
|
67
|
+
printf '%s\n' "$files"
|
|
68
|
+
echo '```'
|
|
69
|
+
} >> "$GITHUB_STEP_SUMMARY"
|
|
70
|
+
|
|
71
|
+
- uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
|
|
72
|
+
if: steps.changes.outputs.relevant == 'true'
|
|
73
|
+
|
|
74
|
+
# A pull request may READ the cache but never WRITE it: this job runs for
|
|
75
|
+
# PRs, and the trusted publish job below reuses the same scope. A cache
|
|
76
|
+
# entry a PR could plant would ride into the published image (zizmor
|
|
77
|
+
# cache-poisoning, the reason the write is conditional rather than ignored).
|
|
78
|
+
- uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
|
|
79
|
+
if: steps.changes.outputs.relevant == 'true'
|
|
80
|
+
with:
|
|
81
|
+
context: .
|
|
82
|
+
file: docker/Dockerfile
|
|
83
|
+
target: test
|
|
84
|
+
tags: chipgraph-eda:test
|
|
85
|
+
load: true
|
|
86
|
+
push: false
|
|
87
|
+
cache-from: type=gha
|
|
88
|
+
cache-to: ${{ github.event_name == 'push' && 'type=gha,mode=max' || '' }}
|
|
89
|
+
|
|
90
|
+
- name: Tool versions in the image
|
|
91
|
+
if: steps.changes.outputs.relevant == 'true'
|
|
92
|
+
run: |
|
|
93
|
+
set -o pipefail
|
|
94
|
+
{
|
|
95
|
+
echo "### chipgraph-eda:test toolchain"
|
|
96
|
+
echo '```'
|
|
97
|
+
docker run --rm chipgraph-eda:test sh -c '
|
|
98
|
+
echo "verilator: $(verilator --version) ($(command -v verilator))"
|
|
99
|
+
echo "iverilog: $(iverilog -V 2>&1 | head -n 1) ($(command -v vvp))"
|
|
100
|
+
echo "g++: $(g++ --version | head -n 1)"
|
|
101
|
+
echo "python: $(uv run --no-sync python --version)"
|
|
102
|
+
uv run --no-sync python -c "import importlib.metadata as m; print(\"edalize: \", m.version(\"edalize\")); print(\"cocotb: \", m.version(\"cocotb\"))"
|
|
103
|
+
'
|
|
104
|
+
echo '```'
|
|
105
|
+
} | tee -a "$GITHUB_STEP_SUMMARY"
|
|
106
|
+
|
|
107
|
+
- name: Run the tinysoc e2e suite inside the image
|
|
108
|
+
if: steps.changes.outputs.relevant == 'true'
|
|
109
|
+
env:
|
|
110
|
+
REPORT_DIR: ${{ runner.temp }}/e2e-report
|
|
111
|
+
run: |
|
|
112
|
+
set -eu
|
|
113
|
+
mkdir -p "$REPORT_DIR"
|
|
114
|
+
docker run --rm \
|
|
115
|
+
-v "$REPORT_DIR:/tmp/report" \
|
|
116
|
+
chipgraph-eda:test \
|
|
117
|
+
sh -c 'uv run --no-sync pytest -m e2e tests/e2e -q --junitxml=/tmp/report/e2e-junit.xml'
|
|
118
|
+
|
|
119
|
+
- name: Fail if the e2e tests did not actually run
|
|
120
|
+
if: steps.changes.outputs.relevant == 'true'
|
|
121
|
+
env:
|
|
122
|
+
REPORT_DIR: ${{ runner.temp }}/e2e-report
|
|
123
|
+
run: |
|
|
124
|
+
python3 - "$REPORT_DIR/e2e-junit.xml" <<'PY'
|
|
125
|
+
import sys
|
|
126
|
+
import xml.etree.ElementTree as ET
|
|
127
|
+
|
|
128
|
+
root = ET.parse(sys.argv[1]).getroot()
|
|
129
|
+
suite = root if root.tag == "testsuite" else root.find("testsuite")
|
|
130
|
+
if suite is None:
|
|
131
|
+
raise SystemExit("no <testsuite> found in the junit report")
|
|
132
|
+
|
|
133
|
+
tests = int(suite.get("tests", 0))
|
|
134
|
+
failures = int(suite.get("failures", 0))
|
|
135
|
+
errors = int(suite.get("errors", 0))
|
|
136
|
+
skipped = int(suite.get("skipped", 0))
|
|
137
|
+
passed = tests - failures - errors - skipped
|
|
138
|
+
|
|
139
|
+
print(f"tests={tests} passed={passed} failures={failures} errors={errors} skipped={skipped}")
|
|
140
|
+
|
|
141
|
+
if skipped:
|
|
142
|
+
raise SystemExit(
|
|
143
|
+
f"{skipped} e2e test(s) were skipped inside the image "
|
|
144
|
+
"(verilator/make missing?) — the image must run them, not skip them"
|
|
145
|
+
)
|
|
146
|
+
if failures or errors:
|
|
147
|
+
raise SystemExit("e2e tests failed inside the image")
|
|
148
|
+
if passed < 5:
|
|
149
|
+
raise SystemExit(f"expected at least 5 passing e2e tests, got {passed}")
|
|
150
|
+
PY
|
|
151
|
+
|
|
152
|
+
publish:
|
|
153
|
+
name: publish image to GHCR
|
|
154
|
+
needs: build-test
|
|
155
|
+
if: >-
|
|
156
|
+
needs.build-test.outputs.relevant == 'true' &&
|
|
157
|
+
github.event_name == 'push' &&
|
|
158
|
+
(github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v'))
|
|
159
|
+
runs-on: ubuntu-latest
|
|
160
|
+
timeout-minutes: 20
|
|
161
|
+
permissions:
|
|
162
|
+
contents: read
|
|
163
|
+
packages: write # push chipgraph-eda to ghcr.io
|
|
164
|
+
steps:
|
|
165
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
166
|
+
with:
|
|
167
|
+
persist-credentials: false
|
|
168
|
+
|
|
169
|
+
- uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
|
|
170
|
+
|
|
171
|
+
- id: meta
|
|
172
|
+
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6.2.0
|
|
173
|
+
with:
|
|
174
|
+
images: ${{ env.IMAGE }}
|
|
175
|
+
tags: |
|
|
176
|
+
type=raw,value=main,enable={{is_default_branch}}
|
|
177
|
+
type=sha,prefix=sha-,format=short
|
|
178
|
+
type=semver,pattern={{version}}
|
|
179
|
+
|
|
180
|
+
- uses: docker/login-action@81c6f93d4bc991e510b342a00b419b3bb4efc5c6 # v4.7.0
|
|
181
|
+
with:
|
|
182
|
+
registry: ghcr.io
|
|
183
|
+
username: ${{ github.actor }}
|
|
184
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
185
|
+
|
|
186
|
+
- uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
|
|
187
|
+
with:
|
|
188
|
+
context: .
|
|
189
|
+
file: docker/Dockerfile
|
|
190
|
+
push: true
|
|
191
|
+
tags: ${{ steps.meta.outputs.tags }}
|
|
192
|
+
labels: ${{ steps.meta.outputs.labels }}
|
|
193
|
+
cache-from: type=gha
|
|
194
|
+
cache-to: type=gha,mode=max
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# release-please — one package (python type, bumps pyproject.toml). Releases
|
|
2
|
+
# need the owner's explicit "go release"; the release PR is never merged by CI.
|
|
3
|
+
name: Release Please
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
pull-requests: write
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
release-please:
|
|
15
|
+
uses: quynhonsemiconductor/ci/.github/workflows/release-please.yml@a346843f3ee1848d81ac93974d2a8d04a5ebe7ed # v1.34.6
|
|
16
|
+
secrets:
|
|
17
|
+
QNSC_AUTOMATION_PRIVATE_KEY: ${{ secrets.QNSC_AUTOMATION_PRIVATE_KEY }}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# =============================================================================
|
|
2
|
+
# Release Please · uv lock — keep uv.lock in step with the release version.
|
|
3
|
+
#
|
|
4
|
+
# release-please bumps pyproject.toml but has no uv.lock updater (upstream
|
|
5
|
+
# googleapis/release-please#2561), so every release PR would fail the repo's
|
|
6
|
+
# `uv sync --locked` jobs on a stale chipgraph version entry. This workflow
|
|
7
|
+
# runs on release-please's own branches only, re-locks, and pushes the updated
|
|
8
|
+
# uv.lock back to the release branch with the qnsc-automation App token — an
|
|
9
|
+
# App-token push is what re-triggers the release PR's checks (the default
|
|
10
|
+
# GITHUB_TOKEN push would leave the required checks stuck on the old head).
|
|
11
|
+
# =============================================================================
|
|
12
|
+
name: Release Please · uv lock
|
|
13
|
+
|
|
14
|
+
on:
|
|
15
|
+
pull_request:
|
|
16
|
+
types: [opened, synchronize, reopened]
|
|
17
|
+
|
|
18
|
+
permissions:
|
|
19
|
+
contents: write
|
|
20
|
+
|
|
21
|
+
concurrency:
|
|
22
|
+
group: uv-lock-${{ github.head_ref }}
|
|
23
|
+
cancel-in-progress: true
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
uv-lock:
|
|
27
|
+
name: sync uv.lock with the release version
|
|
28
|
+
# Only release-please's own branches; the App token step below fails loudly
|
|
29
|
+
# until the App is installed and the org secret granted (infra#489 owner steps).
|
|
30
|
+
if: startsWith(github.head_ref, 'release-please--branches--')
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
timeout-minutes: 10
|
|
33
|
+
steps:
|
|
34
|
+
# The push needs the branch itself (a pull_request checkout would be the
|
|
35
|
+
# merge ref) and full history to push back.
|
|
36
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
37
|
+
with:
|
|
38
|
+
ref: ${{ github.head_ref }}
|
|
39
|
+
fetch-depth: 0
|
|
40
|
+
persist-credentials: false
|
|
41
|
+
|
|
42
|
+
- uses: actions/create-github-app-token@64ab729a6294000f5aa4a4bc0b73d1f32bc45510 # v3.3.0
|
|
43
|
+
id: app-token
|
|
44
|
+
with:
|
|
45
|
+
app-id: ${{ vars.QNSC_AUTOMATION_APP_ID }}
|
|
46
|
+
private-key: ${{ secrets.QNSC_AUTOMATION_PRIVATE_KEY }}
|
|
47
|
+
repositories: ${{ github.event.repository.name }}
|
|
48
|
+
permission-contents: write
|
|
49
|
+
|
|
50
|
+
# No GHA cache: the job re-locks only, and a PR-branch cache would be
|
|
51
|
+
# unreadable elsewhere and evict the entries main does use.
|
|
52
|
+
- uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
|
|
53
|
+
with:
|
|
54
|
+
enable-cache: false
|
|
55
|
+
|
|
56
|
+
- name: Re-lock against the bumped pyproject.toml
|
|
57
|
+
run: uv lock
|
|
58
|
+
|
|
59
|
+
- name: Push the updated uv.lock to the release branch
|
|
60
|
+
env:
|
|
61
|
+
TOKEN: ${{ steps.app-token.outputs.token }}
|
|
62
|
+
BRANCH: ${{ github.head_ref }}
|
|
63
|
+
run: |
|
|
64
|
+
set -euo pipefail
|
|
65
|
+
if [ -z "$TOKEN" ]; then
|
|
66
|
+
echo "::error::no qnsc-automation App token — install the App on this repo and grant it the org secret QNSC_AUTOMATION_PRIVATE_KEY (owner steps in infra#489)"
|
|
67
|
+
exit 1
|
|
68
|
+
fi
|
|
69
|
+
if git diff --quiet uv.lock; then
|
|
70
|
+
echo "uv.lock already matches pyproject.toml"
|
|
71
|
+
exit 0
|
|
72
|
+
fi
|
|
73
|
+
git config user.name "qnsc-automation[bot]"
|
|
74
|
+
git config user.email "4166718+qnsc-automation[bot]@users.noreply.github.com"
|
|
75
|
+
git add uv.lock
|
|
76
|
+
git commit -m "chore: sync uv.lock with the release version"
|
|
77
|
+
git push "https://x-access-token:${TOKEN}@github.com/${GITHUB_REPOSITORY}.git" "HEAD:${BRANCH}"
|