Skip to content

Commit d2aef5a

Browse files
author
lalalune
committed
Merge remote-tracking branch 'origin/develop' into develop
# Conflicts: # packages/chip/scripts/check_e1_phone_board_package.py # packages/chip/scripts/check_e1_phone_boolean_interference.py # packages/chip/scripts/generate_e1_phone_cad.py # packages/chip/scripts/generate_e1_phone_routed_mainboard_demo.py # packages/chip/scripts/generate_e1_phone_spec_sheet.py
2 parents ee4dce6 + 66bef62 commit d2aef5a

325 files changed

Lines changed: 51425 additions & 2179 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/gitleaks.yml

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,38 @@ jobs:
2525
# Full history so gitleaks can scan the diff range on PRs.
2626
fetch-depth: 0
2727

28+
- name: Install gitleaks (OSS binary — no license required)
29+
# gitleaks/gitleaks-action@v2 requires a paid license for org repos.
30+
# We download the OSS CLI directly so the scan remains free and
31+
# honors our .gitleaks.toml allowlist + custom rules.
32+
run: |
33+
set -euo pipefail
34+
GITLEAKS_VERSION=8.21.2
35+
curl -sSL -o /tmp/gitleaks.tar.gz \
36+
"https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz"
37+
tar -xzf /tmp/gitleaks.tar.gz -C /tmp gitleaks
38+
sudo install -m 0755 /tmp/gitleaks /usr/local/bin/gitleaks
39+
gitleaks version
40+
2841
- name: Run gitleaks
29-
# gitleaks/gitleaks-action@v2
30-
uses: gitleaks/gitleaks-action@ff98106e4c7b2bc287b24eaf42907196329070c7
31-
env:
32-
# No license — uses default OSS scanning. Set GITLEAKS_LICENSE if/when
33-
# an org license is provisioned for richer scans.
34-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
35-
GITLEAKS_CONFIG: .gitleaks.toml
36-
GITLEAKS_ENABLE_COMMENTS: "false"
37-
GITLEAKS_ENABLE_UPLOAD_ARTIFACT: "true"
38-
GITLEAKS_ENABLE_SUMMARY: "true"
42+
# Scan the full working tree. Returns non-zero on any finding so the
43+
# job fails the build the same way the wrapper action did.
44+
run: |
45+
gitleaks detect \
46+
--config .gitleaks.toml \
47+
--source . \
48+
--verbose \
49+
--redact \
50+
--report-format sarif \
51+
--report-path gitleaks.sarif \
52+
--no-banner
53+
54+
- name: Upload SARIF
55+
if: always()
56+
# actions/upload-artifact@v4
57+
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882
58+
with:
59+
name: gitleaks-sarif
60+
path: gitleaks.sarif
61+
if-no-files-found: ignore
62+
retention-days: 7

.github/workflows/release.yaml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ jobs:
5555
permissions:
5656
contents: write # release commits push lerna version bumps + git tags
5757
id-token: write # OIDC for npm publish
58+
packages: write # publish to GitHub Packages mirror
59+
issues: write # comment on release-tracking issues
60+
actions: read # read other workflow runs for context
5861
# Skip if commit message contains [skip ci]. Alpha releases are disabled;
5962
# prerelease GitHub-release events are skipped so tag pushes are the single
6063
# npm publication path for beta versions.
@@ -65,12 +68,6 @@ jobs:
6568
!(github.ref_type == 'tag' && contains(github.ref_name || '', '-alpha'))
6669
}}
6770
68-
permissions:
69-
contents: write
70-
packages: write
71-
issues: write
72-
actions: read
73-
7471
steps:
7572
- name: Checkout code
7673
uses: actions/checkout@v4

AGENTS.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,31 @@ This is the contributor charter for the elizaOS repository. The
44
companion `CLAUDE.md` covers tooling and review conventions; this file
55
covers what the codebase enforces.
66

