@schneiderjoseph/devia 0.1.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/AGENTS.md +149 -0
- package/CHANGELOG.md +78 -0
- package/GOVERNANCE.md +51 -0
- package/LEVELS.md +78 -0
- package/LICENSE +21 -0
- package/MATURITY.md +79 -0
- package/MEMORY.md +122 -0
- package/MIGRATION.md +62 -0
- package/PRINCIPLES.md +110 -0
- package/README.md +125 -0
- package/REFERENCES.md +30 -0
- package/VERSION +5 -0
- package/bin/devia.mjs +13 -0
- package/checklists/README.md +39 -0
- package/checklists/design/accessibility-review.md +11 -0
- package/checklists/design/design-to-code-review.md +10 -0
- package/checklists/design/responsive-review.md +7 -0
- package/checklists/design/ui-review.md +8 -0
- package/checklists/design/ux-review.md +10 -0
- package/checklists/engineering/accessibility.md +8 -0
- package/checklists/engineering/api.md +12 -0
- package/checklists/engineering/architecture.md +8 -0
- package/checklists/engineering/database.md +11 -0
- package/checklists/engineering/devops.md +9 -0
- package/checklists/engineering/disaster-recovery.md +9 -0
- package/checklists/engineering/frontend.md +9 -0
- package/checklists/engineering/incident.md +9 -0
- package/checklists/engineering/performance.md +7 -0
- package/checklists/engineering/production.md +26 -0
- package/checklists/engineering/release.md +17 -0
- package/checklists/engineering/security.md +33 -0
- package/checklists/engineering/testing.md +8 -0
- package/compliance/COVERAGE.md +46 -0
- package/compliance/REQUIREMENTS.md +8 -0
- package/compliance/TRACEABILITY.md +160 -0
- package/compliance/WAIVERS.md +13 -0
- package/package.json +74 -0
- package/rules/LIFECYCLE.md +16 -0
- package/rules/README.md +166 -0
- package/rules/accessibility/A11Y-001.md +42 -0
- package/rules/accessibility/A11Y-002.md +41 -0
- package/rules/accessibility/A11Y-003.md +40 -0
- package/rules/accessibility/A11Y-004.md +40 -0
- package/rules/accessibility/A11Y-005.md +39 -0
- package/rules/accessibility/A11Y-006.md +42 -0
- package/rules/accessibility/A11Y-007.md +39 -0
- package/rules/accessibility/A11Y-008.md +40 -0
- package/rules/accessibility/A11Y-009.md +41 -0
- package/rules/accessibility/A11Y-010.md +40 -0
- package/rules/accessibility/A11Y-011.md +39 -0
- package/rules/accessibility/A11Y-012.md +39 -0
- package/rules/agent/AGT-001.md +42 -0
- package/rules/agent/AGT-002.md +39 -0
- package/rules/agent/AGT-003.md +38 -0
- package/rules/agent/AGT-004.md +39 -0
- package/rules/agent/AGT-005.md +38 -0
- package/rules/agent/AGT-006.md +38 -0
- package/rules/agent/AGT-007.md +38 -0
- package/rules/agent/AGT-008.md +38 -0
- package/rules/agent/AGT-009.md +39 -0
- package/rules/agent/AGT-010.md +38 -0
- package/rules/agent/AGT-011.md +38 -0
- package/rules/ai/AI-001.md +44 -0
- package/rules/ai/AI-002.md +39 -0
- package/rules/ai/AI-003.md +40 -0
- package/rules/ai/AI-004.md +39 -0
- package/rules/ai/AI-005.md +38 -0
- package/rules/api/API-001.md +39 -0
- package/rules/api/API-002.md +39 -0
- package/rules/api/API-003.md +39 -0
- package/rules/api/API-004.md +38 -0
- package/rules/api/API-005.md +39 -0
- package/rules/api/API-006.md +40 -0
- package/rules/architecture/ARC-001.md +41 -0
- package/rules/architecture/ARC-002.md +43 -0
- package/rules/architecture/ARC-003.md +43 -0
- package/rules/architecture/ARC-004.md +40 -0
- package/rules/architecture/ARC-005.md +39 -0
- package/rules/architecture/ARC-006.md +39 -0
- package/rules/components/CMP-001.md +39 -0
- package/rules/components/CMP-002.md +38 -0
- package/rules/components/CMP-003.md +39 -0
- package/rules/components/CMP-004.md +40 -0
- package/rules/components/CMP-005.md +39 -0
- package/rules/content/CNT-001.md +39 -0
- package/rules/data-display/DATA-001.md +39 -0
- package/rules/data-display/DATA-002.md +39 -0
- package/rules/data-display/DATA-003.md +40 -0
- package/rules/data-display/DATA-004.md +40 -0
- package/rules/database/DB-001.md +43 -0
- package/rules/database/DB-002.md +38 -0
- package/rules/database/DB-003.md +40 -0
- package/rules/database/DB-004.md +44 -0
- package/rules/database/DB-005.md +39 -0
- package/rules/database/DB-006.md +38 -0
- package/rules/database/DB-007.md +40 -0
- package/rules/database/DB-008.md +40 -0
- package/rules/design-system/DS-001.md +39 -0
- package/rules/design-system/DS-002.md +40 -0
- package/rules/design-system/DS-003.md +38 -0
- package/rules/devops/OPS-001.md +43 -0
- package/rules/devops/OPS-002.md +39 -0
- package/rules/devops/OPS-003.md +38 -0
- package/rules/devops/OPS-004.md +40 -0
- package/rules/devops/OPS-005.md +43 -0
- package/rules/devops/OPS-006.md +38 -0
- package/rules/devops/OPS-007.md +40 -0
- package/rules/interaction/INT-001.md +39 -0
- package/rules/interaction/INT-002.md +39 -0
- package/rules/localization/I18N-001.md +38 -0
- package/rules/localization/I18N-002.md +40 -0
- package/rules/localization/I18N-003.md +39 -0
- package/rules/memory/MEM-001.md +44 -0
- package/rules/memory/MEM-002.md +39 -0
- package/rules/memory/MEM-003.md +38 -0
- package/rules/memory/MEM-004.md +38 -0
- package/rules/memory/MEM-005.md +38 -0
- package/rules/memory/MEM-006.md +38 -0
- package/rules/memory/MEM-007.md +38 -0
- package/rules/memory/MEM-008.md +38 -0
- package/rules/memory/MEM-009.md +39 -0
- package/rules/memory/MEM-010.md +38 -0
- package/rules/memory/MEM-011.md +38 -0
- package/rules/motion/MOT-001.md +38 -0
- package/rules/observability/OBS-001.md +40 -0
- package/rules/observability/OBS-002.md +40 -0
- package/rules/observability/OBS-003.md +38 -0
- package/rules/observability/OBS-004.md +38 -0
- package/rules/privacy/PRIV-001.md +38 -0
- package/rules/privacy/PRIV-002.md +44 -0
- package/rules/privacy/PRIV-003.md +40 -0
- package/rules/privacy/PRIV-004.md +41 -0
- package/rules/responsive/RWD-001.md +40 -0
- package/rules/responsive/RWD-002.md +39 -0
- package/rules/responsive/RWD-003.md +39 -0
- package/rules/security/SEC-001.md +44 -0
- package/rules/security/SEC-002.md +44 -0
- package/rules/security/SEC-003.md +41 -0
- package/rules/security/SEC-004.md +40 -0
- package/rules/security/SEC-005.md +42 -0
- package/rules/security/SEC-006.md +40 -0
- package/rules/security/SEC-007.md +44 -0
- package/rules/security/SEC-008.md +39 -0
- package/rules/security/SEC-009.md +40 -0
- package/rules/security/SEC-010.md +40 -0
- package/rules/security/SEC-011.md +40 -0
- package/rules/security/SEC-012.md +40 -0
- package/rules/states/STATE-001.md +38 -0
- package/rules/states/STATE-002.md +39 -0
- package/rules/states/STATE-003.md +39 -0
- package/rules/states/STATE-004.md +38 -0
- package/rules/testing/TST-001.md +39 -0
- package/rules/testing/TST-002.md +39 -0
- package/rules/testing/TST-003.md +39 -0
- package/rules/testing/TST-004.md +38 -0
- package/rules/testing/TST-005.md +40 -0
- package/rules/testing/TST-006.md +39 -0
- package/rules/ui/UI-001.md +40 -0
- package/rules/ui/UI-002.md +38 -0
- package/rules/ui/UI-003.md +41 -0
- package/rules/ui/UI-004.md +41 -0
- package/rules/ui/UI-005.md +41 -0
- package/rules/ui/UI-006.md +40 -0
- package/rules/ui/UI-007.md +41 -0
- package/rules/ux/UX-001.md +41 -0
- package/rules/ux/UX-002.md +41 -0
- package/rules/ux/UX-003.md +39 -0
- package/rules/ux/UX-004.md +39 -0
- package/rules/ux/UX-005.md +40 -0
- package/rules/ux/UX-006.md +40 -0
- package/rules/ux/UX-007.md +44 -0
- package/rules/ux/UX-008.md +41 -0
- package/rules/ux/UX-009.md +39 -0
- package/rules/ux/UX-010.md +40 -0
- package/rules/ux/UX-011.md +40 -0
- package/rules/ux/UX-012.md +40 -0
- package/rules/ux/UX-013.md +39 -0
- package/schema/README.md +19 -0
- package/schema/checklist.schema.json +34 -0
- package/schema/component.schema.json +37 -0
- package/schema/project-config.schema.json +70 -0
- package/schema/rule.schema.json +104 -0
- package/schema/token.schema.json +15 -0
- package/schema/waiver.schema.json +33 -0
- package/scripts/build-index.mjs +178 -0
- package/scripts/validate-links.mjs +43 -0
- package/scripts/validate-rules.mjs +42 -0
- package/skills/devia/SKILL.md +114 -0
- package/src/cli.mjs +107 -0
- package/src/commands/check.mjs +483 -0
- package/src/commands/doctor.mjs +139 -0
- package/src/commands/init.mjs +186 -0
- package/src/commands/registry.mjs +154 -0
- package/src/commands/rules.mjs +101 -0
- package/src/commands/skills.mjs +97 -0
- package/src/commands/sync.mjs +83 -0
- package/src/commands/validate.mjs +194 -0
- package/src/lib/fs.mjs +89 -0
- package/src/lib/git.mjs +31 -0
- package/src/lib/rules.mjs +85 -0
- package/src/lib/ui.mjs +52 -0
- package/src/lib/vendor.mjs +74 -0
- package/src/lib/version.mjs +19 -0
- package/src/lib/yaml.mjs +152 -0
- package/standard/README.md +31 -0
- package/standard/design/README.md +51 -0
- package/standard/design/REFERENCES.md +39 -0
- package/standard/design/accessibility/aria.md +7 -0
- package/standard/design/accessibility/contrast.md +6 -0
- package/standard/design/accessibility/focus.md +6 -0
- package/standard/design/accessibility/forms.md +3 -0
- package/standard/design/accessibility/keyboard.md +6 -0
- package/standard/design/accessibility/reduced-motion.md +3 -0
- package/standard/design/accessibility/reflow.md +3 -0
- package/standard/design/accessibility/screen-readers.md +3 -0
- package/standard/design/accessibility/target-size.md +3 -0
- package/standard/design/accessibility/testing.md +3 -0
- package/standard/design/accessibility/wcag-2.2.md +16 -0
- package/standard/design/accessibility/zoom.md +3 -0
- package/standard/design/ai/ai-design-rules.md +8 -0
- package/standard/design/ai/anti-patterns.md +1 -0
- package/standard/design/ai/compliance-format.md +22 -0
- package/standard/design/ai/design-review.md +10 -0
- package/standard/design/ai/evals/README.md +1 -0
- package/standard/design/ai/instructions.md +7 -0
- package/standard/design/ai/prompts/accessibility-review.md +5 -0
- package/standard/design/ai/prompts/design-system-review.md +5 -0
- package/standard/design/ai/prompts/ui-review.md +5 -0
- package/standard/design/ai/prompts/ux-review.md +5 -0
- package/standard/design/ai/review-protocol.md +11 -0
- package/standard/design/anti-patterns/accessibility.md +7 -0
- package/standard/design/anti-patterns/ai-generated.md +6 -0
- package/standard/design/anti-patterns/dashboards.md +5 -0
- package/standard/design/anti-patterns/forms.md +5 -0
- package/standard/design/anti-patterns/responsive.md +5 -0
- package/standard/design/anti-patterns/ui.md +6 -0
- package/standard/design/anti-patterns/ux.md +5 -0
- package/standard/design/components/buttons.md +6 -0
- package/standard/design/components/dialogs.md +5 -0
- package/standard/design/components/feedback.md +3 -0
- package/standard/design/components/forms.md +3 -0
- package/standard/design/components/navigation.md +3 -0
- package/standard/design/components/tables.md +6 -0
- package/standard/design/content/error-messages.md +4 -0
- package/standard/design/content/ux-writing.md +5 -0
- package/standard/design/data-display/README.md +5 -0
- package/standard/design/data-display/currency.md +3 -0
- package/standard/design/data-display/dates.md +3 -0
- package/standard/design/data-display/density.md +3 -0
- package/standard/design/data-display/filtering.md +3 -0
- package/standard/design/data-display/localization.md +3 -0
- package/standard/design/data-display/numbers.md +3 -0
- package/standard/design/data-display/pagination.md +3 -0
- package/standard/design/data-display/percentages.md +3 -0
- package/standard/design/data-display/sorting.md +3 -0
- package/standard/design/data-display/tables.md +3 -0
- package/standard/design/data-display/time.md +3 -0
- package/standard/design/decisions/ADR-001-token-naming.md +13 -0
- package/standard/design/decisions/ADR-002-radius-scale.md +9 -0
- package/standard/design/decisions/ADR-003-color-system.md +9 -0
- package/standard/design/decisions/ADR-004-component-versioning.md +9 -0
- package/standard/design/decisions/README.md +3 -0
- package/standard/design/design-system/components.md +9 -0
- package/standard/design/design-system/naming.md +19 -0
- package/standard/design/design-system/tokens.md +7 -0
- package/standard/design/design-system/variants.md +5 -0
- package/standard/design/design-system/versioning.md +5 -0
- package/standard/design/health/coverage.md +1 -0
- package/standard/design/health/dashboard.md +14 -0
- package/standard/design/health/maturity-model.md +9 -0
- package/standard/design/health/score.md +14 -0
- package/standard/design/interaction/README.md +10 -0
- package/standard/design/interaction/keyboard.md +3 -0
- package/standard/design/interaction/mouse.md +2 -0
- package/standard/design/interaction/pen.md +1 -0
- package/standard/design/interaction/touch.md +3 -0
- package/standard/design/interaction/touchscreen.md +6 -0
- package/standard/design/interaction/voice.md +2 -0
- package/standard/design/localization/README.md +5 -0
- package/standard/design/localization/currency.md +3 -0
- package/standard/design/localization/date-time.md +3 -0
- package/standard/design/localization/i18n.md +3 -0
- package/standard/design/localization/locale-testing.md +3 -0
- package/standard/design/localization/number-formatting.md +3 -0
- package/standard/design/localization/pluralization.md +3 -0
- package/standard/design/localization/rtl.md +3 -0
- package/standard/design/localization/text-expansion.md +3 -0
- package/standard/design/motion/animation.md +6 -0
- package/standard/design/penpot/WORKFLOW.md +27 -0
- package/standard/design/platforms/README.md +12 -0
- package/standard/design/platforms/desktop/README.md +5 -0
- package/standard/design/platforms/mobile/android.md +5 -0
- package/standard/design/platforms/mobile/ios.md +5 -0
- package/standard/design/platforms/tablet/README.md +5 -0
- package/standard/design/platforms/web/README.md +1 -0
- package/standard/design/principles/design-principles.md +9 -0
- package/standard/design/principles/ui-principles.md +7 -0
- package/standard/design/principles/ux-principles.md +14 -0
- package/standard/design/references/atlassian.md +3 -0
- package/standard/design/references/carbon.md +3 -0
- package/standard/design/references/figma-sds.md +5 -0
- package/standard/design/references/govuk.md +3 -0
- package/standard/design/references/material.md +3 -0
- package/standard/design/references/nng.md +3 -0
- package/standard/design/references/openui.md +3 -0
- package/standard/design/references/primer.md +5 -0
- package/standard/design/references/storybook.md +3 -0
- package/standard/design/references/uswds.md +3 -0
- package/standard/design/references/w3c.md +3 -0
- package/standard/design/responsive/desktop.md +4 -0
- package/standard/design/responsive/mobile.md +6 -0
- package/standard/design/responsive/tablet.md +3 -0
- package/standard/design/states/async.md +3 -0
- package/standard/design/states/conflict.md +3 -0
- package/standard/design/states/empty.md +3 -0
- package/standard/design/states/error.md +3 -0
- package/standard/design/states/interaction.md +5 -0
- package/standard/design/states/loading.md +3 -0
- package/standard/design/states/offline.md +3 -0
- package/standard/design/states/optimistic.md +3 -0
- package/standard/design/states/partial.md +3 -0
- package/standard/design/states/permission-denied.md +3 -0
- package/standard/design/states/rate-limited.md +3 -0
- package/standard/design/states/read-only.md +3 -0
- package/standard/design/states/retry.md +3 -0
- package/standard/design/states/skeleton.md +3 -0
- package/standard/design/states/stale.md +3 -0
- package/standard/design/states/success.md +3 -0
- package/standard/design/states/timeout.md +3 -0
- package/standard/design/states/unsaved-changes.md +3 -0
- package/standard/design/ui/color.md +6 -0
- package/standard/design/ui/grids.md +5 -0
- package/standard/design/ui/icons.md +5 -0
- package/standard/design/ui/imagery.md +5 -0
- package/standard/design/ui/layout.md +5 -0
- package/standard/design/ui/spacing.md +5 -0
- package/standard/design/ui/typography.md +6 -0
- package/standard/design/ui/visual-design.md +7 -0
- package/standard/design/ux/cognitive-load.md +5 -0
- package/standard/design/ux/errors.md +6 -0
- package/standard/design/ux/feedback.md +5 -0
- package/standard/design/ux/forms.md +7 -0
- package/standard/design/ux/heuristics.md +14 -0
- package/standard/design/ux/information-architecture.md +6 -0
- package/standard/design/ux/navigation.md +6 -0
- package/standard/design/ux/usability.md +6 -0
- package/standard/engineering/README.md +29 -0
- package/standard/engineering/REFERENCES.md +42 -0
- package/standard/engineering/ai/AI_SECURITY.md +15 -0
- package/standard/engineering/ai/PROMPT_SECURITY.md +6 -0
- package/standard/engineering/architecture/ADR.md +11 -0
- package/standard/engineering/architecture/ARCHITECTURE.md +25 -0
- package/standard/engineering/architecture/PRINCIPLES.md +17 -0
- package/standard/engineering/architecture/THREAT_MODEL.md +14 -0
- package/standard/engineering/backend/API.md +29 -0
- package/standard/engineering/backend/BACKGROUND_JOBS.md +12 -0
- package/standard/engineering/backend/ERROR_HANDLING.md +26 -0
- package/standard/engineering/backend/LOGGING.md +12 -0
- package/standard/engineering/compliance/DATA_RETENTION.md +10 -0
- package/standard/engineering/compliance/PRIVACY.md +11 -0
- package/standard/engineering/database/BACKUPS.md +19 -0
- package/standard/engineering/database/DATABASE.md +30 -0
- package/standard/engineering/database/MIGRATIONS.md +12 -0
- package/standard/engineering/devops/BRANCH_PROTECTION.md +17 -0
- package/standard/engineering/devops/CI_CD.md +48 -0
- package/standard/engineering/devops/DEPLOYMENT.md +12 -0
- package/standard/engineering/devops/DOCKER.md +9 -0
- package/standard/engineering/devops/ENVIRONMENTS.md +12 -0
- package/standard/engineering/devops/RELEASE.md +6 -0
- package/standard/engineering/devops/ROLLBACK.md +9 -0
- package/standard/engineering/frontend/ACCESSIBILITY.md +16 -0
- package/standard/engineering/frontend/DESIGN_SYSTEM.md +10 -0
- package/standard/engineering/frontend/FRONTEND.md +17 -0
- package/standard/engineering/frontend/UX.md +15 -0
- package/standard/engineering/observability/ALERTING.md +11 -0
- package/standard/engineering/observability/INCIDENTS.md +10 -0
- package/standard/engineering/observability/MONITORING.md +17 -0
- package/standard/engineering/payments/PAYMENTS.md +15 -0
- package/standard/engineering/performance/PERFORMANCE.md +19 -0
- package/standard/engineering/security/API_SECURITY.md +22 -0
- package/standard/engineering/security/ASVS_5.0/V10_MALICIOUS_CODE.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V11_BUSINESS_LOGIC.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V12_FILES.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V13_API.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V14_CONFIGURATION.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V1_ARCHITECTURE.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V2_AUTHENTICATION.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V3_SESSION.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V4_ACCESS_CONTROL.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V5_VALIDATION.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V6_CRYPTOGRAPHY.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V7_ERROR_HANDLING.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V8_DATA_PROTECTION.md +31 -0
- package/standard/engineering/security/ASVS_5.0/V9_COMMUNICATION.md +31 -0
- package/standard/engineering/security/ASVS_REGISTRY.md +31 -0
- package/standard/engineering/security/AUTHENTICATION.md +28 -0
- package/standard/engineering/security/AUTHORIZATION.md +27 -0
- package/standard/engineering/security/DATA_SECURITY.md +14 -0
- package/standard/engineering/security/OWASP_ASVS.md +31 -0
- package/standard/engineering/security/SECRETS.md +28 -0
- package/standard/engineering/security/SECURITY.md +28 -0
- package/standard/engineering/testing/TESTING.md +27 -0
- package/templates/agents/AGENTS.md +34 -0
- package/templates/agents/CLAUDE.md +33 -0
- package/templates/agents/copilot-instructions.md +15 -0
- package/templates/agents/cursor.mdc +27 -0
- package/templates/agents/windsurfrules.md +17 -0
- package/templates/docs/ADR.md +16 -0
- package/templates/docs/FEATURE.md +19 -0
- package/templates/docs/SECURITY_REPORT.md +15 -0
- package/templates/docs/accessibility-review.md +9 -0
- package/templates/docs/component.md +9 -0
- package/templates/docs/decision-record.md +9 -0
- package/templates/docs/design-review.md +9 -0
- package/templates/docs/exception.md +9 -0
- package/templates/docs/page.md +9 -0
- package/templates/docs/pattern.md +9 -0
- package/templates/docs/user-flow.md +9 -0
- package/templates/github/workflows/app-ci.yml +91 -0
- package/templates/project/00_OVERVIEW.md +51 -0
- package/templates/project/01_ARCHITECTURE.md +37 -0
- package/templates/project/02_SURFACES.md +30 -0
- package/templates/project/03_DATA_MODEL.md +31 -0
- package/templates/project/04_PERMISSIONS.md +32 -0
- package/templates/project/05_FLOWS.md +20 -0
- package/templates/project/06_INTEGRATIONS.md +21 -0
- package/templates/project/07_DESIGN.md +33 -0
- package/templates/project/10_NEVER_ALWAYS.md +26 -0
- package/templates/project/11_GAPS.md +18 -0
- package/templates/project/12_DEBT.md +19 -0
- package/templates/project/13_RECIPES.md +35 -0
- package/templates/project/14_INDEX.md +50 -0
- package/templates/project/AGENTS.md +51 -0
- package/templates/project/README.md +49 -0
- package/templates/project/impact-map.yaml +41 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UI-006
|
|
3
|
+
title: Consistent page chrome
|
|
4
|
+
severity: SHOULD
|
|
5
|
+
status: active
|
|
6
|
+
priority: P2
|
|
7
|
+
domain: ui
|
|
8
|
+
source:
|
|
9
|
+
- Carbon
|
|
10
|
+
- Atlassian
|
|
11
|
+
applies_to:
|
|
12
|
+
- layout
|
|
13
|
+
- navigation
|
|
14
|
+
success_criteria:
|
|
15
|
+
[]
|
|
16
|
+
requirement: >
|
|
17
|
+
App shells SHOULD reuse one nav/header/content frame pattern.
|
|
18
|
+
validation:
|
|
19
|
+
automated: false
|
|
20
|
+
manual: true
|
|
21
|
+
exceptions: documented-only
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# UI-006 — Consistent page chrome
|
|
25
|
+
|
|
26
|
+
**Requirement:** App shells SHOULD reuse one nav/header/content frame pattern.
|
|
27
|
+
|
|
28
|
+
**Bad:** Every page invents a new header height and nav placement.
|
|
29
|
+
|
|
30
|
+
**Good:** Shared shell component/template.
|
|
31
|
+
|
|
32
|
+
## Validation
|
|
33
|
+
|
|
34
|
+
- Design or engineering review
|
|
35
|
+
|
|
36
|
+
## Lifecycle
|
|
37
|
+
|
|
38
|
+
- Status: `active`
|
|
39
|
+
- Priority: `P2`
|
|
40
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UI-007
|
|
3
|
+
title: Icon-only controls named
|
|
4
|
+
severity: MUST
|
|
5
|
+
status: active
|
|
6
|
+
priority: P0
|
|
7
|
+
domain: ui
|
|
8
|
+
source:
|
|
9
|
+
- WCAG-2.2
|
|
10
|
+
- WAI-ARIA-APG
|
|
11
|
+
applies_to:
|
|
12
|
+
- button
|
|
13
|
+
- link
|
|
14
|
+
success_criteria:
|
|
15
|
+
- "4.1.2"
|
|
16
|
+
requirement: >
|
|
17
|
+
Icon-only controls MUST have an accessible name (aria-label, aria-labelledby, or visually hidden text).
|
|
18
|
+
validation:
|
|
19
|
+
automated: true
|
|
20
|
+
manual: true
|
|
21
|
+
exceptions: documented-only
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# UI-007 — Icon-only controls named
|
|
25
|
+
|
|
26
|
+
**Requirement:** Icon-only controls MUST have an accessible name (aria-label, aria-labelledby, or visually hidden text).
|
|
27
|
+
|
|
28
|
+
**Bad:** Trash icon button with no name.
|
|
29
|
+
|
|
30
|
+
**Good:** aria-label="Delete order".
|
|
31
|
+
|
|
32
|
+
## Validation
|
|
33
|
+
|
|
34
|
+
- Automated checks / lint / a11y tooling where applicable
|
|
35
|
+
- Design or engineering review
|
|
36
|
+
|
|
37
|
+
## Lifecycle
|
|
38
|
+
|
|
39
|
+
- Status: `active`
|
|
40
|
+
- Priority: `P0`
|
|
41
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-001
|
|
3
|
+
title: One primary action per view
|
|
4
|
+
severity: MUST
|
|
5
|
+
status: active
|
|
6
|
+
priority: P1
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- NN/g
|
|
10
|
+
applies_to:
|
|
11
|
+
- page
|
|
12
|
+
- view
|
|
13
|
+
- dialog
|
|
14
|
+
success_criteria:
|
|
15
|
+
[]
|
|
16
|
+
requirement: >
|
|
17
|
+
Each primary view MUST expose a clear primary action (or explicitly be read-only).
|
|
18
|
+
validation:
|
|
19
|
+
automated: false
|
|
20
|
+
manual: true
|
|
21
|
+
exceptions: documented-only
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# UX-001 — One primary action per view
|
|
25
|
+
|
|
26
|
+
**Requirement:** Each primary view MUST expose a clear primary action (or explicitly be read-only).
|
|
27
|
+
|
|
28
|
+
**Bad:** Three equally weighted CTAs competing in the header.
|
|
29
|
+
|
|
30
|
+
**Good:** One primary CTA; secondary actions visually quieter.
|
|
31
|
+
|
|
32
|
+
## Validation
|
|
33
|
+
|
|
34
|
+
- Visual hierarchy review
|
|
35
|
+
- Task success / heuristic review
|
|
36
|
+
|
|
37
|
+
## Lifecycle
|
|
38
|
+
|
|
39
|
+
- Status: `active`
|
|
40
|
+
- Priority: `P1`
|
|
41
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-002
|
|
3
|
+
title: System status visible
|
|
4
|
+
severity: MUST
|
|
5
|
+
status: active
|
|
6
|
+
priority: P1
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- NN/g
|
|
10
|
+
applies_to:
|
|
11
|
+
- forms
|
|
12
|
+
- async
|
|
13
|
+
- buttons
|
|
14
|
+
success_criteria:
|
|
15
|
+
[]
|
|
16
|
+
requirement: >
|
|
17
|
+
After user-initiated actions that take noticeable time or change data, the UI MUST show progress or confirmation.
|
|
18
|
+
validation:
|
|
19
|
+
automated: true
|
|
20
|
+
manual: true
|
|
21
|
+
exceptions: documented-only
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# UX-002 — System status visible
|
|
25
|
+
|
|
26
|
+
**Requirement:** After user-initiated actions that take noticeable time or change data, the UI MUST show progress or confirmation.
|
|
27
|
+
|
|
28
|
+
**Bad:** Save with no toast/spinner/inline confirmation.
|
|
29
|
+
|
|
30
|
+
**Good:** Pending state + success/error outcome.
|
|
31
|
+
|
|
32
|
+
## Validation
|
|
33
|
+
|
|
34
|
+
- Automated checks / lint / a11y tooling where applicable
|
|
35
|
+
- Design or engineering review
|
|
36
|
+
|
|
37
|
+
## Lifecycle
|
|
38
|
+
|
|
39
|
+
- Status: `active`
|
|
40
|
+
- Priority: `P1`
|
|
41
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-003
|
|
3
|
+
title: Navigation mirrors user mental model
|
|
4
|
+
severity: SHOULD
|
|
5
|
+
status: active
|
|
6
|
+
priority: P2
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- NN/g
|
|
10
|
+
- GOV.UK
|
|
11
|
+
applies_to:
|
|
12
|
+
- navigation
|
|
13
|
+
success_criteria:
|
|
14
|
+
[]
|
|
15
|
+
requirement: >
|
|
16
|
+
Top-level nav labels SHOULD match user tasks/objects, not internal org charts.
|
|
17
|
+
validation:
|
|
18
|
+
automated: false
|
|
19
|
+
manual: true
|
|
20
|
+
exceptions: documented-only
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# UX-003 — Navigation mirrors user mental model
|
|
24
|
+
|
|
25
|
+
**Requirement:** Top-level nav labels SHOULD match user tasks/objects, not internal org charts.
|
|
26
|
+
|
|
27
|
+
**Bad:** Nav: ‘Module A / Module B’ from engineering.
|
|
28
|
+
|
|
29
|
+
**Good:** Nav: task/object names users recognize.
|
|
30
|
+
|
|
31
|
+
## Validation
|
|
32
|
+
|
|
33
|
+
- Design or engineering review
|
|
34
|
+
|
|
35
|
+
## Lifecycle
|
|
36
|
+
|
|
37
|
+
- Status: `active`
|
|
38
|
+
- Priority: `P2`
|
|
39
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-004
|
|
3
|
+
title: Depth with orientation
|
|
4
|
+
severity: SHOULD
|
|
5
|
+
status: active
|
|
6
|
+
priority: P2
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- GOV.UK
|
|
10
|
+
applies_to:
|
|
11
|
+
- navigation
|
|
12
|
+
- page
|
|
13
|
+
success_criteria:
|
|
14
|
+
[]
|
|
15
|
+
requirement: >
|
|
16
|
+
Hierarchies deeper than two levels SHOULD provide orientation (breadcrumbs, clear titles, back).
|
|
17
|
+
validation:
|
|
18
|
+
automated: false
|
|
19
|
+
manual: true
|
|
20
|
+
exceptions: documented-only
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# UX-004 — Depth with orientation
|
|
24
|
+
|
|
25
|
+
**Requirement:** Hierarchies deeper than two levels SHOULD provide orientation (breadcrumbs, clear titles, back).
|
|
26
|
+
|
|
27
|
+
**Bad:** Deep page with only a logo home link.
|
|
28
|
+
|
|
29
|
+
**Good:** Title + breadcrumb or explicit back to parent context.
|
|
30
|
+
|
|
31
|
+
## Validation
|
|
32
|
+
|
|
33
|
+
- Design or engineering review
|
|
34
|
+
|
|
35
|
+
## Lifecycle
|
|
36
|
+
|
|
37
|
+
- Status: `active`
|
|
38
|
+
- Priority: `P2`
|
|
39
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-005
|
|
3
|
+
title: Current location indicated
|
|
4
|
+
severity: MUST
|
|
5
|
+
status: active
|
|
6
|
+
priority: P1
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- WCAG-2.2
|
|
10
|
+
- NN/g
|
|
11
|
+
applies_to:
|
|
12
|
+
- navigation
|
|
13
|
+
success_criteria:
|
|
14
|
+
- "2.4.8"
|
|
15
|
+
requirement: >
|
|
16
|
+
Primary navigation MUST indicate the current section/page.
|
|
17
|
+
validation:
|
|
18
|
+
automated: true
|
|
19
|
+
manual: true
|
|
20
|
+
exceptions: documented-only
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# UX-005 — Current location indicated
|
|
24
|
+
|
|
25
|
+
**Requirement:** Primary navigation MUST indicate the current section/page.
|
|
26
|
+
|
|
27
|
+
**Bad:** All nav items look identical while on a child page.
|
|
28
|
+
|
|
29
|
+
**Good:** Active state on current section; page title / h1 align.
|
|
30
|
+
|
|
31
|
+
## Validation
|
|
32
|
+
|
|
33
|
+
- Automated checks / lint / a11y tooling where applicable
|
|
34
|
+
- Design or engineering review
|
|
35
|
+
|
|
36
|
+
## Lifecycle
|
|
37
|
+
|
|
38
|
+
- Status: `active`
|
|
39
|
+
- Priority: `P1`
|
|
40
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-006
|
|
3
|
+
title: Skip to content
|
|
4
|
+
severity: MUST
|
|
5
|
+
status: active
|
|
6
|
+
priority: P1
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- WCAG-2.2
|
|
10
|
+
applies_to:
|
|
11
|
+
- web
|
|
12
|
+
- navigation
|
|
13
|
+
success_criteria:
|
|
14
|
+
- "2.4.1"
|
|
15
|
+
requirement: >
|
|
16
|
+
Sites/apps with repeated chrome MUST provide a skip link or equivalent landmark bypass.
|
|
17
|
+
validation:
|
|
18
|
+
automated: true
|
|
19
|
+
manual: true
|
|
20
|
+
exceptions: documented-only
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# UX-006 — Skip to content
|
|
24
|
+
|
|
25
|
+
**Requirement:** Sites/apps with repeated chrome MUST provide a skip link or equivalent landmark bypass.
|
|
26
|
+
|
|
27
|
+
**Bad:** 100 tabs through the mega-nav every page load.
|
|
28
|
+
|
|
29
|
+
**Good:** Skip link or landmark structure that works with SR/keyboard.
|
|
30
|
+
|
|
31
|
+
## Validation
|
|
32
|
+
|
|
33
|
+
- Automated checks / lint / a11y tooling where applicable
|
|
34
|
+
- Design or engineering review
|
|
35
|
+
|
|
36
|
+
## Lifecycle
|
|
37
|
+
|
|
38
|
+
- Status: `active`
|
|
39
|
+
- Priority: `P1`
|
|
40
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-007
|
|
3
|
+
title: Persistent accessible labels
|
|
4
|
+
severity: MUST
|
|
5
|
+
status: active
|
|
6
|
+
priority: P0
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- WCAG-2.2
|
|
10
|
+
- GOV.UK
|
|
11
|
+
applies_to:
|
|
12
|
+
- input
|
|
13
|
+
- select
|
|
14
|
+
- textarea
|
|
15
|
+
- forms
|
|
16
|
+
success_criteria:
|
|
17
|
+
- "1.3.1"
|
|
18
|
+
- "3.3.2"
|
|
19
|
+
requirement: >
|
|
20
|
+
Every field MUST have a persistent accessible label. Placeholder-only labeling is forbidden.
|
|
21
|
+
validation:
|
|
22
|
+
automated: true
|
|
23
|
+
manual: true
|
|
24
|
+
exceptions: documented-only
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# UX-007 — Persistent accessible labels
|
|
28
|
+
|
|
29
|
+
**Requirement:** Every field MUST have a persistent accessible label. Placeholder-only labeling is forbidden.
|
|
30
|
+
|
|
31
|
+
**Bad:** placeholder="Email" with no label.
|
|
32
|
+
|
|
33
|
+
**Good:** Visible label associated via for/id or wrapping; placeholder optional hint only.
|
|
34
|
+
|
|
35
|
+
## Validation
|
|
36
|
+
|
|
37
|
+
- Automated checks / lint / a11y tooling where applicable
|
|
38
|
+
- Design or engineering review
|
|
39
|
+
|
|
40
|
+
## Lifecycle
|
|
41
|
+
|
|
42
|
+
- Status: `active`
|
|
43
|
+
- Priority: `P0`
|
|
44
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-008
|
|
3
|
+
title: Field errors identifiable and actionable
|
|
4
|
+
severity: MUST
|
|
5
|
+
status: active
|
|
6
|
+
priority: P0
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- WCAG-2.2
|
|
10
|
+
- GOV.UK
|
|
11
|
+
applies_to:
|
|
12
|
+
- forms
|
|
13
|
+
success_criteria:
|
|
14
|
+
- "3.3.1"
|
|
15
|
+
- "3.3.3"
|
|
16
|
+
requirement: >
|
|
17
|
+
Validation errors MUST identify the field, describe the problem, and how to fix it.
|
|
18
|
+
validation:
|
|
19
|
+
automated: true
|
|
20
|
+
manual: true
|
|
21
|
+
exceptions: documented-only
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# UX-008 — Field errors identifiable and actionable
|
|
25
|
+
|
|
26
|
+
**Requirement:** Validation errors MUST identify the field, describe the problem, and how to fix it.
|
|
27
|
+
|
|
28
|
+
**Bad:** Toast: ‘Invalid form’.
|
|
29
|
+
|
|
30
|
+
**Good:** Inline error + focus move to first error; summary for long forms.
|
|
31
|
+
|
|
32
|
+
## Validation
|
|
33
|
+
|
|
34
|
+
- Automated checks / lint / a11y tooling where applicable
|
|
35
|
+
- Design or engineering review
|
|
36
|
+
|
|
37
|
+
## Lifecycle
|
|
38
|
+
|
|
39
|
+
- Status: `active`
|
|
40
|
+
- Priority: `P0`
|
|
41
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-009
|
|
3
|
+
title: Required fields indicated in text
|
|
4
|
+
severity: MUST
|
|
5
|
+
status: active
|
|
6
|
+
priority: P1
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- WCAG-2.2
|
|
10
|
+
- GOV.UK
|
|
11
|
+
applies_to:
|
|
12
|
+
- forms
|
|
13
|
+
success_criteria:
|
|
14
|
+
- "1.4.1"
|
|
15
|
+
requirement: >
|
|
16
|
+
Required fields MUST be indicated in text (not color alone).
|
|
17
|
+
validation:
|
|
18
|
+
automated: false
|
|
19
|
+
manual: true
|
|
20
|
+
exceptions: documented-only
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# UX-009 — Required fields indicated in text
|
|
24
|
+
|
|
25
|
+
**Requirement:** Required fields MUST be indicated in text (not color alone).
|
|
26
|
+
|
|
27
|
+
**Bad:** Red asterisk only, unexplained.
|
|
28
|
+
|
|
29
|
+
**Good:** ‘Required’ in legend/label text (asterisk OK if explained once).
|
|
30
|
+
|
|
31
|
+
## Validation
|
|
32
|
+
|
|
33
|
+
- Design or engineering review
|
|
34
|
+
|
|
35
|
+
## Lifecycle
|
|
36
|
+
|
|
37
|
+
- Status: `active`
|
|
38
|
+
- Priority: `P1`
|
|
39
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-010
|
|
3
|
+
title: Complete UI states for data views
|
|
4
|
+
severity: MUST
|
|
5
|
+
status: active
|
|
6
|
+
priority: P1
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- NN/g
|
|
10
|
+
applies_to:
|
|
11
|
+
- page
|
|
12
|
+
- table
|
|
13
|
+
- list
|
|
14
|
+
success_criteria:
|
|
15
|
+
[]
|
|
16
|
+
requirement: >
|
|
17
|
+
Key screens MUST define empty, loading, error, and success/populated states where data can be absent or fail.
|
|
18
|
+
validation:
|
|
19
|
+
automated: false
|
|
20
|
+
manual: true
|
|
21
|
+
exceptions: documented-only
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# UX-010 — Complete UI states for data views
|
|
25
|
+
|
|
26
|
+
**Requirement:** Key screens MUST define empty, loading, error, and success/populated states where data can be absent or fail.
|
|
27
|
+
|
|
28
|
+
**Bad:** Blank white area while fetching; crash on error.
|
|
29
|
+
|
|
30
|
+
**Good:** Skeleton/spinner; empty + CTA; recoverable error.
|
|
31
|
+
|
|
32
|
+
## Validation
|
|
33
|
+
|
|
34
|
+
- Design or engineering review
|
|
35
|
+
|
|
36
|
+
## Lifecycle
|
|
37
|
+
|
|
38
|
+
- Status: `active`
|
|
39
|
+
- Priority: `P1`
|
|
40
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-011
|
|
3
|
+
title: Confirm irreversible actions
|
|
4
|
+
severity: MUST
|
|
5
|
+
status: active
|
|
6
|
+
priority: P0
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- NN/g
|
|
10
|
+
- GOV.UK
|
|
11
|
+
applies_to:
|
|
12
|
+
- buttons
|
|
13
|
+
- dialogs
|
|
14
|
+
success_criteria:
|
|
15
|
+
[]
|
|
16
|
+
requirement: >
|
|
17
|
+
Destructive/irreversible actions MUST require confirmation or undo.
|
|
18
|
+
validation:
|
|
19
|
+
automated: false
|
|
20
|
+
manual: true
|
|
21
|
+
exceptions: documented-only
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# UX-011 — Confirm irreversible actions
|
|
25
|
+
|
|
26
|
+
**Requirement:** Destructive/irreversible actions MUST require confirmation or undo.
|
|
27
|
+
|
|
28
|
+
**Bad:** Delete permanently on single click.
|
|
29
|
+
|
|
30
|
+
**Good:** Confirm dialog with consequence stated, or toast undo window.
|
|
31
|
+
|
|
32
|
+
## Validation
|
|
33
|
+
|
|
34
|
+
- Design or engineering review
|
|
35
|
+
|
|
36
|
+
## Lifecycle
|
|
37
|
+
|
|
38
|
+
- Status: `active`
|
|
39
|
+
- Priority: `P0`
|
|
40
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-012
|
|
3
|
+
title: Human-readable errors
|
|
4
|
+
severity: MUST
|
|
5
|
+
status: active
|
|
6
|
+
priority: P1
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- WCAG-2.2
|
|
10
|
+
- GOV.UK
|
|
11
|
+
applies_to:
|
|
12
|
+
- alerts
|
|
13
|
+
- forms
|
|
14
|
+
success_criteria:
|
|
15
|
+
- "3.3.3"
|
|
16
|
+
requirement: >
|
|
17
|
+
User-facing errors MUST NOT expose stack traces, SQL, or internal codes as the only message.
|
|
18
|
+
validation:
|
|
19
|
+
automated: false
|
|
20
|
+
manual: true
|
|
21
|
+
exceptions: documented-only
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# UX-012 — Human-readable errors
|
|
25
|
+
|
|
26
|
+
**Requirement:** User-facing errors MUST NOT expose stack traces, SQL, or internal codes as the only message.
|
|
27
|
+
|
|
28
|
+
**Bad:** PQXZ_99 constraint violation.
|
|
29
|
+
|
|
30
|
+
**Good:** Plain language + optional reference id for support.
|
|
31
|
+
|
|
32
|
+
## Validation
|
|
33
|
+
|
|
34
|
+
- Design or engineering review
|
|
35
|
+
|
|
36
|
+
## Lifecycle
|
|
37
|
+
|
|
38
|
+
- Status: `active`
|
|
39
|
+
- Priority: `P1`
|
|
40
|
+
- Exceptions: `documented-only`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: UX-013
|
|
3
|
+
title: Progressive disclosure
|
|
4
|
+
severity: SHOULD
|
|
5
|
+
status: active
|
|
6
|
+
priority: P2
|
|
7
|
+
domain: ux
|
|
8
|
+
source:
|
|
9
|
+
- NN/g
|
|
10
|
+
applies_to:
|
|
11
|
+
- forms
|
|
12
|
+
- page
|
|
13
|
+
success_criteria:
|
|
14
|
+
[]
|
|
15
|
+
requirement: >
|
|
16
|
+
Advanced or rare options SHOULD be progressive, not dumped equally with core fields.
|
|
17
|
+
validation:
|
|
18
|
+
automated: false
|
|
19
|
+
manual: true
|
|
20
|
+
exceptions: documented-only
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# UX-013 — Progressive disclosure
|
|
24
|
+
|
|
25
|
+
**Requirement:** Advanced or rare options SHOULD be progressive, not dumped equally with core fields.
|
|
26
|
+
|
|
27
|
+
**Bad:** 40 equal fields on one screen for a simple task.
|
|
28
|
+
|
|
29
|
+
**Good:** Core fields first; advanced collapsed or stepped.
|
|
30
|
+
|
|
31
|
+
## Validation
|
|
32
|
+
|
|
33
|
+
- Design or engineering review
|
|
34
|
+
|
|
35
|
+
## Lifecycle
|
|
36
|
+
|
|
37
|
+
- Status: `active`
|
|
38
|
+
- Priority: `P2`
|
|
39
|
+
- Exceptions: `documented-only`
|
package/schema/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Schemas
|
|
2
|
+
|
|
3
|
+
JSON Schema for the file shapes devia reads and writes. They are the contract; the validators
|
|
4
|
+
enforce them.
|
|
5
|
+
|
|
6
|
+
| Schema | Describes | Enforced by |
|
|
7
|
+
|---|---|---|
|
|
8
|
+
| [`rule.schema.json`](rule.schema.json) | A rule file's frontmatter | `scripts/validate-rules.mjs`, `src/lib/rules.mjs` |
|
|
9
|
+
| [`project-config.schema.json`](project-config.schema.json) | `.devia/devia.json` | `devia validate` (required keys today — see the debt register) |
|
|
10
|
+
| [`waiver.schema.json`](waiver.schema.json) | A time-boxed exception | `devia check` (expiry) |
|
|
11
|
+
| [`checklist.schema.json`](checklist.schema.json) | A machine-readable checklist | — |
|
|
12
|
+
| [`component.schema.json`](component.schema.json) | A design-system component record | — |
|
|
13
|
+
| [`token.schema.json`](token.schema.json) | A design token | — |
|
|
14
|
+
|
|
15
|
+
Schema versions live in [`../VERSION`](../VERSION). A change to a required field is a breaking
|
|
16
|
+
change: bump the version and say in [`../CHANGELOG.md`](../CHANGELOG.md) what adopters must do.
|
|
17
|
+
|
|
18
|
+
A schema listed with no enforcement is documentation, and is marked as such rather than implied
|
|
19
|
+
to be checked.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "Checklist",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": [
|
|
6
|
+
"id",
|
|
7
|
+
"items"
|
|
8
|
+
],
|
|
9
|
+
"properties": {
|
|
10
|
+
"id": {
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
"items": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"items": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"required": [
|
|
18
|
+
"text"
|
|
19
|
+
],
|
|
20
|
+
"properties": {
|
|
21
|
+
"text": {
|
|
22
|
+
"type": "string"
|
|
23
|
+
},
|
|
24
|
+
"rule_ids": {
|
|
25
|
+
"type": "array",
|
|
26
|
+
"items": {
|
|
27
|
+
"type": "string"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|