@ztothez/design-engineering 2.0.0
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/LICENSE +15 -0
- package/README.md +448 -0
- package/ROADMAP.md +127 -0
- package/SKILL.md +698 -0
- package/V2-ROADMAP.md +431 -0
- package/V3-ROADMAP.md +605 -0
- package/V4-ROADMAP.md +283 -0
- package/clean-room-ux-design-spec.md +1431 -0
- package/dist/cli/aggregate-gates.d.ts +2 -0
- package/dist/cli/aggregate-gates.js +86 -0
- package/dist/cli/aggregate-gates.js.map +1 -0
- package/dist/cli/assess-maintainer-review.d.ts +2 -0
- package/dist/cli/assess-maintainer-review.js +72 -0
- package/dist/cli/assess-maintainer-review.js.map +1 -0
- package/dist/cli/audit.d.ts +2 -0
- package/dist/cli/audit.js +71 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/compile-comparison-review.d.ts +2 -0
- package/dist/cli/compile-comparison-review.js +154 -0
- package/dist/cli/compile-comparison-review.js.map +1 -0
- package/dist/cli/compile-plan.d.ts +2 -0
- package/dist/cli/compile-plan.js +66 -0
- package/dist/cli/compile-plan.js.map +1 -0
- package/dist/cli/evaluate-corpus.d.ts +2 -0
- package/dist/cli/evaluate-corpus.js +65 -0
- package/dist/cli/evaluate-corpus.js.map +1 -0
- package/dist/cli/generate-react.d.ts +2 -0
- package/dist/cli/generate-react.js +83 -0
- package/dist/cli/generate-react.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +58 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/portfolio.d.ts +2 -0
- package/dist/cli/portfolio.js +316 -0
- package/dist/cli/portfolio.js.map +1 -0
- package/dist/cli/quality-gate.d.ts +2 -0
- package/dist/cli/quality-gate.js +131 -0
- package/dist/cli/quality-gate.js.map +1 -0
- package/dist/cli/repair-react.d.ts +2 -0
- package/dist/cli/repair-react.js +163 -0
- package/dist/cli/repair-react.js.map +1 -0
- package/dist/cli/review-heuristics.d.ts +2 -0
- package/dist/cli/review-heuristics.js +68 -0
- package/dist/cli/review-heuristics.js.map +1 -0
- package/dist/cli/validate-brief.d.ts +2 -0
- package/dist/cli/validate-brief.js +58 -0
- package/dist/cli/validate-brief.js.map +1 -0
- package/dist/cli/validate-comparison.d.ts +2 -0
- package/dist/cli/validate-comparison.js +68 -0
- package/dist/cli/validate-comparison.js.map +1 -0
- package/dist/cli/validate-contract.d.ts +2 -0
- package/dist/cli/validate-contract.js +54 -0
- package/dist/cli/validate-contract.js.map +1 -0
- package/dist/cli/validate-design.d.ts +2 -0
- package/dist/cli/validate-design.js +53 -0
- package/dist/cli/validate-design.js.map +1 -0
- package/dist/cli/validate-information.d.ts +2 -0
- package/dist/cli/validate-information.js +53 -0
- package/dist/cli/validate-information.js.map +1 -0
- package/dist/cli/validate-trust.d.ts +2 -0
- package/dist/cli/validate-trust.js +53 -0
- package/dist/cli/validate-trust.js.map +1 -0
- package/dist/cli/verify-ui.d.ts +2 -0
- package/dist/cli/verify-ui.js +181 -0
- package/dist/cli/verify-ui.js.map +1 -0
- package/dist/src/acceptance/evaluator.d.ts +13 -0
- package/dist/src/acceptance/evaluator.js +201 -0
- package/dist/src/acceptance/evaluator.js.map +1 -0
- package/dist/src/acceptance/loader.d.ts +2 -0
- package/dist/src/acceptance/loader.js +18 -0
- package/dist/src/acceptance/loader.js.map +1 -0
- package/dist/src/acceptance/report.d.ts +2 -0
- package/dist/src/acceptance/report.js +18 -0
- package/dist/src/acceptance/report.js.map +1 -0
- package/dist/src/acceptance/schema.d.ts +64 -0
- package/dist/src/acceptance/schema.js +57 -0
- package/dist/src/acceptance/schema.js.map +1 -0
- package/dist/src/acceptance/types.d.ts +47 -0
- package/dist/src/acceptance/types.js +2 -0
- package/dist/src/acceptance/types.js.map +1 -0
- package/dist/src/aggregate/report.d.ts +2 -0
- package/dist/src/aggregate/report.js +33 -0
- package/dist/src/aggregate/report.js.map +1 -0
- package/dist/src/aggregate/runner.d.ts +2 -0
- package/dist/src/aggregate/runner.js +165 -0
- package/dist/src/aggregate/runner.js.map +1 -0
- package/dist/src/aggregate/schema.d.ts +182 -0
- package/dist/src/aggregate/schema.js +54 -0
- package/dist/src/aggregate/schema.js.map +1 -0
- package/dist/src/aggregate/types.d.ts +57 -0
- package/dist/src/aggregate/types.js +2 -0
- package/dist/src/aggregate/types.js.map +1 -0
- package/dist/src/audit/policy.d.ts +3 -0
- package/dist/src/audit/policy.js +45 -0
- package/dist/src/audit/policy.js.map +1 -0
- package/dist/src/audit/report.d.ts +2 -0
- package/dist/src/audit/report.js +32 -0
- package/dist/src/audit/report.js.map +1 -0
- package/dist/src/audit/rules/accessibility-name.d.ts +2 -0
- package/dist/src/audit/rules/accessibility-name.js +64 -0
- package/dist/src/audit/rules/accessibility-name.js.map +1 -0
- package/dist/src/audit/rules/component-size.d.ts +2 -0
- package/dist/src/audit/rules/component-size.js +27 -0
- package/dist/src/audit/rules/component-size.js.map +1 -0
- package/dist/src/audit/rules/credential-placeholder.d.ts +2 -0
- package/dist/src/audit/rules/credential-placeholder.js +83 -0
- package/dist/src/audit/rules/credential-placeholder.js.map +1 -0
- package/dist/src/audit/rules/helpers.d.ts +16 -0
- package/dist/src/audit/rules/helpers.js +64 -0
- package/dist/src/audit/rules/helpers.js.map +1 -0
- package/dist/src/audit/rules/index.d.ts +2 -0
- package/dist/src/audit/rules/index.js +23 -0
- package/dist/src/audit/rules/index.js.map +1 -0
- package/dist/src/audit/rules/interactive-integrity.d.ts +2 -0
- package/dist/src/audit/rules/interactive-integrity.js +111 -0
- package/dist/src/audit/rules/interactive-integrity.js.map +1 -0
- package/dist/src/audit/rules/mixed-responsibilities.d.ts +2 -0
- package/dist/src/audit/rules/mixed-responsibilities.js +39 -0
- package/dist/src/audit/rules/mixed-responsibilities.js.map +1 -0
- package/dist/src/audit/rules/mock-production-path.d.ts +2 -0
- package/dist/src/audit/rules/mock-production-path.js +39 -0
- package/dist/src/audit/rules/mock-production-path.js.map +1 -0
- package/dist/src/audit/rules/network-state.d.ts +2 -0
- package/dist/src/audit/rules/network-state.js +39 -0
- package/dist/src/audit/rules/network-state.js.map +1 -0
- package/dist/src/audit/rules/operational-claim.d.ts +2 -0
- package/dist/src/audit/rules/operational-claim.js +94 -0
- package/dist/src/audit/rules/operational-claim.js.map +1 -0
- package/dist/src/audit/rules/placeholder-interaction.d.ts +2 -0
- package/dist/src/audit/rules/placeholder-interaction.js +46 -0
- package/dist/src/audit/rules/placeholder-interaction.js.map +1 -0
- package/dist/src/audit/rules/raw-design-values.d.ts +2 -0
- package/dist/src/audit/rules/raw-design-values.js +97 -0
- package/dist/src/audit/rules/raw-design-values.js.map +1 -0
- package/dist/src/audit/scanner.d.ts +2 -0
- package/dist/src/audit/scanner.js +215 -0
- package/dist/src/audit/scanner.js.map +1 -0
- package/dist/src/audit/types.d.ts +62 -0
- package/dist/src/audit/types.js +2 -0
- package/dist/src/audit/types.js.map +1 -0
- package/dist/src/comparison/evaluator.d.ts +2 -0
- package/dist/src/comparison/evaluator.js +478 -0
- package/dist/src/comparison/evaluator.js.map +1 -0
- package/dist/src/comparison/loader.d.ts +3 -0
- package/dist/src/comparison/loader.js +26 -0
- package/dist/src/comparison/loader.js.map +1 -0
- package/dist/src/comparison/maintainer.d.ts +47 -0
- package/dist/src/comparison/maintainer.js +218 -0
- package/dist/src/comparison/maintainer.js.map +1 -0
- package/dist/src/comparison/report.d.ts +2 -0
- package/dist/src/comparison/report.js +48 -0
- package/dist/src/comparison/report.js.map +1 -0
- package/dist/src/comparison/schema.d.ts +464 -0
- package/dist/src/comparison/schema.js +502 -0
- package/dist/src/comparison/schema.js.map +1 -0
- package/dist/src/contracts/archetypes.d.ts +21 -0
- package/dist/src/contracts/archetypes.js +102 -0
- package/dist/src/contracts/archetypes.js.map +1 -0
- package/dist/src/contracts/journeys.d.ts +7 -0
- package/dist/src/contracts/journeys.js +32 -0
- package/dist/src/contracts/journeys.js.map +1 -0
- package/dist/src/contracts/report.d.ts +2 -0
- package/dist/src/contracts/report.js +33 -0
- package/dist/src/contracts/report.js.map +1 -0
- package/dist/src/contracts/schema.d.ts +1038 -0
- package/dist/src/contracts/schema.js +385 -0
- package/dist/src/contracts/schema.js.map +1 -0
- package/dist/src/contracts/validator.d.ts +12 -0
- package/dist/src/contracts/validator.js +303 -0
- package/dist/src/contracts/validator.js.map +1 -0
- package/dist/src/corpus/evaluator.d.ts +2 -0
- package/dist/src/corpus/evaluator.js +203 -0
- package/dist/src/corpus/evaluator.js.map +1 -0
- package/dist/src/corpus/loader.d.ts +2 -0
- package/dist/src/corpus/loader.js +20 -0
- package/dist/src/corpus/loader.js.map +1 -0
- package/dist/src/corpus/report.d.ts +2 -0
- package/dist/src/corpus/report.js +33 -0
- package/dist/src/corpus/report.js.map +1 -0
- package/dist/src/corpus/schema.d.ts +316 -0
- package/dist/src/corpus/schema.js +269 -0
- package/dist/src/corpus/schema.js.map +1 -0
- package/dist/src/design-intelligence/loader.d.ts +2 -0
- package/dist/src/design-intelligence/loader.js +21 -0
- package/dist/src/design-intelligence/loader.js.map +1 -0
- package/dist/src/design-intelligence/report.d.ts +2 -0
- package/dist/src/design-intelligence/report.js +36 -0
- package/dist/src/design-intelligence/report.js.map +1 -0
- package/dist/src/design-intelligence/schema.d.ts +838 -0
- package/dist/src/design-intelligence/schema.js +854 -0
- package/dist/src/design-intelligence/schema.js.map +1 -0
- package/dist/src/design-intelligence/validator.d.ts +2 -0
- package/dist/src/design-intelligence/validator.js +1371 -0
- package/dist/src/design-intelligence/validator.js.map +1 -0
- package/dist/src/design-plan/compiler.d.ts +8 -0
- package/dist/src/design-plan/compiler.js +288 -0
- package/dist/src/design-plan/compiler.js.map +1 -0
- package/dist/src/design-plan/report.d.ts +2 -0
- package/dist/src/design-plan/report.js +28 -0
- package/dist/src/design-plan/report.js.map +1 -0
- package/dist/src/design-plan/schema.d.ts +202 -0
- package/dist/src/design-plan/schema.js +76 -0
- package/dist/src/design-plan/schema.js.map +1 -0
- package/dist/src/generation/loader.d.ts +2 -0
- package/dist/src/generation/loader.js +21 -0
- package/dist/src/generation/loader.js.map +1 -0
- package/dist/src/generation/policy.d.ts +12 -0
- package/dist/src/generation/policy.js +62 -0
- package/dist/src/generation/policy.js.map +1 -0
- package/dist/src/generation/react-typescript.d.ts +6 -0
- package/dist/src/generation/react-typescript.js +538 -0
- package/dist/src/generation/react-typescript.js.map +1 -0
- package/dist/src/generation/report.d.ts +2 -0
- package/dist/src/generation/report.js +21 -0
- package/dist/src/generation/report.js.map +1 -0
- package/dist/src/generation/schema.d.ts +44 -0
- package/dist/src/generation/schema.js +50 -0
- package/dist/src/generation/schema.js.map +1 -0
- package/dist/src/generation/templates/tokens.d.ts +1 -0
- package/dist/src/generation/templates/tokens.js +59 -0
- package/dist/src/generation/templates/tokens.js.map +1 -0
- package/dist/src/heuristics/evaluator.d.ts +2 -0
- package/dist/src/heuristics/evaluator.js +65 -0
- package/dist/src/heuristics/evaluator.js.map +1 -0
- package/dist/src/heuristics/loader.d.ts +2 -0
- package/dist/src/heuristics/loader.js +21 -0
- package/dist/src/heuristics/loader.js.map +1 -0
- package/dist/src/heuristics/report.d.ts +3 -0
- package/dist/src/heuristics/report.js +31 -0
- package/dist/src/heuristics/report.js.map +1 -0
- package/dist/src/heuristics/schema.d.ts +198 -0
- package/dist/src/heuristics/schema.js +197 -0
- package/dist/src/heuristics/schema.js.map +1 -0
- package/dist/src/information-design/loader.d.ts +2 -0
- package/dist/src/information-design/loader.js +21 -0
- package/dist/src/information-design/loader.js.map +1 -0
- package/dist/src/information-design/report.d.ts +2 -0
- package/dist/src/information-design/report.js +27 -0
- package/dist/src/information-design/report.js.map +1 -0
- package/dist/src/information-design/schema.d.ts +370 -0
- package/dist/src/information-design/schema.js +329 -0
- package/dist/src/information-design/schema.js.map +1 -0
- package/dist/src/information-design/validator.d.ts +2 -0
- package/dist/src/information-design/validator.js +242 -0
- package/dist/src/information-design/validator.js.map +1 -0
- package/dist/src/interface-trust/loader.d.ts +2 -0
- package/dist/src/interface-trust/loader.js +21 -0
- package/dist/src/interface-trust/loader.js.map +1 -0
- package/dist/src/interface-trust/report.d.ts +2 -0
- package/dist/src/interface-trust/report.js +26 -0
- package/dist/src/interface-trust/report.js.map +1 -0
- package/dist/src/interface-trust/schema.d.ts +299 -0
- package/dist/src/interface-trust/schema.js +238 -0
- package/dist/src/interface-trust/schema.js.map +1 -0
- package/dist/src/interface-trust/validator.d.ts +2 -0
- package/dist/src/interface-trust/validator.js +283 -0
- package/dist/src/interface-trust/validator.js.map +1 -0
- package/dist/src/portfolio/adapter-report.d.ts +3 -0
- package/dist/src/portfolio/adapter-report.js +38 -0
- package/dist/src/portfolio/adapter-report.js.map +1 -0
- package/dist/src/portfolio/adapters.d.ts +37 -0
- package/dist/src/portfolio/adapters.js +325 -0
- package/dist/src/portfolio/adapters.js.map +1 -0
- package/dist/src/portfolio/evidence.d.ts +9 -0
- package/dist/src/portfolio/evidence.js +233 -0
- package/dist/src/portfolio/evidence.js.map +1 -0
- package/dist/src/portfolio/files.d.ts +8 -0
- package/dist/src/portfolio/files.js +77 -0
- package/dist/src/portfolio/files.js.map +1 -0
- package/dist/src/portfolio/fixture-server.d.ts +11 -0
- package/dist/src/portfolio/fixture-server.js +131 -0
- package/dist/src/portfolio/fixture-server.js.map +1 -0
- package/dist/src/portfolio/loader.d.ts +2 -0
- package/dist/src/portfolio/loader.js +21 -0
- package/dist/src/portfolio/loader.js.map +1 -0
- package/dist/src/portfolio/mcp.d.ts +186 -0
- package/dist/src/portfolio/mcp.js +117 -0
- package/dist/src/portfolio/mcp.js.map +1 -0
- package/dist/src/portfolio/promotion-schema.d.ts +220 -0
- package/dist/src/portfolio/promotion-schema.js +148 -0
- package/dist/src/portfolio/promotion-schema.js.map +1 -0
- package/dist/src/portfolio/promotion.d.ts +4 -0
- package/dist/src/portfolio/promotion.js +160 -0
- package/dist/src/portfolio/promotion.js.map +1 -0
- package/dist/src/portfolio/qualification-schema.d.ts +268 -0
- package/dist/src/portfolio/qualification-schema.js +112 -0
- package/dist/src/portfolio/qualification-schema.js.map +1 -0
- package/dist/src/portfolio/qualification.d.ts +4 -0
- package/dist/src/portfolio/qualification.js +157 -0
- package/dist/src/portfolio/qualification.js.map +1 -0
- package/dist/src/portfolio/registry.d.ts +34 -0
- package/dist/src/portfolio/registry.js +240 -0
- package/dist/src/portfolio/registry.js.map +1 -0
- package/dist/src/portfolio/report.d.ts +4 -0
- package/dist/src/portfolio/report.js +47 -0
- package/dist/src/portfolio/report.js.map +1 -0
- package/dist/src/portfolio/run-schema.d.ts +135 -0
- package/dist/src/portfolio/run-schema.js +81 -0
- package/dist/src/portfolio/run-schema.js.map +1 -0
- package/dist/src/portfolio/runner.d.ts +118 -0
- package/dist/src/portfolio/runner.js +423 -0
- package/dist/src/portfolio/runner.js.map +1 -0
- package/dist/src/portfolio/schema.d.ts +251 -0
- package/dist/src/portfolio/schema.js +317 -0
- package/dist/src/portfolio/schema.js.map +1 -0
- package/dist/src/portfolio/snapshot.d.ts +89 -0
- package/dist/src/portfolio/snapshot.js +548 -0
- package/dist/src/portfolio/snapshot.js.map +1 -0
- package/dist/src/portfolio/taxonomy-schema.d.ts +215 -0
- package/dist/src/portfolio/taxonomy-schema.js +74 -0
- package/dist/src/portfolio/taxonomy-schema.js.map +1 -0
- package/dist/src/portfolio/taxonomy.d.ts +5 -0
- package/dist/src/portfolio/taxonomy.js +236 -0
- package/dist/src/portfolio/taxonomy.js.map +1 -0
- package/dist/src/portfolio/vault.d.ts +53 -0
- package/dist/src/portfolio/vault.js +176 -0
- package/dist/src/portfolio/vault.js.map +1 -0
- package/dist/src/product-brief/loader.d.ts +2 -0
- package/dist/src/product-brief/loader.js +21 -0
- package/dist/src/product-brief/loader.js.map +1 -0
- package/dist/src/product-brief/report.d.ts +2 -0
- package/dist/src/product-brief/report.js +22 -0
- package/dist/src/product-brief/report.js.map +1 -0
- package/dist/src/product-brief/schema.d.ts +367 -0
- package/dist/src/product-brief/schema.js +272 -0
- package/dist/src/product-brief/schema.js.map +1 -0
- package/dist/src/product-brief/validator.d.ts +2 -0
- package/dist/src/product-brief/validator.js +251 -0
- package/dist/src/product-brief/validator.js.map +1 -0
- package/dist/src/product.d.ts +7 -0
- package/dist/src/product.js +28 -0
- package/dist/src/product.js.map +1 -0
- package/dist/src/quality-gate/report.d.ts +2 -0
- package/dist/src/quality-gate/report.js +46 -0
- package/dist/src/quality-gate/report.js.map +1 -0
- package/dist/src/quality-gate/runner.d.ts +2 -0
- package/dist/src/quality-gate/runner.js +175 -0
- package/dist/src/quality-gate/runner.js.map +1 -0
- package/dist/src/quality-gate/schema.d.ts +75 -0
- package/dist/src/quality-gate/schema.js +37 -0
- package/dist/src/quality-gate/schema.js.map +1 -0
- package/dist/src/quality-gate/types.d.ts +49 -0
- package/dist/src/quality-gate/types.js +2 -0
- package/dist/src/quality-gate/types.js.map +1 -0
- package/dist/src/repair/loader.d.ts +2 -0
- package/dist/src/repair/loader.js +11 -0
- package/dist/src/repair/loader.js.map +1 -0
- package/dist/src/repair/policy.d.ts +16 -0
- package/dist/src/repair/policy.js +65 -0
- package/dist/src/repair/policy.js.map +1 -0
- package/dist/src/repair/report.d.ts +2 -0
- package/dist/src/repair/report.js +32 -0
- package/dist/src/repair/report.js.map +1 -0
- package/dist/src/repair/runner.d.ts +17 -0
- package/dist/src/repair/runner.js +511 -0
- package/dist/src/repair/runner.js.map +1 -0
- package/dist/src/repair/schema.d.ts +264 -0
- package/dist/src/repair/schema.js +202 -0
- package/dist/src/repair/schema.js.map +1 -0
- package/dist/src/retrieval/report.d.ts +2 -0
- package/dist/src/retrieval/report.js +21 -0
- package/dist/src/retrieval/report.js.map +1 -0
- package/dist/src/retrieval/schema.d.ts +123 -0
- package/dist/src/retrieval/schema.js +77 -0
- package/dist/src/retrieval/schema.js.map +1 -0
- package/dist/src/retrieval/search.d.ts +26 -0
- package/dist/src/retrieval/search.js +415 -0
- package/dist/src/retrieval/search.js.map +1 -0
- package/dist/src/runtime/advanced-checks.d.ts +6 -0
- package/dist/src/runtime/advanced-checks.js +487 -0
- package/dist/src/runtime/advanced-checks.js.map +1 -0
- package/dist/src/runtime/composition-checks.d.ts +5 -0
- package/dist/src/runtime/composition-checks.js +307 -0
- package/dist/src/runtime/composition-checks.js.map +1 -0
- package/dist/src/runtime/interface-checks.d.ts +12 -0
- package/dist/src/runtime/interface-checks.js +224 -0
- package/dist/src/runtime/interface-checks.js.map +1 -0
- package/dist/src/runtime/policy.d.ts +13 -0
- package/dist/src/runtime/policy.js +97 -0
- package/dist/src/runtime/policy.js.map +1 -0
- package/dist/src/runtime/report.d.ts +2 -0
- package/dist/src/runtime/report.js +48 -0
- package/dist/src/runtime/report.js.map +1 -0
- package/dist/src/runtime/schema.d.ts +406 -0
- package/dist/src/runtime/schema.js +308 -0
- package/dist/src/runtime/schema.js.map +1 -0
- package/dist/src/runtime/types.d.ts +177 -0
- package/dist/src/runtime/types.js +2 -0
- package/dist/src/runtime/types.js.map +1 -0
- package/dist/src/runtime/verifier.d.ts +2 -0
- package/dist/src/runtime/verifier.js +1201 -0
- package/dist/src/runtime/verifier.js.map +1 -0
- package/dist/src/server.d.ts +2 -0
- package/dist/src/server.js +1352 -0
- package/dist/src/server.js.map +1 -0
- package/docs/installation.md +337 -0
- package/knowledge-base/INDEX.md +285 -0
- package/knowledge-base/benchmarks/aegisops/CALIBRATION.md +52 -0
- package/knowledge-base/benchmarks/aegisops/MANIFEST.md +56 -0
- package/knowledge-base/benchmarks/aegisops/SOURCE-EVIDENCE.md +45 -0
- package/knowledge-base/benchmarks/aegisops/acceptance-criteria.md +42 -0
- package/knowledge-base/benchmarks/aegisops/anti-patterns.md +19 -0
- package/knowledge-base/benchmarks/aegisops/attestations.template.yaml +3 -0
- package/knowledge-base/benchmarks/aegisops/attestations.yaml +115 -0
- package/knowledge-base/benchmarks/aegisops/journeys.json +91 -0
- package/knowledge-base/benchmarks/aegisops/product-contract.yaml +328 -0
- package/knowledge-base/benchmarks/azure-optimizer/SOURCE-EVIDENCE.md +26 -0
- package/knowledge-base/benchmarks/azure-optimizer/V2-IMPLEMENTATION.md +39 -0
- package/knowledge-base/benchmarks/azure-optimizer/acceptance-criteria.md +23 -0
- package/knowledge-base/benchmarks/azure-optimizer/anti-patterns.md +13 -0
- package/knowledge-base/benchmarks/azure-optimizer/journeys.json +88 -0
- package/knowledge-base/benchmarks/azure-optimizer/product-contract.yaml +216 -0
- package/knowledge-base/benchmarks/azure-optimizer/v2-human-review-methodology.yaml +171 -0
- package/knowledge-base/benchmarks/azure-optimizer/v2-journeys.json +139 -0
- package/knowledge-base/benchmarks/corpus/PROVENANCE.md +21 -0
- package/knowledge-base/benchmarks/corpus/README.md +30 -0
- package/knowledge-base/benchmarks/corpus/cases/anti-slop-negative/package.json +9 -0
- package/knowledge-base/benchmarks/corpus/cases/anti-slop-negative/src/FakeDashboard.tsx +10 -0
- package/knowledge-base/benchmarks/corpus/cases/anti-slop-positive/package.json +9 -0
- package/knowledge-base/benchmarks/corpus/cases/anti-slop-positive/src/Progress.tsx +15 -0
- package/knowledge-base/benchmarks/corpus/cases/architecture-negative/package.json +9 -0
- package/knowledge-base/benchmarks/corpus/cases/architecture-negative/src/OperationsPanel.tsx +40 -0
- package/knowledge-base/benchmarks/corpus/cases/architecture-positive/package.json +9 -0
- package/knowledge-base/benchmarks/corpus/cases/architecture-positive/src/Dashboard.tsx +17 -0
- package/knowledge-base/benchmarks/corpus/cases/architecture-positive/src/theme.css +15 -0
- package/knowledge-base/benchmarks/corpus/cases/task-incomplete/SOURCE-EVIDENCE.md +3 -0
- package/knowledge-base/benchmarks/corpus/cases/task-incomplete/journeys.json +20 -0
- package/knowledge-base/benchmarks/corpus/cases/task-incomplete/product-contract.yaml +78 -0
- package/knowledge-base/benchmarks/corpus/corpus.schema.yaml +159 -0
- package/knowledge-base/benchmarks/corpus/corpus.yaml +209 -0
- package/knowledge-base/benchmarks/interface-quality/README.md +26 -0
- package/knowledge-base/benchmarks/interface-quality/SOLO-MAINTAINER-TRACK.md +35 -0
- package/knowledge-base/benchmarks/interface-quality/comparison-methodology-v1.1.schema.yaml +288 -0
- package/knowledge-base/benchmarks/interface-quality/comparison-methodology.schema.yaml +235 -0
- package/knowledge-base/benchmarks/interface-quality/comparison-methodology.template.yaml +181 -0
- package/knowledge-base/benchmarks/interface-quality/evidence/example-runtime-report.json +11 -0
- package/knowledge-base/benchmarks/interface-quality/review-session.schema.yaml +14 -0
- package/knowledge-base/benchmarks/interface-quality/review.schema.yaml +296 -0
- package/knowledge-base/benchmarks/interface-quality/review.template.yaml +43 -0
- package/knowledge-base/benchmarks/portfolio-corpus/ADAPTERS.md +68 -0
- package/knowledge-base/benchmarks/portfolio-corpus/PORTFOLIO-RUNNER.md +131 -0
- package/knowledge-base/benchmarks/portfolio-corpus/PRODUCT-TASK-CONTRACTS.md +29 -0
- package/knowledge-base/benchmarks/portfolio-corpus/PROMOTED-RULES.md +31 -0
- package/knowledge-base/benchmarks/portfolio-corpus/archetype-profiles.yaml +26 -0
- package/knowledge-base/benchmarks/portfolio-corpus/product-task-profile.schema.yaml +105 -0
- package/knowledge-base/benchmarks/portfolio-corpus/registry.schema.yaml +188 -0
- package/knowledge-base/benchmarks/portfolio-corpus/registry.template.yaml +63 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/component-size-abstention.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/component-size-negative.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/component-size-positive.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/interactive-integrity-abstention.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/interactive-integrity-negative.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/interactive-integrity-positive.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/raw-design-values-abstention.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/raw-design-values-negative.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-fixtures/raw-design-values-positive.json +10 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-holdout-evaluation.template.json +14 -0
- package/knowledge-base/benchmarks/portfolio-corpus/rule-promotion-evidence.template.json +24 -0
- package/knowledge-base/benchmarks/portfolio-corpus/v3-command-evidence.template.json +17 -0
- package/knowledge-base/benchmarks/portfolio-corpus/v3-qualification-evidence.template.json +29 -0
- package/knowledge-base/benchmarks/scenestart/CALIBRATION.md +95 -0
- package/knowledge-base/benchmarks/scenestart/MANIFEST.md +53 -0
- package/knowledge-base/benchmarks/scenestart/SOURCE-EVIDENCE.md +43 -0
- package/knowledge-base/benchmarks/scenestart/acceptance-criteria.md +59 -0
- package/knowledge-base/benchmarks/scenestart/anti-patterns.md +26 -0
- package/knowledge-base/benchmarks/scenestart/attestations.template.yaml +3 -0
- package/knowledge-base/benchmarks/scenestart/attestations.yaml +21 -0
- package/knowledge-base/benchmarks/scenestart/human-review.md +99 -0
- package/knowledge-base/benchmarks/scenestart/human-review.template.md +105 -0
- package/knowledge-base/benchmarks/scenestart/journeys.json +141 -0
- package/knowledge-base/benchmarks/scenestart/product-contract.yaml +427 -0
- package/knowledge-base/dependencies.yaml +69 -0
- package/knowledge-base/design-intelligence/MASTER.md +87 -0
- package/knowledge-base/design-intelligence/asset-generation.md +66 -0
- package/knowledge-base/design-intelligence/brand-systems.md +69 -0
- package/knowledge-base/design-intelligence/closed-loop-repair.md +95 -0
- package/knowledge-base/design-intelligence/design-deliverable.schema.yaml +1194 -0
- package/knowledge-base/design-intelligence/design-deliverable.template.yaml +591 -0
- package/knowledge-base/design-intelligence/design-plan.md +78 -0
- package/knowledge-base/design-intelligence/design-plan.schema.yaml +621 -0
- package/knowledge-base/design-intelligence/figma-production.md +63 -0
- package/knowledge-base/design-intelligence/generation-adapter.md +72 -0
- package/knowledge-base/design-intelligence/generation-adapter.schema.yaml +47 -0
- package/knowledge-base/design-intelligence/iconography.md +46 -0
- package/knowledge-base/design-intelligence/information-design.md +104 -0
- package/knowledge-base/design-intelligence/information-design.schema.yaml +390 -0
- package/knowledge-base/design-intelligence/information-design.template.yaml +281 -0
- package/knowledge-base/design-intelligence/interaction-recovery-verification.md +72 -0
- package/knowledge-base/design-intelligence/interface-trust.md +103 -0
- package/knowledge-base/design-intelligence/interface-trust.schema.yaml +263 -0
- package/knowledge-base/design-intelligence/interface-trust.template.yaml +173 -0
- package/knowledge-base/design-intelligence/licensing-and-provenance.md +59 -0
- package/knowledge-base/design-intelligence/presentation-design.md +56 -0
- package/knowledge-base/design-intelligence/product-design-brief.md +67 -0
- package/knowledge-base/design-intelligence/product-design-brief.schema.yaml +279 -0
- package/knowledge-base/design-intelligence/product-design-brief.template.yaml +225 -0
- package/knowledge-base/design-intelligence/repair-request.schema.yaml +95 -0
- package/knowledge-base/design-intelligence/repair-request.template.yaml +39 -0
- package/knowledge-base/design-intelligence/visual-accessibility.md +56 -0
- package/knowledge-base/design-intelligence/visual-polish.md +172 -0
- package/knowledge-base/maintained/architecture/MASTER.md +22 -0
- package/knowledge-base/maintained/architecture/component-boundaries.md +30 -0
- package/knowledge-base/maintained/architecture/product-platforms.md +25 -0
- package/knowledge-base/maintained/architecture/quality-attributes-and-evaluation.md +35 -0
- package/knowledge-base/maintained/product-patterns/MASTER.md +10 -0
- package/knowledge-base/maintained/product-patterns/ai-workspaces.md +26 -0
- package/knowledge-base/maintained/product-patterns/operational-dashboards.md +22 -0
- package/knowledge-base/provenance.yaml +196 -0
- package/knowledge-base/retrieval-scope.yaml +43 -0
- package/knowledge-base/usability-evaluation/HEURISTIC_EVALUATION.md +115 -0
- package/knowledge-base/usability-evaluation/heuristic-review.schema.yaml +210 -0
- package/knowledge-base/usability-evaluation/heuristic-review.template.yaml +37 -0
- package/package.json +133 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
version: "1.0"
|
|
2
|
+
id: example-operations-brief
|
|
3
|
+
product: Example Operations Workspace
|
|
4
|
+
status: validated
|
|
5
|
+
preparedAt: 2026-08-28T20:00:00+03:00
|
|
6
|
+
preparedBy:
|
|
7
|
+
type: mixed
|
|
8
|
+
name: ZtotheZ and design agent
|
|
9
|
+
evidenceSources:
|
|
10
|
+
- id: operator-request
|
|
11
|
+
kind: user-provided
|
|
12
|
+
description: Operators need to identify the highest-impact issue and start a bounded remediation without losing scope context.
|
|
13
|
+
owner: Product owner
|
|
14
|
+
- id: service-contract
|
|
15
|
+
kind: technical-source
|
|
16
|
+
description: The service contract exposes scoped findings and can fall back to disclosed demonstration data when disconnected.
|
|
17
|
+
location: docs/service-contract.yaml
|
|
18
|
+
owner: Engineering
|
|
19
|
+
problem:
|
|
20
|
+
statement: Operators cannot reliably distinguish the highest-impact issue from supporting telemetry before taking action.
|
|
21
|
+
currentOutcome: Reviewers scan several disconnected panels and may act without confirming scope or result origin.
|
|
22
|
+
desiredOutcome: An operator identifies scope, priority, evidence, and the next safe action from one coherent task path.
|
|
23
|
+
evidenceRefs: [operator-request, service-contract]
|
|
24
|
+
scope:
|
|
25
|
+
included:
|
|
26
|
+
- Scoped findings overview
|
|
27
|
+
- Finding evidence drill-down
|
|
28
|
+
- Bounded remediation start and recovery
|
|
29
|
+
excluded:
|
|
30
|
+
- Automatic remediation without confirmation
|
|
31
|
+
- Production credential management
|
|
32
|
+
audiences:
|
|
33
|
+
- id: operations-engineer
|
|
34
|
+
role: Operations engineer
|
|
35
|
+
priority: primary
|
|
36
|
+
goals:
|
|
37
|
+
- Identify the most consequential finding.
|
|
38
|
+
- Verify evidence before starting remediation.
|
|
39
|
+
contexts:
|
|
40
|
+
- Desktop operations review during normal and degraded service states.
|
|
41
|
+
- Narrow viewport incident triage away from the primary workstation.
|
|
42
|
+
constraints:
|
|
43
|
+
- Must preserve environment and scope during failures.
|
|
44
|
+
- Must not confuse demonstration results with live results.
|
|
45
|
+
accessibilityNeeds:
|
|
46
|
+
- Keyboard-complete operation and visible focus.
|
|
47
|
+
- High-contrast text and non-color severity cues.
|
|
48
|
+
expertise: mixed
|
|
49
|
+
evidenceRefs: [operator-request]
|
|
50
|
+
outcomes:
|
|
51
|
+
- id: identify-next-action
|
|
52
|
+
kind: user
|
|
53
|
+
statement: The operator can identify the highest-impact finding and its next action without inspecting unrelated telemetry.
|
|
54
|
+
measure:
|
|
55
|
+
signal: Primary journey reaches the evidence-backed action from the overview.
|
|
56
|
+
baseline:
|
|
57
|
+
status: unknown
|
|
58
|
+
reason: No retained interaction baseline exists for the example product.
|
|
59
|
+
target: Browser journey exposes scope, priority, evidence, and action at every maintained viewport.
|
|
60
|
+
evidenceRefs: [operator-request]
|
|
61
|
+
- id: preserve-result-trust
|
|
62
|
+
kind: risk-reduction
|
|
63
|
+
statement: The interface preserves live or demonstration origin throughout findings and actions.
|
|
64
|
+
measure:
|
|
65
|
+
signal: Result-origin assertions remain visible before action and in resulting records.
|
|
66
|
+
baseline:
|
|
67
|
+
status: not-applicable
|
|
68
|
+
reason: This is a new example workflow.
|
|
69
|
+
target: All live, fallback, stale, and disconnected fixtures pass the trust contract.
|
|
70
|
+
evidenceRefs: [service-contract]
|
|
71
|
+
dataSources:
|
|
72
|
+
- id: findings-service
|
|
73
|
+
name: Findings service
|
|
74
|
+
mode: hybrid
|
|
75
|
+
latency: async
|
|
76
|
+
classification: internal
|
|
77
|
+
sourceEvidenceRef: service-contract
|
|
78
|
+
freshness: Runtime response timestamp with timezone; unknown until a response arrives.
|
|
79
|
+
limitations:
|
|
80
|
+
- Demonstration fallback cannot establish production service availability.
|
|
81
|
+
fallback:
|
|
82
|
+
kind: demo
|
|
83
|
+
disclosure: Show Demonstration data next to scope, findings, actions, history, and exports.
|
|
84
|
+
preservesOrigin: true
|
|
85
|
+
tasks:
|
|
86
|
+
- id: review-and-start-remediation
|
|
87
|
+
title: Review the highest-impact finding and start remediation
|
|
88
|
+
audienceRefs: [operations-engineer]
|
|
89
|
+
outcomeRefs: [identify-next-action, preserve-result-trust]
|
|
90
|
+
dataRefs: [findings-service]
|
|
91
|
+
trigger: A scheduled or manual analysis has findings available for the selected environment.
|
|
92
|
+
goal: Confirm scope and evidence, then start the bounded remediation for the highest-impact finding.
|
|
93
|
+
frequency: daily
|
|
94
|
+
criticality: high
|
|
95
|
+
consequential: true
|
|
96
|
+
inputs:
|
|
97
|
+
- Selected environment
|
|
98
|
+
- Finding identifier
|
|
99
|
+
successSignal: The selected finding enters a started state with scope, origin, evidence, and verification instructions preserved.
|
|
100
|
+
failureImpact: The operator may act on the wrong environment or mistake demonstration evidence for live service output.
|
|
101
|
+
recovery: Preserve the selected scope and finding, explain the failure, and offer a bounded retry or return to review.
|
|
102
|
+
evidenceRefs: [operator-request, service-contract]
|
|
103
|
+
states:
|
|
104
|
+
- state: loading
|
|
105
|
+
taskRefs: [review-and-start-remediation]
|
|
106
|
+
behavior: Preserve layout and selected scope while announcing bounded progress.
|
|
107
|
+
recovery: Allow cancellation and retain the current finding selection.
|
|
108
|
+
disclosure: Connection and result origin remain checking until runtime evidence resolves them.
|
|
109
|
+
- state: empty
|
|
110
|
+
taskRefs: [review-and-start-remediation]
|
|
111
|
+
behavior: State that no findings exist for the selected scope and period.
|
|
112
|
+
recovery: Let the operator change scope or rerun analysis.
|
|
113
|
+
disclosure: Preserve data mode, scope, freshness, and limitations.
|
|
114
|
+
- state: success
|
|
115
|
+
taskRefs: [review-and-start-remediation]
|
|
116
|
+
behavior: Show the started remediation, affected scope, evidence, and verification step.
|
|
117
|
+
recovery: Provide a return path to the finding and history.
|
|
118
|
+
disclosure: Preserve result origin and service state in the resulting record.
|
|
119
|
+
- state: error
|
|
120
|
+
taskRefs: [review-and-start-remediation]
|
|
121
|
+
behavior: Explain the failed operation without discarding the selected finding.
|
|
122
|
+
recovery: Offer a bounded retry and a safe return to review.
|
|
123
|
+
disclosure: Distinguish interface availability from service failure.
|
|
124
|
+
- state: partial
|
|
125
|
+
taskRefs: [review-and-start-remediation]
|
|
126
|
+
behavior: Label unavailable evidence and prevent unsupported certainty.
|
|
127
|
+
recovery: Allow review of available evidence or retry missing portions.
|
|
128
|
+
disclosure: State which findings or evidence are incomplete.
|
|
129
|
+
- state: stale
|
|
130
|
+
taskRefs: [review-and-start-remediation]
|
|
131
|
+
behavior: Keep stale findings visible with timestamp and block unsafe assumptions of currency.
|
|
132
|
+
recovery: Refresh while preserving scope and selection.
|
|
133
|
+
disclosure: Show stale status, observed time, timezone, and source.
|
|
134
|
+
- state: disconnected
|
|
135
|
+
taskRefs: [review-and-start-remediation]
|
|
136
|
+
behavior: Keep the interface usable and disable actions that require a verified connection.
|
|
137
|
+
recovery: Retry connection or enter explicitly disclosed demonstration mode.
|
|
138
|
+
disclosure: Show disconnected state separately from demonstration result origin.
|
|
139
|
+
platforms:
|
|
140
|
+
- id: responsive-browser
|
|
141
|
+
kind: responsive-web
|
|
142
|
+
priority: primary
|
|
143
|
+
viewports: [375, 768, 1024, 1440]
|
|
144
|
+
inputModes: [keyboard, pointer, touch, assistive-technology]
|
|
145
|
+
constraints:
|
|
146
|
+
- Avoid competing scroll regions on narrow viewports.
|
|
147
|
+
- Keep the next action visible before telemetry detail.
|
|
148
|
+
constraints:
|
|
149
|
+
- TypeScript and semantic token architecture.
|
|
150
|
+
- Local fixture states must not contact production services.
|
|
151
|
+
- Evidence output must not contain credentials or absolute private paths.
|
|
152
|
+
requirements:
|
|
153
|
+
- id: requirement-decision-path
|
|
154
|
+
category: functional
|
|
155
|
+
priority: must
|
|
156
|
+
statement: The overview exposes scope, highest-impact finding, evidence, and the bounded next action in decision order.
|
|
157
|
+
rationale: The primary task depends on identifying and verifying the right action.
|
|
158
|
+
taskRefs: [review-and-start-remediation]
|
|
159
|
+
evidenceRefs: [operator-request]
|
|
160
|
+
- id: requirement-truth
|
|
161
|
+
category: reliability
|
|
162
|
+
priority: must
|
|
163
|
+
statement: Live, demonstration, stale, partial, and disconnected results remain visibly distinguishable before action and in resulting records.
|
|
164
|
+
rationale: Unsupported operational certainty can cause incorrect remediation.
|
|
165
|
+
taskRefs: [review-and-start-remediation]
|
|
166
|
+
evidenceRefs: [service-contract]
|
|
167
|
+
- id: requirement-accessibility
|
|
168
|
+
category: accessibility
|
|
169
|
+
priority: must
|
|
170
|
+
statement: The primary task supports keyboard, visible focus, non-color status cues, text resize, reflow, and maintained contrast.
|
|
171
|
+
rationale: The task must remain operable across declared access needs and viewports.
|
|
172
|
+
taskRefs: [review-and-start-remediation]
|
|
173
|
+
evidenceRefs: [operator-request]
|
|
174
|
+
- id: requirement-boundaries
|
|
175
|
+
category: maintainability
|
|
176
|
+
priority: should
|
|
177
|
+
statement: Domain state, service access, and rendering remain independently testable.
|
|
178
|
+
rationale: Trust and recovery behavior must not depend on one monolithic component.
|
|
179
|
+
taskRefs: [review-and-start-remediation]
|
|
180
|
+
evidenceRefs: [service-contract]
|
|
181
|
+
assumptions:
|
|
182
|
+
- id: assumption-service-shape
|
|
183
|
+
statement: The declared service contract represents the initial fixture response shape.
|
|
184
|
+
risk: low
|
|
185
|
+
status: validated
|
|
186
|
+
evidenceRefs: [service-contract]
|
|
187
|
+
validationMethod: Validate fixtures against the service contract before browser verification.
|
|
188
|
+
acceptanceCriteria:
|
|
189
|
+
- id: acceptance-decision-path
|
|
190
|
+
statement: At 375, 768, 1024, and 1440 CSS pixels, the operator can inspect scope, priority, evidence, and next action without telemetry preceding the action.
|
|
191
|
+
requirementRefs: [requirement-decision-path]
|
|
192
|
+
taskRefs: [review-and-start-remediation]
|
|
193
|
+
method: browser-test
|
|
194
|
+
expectedEvidence: Checksummed captures and journey assertions for all four viewports.
|
|
195
|
+
blocking: true
|
|
196
|
+
- id: acceptance-trust-states
|
|
197
|
+
statement: Live, demonstration fallback, partial, stale, and disconnected fixtures preserve origin and limitations before and after the action.
|
|
198
|
+
requirementRefs: [requirement-truth]
|
|
199
|
+
taskRefs: [review-and-start-remediation]
|
|
200
|
+
method: integration-test
|
|
201
|
+
expectedEvidence: State-specific contract and runtime assertions with no unsupported live claim.
|
|
202
|
+
blocking: true
|
|
203
|
+
- id: acceptance-accessibility
|
|
204
|
+
statement: The primary journey passes keyboard, focus, contrast, target, text-resize, reflow, and reduced-motion checks.
|
|
205
|
+
requirementRefs: [requirement-accessibility]
|
|
206
|
+
taskRefs: [review-and-start-remediation]
|
|
207
|
+
method: browser-test
|
|
208
|
+
expectedEvidence: Browser report with applicable accessibility checks passing.
|
|
209
|
+
blocking: true
|
|
210
|
+
- id: acceptance-boundaries
|
|
211
|
+
statement: Static audit reports no domain-state ownership leak or shared component threshold violation in the primary task path.
|
|
212
|
+
requirementRefs: [requirement-boundaries]
|
|
213
|
+
taskRefs: [review-and-start-remediation]
|
|
214
|
+
method: static-analysis
|
|
215
|
+
expectedEvidence: Architecture audit report bound to the source revision.
|
|
216
|
+
blocking: false
|
|
217
|
+
downstreamContracts:
|
|
218
|
+
- kind: product-task
|
|
219
|
+
status: planned
|
|
220
|
+
- kind: interface-trust
|
|
221
|
+
status: planned
|
|
222
|
+
- kind: information-design
|
|
223
|
+
status: planned
|
|
224
|
+
- kind: design-deliverable
|
|
225
|
+
status: planned
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
|
2
|
+
$id: https://ztothez.dev/schemas/repair-request-1.0.schema.json
|
|
3
|
+
title: ZtotheZ Bounded Repair Request
|
|
4
|
+
type: object
|
|
5
|
+
additionalProperties: false
|
|
6
|
+
required: [version, id, target, findings, attempts, stopping]
|
|
7
|
+
properties:
|
|
8
|
+
version: { const: "1.0" }
|
|
9
|
+
id: { $ref: "#/$defs/id" }
|
|
10
|
+
target:
|
|
11
|
+
type: object
|
|
12
|
+
additionalProperties: false
|
|
13
|
+
required: [adapter, manifest]
|
|
14
|
+
properties:
|
|
15
|
+
adapter: { const: react-typescript-vite }
|
|
16
|
+
manifest: { $ref: "#/$defs/relativePath" }
|
|
17
|
+
findings:
|
|
18
|
+
type: array
|
|
19
|
+
minItems: 1
|
|
20
|
+
maxItems: 20
|
|
21
|
+
items:
|
|
22
|
+
type: object
|
|
23
|
+
additionalProperties: false
|
|
24
|
+
required: [id, source, checkId, acceptanceCriterion, expectedEvidence]
|
|
25
|
+
properties:
|
|
26
|
+
id: { $ref: "#/$defs/id" }
|
|
27
|
+
source: { enum: [architecture, runtime] }
|
|
28
|
+
checkId: { type: string, minLength: 1, maxLength: 128 }
|
|
29
|
+
file: { $ref: "#/$defs/relativePath" }
|
|
30
|
+
messageIncludes: { type: string, minLength: 1, maxLength: 512 }
|
|
31
|
+
viewport: { type: string, minLength: 1, maxLength: 128 }
|
|
32
|
+
journey: { type: string, minLength: 1, maxLength: 128 }
|
|
33
|
+
selector: { type: string, minLength: 1, maxLength: 1024 }
|
|
34
|
+
acceptanceCriterion: { $ref: "#/$defs/id" }
|
|
35
|
+
expectedEvidence:
|
|
36
|
+
type: array
|
|
37
|
+
minItems: 1
|
|
38
|
+
maxItems: 4
|
|
39
|
+
uniqueItems: true
|
|
40
|
+
items:
|
|
41
|
+
enum: [contract-validation, static-audit, browser-runtime, responsive-screenshots]
|
|
42
|
+
allOf:
|
|
43
|
+
- if:
|
|
44
|
+
properties: { source: { const: architecture } }
|
|
45
|
+
then:
|
|
46
|
+
required: [file]
|
|
47
|
+
attempts:
|
|
48
|
+
type: array
|
|
49
|
+
minItems: 1
|
|
50
|
+
maxItems: 3
|
|
51
|
+
items:
|
|
52
|
+
type: object
|
|
53
|
+
additionalProperties: false
|
|
54
|
+
required: [id, operations]
|
|
55
|
+
properties:
|
|
56
|
+
id: { $ref: "#/$defs/id" }
|
|
57
|
+
operations:
|
|
58
|
+
type: array
|
|
59
|
+
minItems: 1
|
|
60
|
+
maxItems: 20
|
|
61
|
+
items:
|
|
62
|
+
type: object
|
|
63
|
+
additionalProperties: false
|
|
64
|
+
required: [id, findingRef, kind, file, expectedFileDigest, before, after, expectedOccurrences]
|
|
65
|
+
properties:
|
|
66
|
+
id: { $ref: "#/$defs/id" }
|
|
67
|
+
findingRef: { $ref: "#/$defs/id" }
|
|
68
|
+
kind: { const: replace-exact }
|
|
69
|
+
file: { $ref: "#/$defs/relativePath" }
|
|
70
|
+
expectedFileDigest: { $ref: "#/$defs/digest" }
|
|
71
|
+
before: { type: string, minLength: 1, maxLength: 100000 }
|
|
72
|
+
after: { type: string, maxLength: 100000 }
|
|
73
|
+
expectedOccurrences: { type: integer, minimum: 1, maximum: 20 }
|
|
74
|
+
stopping:
|
|
75
|
+
type: object
|
|
76
|
+
additionalProperties: false
|
|
77
|
+
required: [maxAttempts, resolved, repeatedFinding, preconditionFailure, verificationFailure]
|
|
78
|
+
properties:
|
|
79
|
+
maxAttempts: { type: integer, minimum: 1, maximum: 3 }
|
|
80
|
+
resolved: { const: all-referenced-findings-absent-and-quality-gate-passed }
|
|
81
|
+
repeatedFinding: { const: stop-unresolved-and-restore }
|
|
82
|
+
preconditionFailure: { const: stop-without-write }
|
|
83
|
+
verificationFailure: { const: stop-unresolved-and-restore }
|
|
84
|
+
$defs:
|
|
85
|
+
id:
|
|
86
|
+
type: string
|
|
87
|
+
pattern: "^[a-z0-9][a-z0-9-]{0,63}$"
|
|
88
|
+
digest:
|
|
89
|
+
type: string
|
|
90
|
+
pattern: "^[a-f0-9]{64}$"
|
|
91
|
+
relativePath:
|
|
92
|
+
type: string
|
|
93
|
+
minLength: 1
|
|
94
|
+
maxLength: 1024
|
|
95
|
+
pattern: "^(?!/)(?!.*(?:^|/)[.][.](?:/|$)).+$"
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
version: "1.0"
|
|
2
|
+
id: responsive-token-repair
|
|
3
|
+
target:
|
|
4
|
+
adapter: react-typescript-vite
|
|
5
|
+
manifest: ztothez-design-generation.json
|
|
6
|
+
findings:
|
|
7
|
+
- id: raw-responsive-values
|
|
8
|
+
source: architecture
|
|
9
|
+
checkId: ZTDE-DESIGN-001
|
|
10
|
+
file: src/styles/app.css
|
|
11
|
+
messageIncludes: raw visual values
|
|
12
|
+
acceptanceCriterion: responsive-integrity
|
|
13
|
+
expectedEvidence:
|
|
14
|
+
- contract-validation
|
|
15
|
+
- static-audit
|
|
16
|
+
- browser-runtime
|
|
17
|
+
- responsive-screenshots
|
|
18
|
+
attempts:
|
|
19
|
+
- id: replace-with-semantic-tokens
|
|
20
|
+
operations:
|
|
21
|
+
- id: remove-raw-responsive-values
|
|
22
|
+
findingRef: raw-responsive-values
|
|
23
|
+
kind: replace-exact
|
|
24
|
+
file: src/styles/app.css
|
|
25
|
+
expectedFileDigest: "0000000000000000000000000000000000000000000000000000000000000000"
|
|
26
|
+
before: |-
|
|
27
|
+
.example-unsafe-rule {
|
|
28
|
+
color: #111111;
|
|
29
|
+
background: #eeeeee;
|
|
30
|
+
border-color: #777777;
|
|
31
|
+
}
|
|
32
|
+
after: ""
|
|
33
|
+
expectedOccurrences: 1
|
|
34
|
+
stopping:
|
|
35
|
+
maxAttempts: 1
|
|
36
|
+
resolved: all-referenced-findings-absent-and-quality-gate-passed
|
|
37
|
+
repeatedFinding: stop-unresolved-and-restore
|
|
38
|
+
preconditionFailure: stop-without-write
|
|
39
|
+
verificationFailure: stop-unresolved-and-restore
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Visual Accessibility Verification
|
|
2
|
+
|
|
3
|
+
Use this module for normal-text contrast ratios, non-color status cues, semantic token pairs, focus
|
|
4
|
+
contrast, visual alternatives, and rendered accessibility verification. Validate visual
|
|
5
|
+
accessibility at token, design-source, exported-artifact, and rendered-implementation levels. A
|
|
6
|
+
passing token pair does not prove the pixels users receive.
|
|
7
|
+
|
|
8
|
+
## Step 1: Declare Semantic Pairs
|
|
9
|
+
|
|
10
|
+
Record foreground and background token pairs for normal text, qualifying large text, controls, focus indicators, graphical objects, status treatments, and data visualization. Test every supported mode and state.
|
|
11
|
+
|
|
12
|
+
The deterministic manifest validator applies these WCAG 2.2 thresholds:
|
|
13
|
+
|
|
14
|
+
- Normal text: at least 4.5:1.
|
|
15
|
+
- Large text: at least 3:1, with large text declared as at least 24 CSS pixels regular or 18.66 CSS pixels at weight 700 or greater.
|
|
16
|
+
- User-interface components and meaningful graphical objects: at least 3:1 where non-text contrast applies.
|
|
17
|
+
|
|
18
|
+
The validator supports opaque `#RRGGBB` primitives. Use a rendered check for alpha, images, video, gradients, blending, filters, and changing backgrounds.
|
|
19
|
+
|
|
20
|
+
## Step 2: Prevent Color-Only Meaning
|
|
21
|
+
|
|
22
|
+
For every status, validation result, selection, chart series, required field, and changed value, combine color with at least one independent cue such as text, icon, shape, pattern, position, value, or underline. Assistive-technology text alone does not replace the visual cue needed by sighted users who do not distinguish the colors.
|
|
23
|
+
|
|
24
|
+
## Step 3: Provide Visual Alternatives
|
|
25
|
+
|
|
26
|
+
Classify every asset:
|
|
27
|
+
|
|
28
|
+
- Decorative: empty alternative and hidden semantics.
|
|
29
|
+
- Short informative image: concise alternative text describing purpose in context.
|
|
30
|
+
- Complex image or diagram: short alternative plus adjacent long description.
|
|
31
|
+
- Chart: summary plus accessible data table when users need exact values.
|
|
32
|
+
- Audio or video: captions, transcript, and audio description as applicable.
|
|
33
|
+
- Screenshot: describe the relevant state or annotation, not every visible pixel.
|
|
34
|
+
|
|
35
|
+
Do not repeat nearby visible text. Do not embed essential copy only in images.
|
|
36
|
+
|
|
37
|
+
## Step 4: Check Scale And Perception
|
|
38
|
+
|
|
39
|
+
- Inspect at 200 percent text resizing and zoom.
|
|
40
|
+
- Verify focus remains visible and unobscured.
|
|
41
|
+
- Test high-contrast and forced-color behavior when the platform supports them.
|
|
42
|
+
- Respect reduced-motion preference and remove nonessential movement.
|
|
43
|
+
- Check target size and spacing for touch input.
|
|
44
|
+
- Verify charts, maps, and diagrams under color-vision simulations without treating simulation as user testing.
|
|
45
|
+
- Inspect light, dark, print, projected, and disabled states independently.
|
|
46
|
+
|
|
47
|
+
## Step 5: Verify Final Output
|
|
48
|
+
|
|
49
|
+
Run the manifest validator for declarations and token math. Run browser verification for implemented UI. Inspect image exports at native size. Inspect document and presentation reading order after export. Use human review for hierarchy, legibility, comprehension, and cultural interpretation.
|
|
50
|
+
|
|
51
|
+
Record limitations when a check cannot model the actual background or output format. Never suppress a failure merely because the intended aesthetic uses low contrast.
|
|
52
|
+
|
|
53
|
+
## Standards References
|
|
54
|
+
|
|
55
|
+
- [WCAG 2.2 use of color](https://www.w3.org/WAI/WCAG22/Understanding/use-of-color)
|
|
56
|
+
- [WCAG 2.2 distinguishable guidance](https://www.w3.org/WAI/WCAG22/Understanding/distinguishable.html)
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Visual Polish System
|
|
2
|
+
|
|
3
|
+
Use this module when an implemented interface must feel intentional, balanced, legible, domain-appropriate, and ready for rendered review. Declare `interface-system` in a version `2.1` design-deliverable manifest and complete the visual-polish sections before implementation is called visually complete. Existing version `2.0` manifests remain valid but do not enforce the review-derived decision-order and theme-coverage additions below.
|
|
4
|
+
|
|
5
|
+
Visual polish is not decoration. It is the consistent control of hierarchy, typography, density, alignment, state language, chart communication, motion, and responsive composition around the product task.
|
|
6
|
+
|
|
7
|
+
## Evidence Boundary
|
|
8
|
+
|
|
9
|
+
Keep these outcomes separate:
|
|
10
|
+
|
|
11
|
+
1. `passed`: the manifest is structurally valid and its declared references are consistent.
|
|
12
|
+
2. `renderedEvidenceReady`: verified screenshots and runtime reports exist at every required viewport.
|
|
13
|
+
3. `humanReviewReady`: attributable reviewer-supplied evidence covers hierarchy, balance, scanability, density, and domain fit.
|
|
14
|
+
4. `releaseReady`: all three conditions are satisfied.
|
|
15
|
+
|
|
16
|
+
`planned` and `captured` evidence is not verified evidence. An agent must not mark a human review complete or create reviewer identities, observations, or approval records.
|
|
17
|
+
|
|
18
|
+
## Step 1: Choose A Domain Direction
|
|
19
|
+
|
|
20
|
+
Define the domain, visual intent, three to eight principles, prohibited treatments, and semantic token references. The direction must make the primary task easier to scan and trust.
|
|
21
|
+
|
|
22
|
+
For operational products, favor calm surfaces, explicit state labels, compact evidence, stable geometry, and high information contrast. For creative products, expression may be stronger, but interaction state and content hierarchy must remain readable.
|
|
23
|
+
|
|
24
|
+
Reject these default generator patterns unless a real product requirement establishes meaning:
|
|
25
|
+
|
|
26
|
+
- Decorative agent or node diagrams.
|
|
27
|
+
- Excessive glow around controls, cards, or status indicators.
|
|
28
|
+
- Gradients that do not encode a value, brand transition, or spatial function.
|
|
29
|
+
- Pulsing dots, shields, rings, or ornaments presented as operational proof.
|
|
30
|
+
- Repeated floating cards used as page sections.
|
|
31
|
+
- Oversized headings inside compact tools or dashboards.
|
|
32
|
+
- A one-hue palette that erases hierarchy between surfaces, actions, evidence, and states.
|
|
33
|
+
|
|
34
|
+
## Step 2: Bind Visual Usage To Semantic Tokens
|
|
35
|
+
|
|
36
|
+
Keep three token responsibilities:
|
|
37
|
+
|
|
38
|
+
- `primitive`: raw values such as colors, dimensions, font families, weights, durations, numbers, and shadows.
|
|
39
|
+
- `semantic`: product meaning such as primary text, raised surface, selected border, compact row height, or feedback duration.
|
|
40
|
+
- `component`: a stable component decision that references a semantic or primitive token where the design-system architecture requires it.
|
|
41
|
+
|
|
42
|
+
Visual-direction, typography, composition, density, states, motion, and chart contracts must reference semantic or component tokens. Never bind component usage directly to primitives. Repository audits must also reject repeated raw colors and visual values outside identifiable token-definition files.
|
|
43
|
+
|
|
44
|
+
## Step 3: Define Typography Roles
|
|
45
|
+
|
|
46
|
+
Declare all eight roles with family, size, weight, line-height, color, and usage:
|
|
47
|
+
|
|
48
|
+
1. `body`
|
|
49
|
+
2. `label`
|
|
50
|
+
3. `heading`
|
|
51
|
+
4. `metadata`
|
|
52
|
+
5. `metric`
|
|
53
|
+
6. `evidence`
|
|
54
|
+
7. `log`
|
|
55
|
+
8. `code`
|
|
56
|
+
|
|
57
|
+
Use at least 16 CSS pixels for body text unless a tested platform convention requires otherwise. Keep ordinary reading lines between 45 and 90 characters. Use tabular numerals for changing operational metrics and aligned comparisons.
|
|
58
|
+
|
|
59
|
+
Do not create hierarchy by font size alone. Combine role, weight, surface, spacing, and position. Keep metadata quieter than evidence and evidence quieter than the primary task outcome without reducing essential text below readable contrast or size.
|
|
60
|
+
|
|
61
|
+
## Step 4: Build Composition And Rhythm
|
|
62
|
+
|
|
63
|
+
Declare grids at 375, 768, 1024, and 1440 CSS pixels. For each viewport, specify columns, gutter, margin, and composition behavior. Responsive changes may alter geometry but must preserve semantic order and task continuity.
|
|
64
|
+
|
|
65
|
+
Define:
|
|
66
|
+
|
|
67
|
+
- Fluid, bounded, or hybrid content width with a maximum.
|
|
68
|
+
- A base spacing token and four or more allowed spacing steps.
|
|
69
|
+
- Alignment rules for headings, labels, values, controls, tables, and evidence.
|
|
70
|
+
- Stable dimensions for boards, rows, toolbars, media, charts, and controls whose content or state changes could shift layout.
|
|
71
|
+
- Canvas, subtle, raised, overlay, and inverse surfaces as needed.
|
|
72
|
+
- Default, strong, focus, and selected borders.
|
|
73
|
+
- Base, raised, and overlay elevation roles.
|
|
74
|
+
- Primary, secondary, tertiary, and muted emphasis.
|
|
75
|
+
- A selected state with background, border, visible indicator, and a non-color cue.
|
|
76
|
+
|
|
77
|
+
Use elevation to explain stacking or interaction, not to make every region float. Use borders to establish grouping and selected state, not to outline every element equally.
|
|
78
|
+
|
|
79
|
+
## Step 5: Choose Density Deliberately
|
|
80
|
+
|
|
81
|
+
Select `comfortable`, `compact`, `dense`, or `adaptive` from task frequency, data volume, pointer precision, and reading burden. Declare control height, row heights, spacing tokens, and no more than three simultaneous primary actions.
|
|
82
|
+
|
|
83
|
+
For each required viewport, state the density mode and visible priorities, then map each priority to
|
|
84
|
+
a canonical `priorityRole`. Keep `context`, `primary-outcome`, and `next-action` visible at every
|
|
85
|
+
viewport. Place telemetry, detailed evidence, and history after the next action. At 375 CSS pixels,
|
|
86
|
+
use comfortable density and expose at most four decision-critical priorities before expandable
|
|
87
|
+
detail. At 768 CSS pixels, do not use dense mode. Do not solve crowding only by shrinking text.
|
|
88
|
+
|
|
89
|
+
Use progressive disclosure for supporting metrics, telemetry, history, logs, and detailed evidence,
|
|
90
|
+
but never hide the primary outcome, critical exception, or next action behind unrelated navigation.
|
|
91
|
+
Expansion must preserve task context, focus order, and state continuity.
|
|
92
|
+
|
|
93
|
+
## Step 6: Unify Interaction States
|
|
94
|
+
|
|
95
|
+
Define one visual language for:
|
|
96
|
+
|
|
97
|
+
```text
|
|
98
|
+
loading empty success warning error partial disabled selected focus
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Each state needs behavior and semantic token bindings. Warning, error, partial, and selected states require text or a semantic icon in addition to color. Loading must preserve stable geometry. Empty states must explain scope and recovery. Partial and stale content must remain distinguishable from success. Disabled controls must remain legible and explain unavailable actions where necessary. Focus must remain visible against adjacent surfaces.
|
|
102
|
+
|
|
103
|
+
## Step 7: Constrain Motion
|
|
104
|
+
|
|
105
|
+
Use motion only to explain state change, continuity, feedback, progress, or spatial relationship. Define semantic duration categories:
|
|
106
|
+
|
|
107
|
+
- `instant`: 0 to 100 milliseconds.
|
|
108
|
+
- `feedback`: 100 to 220 milliseconds.
|
|
109
|
+
- `transition`: 150 to 350 milliseconds.
|
|
110
|
+
- `emphasis`: 200 to 500 milliseconds.
|
|
111
|
+
|
|
112
|
+
Declare the trigger, animated property, duration category, purpose, and whether each motion is interruptible. Every motion requires a reduced-motion equivalent that removes, replaces, or shortens movement while preserving state meaning. Avoid continuous ornamental movement and motion that delays task completion.
|
|
113
|
+
|
|
114
|
+
## Step 8: Design Charts As Decision Surfaces
|
|
115
|
+
|
|
116
|
+
For every chart, declare purpose, source metric identifiers, title and value visibility, label strategy, legend behavior, comparison context, accessible table or text alternative, loading, empty, partial, and error states, semantic tokens, and non-color cues.
|
|
117
|
+
|
|
118
|
+
Remove decorative charts. Prefer direct labels when they reduce lookup cost. Use tables when exact comparison is the task. Do not rely on hover for values, on color alone for series, or on a trend without baseline and period context.
|
|
119
|
+
|
|
120
|
+
## Step 9: Capture Required Viewports
|
|
121
|
+
|
|
122
|
+
Create one stable fixture or product journey and capture 375, 768, 1024, and 1440 CSS pixel evidence. A verified capture records:
|
|
123
|
+
|
|
124
|
+
- Screenshot path.
|
|
125
|
+
- Runtime report path.
|
|
126
|
+
- SHA-256 checksum of the screenshot.
|
|
127
|
+
- Exact viewport.
|
|
128
|
+
|
|
129
|
+
Use `planned` before capture, `captured` when files exist but have not been reviewed against the report, and `verified` only after evidence integrity and expected composition are checked. Browser verification must still inspect clipping, overlap, text and non-text contrast, focus, target size, keyboard behavior, reflow, text resize, reduced motion, decision order, visual claims, and rendered asset metadata.
|
|
130
|
+
|
|
131
|
+
For version `2.1`, declare normal-text contrast pairs for every typography foreground against the
|
|
132
|
+
canvas in the default mode and every declared token mode. Declare focus non-text contrast in the
|
|
133
|
+
same modes. Declare every state foreground against its adjacent surface and every chart series
|
|
134
|
+
against its chart background in those modes. A passing light mode does not establish dark-mode readability, and a passing dark mode
|
|
135
|
+
does not establish that a bright light canvas is comfortable in the intended viewing context.
|
|
136
|
+
|
|
137
|
+
Instrument interfaces that claim automated composition verification with
|
|
138
|
+
`data-ztothez-design-composition="1.0"`. Mark exactly one visible `context`, `primary-outcome`, and
|
|
139
|
+
`next-action` priority in semantic DOM order. Declare primary-action and visible-region limits,
|
|
140
|
+
status purpose, visual-claim basis and evidence, state non-color cues, chart series visuals, and
|
|
141
|
+
asset purpose, source, approved rights, alternative class, and failure strategy. These markers make
|
|
142
|
+
declared decisions measurable; they do not prescribe a visual style or establish human preference.
|
|
143
|
+
|
|
144
|
+
Run both maintained color schemes when both are implemented:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
npm run verify-ui -- --url URL --color-schemes light,dark
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Step 10: Require Attributable Human Review
|
|
151
|
+
|
|
152
|
+
Rendered human review must evaluate:
|
|
153
|
+
|
|
154
|
+
- Hierarchy.
|
|
155
|
+
- Balance.
|
|
156
|
+
- Scanability.
|
|
157
|
+
- Density.
|
|
158
|
+
- Domain fit.
|
|
159
|
+
|
|
160
|
+
Record reviewer-supplied name, role, offset timestamp, and an evidence reference whose kind is `review`. Preserve dissent and unresolved findings. Automated checks and AI-assisted critique may prepare the packet but cannot satisfy this gate.
|
|
161
|
+
|
|
162
|
+
## Validation
|
|
163
|
+
|
|
164
|
+
Validate the manifest:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
npm run validate-design -- --manifest PATH
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Or use MCP tool `validate_design_deliverable`.
|
|
171
|
+
|
|
172
|
+
Read `visualPolish.releaseReady` separately from `passed`. A structurally passing manifest with planned screenshots or required human review remains not ready for visual release.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Maintained Design Architecture
|
|
2
|
+
|
|
3
|
+
Use this module set when a design task changes system boundaries, shared components, runtime ownership, product-family reuse, or consequential quality attributes. These files are independently authored for ZtotheZ Design Engineering and are the only architecture references in the distributable knowledge index.
|
|
4
|
+
|
|
5
|
+
## Routing
|
|
6
|
+
|
|
7
|
+
| Need | Module |
|
|
8
|
+
|---|---|
|
|
9
|
+
| Quality attributes, scenarios, trade-offs, or architecture review | `quality-attributes-and-evaluation.md` |
|
|
10
|
+
| Components, state ownership, coupling, cohesion, or package boundaries | `component-boundaries.md` |
|
|
11
|
+
| Shared product families, variation points, plugins, or platform evolution | `product-platforms.md` |
|
|
12
|
+
|
|
13
|
+
## Operating Contract
|
|
14
|
+
|
|
15
|
+
1. Start with actors, critical tasks, sources of truth, failure states, and measurable quality scenarios.
|
|
16
|
+
2. Draw dependency and runtime boundaries before choosing patterns or packages.
|
|
17
|
+
3. Keep domain policy independent from rendering and infrastructure details.
|
|
18
|
+
4. Use explicit contracts for state, events, errors, cancellation, retries, and ownership.
|
|
19
|
+
5. Record consequential decisions with alternatives, trade-offs, and reversal cost.
|
|
20
|
+
6. Validate important scenarios through source inspection, tests, runtime evidence, and attributable review as appropriate.
|
|
21
|
+
|
|
22
|
+
Architecture vocabulary is not evidence. A named pattern is acceptable only when the implemented dependency direction and runtime behavior support the required tasks and quality attributes.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Component And Package Boundaries
|
|
2
|
+
|
|
3
|
+
## Ownership Rules
|
|
4
|
+
|
|
5
|
+
- One feature owns each mutable source of truth.
|
|
6
|
+
- Rendering consumes state and emits user intent; domain policy decides outcomes.
|
|
7
|
+
- Infrastructure adapters own transport, storage, and vendor details.
|
|
8
|
+
- Shared components own interaction behavior and accessibility contracts, not product-specific workflow policy.
|
|
9
|
+
- Cross-feature communication uses explicit events, commands, or query contracts.
|
|
10
|
+
|
|
11
|
+
## Coupling Review
|
|
12
|
+
|
|
13
|
+
Reject or refactor boundaries that create:
|
|
14
|
+
|
|
15
|
+
- Cyclic package dependencies.
|
|
16
|
+
- Feature code importing another feature's internal modules.
|
|
17
|
+
- Presentation components directly coordinating network, persistence, export, and domain validation.
|
|
18
|
+
- Shared utilities that encode unrelated business policy.
|
|
19
|
+
- Prop contracts that mirror an entire store instead of the component's actual needs.
|
|
20
|
+
- Global state used only to avoid defining ownership.
|
|
21
|
+
|
|
22
|
+
Depend on stable abstractions only where multiple implementations, test isolation, or a consequential change requires them. A wrapper that merely renames one dependency adds indirection without reducing coupling.
|
|
23
|
+
|
|
24
|
+
## Cohesion Review
|
|
25
|
+
|
|
26
|
+
Group code by shared reason to change. Split a module when separate owners, policies, lifecycles, or verification methods are entangled. Keep code together when splitting would scatter one invariant across files or force coordination through a vague utility layer.
|
|
27
|
+
|
|
28
|
+
## Contract Checklist
|
|
29
|
+
|
|
30
|
+
Define inputs, outputs, state transitions, loading and error behavior, cancellation, retries, idempotency, accessibility semantics, telemetry, and test seams. Verify package dependency direction with tooling and verify runtime ownership through journeys and failure cases.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Product Platforms And Variation
|
|
2
|
+
|
|
3
|
+
## Step 1: Establish Shared Scope
|
|
4
|
+
|
|
5
|
+
Identify products, users, workflows, entities, quality requirements, and deployment constraints that are genuinely shared. Do not create a platform from visual similarity alone.
|
|
6
|
+
|
|
7
|
+
## Step 2: Classify Variation
|
|
8
|
+
|
|
9
|
+
For each difference, record whether it is required, optional, mutually exclusive, environment-specific, customer-specific, or experimental. Assign one owner and one binding time: build, deployment, startup, workspace configuration, or runtime user choice.
|
|
10
|
+
|
|
11
|
+
## Step 3: Select A Mechanism
|
|
12
|
+
|
|
13
|
+
- Configuration for bounded values with stable behavior.
|
|
14
|
+
- Composition for replaceable behavior assembled from explicit contracts.
|
|
15
|
+
- Plugins for independently delivered capabilities with lifecycle and compatibility boundaries.
|
|
16
|
+
- Feature flags for controlled rollout, not permanent product modeling.
|
|
17
|
+
- Separate products when shared abstractions would weaken ownership or create conditional logic everywhere.
|
|
18
|
+
|
|
19
|
+
## Step 4: Protect The Platform
|
|
20
|
+
|
|
21
|
+
Version extension contracts, validate configuration, isolate tenant data, define failure behavior for optional capabilities, and keep product-specific policy outside the shared core. Track compatibility, migration, deprecation, and removal.
|
|
22
|
+
|
|
23
|
+
## Step 5: Evaluate Economics
|
|
24
|
+
|
|
25
|
+
Measure whether reuse reduces total change cost after accounting for coordination, testing combinations, release coupling, and migration. Reopen the platform decision when variation grows faster than shared value.
|