7+
## Cloud frontend visual review (REQUIRED for any UI change in `packages/cloud-frontend/`)
8+
9+
Any change in `packages/cloud-frontend/` MUST go through the screenshot +
10+
manual-review loop before being declared done. Run:
11+
12+
```bash
13+
bun run --cwd packages/cloud-frontend audit:cloud
14+
```
15+
16+
This walks every route in `src/App.tsx` (53 routes × desktop + mobile × rest +
17+
hover), logs in with the synthetic injected-ethereum JWT, captures the populated
18+
UI, and auto-stubs `aesthetic-audit-output/manual-review/<slug>.md` for any new
19+
route. You then fill in the verdict for every page you touched (and every page
20+
your change can reach via shared layout/theme/components).
21+
22+
- Verdicts: `good` · `needs-work` · `needs-eyeball` · `broken`.
23+
- No page can stay at `needs-work` or `broken` when a UI task is declared done.
24+
- Iterate the loop at least 5 times for any meaningful redesign — screenshot,
25+
evaluate, fix, re-audit, repeat.
26+
- Hover transitions to black-from-orange, or any blue at all, are banned.
27+
- Full protocol + checklist template: `packages/cloud-frontend/AGENTS.md`.
28+
- E2E coverage gap list per page: `packages/cloud-frontend/docs/E2E_COVERAGE_GAPS.md`.
29+
- Hover/color rules: `packages/cloud-frontend/docs/HOVER_SYSTEM.md`.
30+
- Dashboard IA: `packages/cloud-frontend/docs/DASHBOARD_REDESIGN.md`.
31+
732
## LifeOps app + plugin-health
833

934
LifeOps (`@elizaos/plugin-lifeops`) and the health plugin

packages/chip/Makefile

Lines changed: 66 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,25 @@ PYTHON ?= python3
44
AI_EDA_RUN_ID ?= validation
55
AI_EDA_SETUP_RUN_ID ?= $(AI_EDA_RUN_ID)
66
AI_EDA_TRAINING_HANDOFF_RUN_ID ?= $(AI_EDA_RUN_ID)-training-handoff
7+
AI_EDA_TRAINING_CORPUS_RUN_ID ?= $(AI_EDA_RUN_ID)
8+
AI_EDA_READINESS_RUN_ID ?= $(AI_EDA_RUN_ID)
9+
AI_EDA_EVIDENCE_BUNDLE_RUN_ID ?= $(AI_EDA_READINESS_RUN_ID)
10+
AI_EDA_RESEARCH_RUN_ID ?= $(AI_EDA_READINESS_RUN_ID)
11+
AI_EDA_REPLAY_PREREQUISITES_RUN_ID ?= $(AI_EDA_TRAINING_HANDOFF_RUN_ID)
12+
AI_EDA_REPLAY_PREFLIGHT_RUN_ID ?= $(AI_EDA_READINESS_RUN_ID)
13+
AI_EDA_REPLAY_EXECUTION_RUN_ID ?= $(AI_EDA_REPLAY_PREFLIGHT_RUN_ID)
14+
AI_EDA_REPLAY_COMPARISON_RUN_ID ?= $(AI_EDA_REPLAY_EXECUTION_RUN_ID)
15+
AI_EDA_ALPHACHIP_RUN_ID ?= $(AI_EDA_READINESS_RUN_ID)
16+
AI_EDA_ALPHACHIP_SUCCESSOR_RUN_ID ?= $(AI_EDA_READINESS_RUN_ID)
17+
AI_EDA_FULL_TRAINING_MATRIX_RUN_ID ?= $(AI_EDA_READINESS_RUN_ID)
18+
AI_EDA_BASELINE_REPLAY_EXECUTION ?= build/ai_eda/openlane_replay_execution/$(AI_EDA_RUN_ID)-baseline/openlane_replay_execution.json
19+
AI_EDA_CANDIDATE_REPLAY_EXECUTION ?= build/ai_eda/openlane_replay_execution/$(AI_EDA_RUN_ID)/openlane_replay_execution.json
20+
AI_EDA_REPLAY_CANDIDATE_ID ?= replay-candidate-placeholder
21+
AI_EDA_REPLAY_METRICS ?= build/ai_eda/openlane_replay_inputs/$(AI_EDA_RUN_ID)/final-metrics.json
22+
AI_EDA_REPLAY_OPENLANE_LOG ?= build/ai_eda/openlane_replay_inputs/$(AI_EDA_RUN_ID)/openlane.log
23+
AI_EDA_REPLAY_OPENROAD_LOG ?= build/ai_eda/openlane_replay_inputs/$(AI_EDA_RUN_ID)/openroad.log
24+
AI_EDA_REPLAY_DEF ?= build/ai_eda/openlane_replay_inputs/$(AI_EDA_RUN_ID)/final.def
25+
AI_EDA_REPLAY_GDS ?= build/ai_eda/openlane_replay_inputs/$(AI_EDA_RUN_ID)/final.gds
726
VENV := .venv
827
VENV_PYTHON := $(VENV)/bin/python
928
BENCH_PYTHON := $(if $(wildcard $(VENV_PYTHON)),$(VENV_PYTHON),$(PYTHON))
@@ -1439,11 +1458,11 @@ software-bsp-test:
14391458
evidence-regression-test: no-hardware-action-check software-bsp-test physical-gates-test product-feature-gates-check product-check-status-test benchmark-sim-metrics-test benchmark-calibration-test benchmark-parser-test benchmark-efficiency-scope-test software-bsp-scope-test cpu-ap-scope-test npu-scope-test renode-status-test cocotb cocotb-npu cocotb-contract cocotb-cpu record-tool-versions strict-release-gate-test
14401459
@echo "evidence regression tests complete"
14411460

