@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,27 @@
|
|
|
1
|
+
# Testing
|
|
2
|
+
|
|
3
|
+
## Pyramid
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
E2E (critical journeys)
|
|
7
|
+
/ \
|
|
8
|
+
Integration (API/DB/auth)
|
|
9
|
+
/ \
|
|
10
|
+
Unit (domain rules, validators)
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## P0
|
|
14
|
+
|
|
15
|
+
1. Features that touch authz/payments/data isolation ship with tests in the same change
|
|
16
|
+
2. CI runs tests on every PR; red builds do not merge
|
|
17
|
+
3. Every production bug gets a regression test
|
|
18
|
+
|
|
19
|
+
## P1
|
|
20
|
+
|
|
21
|
+
1. Critical business journeys covered by E2E/smoke
|
|
22
|
+
2. LLM features have frozen eval fixtures when output is contractual
|
|
23
|
+
3. Load testing before expected traffic spikes
|
|
24
|
+
|
|
25
|
+
## Rule
|
|
26
|
+
|
|
27
|
+
Test business-critical paths — not only trivial pure functions.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
This repository uses **devia**: a standard plus a living project memory in `.devia/`.
|
|
4
|
+
|
|
5
|
+
## Before any work
|
|
6
|
+
|
|
7
|
+
1. Read [`.devia/AGENTS.md`](.devia/AGENTS.md) — the work contract for this repository
|
|
8
|
+
2. Read [`.devia/10_NEVER_ALWAYS.md`](.devia/10_NEVER_ALWAYS.md) — what is already banned here
|
|
9
|
+
3. Read [`.devia/00_OVERVIEW.md`](.devia/00_OVERVIEW.md) — what this project is
|
|
10
|
+
4. Read the memory file for the surface you are touching — see
|
|
11
|
+
[`.devia/14_INDEX.md`](.devia/14_INDEX.md)
|
|
12
|
+
|
|
13
|
+
If `.devia/` is missing, run `npx devia init` and fill `00_OVERVIEW.md` before writing code.
|
|
14
|
+
|
|
15
|
+
## While working
|
|
16
|
+
|
|
17
|
+
- Never invent endpoints, fields, config keys or business rules. Unknown means ask, or record it
|
|
18
|
+
in `.devia/11_GAPS.md`
|
|
19
|
+
- Decided but not built goes in `.devia/12_DEBT.md`, even when you are not fixing it
|
|
20
|
+
- Smallest change that satisfies the request
|
|
21
|
+
- Never disable a test, bypass a hook, or weaken a rule to make a check pass
|
|
22
|
+
|
|
23
|
+
## Before reporting
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx devia validate # memory integrity
|
|
27
|
+
npx devia check # readiness gates
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Update `.devia/` in the same change (see `.devia/impact-map.yaml`), then report what you changed
|
|
31
|
+
**and what you did not verify**.
|
|
32
|
+
|
|
33
|
+
Full standard: [`.devia/standard/AGENTS.md`](.devia/standard/AGENTS.md) ·
|
|
34
|
+
rules by ID: [`.devia/standard/rules/README.md`](.devia/standard/rules/README.md)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This repository runs on **devia**. The project memory lives in `.devia/` and is read before any
|
|
4
|
+
work, updated with every change.
|
|
5
|
+
|
|
6
|
+
## Start here, every session
|
|
7
|
+
|
|
8
|
+
1. `.devia/AGENTS.md` — the work contract
|
|
9
|
+
2. `.devia/10_NEVER_ALWAYS.md` — what this project has banned
|
|
10
|
+
3. `.devia/00_OVERVIEW.md` — what this project is
|
|
11
|
+
4. The memory file for the surface you are touching (`.devia/14_INDEX.md`)
|
|
12
|
+
|
|
13
|
+
No `.devia/`? Run `npx devia init` and fill `00_OVERVIEW.md` before writing code.
|
|
14
|
+
|
|
15
|
+
## Rules that override default behaviour
|
|
16
|
+
|
|
17
|
+
- Never invent an endpoint, field, config key or business rule. Record the unknown in
|
|
18
|
+
`.devia/11_GAPS.md` or ask.
|
|
19
|
+
- Decided but not built goes to `.devia/12_DEBT.md`. Never delete a line you did not discharge.
|
|
20
|
+
- Smallest change that satisfies the request; no drive-by refactors.
|
|
21
|
+
- Never skip a hook, disable a test, or weaken a rule to make a check pass.
|
|
22
|
+
- Update `.devia/` in the same change (`.devia/impact-map.yaml` says which files).
|
|
23
|
+
|
|
24
|
+
## Before you report
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npx devia validate
|
|
28
|
+
npx devia check
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Report the checks that ran, the rule IDs involved, and what you did **not** verify.
|
|
32
|
+
|
|
33
|
+
Full contract: `.devia/standard/AGENTS.md`. Rules by ID: `.devia/standard/rules/README.md`.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Copilot instructions
|
|
2
|
+
|
|
3
|
+
This repository runs on devia. The project memory is `.devia/`.
|
|
4
|
+
|
|
5
|
+
- Read `.devia/AGENTS.md`, `.devia/10_NEVER_ALWAYS.md` and `.devia/00_OVERVIEW.md` before
|
|
6
|
+
suggesting changes; read the memory file for the surface you are touching
|
|
7
|
+
(`.devia/14_INDEX.md`).
|
|
8
|
+
- Do not invent endpoints, fields, config keys or business rules. Follow the contracts recorded
|
|
9
|
+
in `.devia/02_SURFACES.md` and `.devia/03_DATA_MODEL.md`.
|
|
10
|
+
- Authorization is server-side; input is validated at the boundary; no secrets in source; schema
|
|
11
|
+
changes are versioned migrations.
|
|
12
|
+
- UI changes need an accessible name, a keyboard path, visible focus, persistent labels, and
|
|
13
|
+
complete states — including empty, loading and error.
|
|
14
|
+
- Suggest the matching `.devia/` update alongside the code change.
|
|
15
|
+
- Never suggest disabling a test, skipping a hook, or loosening a check to make CI pass.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: devia — read .devia memory before coding, update it in the same change
|
|
3
|
+
alwaysApply: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
This repository runs on devia. `.devia/` is the project memory and it is not optional.
|
|
7
|
+
|
|
8
|
+
1. Before the first edit, read `.devia/AGENTS.md`, `.devia/10_NEVER_ALWAYS.md`,
|
|
9
|
+
`.devia/00_OVERVIEW.md`, and the memory file for the surface you are touching
|
|
10
|
+
(`.devia/14_INDEX.md`). If `.devia/` does not exist, run `npx devia init` first (AGT-001,
|
|
11
|
+
AGT-002).
|
|
12
|
+
2. Never invent an endpoint, field, config key or business rule. Unknown goes to
|
|
13
|
+
`.devia/11_GAPS.md` or to the human — never into the code as a quiet default (AGT-004,
|
|
14
|
+
MEM-001).
|
|
15
|
+
3. Decided but not built goes in `.devia/12_DEBT.md`, even when you are not fixing it (MEM-002).
|
|
16
|
+
Never delete a registry line you did not discharge (MEM-011).
|
|
17
|
+
4. Smallest change that satisfies the request (AGT-003). No opportunistic refactors.
|
|
18
|
+
5. Never disable a test, bypass a hook, or weaken a rule or threshold to go green (TST-003,
|
|
19
|
+
OPS-003, AGT-011).
|
|
20
|
+
6. Server-side authorization, validated input, no secrets, versioned migrations (SEC-001,
|
|
21
|
+
SEC-002, SEC-003, DB-001).
|
|
22
|
+
7. Any UI change satisfies the design MUSTs: accessible name, keyboard path, visible focus,
|
|
23
|
+
persistent labels, complete states, never colour alone (A11Y-001, A11Y-004, A11Y-006, UX-007,
|
|
24
|
+
UI-004).
|
|
25
|
+
8. Update `.devia/` in the same change, per `.devia/impact-map.yaml` (MEM-009).
|
|
26
|
+
9. Cite rule IDs, and always report what you did **not** verify (AGT-006, AGT-007).
|
|
27
|
+
10. Never claim done or production ready without naming the checks that ran (AGT-005).
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# devia rules
|
|
2
|
+
|
|
3
|
+
This repository runs on devia. `.devia/` is the project memory.
|
|
4
|
+
|
|
5
|
+
1. Read `.devia/AGENTS.md`, `.devia/10_NEVER_ALWAYS.md`, `.devia/00_OVERVIEW.md` and the memory
|
|
6
|
+
file for the surface you are touching before editing anything. No `.devia/`? Run
|
|
7
|
+
`npx devia init` first.
|
|
8
|
+
2. Never invent an endpoint, field, config key or business rule — record the unknown in
|
|
9
|
+
`.devia/11_GAPS.md` or ask.
|
|
10
|
+
3. Decided but not built goes to `.devia/12_DEBT.md`; never delete a line you did not discharge.
|
|
11
|
+
4. Smallest change that satisfies the request.
|
|
12
|
+
5. Server-side authorization, validated input, no secrets, versioned migrations.
|
|
13
|
+
6. UI: accessible name, keyboard path, visible focus, persistent labels, complete states, never
|
|
14
|
+
colour alone.
|
|
15
|
+
7. Never disable a test, bypass a hook, or weaken a rule to go green.
|
|
16
|
+
8. Update `.devia/` in the same change (`.devia/impact-map.yaml`).
|
|
17
|
+
9. Report the checks you ran, the rule IDs, and what you did not verify.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Copy into your APPLICATION repo as .github/workflows/ci.yml,
|
|
2
|
+
# then mark these jobs as required status checks on the default branch (OPS-001, OPS-002).
|
|
3
|
+
name: ci
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: [main]
|
|
8
|
+
pull_request:
|
|
9
|
+
|
|
10
|
+
concurrency:
|
|
11
|
+
group: ci-${{ github.workflow }}-${{ github.ref }}
|
|
12
|
+
cancel-in-progress: true
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
quality:
|
|
16
|
+
name: Lint · Typecheck · Unit
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
- uses: actions/setup-node@v4
|
|
21
|
+
with:
|
|
22
|
+
node-version: "22"
|
|
23
|
+
cache: npm
|
|
24
|
+
- run: npm ci
|
|
25
|
+
- run: npm run lint --if-present
|
|
26
|
+
- run: npm run typecheck --if-present
|
|
27
|
+
- run: npm test --if-present
|
|
28
|
+
|
|
29
|
+
integration:
|
|
30
|
+
name: Integration tests
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v4
|
|
34
|
+
- uses: actions/setup-node@v4
|
|
35
|
+
with:
|
|
36
|
+
node-version: "22"
|
|
37
|
+
cache: npm
|
|
38
|
+
- run: npm ci
|
|
39
|
+
- run: npm run test:integration --if-present
|
|
40
|
+
|
|
41
|
+
dependency-audit:
|
|
42
|
+
name: Dependency audit
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/checkout@v4
|
|
46
|
+
- uses: actions/setup-node@v4
|
|
47
|
+
with:
|
|
48
|
+
node-version: "22"
|
|
49
|
+
cache: npm
|
|
50
|
+
- run: npm ci
|
|
51
|
+
- run: npm run security:audit --if-present
|
|
52
|
+
- name: npm audit
|
|
53
|
+
if: ${{ hashFiles('package.json') != '' }}
|
|
54
|
+
run: npm audit --audit-level=high
|
|
55
|
+
|
|
56
|
+
secret-scan:
|
|
57
|
+
name: Secret scan
|
|
58
|
+
runs-on: ubuntu-latest
|
|
59
|
+
steps:
|
|
60
|
+
- uses: actions/checkout@v4
|
|
61
|
+
with:
|
|
62
|
+
fetch-depth: 0
|
|
63
|
+
- name: Gitleaks
|
|
64
|
+
uses: gitleaks/gitleaks-action@v2
|
|
65
|
+
env:
|
|
66
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
67
|
+
|
|
68
|
+
devia:
|
|
69
|
+
name: Devia — memory + readiness gates
|
|
70
|
+
runs-on: ubuntu-latest
|
|
71
|
+
steps:
|
|
72
|
+
- uses: actions/checkout@v4
|
|
73
|
+
- uses: actions/setup-node@v4
|
|
74
|
+
with:
|
|
75
|
+
node-version: "22"
|
|
76
|
+
- name: Memory integrity
|
|
77
|
+
run: npx --yes devia validate
|
|
78
|
+
- name: Readiness gates (P0 blocks)
|
|
79
|
+
run: npx --yes devia check
|
|
80
|
+
|
|
81
|
+
e2e:
|
|
82
|
+
name: E2E / smoke
|
|
83
|
+
runs-on: ubuntu-latest
|
|
84
|
+
steps:
|
|
85
|
+
- uses: actions/checkout@v4
|
|
86
|
+
- uses: actions/setup-node@v4
|
|
87
|
+
with:
|
|
88
|
+
node-version: "22"
|
|
89
|
+
cache: npm
|
|
90
|
+
- run: npm ci
|
|
91
|
+
- run: npm run test:e2e --if-present
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# 00 — Overview
|
|
2
|
+
|
|
3
|
+
> What this project **is**. No progress, no counters, no plans — those live in the registries
|
|
4
|
+
> and the tracker (`MEM-007`).
|
|
5
|
+
|
|
6
|
+
## What it is
|
|
7
|
+
|
|
8
|
+
TODO(devia): one paragraph. What does this product do, for whom, and what would be lost if it
|
|
9
|
+
did not exist?
|
|
10
|
+
|
|
11
|
+
## Who uses it
|
|
12
|
+
|
|
13
|
+
TODO(devia): the roles that matter to the code — anonymous visitor, customer, staff, admin,
|
|
14
|
+
machine client. Permissions detail goes in `04_PERMISSIONS.md`.
|
|
15
|
+
|
|
16
|
+
## Stack
|
|
17
|
+
|
|
18
|
+
| Layer | Technology | Notes |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| Language / runtime | TODO(devia) | |
|
|
21
|
+
| Framework | TODO(devia) | |
|
|
22
|
+
| Data store | TODO(devia) | |
|
|
23
|
+
| Frontend | TODO(devia) | |
|
|
24
|
+
| Hosting / deploy | TODO(devia) | |
|
|
25
|
+
| CI | TODO(devia) | |
|
|
26
|
+
|
|
27
|
+
## Modules
|
|
28
|
+
|
|
29
|
+
TODO(devia): the three to eight parts of the system a newcomer must know, one line each, with
|
|
30
|
+
where each lives.
|
|
31
|
+
|
|
32
|
+
| Module | Responsibility | Where |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| | | |
|
|
35
|
+
|
|
36
|
+
## Non-goals
|
|
37
|
+
|
|
38
|
+
TODO(devia): what this project deliberately does **not** do. This is the cheapest way to stop an
|
|
39
|
+
agent from helpfully building the wrong thing.
|
|
40
|
+
|
|
41
|
+
## Where the truth lives
|
|
42
|
+
|
|
43
|
+
| Question | Source of truth |
|
|
44
|
+
|---|---|
|
|
45
|
+
| Product intent | TODO(devia) |
|
|
46
|
+
| Data model | TODO(devia) |
|
|
47
|
+
| Permissions | TODO(devia) |
|
|
48
|
+
| API contract | TODO(devia) |
|
|
49
|
+
| Design tokens | TODO(devia) |
|
|
50
|
+
|
|
51
|
+
This memory **points** at those documents. It never copies them (`MEM-008`).
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# 01 — Architecture
|
|
2
|
+
|
|
3
|
+
> How the system is organised, and which boundaries must not be crossed (`ARC-001`).
|
|
4
|
+
|
|
5
|
+
## Shape
|
|
6
|
+
|
|
7
|
+
TODO(devia): the diagram in words. Client → API → service → store, or whatever is actually true.
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
TODO(devia)
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Layers and boundaries
|
|
14
|
+
|
|
15
|
+
| Layer | Owns | Must not |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| TODO(devia) | | |
|
|
18
|
+
|
|
19
|
+
## Directory map
|
|
20
|
+
|
|
21
|
+
| Path | Contains |
|
|
22
|
+
|---|---|
|
|
23
|
+
| TODO(devia) | |
|
|
24
|
+
|
|
25
|
+
## Decisions that constrain new work
|
|
26
|
+
|
|
27
|
+
TODO(devia): the decisions an agent must not silently reverse, each with a link to the ADR or the
|
|
28
|
+
discussion that settled it (`ARC-002`).
|
|
29
|
+
|
|
30
|
+
| Decision | Recorded in |
|
|
31
|
+
|---|---|
|
|
32
|
+
| | |
|
|
33
|
+
|
|
34
|
+
## Current vs target
|
|
35
|
+
|
|
36
|
+
Where the code and the intended architecture differ, the difference is a **debt line** in
|
|
37
|
+
[`12_DEBT.md`](12_DEBT.md) — not a note here.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# 02 — Surfaces
|
|
2
|
+
|
|
3
|
+
> Everything the outside world can reach: pages, endpoints, jobs, events, commands.
|
|
4
|
+
> One capability, one surface (`API-006`).
|
|
5
|
+
|
|
6
|
+
## Pages / screens
|
|
7
|
+
|
|
8
|
+
| Route | Purpose | Component | Auth |
|
|
9
|
+
|---|---|---|---|
|
|
10
|
+
| TODO(devia) | | | |
|
|
11
|
+
|
|
12
|
+
## Endpoints
|
|
13
|
+
|
|
14
|
+
| Method + path | Purpose | Authorization | Handler |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| TODO(devia) | | | |
|
|
17
|
+
|
|
18
|
+
## Background work
|
|
19
|
+
|
|
20
|
+
| Job | Trigger | Idempotent | Where |
|
|
21
|
+
|---|---|---|---|
|
|
22
|
+
| TODO(devia) | | | |
|
|
23
|
+
|
|
24
|
+
## Inbound events / webhooks
|
|
25
|
+
|
|
26
|
+
| Source | Event | Verified how | Handler |
|
|
27
|
+
|---|---|---|---|
|
|
28
|
+
| TODO(devia) | | | |
|
|
29
|
+
|
|
30
|
+
Adding any of these updates this file in the same change (`MEM-009`).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# 03 — Data model
|
|
2
|
+
|
|
3
|
+
> What is stored, and where its definition lives. The schema itself stays in the migrations
|
|
4
|
+
> (`MEM-008`).
|
|
5
|
+
|
|
6
|
+
## Entities
|
|
7
|
+
|
|
8
|
+
| Entity | Meaning | Defined in | Notes |
|
|
9
|
+
|---|---|---|---|
|
|
10
|
+
| TODO(devia) | | | |
|
|
11
|
+
|
|
12
|
+
## Invariants
|
|
13
|
+
|
|
14
|
+
TODO(devia): what must always hold — money exact and carrying its currency (`DB-003`), archive
|
|
15
|
+
instead of delete where history matters (`DB-005`), append-only audit trail (`DB-007`).
|
|
16
|
+
|
|
17
|
+
## Lifecycles
|
|
18
|
+
|
|
19
|
+
TODO(devia): the state machines that matter (order, payment, subscription): states, allowed
|
|
20
|
+
transitions, and where the transition code lives. A transition not listed here does not exist.
|
|
21
|
+
|
|
22
|
+
## Migrations
|
|
23
|
+
|
|
24
|
+
| Convention | Value |
|
|
25
|
+
|---|---|
|
|
26
|
+
| Location | TODO(devia) |
|
|
27
|
+
| Naming | TODO(devia) |
|
|
28
|
+
| How they run | TODO(devia) |
|
|
29
|
+
| Rollback strategy | TODO(devia) |
|
|
30
|
+
|
|
31
|
+
Applied migrations are immutable; corrections ship forward (`DB-002`).
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# 04 — Permissions
|
|
2
|
+
|
|
3
|
+
> Who can do what, enforced on the server (`SEC-001`), and what leaves an audit trail
|
|
4
|
+
> (`DB-007`).
|
|
5
|
+
|
|
6
|
+
## Roles
|
|
7
|
+
|
|
8
|
+
| Role | Can | Cannot |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| TODO(devia) | | |
|
|
11
|
+
|
|
12
|
+
## Enforcement
|
|
13
|
+
|
|
14
|
+
| Surface | Enforced where | Test |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| TODO(devia) | | |
|
|
17
|
+
|
|
18
|
+
Hiding a control in the interface is never enforcement.
|
|
19
|
+
|
|
20
|
+
## Isolation
|
|
21
|
+
|
|
22
|
+
TODO(devia): what scopes the data — user, organisation, tenant — and where that predicate is
|
|
23
|
+
applied. Cross-scope access is covered by a test that fails when the predicate is removed
|
|
24
|
+
(`SEC-005`, `TST-002`).
|
|
25
|
+
|
|
26
|
+
## Audited actions
|
|
27
|
+
|
|
28
|
+
TODO(devia): the actions that always write an audit row, with actor, target and outcome.
|
|
29
|
+
|
|
30
|
+
| Action | Written where |
|
|
31
|
+
|---|---|
|
|
32
|
+
| | |
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# 05 — Flows
|
|
2
|
+
|
|
3
|
+
> The journeys the product cannot afford to break (`TST-005`).
|
|
4
|
+
|
|
5
|
+
## Critical journeys
|
|
6
|
+
|
|
7
|
+
| Journey | Steps | Covered by |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| TODO(devia) | | |
|
|
10
|
+
|
|
11
|
+
## Failure behaviour
|
|
12
|
+
|
|
13
|
+
For each critical journey: what the user sees when it fails, and what the system does — retry,
|
|
14
|
+
refund, queue, alert (`STATE-002`, `UX-012`).
|
|
15
|
+
|
|
16
|
+
| Journey | Failure mode | User sees | System does |
|
|
17
|
+
|---|---|---|---|
|
|
18
|
+
| TODO(devia) | | | |
|
|
19
|
+
|
|
20
|
+
A journey with no stated failure behaviour is a journey whose failure behaviour is an accident.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# 06 — Integrations
|
|
2
|
+
|
|
3
|
+
> External services this project depends on. Secret **names** only — never values (`SEC-002`).
|
|
4
|
+
|
|
5
|
+
| Service | Used for | Environment variable | Failure behaviour |
|
|
6
|
+
|---|---|---|---|
|
|
7
|
+
| TODO(devia) | | | |
|
|
8
|
+
|
|
9
|
+
## Webhooks in
|
|
10
|
+
|
|
11
|
+
| Provider | Verification | Idempotency key | Handler |
|
|
12
|
+
|---|---|---|---|
|
|
13
|
+
| TODO(devia) | | | |
|
|
14
|
+
|
|
15
|
+
Signature verified against the raw body, stale timestamps rejected, replays are no-ops
|
|
16
|
+
(`SEC-007`).
|
|
17
|
+
|
|
18
|
+
## When one is down
|
|
19
|
+
|
|
20
|
+
TODO(devia): degrade, queue, or fail closed — per integration. "It breaks" is an acceptable
|
|
21
|
+
answer only if it is a deliberate one.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 07 — Design
|
|
2
|
+
|
|
3
|
+
> The interface decisions specific to this project. The general rules live in the standard
|
|
4
|
+
> (`standard/standard/design/`); this file records what is local.
|
|
5
|
+
|
|
6
|
+
## Tokens
|
|
7
|
+
|
|
8
|
+
| Token set | Source of truth | Consumed by |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| TODO(devia) | | |
|
|
11
|
+
|
|
12
|
+
Git is the source of truth for tokens (`DS-001`); components consume semantic tokens, not raw
|
|
13
|
+
values (`DS-002`, `UI-003`).
|
|
14
|
+
|
|
15
|
+
## Components
|
|
16
|
+
|
|
17
|
+
| Component | Where | States implemented |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| TODO(devia) | | |
|
|
20
|
+
|
|
21
|
+
Complete means default, hover, focus, active, disabled, loading, empty, error, success — plus
|
|
22
|
+
permission-denied and offline where they can occur (`STATE-001`, `STATE-002`, `STATE-003`).
|
|
23
|
+
|
|
24
|
+
## Patterns fixed for this product
|
|
25
|
+
|
|
26
|
+
TODO(devia): the choices that must stay consistent — table density, date and currency format,
|
|
27
|
+
empty-state voice, how destructive actions are confirmed (`UX-011`).
|
|
28
|
+
|
|
29
|
+
## Interface decisions
|
|
30
|
+
|
|
31
|
+
| Decision | Why | Recorded in |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| TODO(devia) | | |
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# 10 — Never / Always
|
|
2
|
+
|
|
3
|
+
> Rules this project earned. Each line comes from a real incident or a decision that was actually
|
|
4
|
+
> contested, and names the trap **and** the correct move (`MEM-010`).
|
|
5
|
+
|
|
6
|
+
## Never
|
|
7
|
+
|
|
8
|
+
- TODO(devia): the first line goes here, after the first mistake worth remembering.
|
|
9
|
+
|
|
10
|
+
## Always
|
|
11
|
+
|
|
12
|
+
- Always read the memory file for a surface before changing it (`AGT-001`).
|
|
13
|
+
- Always update `.devia/` in the same change as the code (`MEM-009`).
|
|
14
|
+
- TODO(devia): add this project's own.
|
|
15
|
+
|
|
16
|
+
## How a line gets added
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
Something broke, or a decision was argued twice
|
|
20
|
+
↓
|
|
21
|
+
Fix it
|
|
22
|
+
↓
|
|
23
|
+
Add ONE line: what not to do, and what to do instead
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
A line nobody has ever violated is noise, and noise teaches agents to skim. Delete it.
|