@qijenchen/design-system 0.1.0-beta.92 → 0.1.0-beta.95
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.
- package/AGENTS.md +6 -208
- package/CLAUDE.md +2 -23
- package/dist/components/DataTable/data-table-filter-value-picker.js +4 -0
- package/dist/components/DataTable/data-table-filter-value-picker.js.map +1 -1
- package/dist/components/DataTable/filter-tree.js +6 -0
- package/dist/components/DataTable/filter-tree.js.map +1 -1
- package/dist/patterns/element-anatomy/item-anatomy.js +1 -1
- package/ds-canonical/adapters/claude/agents/README.md +58 -0
- package/ds-canonical/adapters/claude/agents/canonical-reviewer.md +14 -0
- package/ds-canonical/adapters/claude-root-instructions.md +24 -0
- package/ds-canonical/adapters/claude-settings-base.json +172 -0
- package/ds-canonical/commands/README.md +8 -13
- package/ds-canonical/commands/gov-status.md +5 -75
- package/ds-canonical/fork/AGENTS.md +116 -213
- package/ds-canonical/fork/CLAUDE.md +54 -0
- package/ds-canonical/fork/codex/agents/skills/bug-fix-rhythm/SKILL.md +207 -0
- package/ds-canonical/fork/codex/agents/skills/code-quality-audit/SKILL.md +71 -0
- package/ds-canonical/fork/codex/agents/skills/delivery-handoff/SKILL.md +244 -0
- package/ds-canonical/fork/codex/agents/skills/delivery-handoff/references/flow-diagram.md +180 -0
- package/ds-canonical/fork/codex/agents/skills/delivery-handoff/references/handoff-template.md +177 -0
- package/ds-canonical/fork/codex/agents/skills/delivery-handoff/references/inventory-checklist.md +196 -0
- package/ds-canonical/fork/codex/agents/skills/independent-review/SKILL.md +29 -19
- package/ds-canonical/fork/codex/agents/skills/independent-review/agents/openai.yaml +4 -0
- package/ds-canonical/fork/codex/agents/skills/independent-review/references/evidence-contract.md +24 -0
- package/ds-canonical/fork/codex/agents/skills/performance-audit/SKILL.md +114 -0
- package/ds-canonical/fork/codex/agents/skills/product-ui-audit/SKILL.md +244 -0
- package/ds-canonical/fork/codex/agents/skills/product-ui-audit/references/audit-checks.md +250 -0
- package/ds-canonical/fork/codex/agents/skills/product-ui-audit/references/common-misuses.md +329 -0
- package/ds-canonical/fork/codex/agents/skills/product-ui-audit/references/report-template.md +163 -0
- package/ds-canonical/fork/codex/agents/skills/propose-options/SKILL.md +190 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/SKILL.md +246 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/references/audit-checks.md +39 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/references/benchmark-sources.md +94 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/references/checkpoints.md +200 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/references/evaluation-matrix.md +142 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/references/ooux-template.md +198 -0
- package/ds-canonical/fork/codex/agents/skills/prototype/references/proposal-template.md +230 -0
- package/ds-canonical/fork/codex/agents/skills/scan-similar-bugs/SKILL.md +212 -0
- package/ds-canonical/fork/codex/agents/skills/ux-audit/SKILL.md +135 -0
- package/ds-canonical/fork/codex/agents/skills/visual-audit/SKILL.md +259 -0
- package/ds-canonical/fork/codex/agents/skills/visual-audit/output/.gitkeep +0 -0
- package/ds-canonical/fork/codex/agents/skills/visual-audit/references/audit-architecture.md +101 -0
- package/ds-canonical/fork/codex/agents/skills/visual-audit/references/visual-checklist.md +297 -0
- package/ds-canonical/fork/codex/agents/skills/visual-audit/references/world-class-benchmarks.md +198 -0
- package/ds-canonical/fork/codex/hooks.json +44 -3
- package/ds-canonical/fork/common/closed-tool-execution.mjs +1001 -0
- package/ds-canonical/fork/common/instruction.md +116 -0
- package/ds-canonical/fork/consumer/governance-check.mjs +3059 -0
- package/ds-canonical/fork/consumer/lib/closed-tool-execution.mjs +1001 -0
- package/ds-canonical/fork/consumer/lock.json +189 -0
- package/ds-canonical/fork/consumer/lock.schema.json +338 -0
- package/ds-canonical/fork/consumer/managed-files/0235cf6b3fd402a3717881dc205b5bf77aed7632e7d7d6f1811a40e3033bd816.blob +145 -0
- package/ds-canonical/fork/consumer/managed-files/145aab4b4fc470fc9ba7679b4a1d87d4f6a6d604940bd40f8d675c8af696498f.blob +47 -0
- package/ds-canonical/fork/consumer/managed-files/189e551431181e4a88783c02130d2787b801ef731c86e35bcde89a7313aa020e.blob +149 -0
- package/ds-canonical/fork/consumer/managed-files/24ad71c8613ddcf6fd23818cb3bb477a1fb6d83af4550b0bad43099813088686.blob +28 -0
- package/ds-canonical/fork/consumer/managed-files/2d1ef5617a5ce3c39ad9aae1c42af7d199f9270c0a0ccb490b63d62dbc6913db.blob +1001 -0
- package/ds-canonical/fork/consumer/managed-files/3625e02235cf166a50649a4d704cfb68fead69d0e168c481df013ebae9f6be25.blob +1412 -0
- package/ds-canonical/fork/consumer/managed-files/3ddedc67b464bdfe3dde9803a2d917920c96d633678b802eee638a44cd47366a.blob +8 -0
- package/ds-canonical/fork/consumer/managed-files/423729840acdd43c812f17c245b871716c6b60f76e4d3e94864d0e34a815bf8d.blob +348 -0
- package/ds-canonical/fork/consumer/managed-files/46f10bc55cdfdf834d0749eebff42ea0bb8576f361b36d2b6ba1851354c50150.blob +464 -0
- package/ds-canonical/fork/consumer/managed-files/475fba657eaeb8abd88f60635f3eadab27a9d0d3114ba4fffc65f43a2a0fe6e2.blob +124 -0
- package/ds-canonical/fork/consumer/managed-files/61c6aca6d7f04bedbf556eaa9d3043681fe48cbe0e93a8ccb1d69a7c5e23fdcf.blob +113 -0
- package/ds-canonical/fork/consumer/managed-files/63061e05969667005020166ea2ae7df3c96663f7a928e7dd3eebc1471022df56.blob +2398 -0
- package/ds-canonical/fork/consumer/managed-files/65410b66e8799a560e07b71779c186fed2a0ef50575ac44745df7a0938a9c2b4.blob +317 -0
- package/ds-canonical/fork/consumer/managed-files/6929a3c8bb4d69c507720b4754aeb339c6cbb8ff655e0a381d76606d64695e38.blob +393 -0
- package/ds-canonical/fork/consumer/managed-files/6b746628ac11fcccbe277ef6fea94cc2a7b90ea2822e83536eae80d5ee4b3fa5.blob +167 -0
- package/ds-canonical/fork/consumer/managed-files/76d485470d30ff014afacf7ce643763de9f4f956d9fc8128dbc1814774cf2e63.blob +671 -0
- package/ds-canonical/fork/consumer/managed-files/77e06f62670dfee01e9b5e8b0f8dad085ce711d75538c1fb0679d9818acaca82.blob +424 -0
- package/ds-canonical/fork/consumer/managed-files/7937321877e5c34c27dae36c0d507d21cd42fa3f46a8f11a284b8b4a52b6faa4.blob +84 -0
- package/ds-canonical/fork/consumer/managed-files/794bb911ba8ebef58ab0d44a55b9968a19d2c62bcfb310b1ee3a84166f087f21.blob +880 -0
- package/ds-canonical/fork/consumer/managed-files/7b17835d0ceb17cdcdcaf930540a3e5d0943a34a747ac43c12ca8cd485c11581.blob +44 -0
- package/ds-canonical/fork/consumer/managed-files/7eb6cc60abfdabaf6617c336058fad1454ccde08889295767bfd9b7fd153cc6e.blob +778 -0
- package/ds-canonical/fork/consumer/managed-files/81037efa5b3b9f4a875704005fb268acdc9233bb901f44902e4e37e1da92b8e3.blob +46 -0
- package/ds-canonical/fork/consumer/managed-files/884721550b56308812b20917adac7a12f36fdb4ecda6b02460a7f5a219c0c966.blob +78 -0
- package/ds-canonical/fork/consumer/managed-files/91f414b9462ddc1e4be1d4c6ca4ac7a7340a6eec9e98ee109cbc049d3b354b6a.blob +36 -0
- package/ds-canonical/fork/consumer/managed-files/92e4828cdcb96ff0d01daa16f6885f24045a8e72820665650f2a1890dc3a446c.blob +121 -0
- package/ds-canonical/fork/consumer/managed-files/93a89f16f6717d1e4e4e27ec20ef916e3355c7aa890ca74cd9b12db30d8a899f.blob +43 -0
- package/ds-canonical/fork/consumer/managed-files/974521d6b8fe796ea4c58b3c78b0c2b8a1be262b97100d77aaf4cc9c7724bcab.blob +45 -0
- package/ds-canonical/fork/consumer/managed-files/9791c85388d2e2e2bd564e2550fadc3351c4c960a47ce838098afcba7544eb90.blob +959 -0
- package/ds-canonical/fork/consumer/managed-files/a448d2222133335c30e6fda5116e26a40db3283a19d62ccc0663c30d272262a7.blob +174 -0
- package/ds-canonical/fork/consumer/managed-files/ab072e7f2eca51f0e18a5e18c4b333260ee5d219a12cc6df5bb2d683f0b2734d.blob +2636 -0
- package/ds-canonical/fork/consumer/managed-files/bc44cabad181f766611dab6a8f52d81100afadd50ac59799015e8ba7bf46d9eb.blob +596 -0
- package/ds-canonical/fork/consumer/managed-files/c4aa767f11714467de0038a2149cf78074baddc17fc6a9e074b6aed7544c6f3c.blob +80 -0
- package/ds-canonical/fork/consumer/managed-files/c893e9b734b162f4c631fef871128c16a9ab565f796a0e76d7f320f821f220f5.blob +41 -0
- package/ds-canonical/fork/consumer/managed-files/cd9c61f8ff24fb9bcc3663e346e2cfa419cfb84e02aae18d3dc66dd192681696.blob +9 -0
- package/ds-canonical/fork/consumer/managed-files/da2ad2737315d25a5300905ddefd62f1695056a8a1af155c5b34170ad9923bce.blob +38 -0
- package/ds-canonical/fork/consumer/managed-files/e1b11160d6c4043002d2cbff6d9a4ae551698a96137773c4244dadfac152fcb0.blob +222 -0
- package/ds-canonical/fork/consumer/managed-files/e26057408661597aac4a57cdf7e30e2f9d0afb1b9a2dbbb692c3805cd9028ca5.blob +250 -0
- package/ds-canonical/fork/consumer/managed-files/e68ae1915965d8e17d4b2441c00c2b97fe062ea308ae8535c9eebb2fc16fa245.blob +20 -0
- package/ds-canonical/fork/consumer/managed-files/e71c65f45c6af7ce12b6b3c0d8028f185da5b719e2050c9b2a6b243d41ae4878.blob +182 -0
- package/ds-canonical/fork/consumer/managed-files/e813096d69c49812e40e00be9ac8fa14d77f0ec1f97ab4c45cb096b3bedd35de.blob +3 -0
- package/ds-canonical/fork/consumer/managed-files/e930ebca6fd8eeb30802aac0930efae7bcc44cc0996f24de07c11ca6a081fedf.blob +277 -0
- package/ds-canonical/fork/consumer/managed-files/ea94e914d5c8acb84ad7660e5bda0f01b6ccc8cf96b0f6b1ce048f8938d0f5b5.blob +47 -0
- package/ds-canonical/fork/consumer/managed-files/f4db6e616d5229aa7e700c6a3ace022cb9d90baae74e38ca65fce617f18e0d9b.blob +110 -0
- package/ds-canonical/fork/consumer/managed-files/faa128c26102415dc5345e68698efbbd28a395c35ee278dceae044cf430692b2.blob +11 -0
- package/ds-canonical/fork/governance.lock +1552 -103
- package/ds-canonical/fork/hooks/_log-fire.sh +109 -12
- package/ds-canonical/fork/hooks/block_prototype_imports.py +148 -29
- package/ds-canonical/fork/hooks/check_chrome_header_avatar_canonical.sh +23 -12
- package/ds-canonical/fork/hooks/check_consumer_app_invariants.sh +116 -65
- package/ds-canonical/fork/hooks/check_consumer_code_quality.sh +140 -0
- package/ds-canonical/fork/hooks/check_ds_anchor_preflight.sh +84 -30
- package/ds-canonical/fork/hooks/check_dynamic_tailwind_class.sh +16 -6
- package/ds-canonical/fork/hooks/check_escape_marker_abuse.sh +65 -21
- package/ds-canonical/fork/hooks/check_field_family_invariants.sh +90 -24
- package/ds-canonical/fork/hooks/check_fork_product_quality.sh +8 -6
- package/ds-canonical/fork/hooks/check_item_list_gap.sh +4 -2
- package/ds-canonical/fork/hooks/check_layout_space_magic_numbers.sh +31 -13
- package/ds-canonical/fork/hooks/check_opacity_token_usage.sh +220 -95
- package/ds-canonical/fork/hooks/check_pattern_invariants.sh +73 -14
- package/ds-canonical/fork/hooks/check_sidebar_menu_button_implicit_wrap.sh +23 -12
- package/ds-canonical/fork/hooks/check_story_determinism.sh +1 -1
- package/ds-canonical/fork/hooks/check_story_invariants.sh +342 -61
- package/ds-canonical/fork/hooks/check_tabs_content_chrome_body_double_gap.sh +52 -23
- package/ds-canonical/fork/hooks/check_tailwind_wildcard_in_docs.sh +20 -13
- package/ds-canonical/fork/hooks/inject_deploy_url_after_push.sh +105 -22
- package/ds-canonical/fork/hooks/lib/_hook_integrity.sh +158 -0
- package/ds-canonical/fork/hooks/lib/_provider_paths.sh +162 -0
- package/ds-canonical/fork/launchers/approval-evidence.mjs +1131 -0
- package/ds-canonical/fork/launchers/authority-decision-evidence.mjs +413 -0
- package/ds-canonical/fork/launchers/canonical-order.mjs +8 -0
- package/ds-canonical/fork/launchers/fork-governance-dispatcher.sh +139 -29
- package/ds-canonical/fork/launchers/format-provider-hook-output.mjs +25 -0
- package/ds-canonical/fork/launchers/independent-review.mjs +490 -0
- package/ds-canonical/fork/launchers/inject_fork_governance_preamble.sh +88 -43
- package/ds-canonical/fork/launchers/normalize-provider-event.mjs +355 -0
- package/ds-canonical/fork/launchers/product-hook-dispatch-runtime.mjs +1067 -0
- package/ds-canonical/fork/launchers/provider-hook-normalization.mjs +1646 -0
- package/ds-canonical/fork/launchers/provider-hook-output-transport.mjs +525 -0
- package/ds-canonical/fork/launchers/settings-hooks.json +30 -53
- package/ds-canonical/fork/manifest.json +1881 -23
- package/ds-canonical/fork/providers/claude/hook-config.json +333 -0
- package/ds-canonical/fork/providers/claude/instruction.md +54 -0
- package/ds-canonical/fork/providers/claude/skills/bug-fix-rhythm/SKILL.md +207 -0
- package/ds-canonical/fork/providers/claude/skills/code-quality-audit/SKILL.md +71 -0
- package/ds-canonical/fork/providers/claude/skills/delivery-handoff/SKILL.md +244 -0
- package/ds-canonical/fork/providers/claude/skills/delivery-handoff/references/flow-diagram.md +180 -0
- package/ds-canonical/fork/providers/claude/skills/delivery-handoff/references/handoff-template.md +177 -0
- package/ds-canonical/fork/providers/claude/skills/delivery-handoff/references/inventory-checklist.md +196 -0
- package/ds-canonical/fork/providers/claude/skills/independent-review/SKILL.md +43 -0
- package/ds-canonical/fork/providers/claude/skills/independent-review/agents/openai.yaml +4 -0
- package/ds-canonical/fork/providers/claude/skills/independent-review/references/evidence-contract.md +24 -0
- package/ds-canonical/fork/providers/claude/skills/performance-audit/SKILL.md +114 -0
- package/ds-canonical/fork/providers/claude/skills/product-ui-audit/SKILL.md +244 -0
- package/ds-canonical/fork/providers/claude/skills/product-ui-audit/references/audit-checks.md +250 -0
- package/ds-canonical/fork/providers/claude/skills/product-ui-audit/references/common-misuses.md +329 -0
- package/ds-canonical/fork/providers/claude/skills/product-ui-audit/references/report-template.md +163 -0
- package/ds-canonical/fork/providers/claude/skills/propose-options/SKILL.md +190 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/SKILL.md +246 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/references/audit-checks.md +39 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/references/benchmark-sources.md +94 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/references/checkpoints.md +200 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/references/evaluation-matrix.md +142 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/references/ooux-template.md +198 -0
- package/ds-canonical/fork/providers/claude/skills/prototype/references/proposal-template.md +230 -0
- package/ds-canonical/fork/providers/claude/skills/scan-similar-bugs/SKILL.md +212 -0
- package/ds-canonical/fork/providers/claude/skills/ux-audit/SKILL.md +135 -0
- package/ds-canonical/fork/providers/claude/skills/visual-audit/SKILL.md +259 -0
- package/ds-canonical/fork/providers/claude/skills/visual-audit/output/.gitkeep +0 -0
- package/ds-canonical/fork/providers/claude/skills/visual-audit/references/audit-architecture.md +101 -0
- package/ds-canonical/fork/providers/claude/skills/visual-audit/references/visual-checklist.md +297 -0
- package/ds-canonical/fork/providers/claude/skills/visual-audit/references/world-class-benchmarks.md +198 -0
- package/ds-canonical/fork/providers/codex/hook-config.json +57 -0
- package/ds-canonical/fork/providers/codex/skills/bug-fix-rhythm/SKILL.md +207 -0
- package/ds-canonical/fork/providers/codex/skills/code-quality-audit/SKILL.md +71 -0
- package/ds-canonical/fork/providers/codex/skills/delivery-handoff/SKILL.md +244 -0
- package/ds-canonical/fork/providers/codex/skills/delivery-handoff/references/flow-diagram.md +180 -0
- package/ds-canonical/fork/providers/codex/skills/delivery-handoff/references/handoff-template.md +177 -0
- package/ds-canonical/fork/providers/codex/skills/delivery-handoff/references/inventory-checklist.md +196 -0
- package/ds-canonical/fork/providers/codex/skills/independent-review/SKILL.md +43 -0
- package/ds-canonical/fork/providers/codex/skills/independent-review/agents/openai.yaml +4 -0
- package/ds-canonical/fork/providers/codex/skills/independent-review/references/evidence-contract.md +24 -0
- package/ds-canonical/fork/providers/codex/skills/performance-audit/SKILL.md +114 -0
- package/ds-canonical/fork/providers/codex/skills/product-ui-audit/SKILL.md +244 -0
- package/ds-canonical/fork/providers/codex/skills/product-ui-audit/references/audit-checks.md +250 -0
- package/ds-canonical/fork/providers/codex/skills/product-ui-audit/references/common-misuses.md +329 -0
- package/ds-canonical/fork/providers/codex/skills/product-ui-audit/references/report-template.md +163 -0
- package/ds-canonical/fork/providers/codex/skills/propose-options/SKILL.md +190 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/SKILL.md +246 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/references/audit-checks.md +39 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/references/benchmark-sources.md +94 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/references/checkpoints.md +200 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/references/evaluation-matrix.md +142 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/references/ooux-template.md +198 -0
- package/ds-canonical/fork/providers/codex/skills/prototype/references/proposal-template.md +230 -0
- package/ds-canonical/fork/providers/codex/skills/scan-similar-bugs/SKILL.md +212 -0
- package/ds-canonical/fork/providers/codex/skills/ux-audit/SKILL.md +135 -0
- package/ds-canonical/fork/providers/codex/skills/visual-audit/SKILL.md +259 -0
- package/ds-canonical/fork/providers/codex/skills/visual-audit/output/.gitkeep +0 -0
- package/ds-canonical/fork/providers/codex/skills/visual-audit/references/audit-architecture.md +101 -0
- package/ds-canonical/fork/providers/codex/skills/visual-audit/references/visual-checklist.md +297 -0
- package/ds-canonical/fork/providers/codex/skills/visual-audit/references/world-class-benchmarks.md +198 -0
- package/ds-canonical/fork/references/story-baseline-registry.json +117 -0
- package/ds-canonical/fork/references/story-baseline-registry.schema.json +145 -0
- package/ds-canonical/fork/references/utility-registry.json +377 -0
- package/ds-canonical/fork/references/utility-registry.schema.json +373 -0
- package/ds-canonical/fork/review/canonical-order.mjs +8 -0
- package/ds-canonical/fork/review/provider-review-binding.mjs +2377 -0
- package/ds-canonical/fork/skills/bug-fix-rhythm/SKILL.md +19 -12
- package/ds-canonical/fork/skills/code-quality-audit/SKILL.md +19 -15
- package/ds-canonical/fork/skills/delivery-handoff/SKILL.md +17 -11
- package/ds-canonical/fork/skills/independent-review/SKILL.md +37 -0
- package/ds-canonical/fork/skills/independent-review/agents/openai.yaml +4 -0
- package/ds-canonical/fork/skills/independent-review/references/evidence-contract.md +24 -0
- package/ds-canonical/fork/skills/performance-audit/SKILL.md +11 -8
- package/ds-canonical/fork/skills/product-ui-audit/SKILL.md +31 -21
- package/ds-canonical/fork/skills/product-ui-audit/references/audit-checks.md +9 -5
- package/ds-canonical/fork/skills/product-ui-audit/references/report-template.md +30 -26
- package/ds-canonical/fork/skills/propose-options/SKILL.md +6 -4
- package/ds-canonical/fork/skills/prototype/SKILL.md +21 -21
- package/ds-canonical/fork/skills/prototype/references/audit-checks.md +7 -6
- package/ds-canonical/fork/skills/prototype/references/checkpoints.md +26 -17
- package/ds-canonical/fork/skills/prototype/references/evaluation-matrix.md +2 -1
- package/ds-canonical/fork/skills/prototype/references/ooux-template.md +1 -1
- package/ds-canonical/fork/skills/prototype/references/proposal-template.md +6 -5
- package/ds-canonical/fork/skills/scan-similar-bugs/SKILL.md +28 -27
- package/ds-canonical/fork/skills/ux-audit/SKILL.md +8 -5
- package/ds-canonical/fork/skills/visual-audit/SKILL.md +37 -43
- package/ds-canonical/fork/skills/visual-audit/references/audit-architecture.md +15 -15
- package/ds-canonical/fork/skills/visual-audit/references/visual-checklist.md +6 -6
- package/ds-canonical/fork/skills/visual-audit/references/world-class-benchmarks.md +2 -2
- package/ds-canonical/hooks/README.md +37 -23
- package/ds-canonical/hooks/_log-fire.sh +109 -12
- package/ds-canonical/hooks/auto_regen_ds_barrel.sh +52 -20
- package/ds-canonical/hooks/block_prototype_imports.py +148 -29
- package/ds-canonical/hooks/check_audit_post_report_validator.sh +76 -66
- package/ds-canonical/hooks/check_audit_sample_escape.sh +4 -4
- package/ds-canonical/hooks/check_benchmark_citation.sh +3 -3
- package/ds-canonical/hooks/check_canonical_propagation.sh +81 -22
- package/ds-canonical/hooks/check_chrome_header_avatar_canonical.sh +22 -11
- package/ds-canonical/hooks/check_codex_brief_invariants.sh +100 -56
- package/ds-canonical/hooks/check_codex_collab_5step.sh +31 -25
- package/ds-canonical/hooks/check_consumer_app_invariants.sh +116 -65
- package/ds-canonical/hooks/check_consumer_code_quality.sh +140 -0
- package/ds-canonical/hooks/check_datatable_invariants.sh +103 -25
- package/ds-canonical/hooks/check_dim_count_drift.sh +5 -4
- package/ds-canonical/hooks/check_ds_anchor_preflight.sh +83 -29
- package/ds-canonical/hooks/check_dynamic_tailwind_class.sh +16 -6
- package/ds-canonical/hooks/check_escape_marker_abuse.sh +65 -21
- package/ds-canonical/hooks/check_field_controls_contracts.sh +10 -8
- package/ds-canonical/hooks/check_field_family_invariants.sh +90 -24
- package/ds-canonical/hooks/check_file_size_budget.sh +32 -14
- package/ds-canonical/hooks/check_full_story_visual_interaction_sweep.sh +60 -21
- package/ds-canonical/hooks/check_item_list_gap.sh +4 -2
- package/ds-canonical/hooks/check_layout_space_magic_numbers.sh +31 -13
- package/ds-canonical/hooks/check_main_branch_workbench.sh +27 -68
- package/ds-canonical/hooks/check_naming_and_abstraction.sh +20 -9
- package/ds-canonical/hooks/check_opacity_token_usage.sh +220 -95
- package/ds-canonical/hooks/check_orphan_ds_css.sh +48 -18
- package/ds-canonical/hooks/check_overlay_open_focus_escape_probe.sh +29 -11
- package/ds-canonical/hooks/check_pattern_invariants.sh +73 -14
- package/ds-canonical/hooks/check_peoplepicker_ssot_drift.sh +4 -4
- package/ds-canonical/hooks/check_pixel_quantified_audit.sh +3 -2
- package/ds-canonical/hooks/check_plugin_fork_health.sh +151 -41
- package/ds-canonical/hooks/check_post_main_ssot_propagate.sh +5 -109
- package/ds-canonical/hooks/check_propose_discipline.sh +116 -29
- package/ds-canonical/hooks/check_propose_pre_grep_verify.sh +6 -4
- package/ds-canonical/hooks/check_propose_without_benchmark.sh +10 -6
- package/ds-canonical/hooks/check_select_all_canonical.sh +1 -1
- package/ds-canonical/hooks/check_sidebar_menu_button_implicit_wrap.sh +22 -11
- package/ds-canonical/hooks/check_solo_workflow.sh +117 -186
- package/ds-canonical/hooks/check_spec_class_drift.sh +33 -19
- package/ds-canonical/hooks/check_ssot_header_declaration.sh +6 -5
- package/ds-canonical/hooks/check_story_determinism.sh +1 -1
- package/ds-canonical/hooks/check_story_invariants.sh +526 -213
- package/ds-canonical/hooks/check_storybook_addon_packaging.sh +65 -15
- package/ds-canonical/hooks/check_substantive_edit_approval_preflight.sh +137 -67
- package/ds-canonical/hooks/check_tabs_content_chrome_body_double_gap.sh +52 -23
- package/ds-canonical/hooks/check_tailwind_wildcard_in_docs.sh +20 -13
- package/ds-canonical/hooks/check_wrapper_primitive_schema_drift.sh +15 -12
- package/ds-canonical/hooks/chrome_header_dispatcher.sh +75 -26
- package/ds-canonical/hooks/enforce_home_charter.sh +29 -8
- package/ds-canonical/hooks/governance_control_plane.sh +15 -0
- package/ds-canonical/hooks/inject_deploy_url_after_push.sh +105 -22
- package/ds-canonical/hooks/inject_pending_self_audit.sh +27 -24
- package/ds-canonical/hooks/lib/_app_shell_primary_header_consistency.sh +77 -29
- package/ds-canonical/hooks/lib/_approval_re.sh +5 -6
- package/ds-canonical/hooks/lib/_chrome_header_handcraft.sh +66 -20
- package/ds-canonical/hooks/lib/_code_quality.sh +9 -9
- package/ds-canonical/hooks/lib/_cva_default_sync.sh +11 -13
- package/ds-canonical/hooks/lib/_governance_coverage_check.sh +48 -21
- package/ds-canonical/hooks/lib/_hardcoded_strings.sh +13 -10
- package/ds-canonical/hooks/lib/_header_with_tabs_border.sh +68 -48
- package/ds-canonical/hooks/lib/_hook_integrity.sh +158 -0
- package/ds-canonical/hooks/lib/_layout_space_canonical.sh +5 -5
- package/ds-canonical/hooks/lib/_overlay_handcraft.sh +21 -23
- package/ds-canonical/hooks/lib/_person_data_richness.sh +5 -5
- package/ds-canonical/hooks/lib/_provider_paths.sh +162 -0
- package/ds-canonical/hooks/lib/_story_compile_drift.sh +5 -5
- package/ds-canonical/hooks/lib/_tab_lg_chrome_header_equal.sh +247 -27
- package/ds-canonical/hooks/lib/_token_hygiene.sh +39 -22
- package/ds-canonical/hooks/lib/approval-evidence.mjs +1131 -0
- package/ds-canonical/hooks/lib/audit-report-validator.mjs +118 -0
- package/ds-canonical/hooks/lib/provider-marker-regex.mjs +23 -0
- package/ds-canonical/hooks/lib/tsx-governance-analysis.mjs +410 -0
- package/ds-canonical/hooks/log_governance_fires.sh +45 -13
- package/ds-canonical/hooks/log_skill_invokes.sh +8 -7
- package/ds-canonical/hooks/post_edit_dispatcher.sh +106 -28
- package/ds-canonical/hooks/registrations.json +488 -0
- package/ds-canonical/hooks/registrations.schema.json +58 -0
- package/ds-canonical/hooks/retired/2026-06-11-prune-merge/check_propose_plain_chinese.sh +1 -1
- package/ds-canonical/hooks/retired/check_governance_compliance.sh +1 -1
- package/ds-canonical/hooks/session_start_governance_check.sh +109 -78
- package/ds-canonical/hooks/stop_audit_content_quality.sh +20 -0
- package/ds-canonical/hooks/stop_extract_canonical_rules.sh +20 -0
- package/ds-canonical/hooks/stop_passive_logging.sh +133 -59
- package/ds-canonical/hooks/stop_self_audit.sh +349 -210
- package/ds-canonical/hooks/tests/fixtures/transcripts/claude-transcript-jsonl-v1.jsonl +3 -0
- package/ds-canonical/hooks/tests/fixtures/transcripts/claude-transcript-jsonl-v2.jsonl +3 -0
- package/ds-canonical/hooks/tests/registration-output-contracts.mjs +151 -0
- package/ds-canonical/hooks/tests/run-all.sh +35 -5
- package/ds-canonical/hooks/tests/test_auto_regen_ds_barrel.sh +48 -4
- package/ds-canonical/hooks/tests/test_block_prototype_imports.sh +157 -9
- package/ds-canonical/hooks/tests/test_check_app_shell_primary_header_consistency.sh +265 -127
- package/ds-canonical/hooks/tests/test_check_audit_post_report_validator.sh +119 -12
- package/ds-canonical/hooks/tests/test_check_audit_sample_escape.sh +0 -0
- package/ds-canonical/hooks/tests/test_check_benchmark_citation.sh +0 -0
- package/ds-canonical/hooks/tests/test_check_canonical_propagation.sh +56 -5
- package/ds-canonical/hooks/tests/test_check_chrome_header_avatar_canonical.sh +6 -6
- package/ds-canonical/hooks/tests/test_check_chrome_header_handcraft.sh +193 -100
- package/ds-canonical/hooks/tests/test_check_codex_brief_invariants.sh +143 -17
- package/ds-canonical/hooks/tests/test_check_codex_collab_5step.sh +49 -5
- package/ds-canonical/hooks/tests/test_check_consumer_app_invariants.sh +128 -0
- package/ds-canonical/hooks/tests/test_check_consumer_app_story_title.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_consumer_code_quality.sh +64 -0
- package/ds-canonical/hooks/tests/test_check_consumer_ds_primitive_misuse.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_consumer_no_ds_catalog.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_consumer_story_baseline.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_data_table_size_num_to_meta_width.sh +26 -8
- package/ds-canonical/hooks/tests/test_check_datatable_invariants.sh +126 -12
- package/ds-canonical/hooks/tests/test_check_dim_count_drift.sh +13 -8
- package/ds-canonical/hooks/tests/test_check_ds_anchor_preflight.sh +53 -7
- package/ds-canonical/hooks/tests/test_check_dynamic_tailwind_class.sh +3 -3
- package/ds-canonical/hooks/tests/test_check_escape_marker_abuse.sh +17 -7
- package/ds-canonical/hooks/tests/test_check_field_family_invariants.sh +72 -16
- package/ds-canonical/hooks/tests/test_check_file_size_budget.sh +67 -5
- package/ds-canonical/hooks/tests/test_check_fork_user_plugin_install.sh +107 -4
- package/ds-canonical/hooks/tests/test_check_full_story_visual_interaction_sweep.sh +25 -15
- package/ds-canonical/hooks/tests/test_check_header_with_tabs_border.sh +177 -67
- package/ds-canonical/hooks/tests/test_check_item_list_gap.sh +7 -7
- package/ds-canonical/hooks/tests/test_check_layout_space_magic_numbers.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_main_branch_workbench.sh +45 -110
- package/ds-canonical/hooks/tests/test_check_naming_and_abstraction.sh +19 -2
- package/ds-canonical/hooks/tests/test_check_opacity_token_usage.sh +114 -8
- package/ds-canonical/hooks/tests/test_check_orphan_ds_css.sh +38 -22
- package/ds-canonical/hooks/tests/test_check_overlay_open_focus_escape_probe.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_pattern_invariants.sh +68 -6
- package/ds-canonical/hooks/tests/test_check_plugin_fork_health.sh +53 -0
- package/ds-canonical/hooks/tests/test_check_post_main_ssot_propagate.sh +37 -0
- package/ds-canonical/hooks/tests/test_check_propose_cite_required.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_propose_discipline.sh +59 -0
- package/ds-canonical/hooks/tests/test_check_propose_plain_chinese.sh +7 -5
- package/ds-canonical/hooks/tests/test_check_propose_pre_grep_verify.sh +5 -5
- package/ds-canonical/hooks/tests/test_check_propose_without_benchmark.sh +45 -0
- package/ds-canonical/hooks/tests/test_check_sidebar_menu_button_implicit_wrap.sh +5 -5
- package/ds-canonical/hooks/tests/test_check_solo_workflow.sh +183 -105
- package/ds-canonical/hooks/tests/test_check_spec_class_drift.sh +35 -7
- package/ds-canonical/hooks/tests/{test_check_story_anatomy.sh.broken → test_check_story_anatomy.sh} +73 -4
- package/ds-canonical/hooks/tests/{test_check_story_category.sh.broken → test_check_story_category.sh} +82 -2
- package/ds-canonical/hooks/tests/test_check_story_determinism.sh +39 -0
- package/ds-canonical/hooks/tests/test_check_story_invariants.sh +559 -43
- package/ds-canonical/hooks/tests/{test_check_story_name_jargon.sh.broken → test_check_story_name_jargon.sh} +22 -1
- package/ds-canonical/hooks/tests/test_check_storybook_addon_packaging.sh +79 -0
- package/ds-canonical/hooks/tests/test_check_storybook_addon_preset_cjs.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_substantive_edit_approval_preflight.sh +546 -28
- package/ds-canonical/hooks/tests/test_check_tab_lg_chrome_header_equal.sh +180 -98
- package/ds-canonical/hooks/tests/test_check_tabs_content_chrome_body_double_gap.sh +3 -3
- package/ds-canonical/hooks/tests/test_check_tailwind_wildcard_in_docs.sh +2 -2
- package/ds-canonical/hooks/tests/test_check_token_hygiene.sh +63 -15
- package/ds-canonical/hooks/tests/test_check_wrapper_primitive_schema_drift.sh +12 -6
- package/ds-canonical/hooks/tests/test_chrome_header_dispatcher.sh +125 -0
- package/ds-canonical/hooks/tests/test_enforce_home_charter.sh +57 -3
- package/ds-canonical/hooks/tests/test_governance_control_plane.sh +66 -0
- package/ds-canonical/hooks/tests/test_governance_coverage_check.sh +88 -0
- package/ds-canonical/hooks/tests/test_hook_integrity_classification.sh +217 -0
- package/ds-canonical/hooks/tests/test_inject_deploy_url_after_push.sh +85 -2
- package/ds-canonical/hooks/tests/test_inject_pending_self_audit.sh +116 -11
- package/ds-canonical/hooks/tests/test_log_governance_fires.sh +117 -1
- package/ds-canonical/hooks/tests/test_log_skill_invokes.sh +74 -5
- package/ds-canonical/hooks/tests/test_post_edit_dispatcher.sh +234 -77
- package/ds-canonical/hooks/tests/test_provider_peer_symmetry.sh +76 -0
- package/ds-canonical/hooks/tests/test_registration_output_contracts.sh +20 -0
- package/ds-canonical/hooks/tests/test_session_start_governance_check.sh +130 -18
- package/ds-canonical/hooks/tests/test_stop_audit_content_quality.sh +75 -0
- package/ds-canonical/hooks/tests/test_stop_capture_metrics.sh +101 -23
- package/ds-canonical/hooks/tests/test_stop_extract_canonical_rules.sh +75 -0
- package/ds-canonical/hooks/tests/{test_stop_governance_drift_check.sh.broken → test_stop_governance_drift_check.sh} +22 -12
- package/ds-canonical/hooks/tests/test_stop_passive_logging.sh +102 -1
- package/ds-canonical/hooks/tests/test_stop_repository_command_context.sh +38 -0
- package/ds-canonical/hooks/tests/test_stop_self_audit.sh +363 -9
- package/ds-canonical/references/README.md +8 -8
- package/ds-canonical/references/audit-coverage-vs-24-checklist.md +4 -4
- package/ds-canonical/references/build-ui-canonicals.md +3 -3
- package/ds-canonical/references/certified-surfaces.md +46 -15
- package/ds-canonical/references/cva-patterns.md +2 -2
- package/ds-canonical/references/failure-class-registry.json +3 -2
- package/ds-canonical/references/governance-audit-coverage.md +8 -8
- package/ds-canonical/references/naming-conventions.md +1 -1
- package/ds-canonical/references/preflight-gate-baseline.json +210 -3
- package/ds-canonical/references/principle-dim-map.json +15 -9
- package/ds-canonical/references/props-naming.md +1 -1
- package/ds-canonical/references/scenario-definition.md +33 -30
- package/ds-canonical/references/spec-rules.md +1 -1
- package/ds-canonical/references/ssot-consultation.md +3 -3
- package/ds-canonical/references/ssot-index.md +1 -1
- package/ds-canonical/references/story-baseline-registry.json +9 -6
- package/ds-canonical/references/story-baseline-registry.schema.json +145 -0
- package/ds-canonical/references/structural-token-retention.md +1 -1
- package/ds-canonical/references/tailwind-gotchas.md +2 -2
- package/ds-canonical/references/ui-dev-rules.md +1 -1
- package/ds-canonical/rules/README.md +14 -9
- package/ds-canonical/rules/meta-patterns.md +13 -13
- package/ds-canonical/rules/self-verify.md +12 -7
- package/ds-canonical/rules/spec-rules.md +1 -1
- package/ds-canonical/rules/ui-development.md +5 -5
- package/ds-canonical/skills/README.md +27 -15
- package/ds-canonical/skills/bug-fix-rhythm/SKILL.md +14 -7
- package/ds-canonical/skills/canonical-reviewer/SKILL.md +29 -0
- package/ds-canonical/skills/code-quality-audit/SKILL.md +11 -7
- package/ds-canonical/skills/codex-collab/SKILL.md +19 -238
- package/ds-canonical/skills/codex-collab/references/brief-template.md +37 -47
- package/ds-canonical/skills/codex-collab/references/transport.md +38 -57
- package/ds-canonical/skills/codify-corrections/SKILL.md +32 -31
- package/ds-canonical/skills/codify-principle/SKILL.md +33 -32
- package/ds-canonical/skills/component-quality-gate/SKILL.md +13 -13
- package/ds-canonical/skills/component-quality-gate/references/checklist.md +7 -7
- package/ds-canonical/skills/deep-audit-cross-codex/SKILL.md +28 -229
- package/ds-canonical/skills/deep-audit-cross-codex/references/phase-a-workflow.md +36 -131
- package/ds-canonical/skills/deep-audit-cross-codex/references/phase-b-codex-brief.md +33 -187
- package/ds-canonical/skills/deep-audit-cross-codex/references/skill-relationships-antipatterns-benchmarks.md +22 -24
- package/ds-canonical/skills/deep-audit-cross-codex/references/triage-rubric.md +15 -79
- package/ds-canonical/skills/deep-audit-cross-codex/references/upstream-directives-r-mapping.md +24 -23
- package/ds-canonical/skills/delivery-handoff/SKILL.md +14 -8
- package/ds-canonical/skills/design-system-audit/SKILL.md +63 -62
- package/ds-canonical/skills/design-system-audit/references/audit-prompts.md +86 -77
- package/ds-canonical/skills/design-system-audit/references/checkpoints.md +59 -50
- package/ds-canonical/skills/design-system-audit/references/historical-bugs.md +8 -8
- package/ds-canonical/skills/design-system-audit/references/principle-audit-protocol.md +37 -32
- package/ds-canonical/skills/design-system-audit/references/rule-placement.md +39 -38
- package/ds-canonical/skills/ensure-canonical/SKILL.md +36 -34
- package/ds-canonical/skills/governance-health/SKILL.md +26 -22
- package/ds-canonical/skills/governance-status/SKILL.md +30 -0
- package/ds-canonical/skills/independent-review/SKILL.md +37 -0
- package/ds-canonical/skills/independent-review/agents/openai.yaml +4 -0
- package/ds-canonical/skills/independent-review/references/evidence-contract.md +24 -0
- package/ds-canonical/skills/knowledge-prune/SKILL.md +45 -52
- package/ds-canonical/skills/knowledge-prune/references/phase-z-cross-repo-ssot-propagation.md +10 -7
- package/ds-canonical/skills/knowledge-prune/references/prune-dimensions-d5-d10.md +6 -6
- package/ds-canonical/skills/new-component/SKILL.md +18 -12
- package/ds-canonical/skills/new-component/references/new-component-checklist.md +7 -6
- package/ds-canonical/skills/performance-audit/SKILL.md +13 -10
- package/ds-canonical/skills/product-ui-audit/SKILL.md +27 -17
- package/ds-canonical/skills/product-ui-audit/references/audit-checks.md +7 -4
- package/ds-canonical/skills/product-ui-audit/references/report-template.md +30 -26
- package/ds-canonical/skills/propose-options/SKILL.md +1 -1
- package/ds-canonical/skills/prototype/SKILL.md +19 -21
- package/ds-canonical/skills/prototype/references/audit-checks.md +6 -5
- package/ds-canonical/skills/prototype/references/checkpoints.md +26 -17
- package/ds-canonical/skills/prototype/references/ooux-template.md +1 -1
- package/ds-canonical/skills/prototype/references/proposal-template.md +4 -4
- package/ds-canonical/skills/scan-similar-bugs/SKILL.md +22 -21
- package/ds-canonical/skills/story-auto-compile-migrate/SKILL.md +21 -20
- package/ds-canonical/skills/story-writing/SKILL.md +12 -12
- package/ds-canonical/skills/story-writing/references/anatomy-standard.md +1 -1
- package/ds-canonical/skills/story-writing/references/category-templates.md +5 -5
- package/ds-canonical/skills/ux-audit/SKILL.md +12 -9
- package/ds-canonical/skills/visual-audit/SKILL.md +41 -47
- package/ds-canonical/skills/visual-audit/references/audit-architecture.md +7 -7
- package/ds-canonical/skills/visual-audit/references/visual-checklist.md +12 -12
- package/ds-canonical/skills/visual-audit/references/world-class-benchmarks.md +3 -3
- package/ds-canonical/templates/_README.md +6 -7
- package/ds-canonical/templates/consumer-governance.md +78 -0
- package/ds-canonical/templates/dashboard-app.tsx +3 -1
- package/ds-canonical/templates/product-launchers/fork-governance-dispatcher.sh +154 -0
- package/ds-canonical/templates/product-launchers/format-provider-hook-output.mjs +25 -0
- package/ds-canonical/templates/product-launchers/independent-review.mjs +490 -0
- package/ds-canonical/templates/product-launchers/inject_fork_governance_preamble.sh +99 -0
- package/ds-canonical/templates/product-launchers/normalize-provider-event.mjs +355 -0
- package/ds-canonical/templates/product-launchers/product-hook-dispatch-runtime.mjs +1067 -0
- package/ds-canonical/templates/product-provider-wiring.json +80 -0
- package/ds-canonical/templates/product-provider-wiring.schema.json +151 -0
- package/llms-full.txt +6 -6
- package/llms.txt +2 -2
- package/package.json +15 -4
- package/src/tokens/utility-registry.json +119 -4
- package/src/tokens/utility-registry.schema.json +373 -0
- package/tools/README.md +9 -0
- package/tools/codemods/cli.mjs +93 -0
- package/tools/codemods/index.mjs +582 -0
- package/tools/shared/safe-filesystem.mjs +371 -0
- package/tools/visual-baseline/cli.mjs +97 -0
- package/tools/visual-baseline/index.mjs +522 -0
- /package/dist/{react-day-picker.css → index.css} +0 -0
|
@@ -1,108 +1,265 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
#
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
# Dispatcher fans out stdin to 9 lib/_*.sh helpers (PostToolUse Write|Edit|MultiEdit),
|
|
6
|
-
# aggregates their JSON additionalContext, prints ONE JSON output, exit 0 (non-blocking).
|
|
7
|
-
#
|
|
8
|
-
# Smoke checks:
|
|
9
|
-
# (a) bash -n syntax OK
|
|
10
|
-
# (b) JSON input → exit 0(non-blocking,no matter helper outcome)
|
|
11
|
-
# (c) Empty / malformed stdin → still exit 0
|
|
12
|
-
# (d) Helper aggregation:if any helper emits additionalContext, dispatcher includes it
|
|
13
|
-
# in stdout JSON;若全 helper silent → dispatcher 也 silent(no stdout)。
|
|
14
|
-
|
|
15
|
-
set -u
|
|
2
|
+
# Enforcement-integrity tests for post_edit_dispatcher.sh.
|
|
3
|
+
|
|
4
|
+
set -uo pipefail
|
|
16
5
|
|
|
17
6
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
18
|
-
|
|
7
|
+
SOURCE="$SCRIPT_DIR/../post_edit_dispatcher.sh"
|
|
8
|
+
FIXTURE=$(mktemp -d)
|
|
9
|
+
trap 'rm -rf -- "$FIXTURE"' EXIT
|
|
10
|
+
mkdir -p "$FIXTURE/lib"
|
|
11
|
+
cp "$SOURCE" "$FIXTURE/post_edit_dispatcher.sh"
|
|
19
12
|
|
|
20
|
-
|
|
13
|
+
HELPERS=(
|
|
14
|
+
_token_hygiene.sh
|
|
15
|
+
_hardcoded_strings.sh
|
|
16
|
+
_code_quality.sh
|
|
17
|
+
_layout_space_canonical.sh
|
|
18
|
+
_person_data_richness.sh
|
|
19
|
+
_overlay_handcraft.sh
|
|
20
|
+
_cva_default_sync.sh
|
|
21
|
+
_story_compile_drift.sh
|
|
22
|
+
_governance_coverage_check.sh
|
|
23
|
+
)
|
|
21
24
|
|
|
22
25
|
PASS=0
|
|
23
26
|
FAIL=0
|
|
24
|
-
|
|
27
|
+
VALID_PAYLOAD='{"hook_event_name":"PostToolUse","tool_name":"Write","tool_input":{"file_path":"apps/demo/src/App.tsx","content":"const x = 1"}}'
|
|
28
|
+
|
|
29
|
+
write_helper() {
|
|
30
|
+
local helper="$1"
|
|
31
|
+
local mode="${2:-clean}"
|
|
32
|
+
rm -f "$FIXTURE/lib/$helper"
|
|
33
|
+
case "$mode" in
|
|
34
|
+
clean)
|
|
35
|
+
printf '#!/bin/bash\ncat >/dev/null\nexit 0\n' >"$FIXTURE/lib/$helper"
|
|
36
|
+
;;
|
|
37
|
+
context-one)
|
|
38
|
+
printf '%s\n' \
|
|
39
|
+
'#!/bin/bash' \
|
|
40
|
+
'cat >/dev/null' \
|
|
41
|
+
'printf '\''{"governanceContext":{"hookEventName":"PostToolUse","message":"context one"}}\n'\''' \
|
|
42
|
+
'exit 0' >"$FIXTURE/lib/$helper"
|
|
43
|
+
;;
|
|
44
|
+
context-two)
|
|
45
|
+
printf '%s\n' \
|
|
46
|
+
'#!/bin/bash' \
|
|
47
|
+
'cat >/dev/null' \
|
|
48
|
+
'printf '\''{"governanceContext":{"hookEventName":"PostToolUse","message":"context two"}}\n'\''' \
|
|
49
|
+
'exit 0' >"$FIXTURE/lib/$helper"
|
|
50
|
+
;;
|
|
51
|
+
rc1)
|
|
52
|
+
printf '#!/bin/bash\ncat >/dev/null\nexit 1\n' >"$FIXTURE/lib/$helper"
|
|
53
|
+
;;
|
|
54
|
+
rc2)
|
|
55
|
+
printf '#!/bin/bash\ncat >/dev/null\nexit 2\n' >"$FIXTURE/lib/$helper"
|
|
56
|
+
;;
|
|
57
|
+
malformed)
|
|
58
|
+
printf '%s\n' \
|
|
59
|
+
'#!/bin/bash' \
|
|
60
|
+
'cat >/dev/null' \
|
|
61
|
+
'printf '\''not-json\n'\''' \
|
|
62
|
+
'exit 0' >"$FIXTURE/lib/$helper"
|
|
63
|
+
;;
|
|
64
|
+
wrong-event)
|
|
65
|
+
printf '%s\n' \
|
|
66
|
+
'#!/bin/bash' \
|
|
67
|
+
'cat >/dev/null' \
|
|
68
|
+
'printf '\''{"governanceContext":{"hookEventName":"PreToolUse","message":"wrong event"}}\n'\''' \
|
|
69
|
+
'exit 0' >"$FIXTURE/lib/$helper"
|
|
70
|
+
;;
|
|
71
|
+
raw-stderr)
|
|
72
|
+
printf '%s\n' \
|
|
73
|
+
'#!/bin/bash' \
|
|
74
|
+
'cat >/dev/null' \
|
|
75
|
+
'printf '\''raw diagnostic\n'\'' >&2' \
|
|
76
|
+
'exit 0' >"$FIXTURE/lib/$helper"
|
|
77
|
+
;;
|
|
78
|
+
*)
|
|
79
|
+
printf 'unknown helper mode: %s\n' "$mode" >&2
|
|
80
|
+
exit 1
|
|
81
|
+
;;
|
|
82
|
+
esac
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
reset_helpers() {
|
|
86
|
+
local helper
|
|
87
|
+
for helper in "${HELPERS[@]}"; do
|
|
88
|
+
write_helper "$helper" clean
|
|
89
|
+
done
|
|
90
|
+
}
|
|
25
91
|
|
|
26
|
-
|
|
92
|
+
run_hook() {
|
|
27
93
|
local payload="$1"
|
|
28
|
-
STDOUT=$(mktemp); STDERR=$(mktemp)
|
|
29
94
|
set +e
|
|
30
|
-
printf '%s' "$payload"
|
|
95
|
+
printf '%s' "$payload" \
|
|
96
|
+
| bash "$FIXTURE/post_edit_dispatcher.sh" >"$FIXTURE/stdout" 2>"$FIXTURE/stderr"
|
|
31
97
|
EXIT=$?
|
|
32
98
|
set -e
|
|
33
|
-
STDOUT_TEXT=$(cat "$STDOUT")
|
|
34
|
-
STDERR_TEXT=$(cat "$STDERR")
|
|
35
|
-
rm -f "$STDOUT" "$STDERR"
|
|
36
99
|
}
|
|
37
100
|
|
|
38
|
-
|
|
101
|
+
run_real_hook() {
|
|
102
|
+
local payload="$1"
|
|
103
|
+
set +e
|
|
104
|
+
printf '%s' "$payload" \
|
|
105
|
+
| GOVERNANCE_TELEMETRY_OPT_IN=0 bash "$SOURCE" >"$FIXTURE/stdout" 2>"$FIXTURE/stderr"
|
|
106
|
+
EXIT=$?
|
|
107
|
+
set -e
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
pass() {
|
|
111
|
+
PASS=$((PASS + 1))
|
|
112
|
+
printf ' PASS %s\n' "$1"
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
fail() {
|
|
116
|
+
FAIL=$((FAIL + 1))
|
|
117
|
+
printf ' FAIL %s\n' "$1"
|
|
118
|
+
sed 's/^/ stdout: /' "$FIXTURE/stdout"
|
|
119
|
+
sed 's/^/ stderr: /' "$FIXTURE/stderr"
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
expect_clean() {
|
|
39
123
|
local name="$1"
|
|
40
|
-
if [ "$EXIT"
|
|
41
|
-
|
|
124
|
+
if [ "$EXIT" -eq 0 ] && [ ! -s "$FIXTURE/stdout" ] && [ ! -s "$FIXTURE/stderr" ]; then
|
|
125
|
+
pass "$name"
|
|
42
126
|
else
|
|
43
|
-
|
|
44
|
-
echo " --- stdout ---"; echo "$STDOUT_TEXT" | sed 's/^/ /'; echo " --- end ---"
|
|
45
|
-
echo " --- stderr ---"; echo "$STDERR_TEXT" | sed 's/^/ /'; echo " --- end ---"
|
|
46
|
-
FAIL=$((FAIL+1)); FAILED_TESTS="${FAILED_TESTS}\n - $name"
|
|
127
|
+
fail "$name (expected clean exit 0, got $EXIT)"
|
|
47
128
|
fi
|
|
48
129
|
}
|
|
49
130
|
|
|
50
|
-
|
|
131
|
+
expect_integrity_failure() {
|
|
132
|
+
local name="$1"
|
|
133
|
+
local needle="$2"
|
|
134
|
+
if [ "$EXIT" -eq 70 ] \
|
|
135
|
+
&& [ ! -s "$FIXTURE/stdout" ] \
|
|
136
|
+
&& grep -qF 'GOVERNANCE_INTEGRITY:' "$FIXTURE/stderr" \
|
|
137
|
+
&& grep -qF "$needle" "$FIXTURE/stderr"; then
|
|
138
|
+
pass "$name"
|
|
139
|
+
else
|
|
140
|
+
fail "$name (expected stderr-only integrity exit 70 containing '$needle', got $EXIT)"
|
|
141
|
+
fi
|
|
142
|
+
}
|
|
51
143
|
|
|
52
|
-
# 1. bash -n syntax check
|
|
53
|
-
set +e
|
|
54
|
-
bash -n "$HOOK" 2>/dev/null
|
|
55
|
-
SYNTAX=$?
|
|
56
144
|
set -e
|
|
57
|
-
|
|
58
|
-
|
|
145
|
+
printf '%s\n' '=== post_edit_dispatcher enforcement-integrity tests ==='
|
|
146
|
+
|
|
147
|
+
reset_helpers
|
|
148
|
+
run_hook "$VALID_PAYLOAD"
|
|
149
|
+
expect_clean 'all required helpers clean'
|
|
150
|
+
|
|
151
|
+
write_helper "_token_hygiene.sh" context-one
|
|
152
|
+
write_helper "_code_quality.sh" context-two
|
|
153
|
+
run_hook "$VALID_PAYLOAD"
|
|
154
|
+
if [ "$EXIT" -eq 0 ] \
|
|
155
|
+
&& [ ! -s "$FIXTURE/stderr" ] \
|
|
156
|
+
&& jq -e '
|
|
157
|
+
keys == ["governanceContext"]
|
|
158
|
+
and .governanceContext.hookEventName == "PostToolUse"
|
|
159
|
+
and (.governanceContext.message | contains("context one") and contains("context two"))
|
|
160
|
+
' "$FIXTURE/stdout" >/dev/null 2>&1; then
|
|
161
|
+
pass 'valid helper contexts aggregate into one exact PostToolUse envelope'
|
|
59
162
|
else
|
|
60
|
-
|
|
61
|
-
FAIL=$((FAIL+1)); FAILED_TESTS="${FAILED_TESTS}\n - 1. syntax"
|
|
163
|
+
fail "valid helper context aggregation (got exit $EXIT)"
|
|
62
164
|
fi
|
|
63
165
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
166
|
+
reset_helpers
|
|
167
|
+
rm -f "$FIXTURE/lib/_story_compile_drift.sh"
|
|
168
|
+
run_hook "$VALID_PAYLOAD"
|
|
169
|
+
expect_integrity_failure 'missing required helper fails closed' 'required helper'
|
|
68
170
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
171
|
+
reset_helpers
|
|
172
|
+
printf '#!/bin/bash\ncat >/dev/null\nexit 0\n' >"$FIXTURE/clean-target.sh"
|
|
173
|
+
rm -f "$FIXTURE/lib/_story_compile_drift.sh"
|
|
174
|
+
ln -s "$FIXTURE/clean-target.sh" "$FIXTURE/lib/_story_compile_drift.sh"
|
|
175
|
+
run_hook "$VALID_PAYLOAD"
|
|
176
|
+
expect_integrity_failure 'symlink helper replacement fails closed' 'symlink'
|
|
72
177
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
178
|
+
reset_helpers
|
|
179
|
+
write_helper "_hardcoded_strings.sh" rc1
|
|
180
|
+
run_hook "$VALID_PAYLOAD"
|
|
181
|
+
expect_integrity_failure 'helper exit 1 fails closed' 'exit code 1'
|
|
76
182
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
183
|
+
reset_helpers
|
|
184
|
+
write_helper "_hardcoded_strings.sh" rc2
|
|
185
|
+
run_hook "$VALID_PAYLOAD"
|
|
186
|
+
expect_integrity_failure 'advisory helper exit 2 is integrity failure' 'exit code 2'
|
|
81
187
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
188
|
+
reset_helpers
|
|
189
|
+
write_helper "_layout_space_canonical.sh" malformed
|
|
190
|
+
run_hook "$VALID_PAYLOAD"
|
|
191
|
+
expect_integrity_failure 'malformed helper stdout fails closed' 'malformed or wrong-event envelope'
|
|
192
|
+
|
|
193
|
+
reset_helpers
|
|
194
|
+
write_helper "_layout_space_canonical.sh" wrong-event
|
|
195
|
+
run_hook "$VALID_PAYLOAD"
|
|
196
|
+
expect_integrity_failure 'wrong-event helper context fails closed' 'malformed or wrong-event envelope'
|
|
197
|
+
|
|
198
|
+
reset_helpers
|
|
199
|
+
write_helper "_person_data_richness.sh" raw-stderr
|
|
200
|
+
run_hook "$VALID_PAYLOAD"
|
|
201
|
+
expect_integrity_failure 'raw helper stderr fails closed' 'raw stderr'
|
|
202
|
+
|
|
203
|
+
reset_helpers
|
|
204
|
+
run_hook 'not-json'
|
|
205
|
+
expect_integrity_failure 'malformed canonical input fails closed' 'malformed or wrong-event canonical envelope'
|
|
206
|
+
|
|
207
|
+
run_hook '{"hook_event_name":"PreToolUse","tool_name":"Write","tool_input":{"file_path":"apps/demo/src/App.tsx"}}'
|
|
208
|
+
expect_integrity_failure 'misrouted event input fails closed' 'malformed or wrong-event canonical envelope'
|
|
209
|
+
|
|
210
|
+
# Exercise the real dispatcher and all nine real helpers with both a >256 KiB
|
|
211
|
+
# canonical event and a file containing far more matches than every diagnostic
|
|
212
|
+
# cap. This guards against producer -> early-closing grep/head pipelines
|
|
213
|
+
# surfacing EPIPE as a false helper-integrity failure.
|
|
214
|
+
REAL_COMPONENT_DIR="$FIXTURE/workspace/packages/design-system/src/components/SigpipeFixture"
|
|
215
|
+
REAL_COMPONENT="$REAL_COMPONENT_DIR/sigpipe-fixture.tsx"
|
|
216
|
+
mkdir -p "$REAL_COMPONENT_DIR"
|
|
217
|
+
{
|
|
218
|
+
printf '%s\n' \
|
|
219
|
+
'import { cva } from "class-variance-authority";' \
|
|
220
|
+
'const variants = cva("", { variants: { size: { md: "" } }, defaultVariants: { size: "md" } });'
|
|
221
|
+
fixture_index=0
|
|
222
|
+
while [ "$fixture_index" -lt 1200 ]; do
|
|
223
|
+
printf 'const unsafeAny%s: any = null;\n' "$fixture_index"
|
|
224
|
+
printf 'const hardcodedLabel%s = "這是使用者介面文字";\n' "$fixture_index"
|
|
225
|
+
printf '<div className="bg-popover shadow-lg bg-neutral-3 overflow-auto w-[--fixture-width]">row</div>;\n'
|
|
226
|
+
printf '<div className="px-[var(--layout-space-loose)] border-b border-divider">overlay</div>;\n'
|
|
227
|
+
printf 'const sparsePerson%s = { name: "Person", avatarUrl: "/avatar.png" };\n' "$fixture_index"
|
|
228
|
+
fixture_index=$((fixture_index + 1))
|
|
229
|
+
done
|
|
230
|
+
} >"$REAL_COMPONENT"
|
|
231
|
+
|
|
232
|
+
REAL_PAYLOAD=$(
|
|
233
|
+
jq -Rs --arg path "$REAL_COMPONENT" '{
|
|
234
|
+
hook_event_name: "PostToolUse",
|
|
235
|
+
tool_name: "Write",
|
|
236
|
+
tool_input: {
|
|
237
|
+
file_path: $path,
|
|
238
|
+
content: .
|
|
239
|
+
}
|
|
240
|
+
}' <"$REAL_COMPONENT"
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
run_real_hook "$REAL_PAYLOAD"
|
|
244
|
+
if [ "$(wc -c <"$REAL_COMPONENT" | tr -d ' ')" -gt 262144 ] \
|
|
245
|
+
&& [ "$EXIT" -eq 0 ] \
|
|
246
|
+
&& [ ! -s "$FIXTURE/stderr" ] \
|
|
247
|
+
&& jq -e '
|
|
248
|
+
keys == ["governanceContext"]
|
|
249
|
+
and .governanceContext.hookEventName == "PostToolUse"
|
|
250
|
+
and (
|
|
251
|
+
.governanceContext.message
|
|
252
|
+
| contains("Token hygiene")
|
|
253
|
+
and contains("i18n hygiene")
|
|
254
|
+
and contains("Code quality lite")
|
|
255
|
+
and contains("Primitive consumption")
|
|
256
|
+
and contains("cva/defaultVariants touched")
|
|
257
|
+
)
|
|
258
|
+
' "$FIXTURE/stdout" >/dev/null 2>&1; then
|
|
259
|
+
pass 'real dispatcher handles >256 KiB event and high-match helper scans without EPIPE/integrity noise'
|
|
97
260
|
else
|
|
98
|
-
|
|
99
|
-
PASS=$((PASS+1))
|
|
261
|
+
fail "real dispatcher large-input/high-match regression (got exit $EXIT)"
|
|
100
262
|
fi
|
|
101
263
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
echo "Passed: $PASS / $((PASS + FAIL))"
|
|
105
|
-
if [ "$FAIL" -gt 0 ]; then
|
|
106
|
-
echo "Failed:$FAILED_TESTS"
|
|
107
|
-
exit 1
|
|
108
|
-
fi
|
|
264
|
+
printf 'Passed: %s / %s\n' "$PASS" "$((PASS + FAIL))"
|
|
265
|
+
[ "$FAIL" -eq 0 ]
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Provider-neutral behavioral matrix for the legacy-named peer hooks.
|
|
3
|
+
set -uo pipefail
|
|
4
|
+
|
|
5
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
6
|
+
BRIEF_HOOK="$SCRIPT_DIR/../check_codex_brief_invariants.sh"
|
|
7
|
+
COLLAB_HOOK="$SCRIPT_DIR/../check_codex_collab_5step.sh"
|
|
8
|
+
STOP_HOOK="$SCRIPT_DIR/../stop_self_audit.sh"
|
|
9
|
+
TMP_ROOT=$(mktemp -d)
|
|
10
|
+
trap 'rm -rf "$TMP_ROOT"' EXIT
|
|
11
|
+
mkdir -p "$TMP_ROOT/project/state"
|
|
12
|
+
|
|
13
|
+
PASS=0
|
|
14
|
+
FAIL=0
|
|
15
|
+
|
|
16
|
+
set_pair() {
|
|
17
|
+
export GOVERNANCE_PROJECT_DIR="$TMP_ROOT/project"
|
|
18
|
+
export GOVERNANCE_STATE_DIR="$TMP_ROOT/project/state"
|
|
19
|
+
export GOVERNANCE_READ_ONLY=1
|
|
20
|
+
export GOVERNANCE_SELF_PROVIDER="$1"
|
|
21
|
+
export GOVERNANCE_SELF_DISPLAY_NAME="$1"
|
|
22
|
+
export GOVERNANCE_PEER_PROVIDER="$2"
|
|
23
|
+
export GOVERNANCE_PEER_DISPLAY_NAME="$2"
|
|
24
|
+
export GOVERNANCE_PEER_CLI="$2"
|
|
25
|
+
export GOVERNANCE_PEER_LOCAL_EXECUTABLE="node_modules/.bin/$2"
|
|
26
|
+
export GOVERNANCE_PEER_BRIEF_MARKERS_JSON='["review"]'
|
|
27
|
+
export GOVERNANCE_PEER_DISCOVERY_MARKERS_JSON="[\"node_modules/.bin/$2\",\"command -v $2\"]"
|
|
28
|
+
export GOVERNANCE_PEER_REPLY_ARTIFACT_PREFIX="$2-reply"
|
|
29
|
+
export GOVERNANCE_INSTRUCTION_ENTRY=AGENTS.md
|
|
30
|
+
export GOVERNANCE_SHARED_INSTRUCTION_ENTRY=AGENTS.md
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
record() {
|
|
34
|
+
if [ "$1" = "1" ]; then
|
|
35
|
+
echo " PASS $2"
|
|
36
|
+
PASS=$((PASS + 1))
|
|
37
|
+
else
|
|
38
|
+
echo " FAIL $2"
|
|
39
|
+
FAIL=$((FAIL + 1))
|
|
40
|
+
fi
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
for pair in "alpha beta" "beta alpha"; do
|
|
44
|
+
set -- $pair
|
|
45
|
+
self="$1"; peer="$2"
|
|
46
|
+
set_pair "$self" "$peer"
|
|
47
|
+
|
|
48
|
+
payload=$(jq -nc --arg cmd "$peer review trivial" '{hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:$cmd}}')
|
|
49
|
+
printf '%s' "$payload" | bash "$BRIEF_HOOK" >/dev/null 2>"$TMP_ROOT/brief.err"
|
|
50
|
+
rc=$?
|
|
51
|
+
record "$([ "$rc" = "2" ] && grep -q 'PEER BRIEF MISSING' "$TMP_ROOT/brief.err" && echo 1 || echo 0)" "${self}→${peer} peer brief is governed"
|
|
52
|
+
|
|
53
|
+
payload=$(jq -nc --arg cmd "$self review trivial" '{hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:$cmd}}')
|
|
54
|
+
printf '%s' "$payload" | bash "$BRIEF_HOOK" >/dev/null 2>"$TMP_ROOT/self.err"
|
|
55
|
+
rc=$?
|
|
56
|
+
record "$([ "$rc" = "0" ] && [ ! -s "$TMP_ROOT/self.err" ] && echo 1 || echo 0)" "${self}→${peer} self CLI is not inverted into peer gate"
|
|
57
|
+
|
|
58
|
+
payload=$(jq -nc --arg cmd "git commit -m '$peer collab'" '{hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:$cmd}}')
|
|
59
|
+
printf '%s' "$payload" | bash "$COLLAB_HOOK" >/dev/null 2>"$TMP_ROOT/collab.err"
|
|
60
|
+
rc=$?
|
|
61
|
+
record "$([ "$rc" = "0" ] && grep -q "self=$self,peer=$peer" "$TMP_ROOT/collab.err" && echo 1 || echo 0)" "${self}→${peer} collaboration marker is dynamic"
|
|
62
|
+
|
|
63
|
+
transcript="$TMP_ROOT/$self-$peer.jsonl"
|
|
64
|
+
printf '%s\n' \
|
|
65
|
+
'{"type":"user","message":{"role":"user","content":"review this"}}' \
|
|
66
|
+
"{\"type\":\"assistant\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"name\":\"Read\",\"input\":{\"file_path\":\"$peer-reply-review.md\"}}]}}" \
|
|
67
|
+
'{"type":"assistant","message":{"role":"assistant","content":[{"type":"text","text":"review received"}]}}' \
|
|
68
|
+
> "$transcript"
|
|
69
|
+
payload=$(jq -nc --arg transcript "$transcript" '{hook_event_name:"Stop",transcript_path:$transcript,session_id:"symmetry"}')
|
|
70
|
+
output=$(printf '%s' "$payload" | bash "$STOP_HOOK" 2>/dev/null)
|
|
71
|
+
rc=$?
|
|
72
|
+
record "$([ "$rc" = "0" ] && printf '%s' "$output" | grep -q '"governanceDecision":"block"' && echo 1 || echo 0)" "${self}→${peer} peer reply audit emits neutral Stop decision"
|
|
73
|
+
done
|
|
74
|
+
|
|
75
|
+
echo "Results: $PASS PASS, $FAIL FAIL"
|
|
76
|
+
[ "$FAIL" = "0" ]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Registration-derived static output-contract audit.
|
|
3
|
+
#
|
|
4
|
+
# This test deliberately reads registrations.json and its schema instead of maintaining a second
|
|
5
|
+
# descriptor inventory. Targeted runtime branches live in each hook's focused behavior test.
|
|
6
|
+
|
|
7
|
+
set -u
|
|
8
|
+
|
|
9
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
10
|
+
HOOK_ROOT="$(cd "$SCRIPT_DIR/.." && pwd -P)"
|
|
11
|
+
REGISTRY="$HOOK_ROOT/registrations.json"
|
|
12
|
+
SCHEMA="$HOOK_ROOT/registrations.schema.json"
|
|
13
|
+
|
|
14
|
+
command -v node >/dev/null 2>&1 || {
|
|
15
|
+
echo "FATAL: node is required for registration output-contract tests"
|
|
16
|
+
exit 1
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
node -- "$SCRIPT_DIR/registration-output-contracts.mjs" \
|
|
20
|
+
"$REGISTRY" "$SCHEMA" "$HOOK_ROOT"
|