1442-
.PHONY: ai-eda-source-inventory-check ai-eda-external-assets-check ai-eda-external-intake-check \
1461+
.PHONY: ai-eda-source-inventory-check ai-eda-ai-workload-manifest-check ai-eda-assertion-candidate-manifests-check ai-eda-external-method-wrapper-readiness-check ai-eda-external-assets-check ai-eda-external-intake-check \
14431462
ai-eda-external-assets-dry-run ai-eda-local-rag-index ai-eda-backend-preflight \
14441463
ai-eda-bootstrap-metadata ai-eda-bootstrap-setup-check ai-eda-bootstrap-local-smoke \
14451464
ai-eda-bootstrap-training-handoff ai-eda-alphachip-checkpoint-blocker-check \
1446-
ai-eda-alphachip-checkpoint-blocker-network-check ai-eda-internal-schemas-check \
1465+
ai-eda-alphachip-checkpoint-blocker-network-check ai-eda-alphachip-successor-plan ai-eda-internal-schemas-check \
14471466
ai-eda-internal-fixtures ai-eda-openroad-eda-corpus-convert ai-eda-tilos-macroplacement-convert \
14481467
ai-eda-circuitnet3-convert ai-eda-chipbench-d-convert ai-eda-aieda-idata-convert \
14491468
ai-eda-edalearn-convert ai-eda-macro-place-challenge-convert ai-eda-mlcad-fpga-macro-convert \
@@ -1457,17 +1476,25 @@ evidence-regression-test: no-hardware-action-check software-bsp-test physical-ga
14571476
ai-eda-macro-placement-candidate-eval ai-eda-macro-placement-combined-candidate-eval \
14581477
ai-eda-macro-placement-full-candidate-eval ai-eda-macro-placement-replay-plan \
14591478
ai-eda-macro-placement-replay-preflight ai-eda-macro-placement-combined-replay-plan \
1460-
ai-eda-macro-placement-full-replay-plan ai-eda-candidate-manifests-check \
1479+
ai-eda-macro-placement-full-replay-plan ai-eda-macro-placement-replay-queue ai-eda-openlane-replay-prerequisites ai-eda-candidate-manifests-check \
1480+
ai-eda-openlane-replay-execution ai-eda-openlane-replay-comparison \
14611481
ai-eda-tool-actions-check ai-eda-cocotb-stimulus-dry-run ai-eda-verification-targets \
14621482
ai-eda-physical-design-targets ai-eda-optimization-targets ai-eda-all-target-captures ai-eda-logic-synthesis-recipes \
14631483
ai-eda-logic-synthesis-baseline ai-eda-cuda-preflight ai-eda-cuda-payload \
1464-
ai-eda-cuda-payload-check ai-eda-cuda-run-plan-dry-run ai-eda-cuda-run-plan-safety-matrix ai-eda-cuda-readiness-audit
1484+
ai-eda-cuda-payload-check ai-eda-cuda-full-training-matrix ai-eda-cuda-run-plan-dry-run ai-eda-cuda-run-plan-safety-matrix ai-eda-cuda-readiness-audit \
1485+
ai-eda-cuda-evidence-bundle ai-eda-objective-readiness-audit
14651486
ai-eda-source-inventory-check:
14661487
@AI_EDA_RUN_ID=$(AI_EDA_RUN_ID) $(PYTHON) scripts/check_ai_eda_source_inventory.py
14671488

14681489
ai-eda-ai-workload-manifest-check:
14691490
@$(PYTHON) scripts/ai_eda/check_ai_workload_manifest.py
14701491

1492+
ai-eda-assertion-candidate-manifests-check:
1493+
@$(PYTHON) scripts/ai_eda/check_assertion_candidate_manifests.py
1494+
1495+
ai-eda-external-method-wrapper-readiness-check:
1496+
@$(PYTHON) scripts/ai_eda/check_external_method_wrapper_readiness.py
1497+
14711498
ai-eda-external-assets-check:
14721499
@$(PYTHON) scripts/ai_eda/check_external_asset_manifests.py
14731500

@@ -1503,6 +1530,10 @@ ai-eda-alphachip-checkpoint-blocker-check:
15031530
ai-eda-alphachip-checkpoint-blocker-network-check:
15041531
@$(PYTHON) scripts/ai_eda/check_alphachip_checkpoint_blocker.py --run-id $(AI_EDA_RUN_ID) --network
15051532

1533+
ai-eda-alphachip-successor-plan:
1534+
@$(PYTHON) scripts/ai_eda/capture_alphachip_successor_plan.py --run-id $(AI_EDA_RUN_ID) --training-corpus-run-id $(AI_EDA_TRAINING_CORPUS_RUN_ID) --training-handoff-run-id $(AI_EDA_TRAINING_HANDOFF_RUN_ID)
1535+
@$(PYTHON) scripts/ai_eda/check_alphachip_successor_plan.py --report build/ai_eda/alphachip_successor_plan/$(AI_EDA_RUN_ID)/alphachip_successor_plan.json
1536+
15061537
ai-eda-internal-schemas-check:
15071538
@$(PYTHON) scripts/ai_eda/check_internal_dataset_schemas.py
15081539

@@ -1652,6 +1683,14 @@ ai-eda-macro-placement-full-replay-plan: ai-eda-macro-placement-full-candidate-e
16521683
@$(PYTHON) scripts/ai_eda/check_macro_placement_replay_plan.py --report build/ai_eda/macro_placement_full_replay/$(AI_EDA_RUN_ID)/replay_plan.json
16531684
@$(PYTHON) scripts/ai_eda/check_tool_action_manifests.py --manifests-dir build/ai_eda/macro_placement_full_replay/$(AI_EDA_RUN_ID)/tool_actions
16541685

1686+
ai-eda-macro-placement-replay-queue: ai-eda-macro-placement-full-replay-plan
1687+
@$(PYTHON) scripts/ai_eda/select_macro_placement_replay_queue.py --run-id $(AI_EDA_RUN_ID)
1688+
@$(PYTHON) scripts/ai_eda/check_macro_placement_replay_queue.py --report build/ai_eda/macro_placement_replay_queue/$(AI_EDA_RUN_ID)/replay_queue.json
1689+
1690+
ai-eda-openlane-replay-prerequisites: ai-eda-macro-placement-replay-queue
1691+
@$(PYTHON) scripts/ai_eda/capture_openlane_replay_prerequisites.py --run-id $(AI_EDA_RUN_ID)
1692+
@$(PYTHON) scripts/ai_eda/check_openlane_replay_prerequisites.py --report build/ai_eda/openlane_replay_prerequisites/$(AI_EDA_RUN_ID)/openlane_replay_prerequisites.json
1693+
16551694
ai-eda-candidate-manifests-check: ai-eda-fixture-placement-train
16561695
@$(PYTHON) scripts/ai_eda/check_candidate_manifests.py
16571696

@@ -1745,18 +1784,38 @@ ai-eda-cuda-payload:
17451784
ai-eda-cuda-payload-check:
17461785
@$(PYTHON) scripts/ai_eda/check_cuda_training_payload.py --report build/ai_eda/cuda_training_payloads/$(AI_EDA_RUN_ID)/cuda_training_payload_report.json
17471786

1787+
ai-eda-cuda-full-training-matrix:
1788+
@$(PYTHON) scripts/ai_eda/capture_cuda_full_training_matrix.py --run-id $(AI_EDA_RUN_ID) --payload-run-id $(AI_EDA_RUN_ID) --preflight-run-id $(AI_EDA_RUN_ID)
1789+
@$(PYTHON) scripts/ai_eda/check_cuda_full_training_matrix.py --report build/ai_eda/cuda_full_training_matrix/$(AI_EDA_RUN_ID)/cuda_full_training_matrix.json
1790+
17481791
ai-eda-cuda-run-plan-dry-run: ai-eda-cuda-payload
17491792
@$(PYTHON) scripts/ai_eda/execute_cuda_run_plan.py --plan build/ai_eda/cuda_training_payloads/$(AI_EDA_RUN_ID)/cuda_training_run_plan.json --run-id $(AI_EDA_RUN_ID)
17501793
@$(PYTHON) scripts/ai_eda/check_cuda_run_plan_execution.py --report build/ai_eda/cuda_run_plan_execution/$(AI_EDA_RUN_ID)/cuda_run_plan_execution.json
17511794

17521795
ai-eda-cuda-run-plan-safety-matrix: ai-eda-cuda-payload
17531796
@$(PYTHON) scripts/ai_eda/check_cuda_run_plan_safety_matrix.py --plan build/ai_eda/cuda_training_payloads/$(AI_EDA_RUN_ID)/cuda_training_run_plan.json --run-id $(AI_EDA_RUN_ID)
17541797

1755-
ai-eda-cuda-readiness-audit: ai-eda-cuda-preflight ai-eda-cuda-run-plan-dry-run ai-eda-cuda-run-plan-safety-matrix ai-eda-alphachip-checkpoint-blocker-check ai-eda-optimization-targets ai-eda-macro-placement-replay-preflight
1756-
@$(PYTHON) scripts/ai_eda/capture_cuda_readiness_audit.py --run-id $(AI_EDA_RUN_ID) --setup-run-id $(AI_EDA_SETUP_RUN_ID) --training-handoff-run-id $(AI_EDA_TRAINING_HANDOFF_RUN_ID)
1798+
ai-eda-cuda-readiness-audit: ai-eda-cuda-preflight ai-eda-cuda-run-plan-dry-run ai-eda-cuda-run-plan-safety-matrix ai-eda-alphachip-checkpoint-blocker-check ai-eda-alphachip-successor-plan ai-eda-optimization-targets ai-eda-openlane-replay-prerequisites ai-eda-macro-placement-replay-preflight ai-eda-openlane-replay-comparison ai-eda-cuda-full-training-matrix
1799+
@$(PYTHON) scripts/ai_eda/capture_cuda_readiness_audit.py --run-id $(AI_EDA_RUN_ID) --setup-run-id $(AI_EDA_SETUP_RUN_ID) --training-handoff-run-id $(AI_EDA_TRAINING_HANDOFF_RUN_ID) --full-training-matrix-run-id $(AI_EDA_FULL_TRAINING_MATRIX_RUN_ID)
17571800
@$(PYTHON) scripts/ai_eda/check_cuda_readiness_audit.py --report build/ai_eda/cuda_readiness_audit/$(AI_EDA_RUN_ID)/cuda_readiness_audit.json
17581801

1759-
docs-check: ai-eda-local-rag-index ai-eda-backend-preflight ai-eda-all-target-captures ai-eda-source-inventory-check ai-eda-ai-workload-manifest-check ai-eda-external-assets-check ai-eda-external-intake-check ai-eda-alphachip-checkpoint-blocker-check ai-eda-internal-schemas-check ai-eda-candidate-manifests-check ai-eda-tool-actions-check ai-eda-cocotb-stimulus-dry-run
1802+
ai-eda-cuda-evidence-bundle: ai-eda-cuda-readiness-audit
1803+
@$(PYTHON) scripts/ai_eda/package_cuda_evidence_bundle.py --run-id $(AI_EDA_RUN_ID)
1804+
@$(PYTHON) scripts/ai_eda/check_cuda_evidence_bundle.py --report build/ai_eda/cuda_evidence_bundles/$(AI_EDA_RUN_ID)/cuda_evidence_bundle.json
1805+
1806+
ai-eda-objective-readiness-audit:
1807+
@$(PYTHON) scripts/ai_eda/capture_ai_eda_objective_readiness.py --run-id $(AI_EDA_RUN_ID) --readiness-run-id $(AI_EDA_READINESS_RUN_ID) --evidence-bundle-run-id $(AI_EDA_EVIDENCE_BUNDLE_RUN_ID) --training-handoff-run-id $(AI_EDA_TRAINING_HANDOFF_RUN_ID) --training-corpus-run-id $(AI_EDA_TRAINING_CORPUS_RUN_ID) --research-run-id $(AI_EDA_RESEARCH_RUN_ID) --replay-prerequisites-run-id $(AI_EDA_REPLAY_PREREQUISITES_RUN_ID) --replay-preflight-run-id $(AI_EDA_REPLAY_PREFLIGHT_RUN_ID) --replay-execution-run-id $(AI_EDA_REPLAY_EXECUTION_RUN_ID) --replay-comparison-run-id $(AI_EDA_REPLAY_COMPARISON_RUN_ID) --alphachip-run-id $(AI_EDA_ALPHACHIP_RUN_ID) --alphachip-successor-run-id $(AI_EDA_ALPHACHIP_SUCCESSOR_RUN_ID) --full-training-matrix-run-id $(AI_EDA_FULL_TRAINING_MATRIX_RUN_ID)
1808+
@$(PYTHON) scripts/ai_eda/check_ai_eda_objective_readiness.py --report build/ai_eda/objective_readiness/$(AI_EDA_RUN_ID)/objective_readiness.json
1809+
1810+
ai-eda-openlane-replay-execution:
1811+
@$(PYTHON) scripts/ai_eda/capture_openlane_replay_execution.py --run-id $(AI_EDA_RUN_ID) --candidate-id $(AI_EDA_REPLAY_CANDIDATE_ID) --metrics $(AI_EDA_REPLAY_METRICS) --openlane-log $(AI_EDA_REPLAY_OPENLANE_LOG) --openroad-log $(AI_EDA_REPLAY_OPENROAD_LOG) --def-file $(AI_EDA_REPLAY_DEF) --gds-file $(AI_EDA_REPLAY_GDS)
1812+
@$(PYTHON) scripts/ai_eda/check_openlane_replay_execution.py --report build/ai_eda/openlane_replay_execution/$(AI_EDA_RUN_ID)/openlane_replay_execution.json
1813+
1814+
ai-eda-openlane-replay-comparison: ai-eda-openlane-replay-execution
1815+
@$(PYTHON) scripts/ai_eda/capture_openlane_replay_comparison.py --run-id $(AI_EDA_RUN_ID) --baseline-execution $(AI_EDA_BASELINE_REPLAY_EXECUTION) --candidate-execution $(AI_EDA_CANDIDATE_REPLAY_EXECUTION)
1816+
@$(PYTHON) scripts/ai_eda/check_openlane_replay_comparison.py --report build/ai_eda/openlane_replay_comparison/$(AI_EDA_RUN_ID)/openlane_replay_comparison.json
1817+
1818+
docs-check: ai-eda-local-rag-index ai-eda-backend-preflight ai-eda-all-target-captures ai-eda-source-inventory-check ai-eda-ai-workload-manifest-check ai-eda-assertion-candidate-manifests-check ai-eda-external-assets-check ai-eda-external-intake-check ai-eda-alphachip-checkpoint-blocker-check ai-eda-external-method-wrapper-readiness-check ai-eda-internal-schemas-check ai-eda-candidate-manifests-check ai-eda-tool-actions-check ai-eda-cocotb-stimulus-dry-run
17601819
@$(PYTHON) scripts/docs_check.py
17611820

17621821
tool-versions:

0 commit comments

Comments
 (0)