Initial commit: Add project files
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"contractVersion": "crud-page.v1",
|
||||
"stateOwners": {"server":"TanStack Query","form":"vee-validate + Zod","url":"vue-router","sessionAndUiPreference":"Pinia"},
|
||||
"requiredRequestHeaders": ["Idempotency-Key for commands", "If-Match for updates where concurrency applies", "X-Correlation-Id"],
|
||||
"requiredResponseMetadata": ["asOf", "projectionVersion", "stale", "watermark where applicable"],
|
||||
"listQuery": ["page", "pageSize", "search", "sort[]", "filter[]"],
|
||||
"failureStates": ["LOADING","EMPTY","WARN","ERROR","UNAUTHORIZED","FORBIDDEN","PARTIAL","DIRTY","CONFLICT","EXPIRED","READONLY","PROCESSING"],
|
||||
"forbidden": ["server data duplicated in Pinia", "vendor grid state stored in domain feature", "silent overwrite after 409/412", "delete without reason and audit"]
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"title": "K-ArtSell CRUD Resource Contract v2",
|
||||
"contractVersion": "2.0",
|
||||
"required": [
|
||||
"resourceId",
|
||||
"querySchemaVersion",
|
||||
"responseSchemaVersion",
|
||||
"permissionPolicy",
|
||||
"concurrencyMode",
|
||||
"idempotencyMode",
|
||||
"sensitiveFields"
|
||||
],
|
||||
"properties": {
|
||||
"concurrencyMode": {
|
||||
"enum": [
|
||||
"NONE",
|
||||
"ETAG_IF_MATCH"
|
||||
]
|
||||
},
|
||||
"idempotencyMode": {
|
||||
"enum": [
|
||||
"NONE",
|
||||
"IDEMPOTENCY_KEY"
|
||||
]
|
||||
},
|
||||
"queryOwnership": {
|
||||
"const": "VUE_ROUTER"
|
||||
},
|
||||
"serverStateOwnership": {
|
||||
"const": "TANSTACK_QUERY"
|
||||
},
|
||||
"formOwnership": {
|
||||
"const": "VEE_VALIDATE_ZOD"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"contractVersion":"layout-regions.v1",
|
||||
"regions":["Header","Summary","Filter","Main","SidePanel","ActionBar","AuditHelp"],
|
||||
"rules":["one h1 per page","actions remain visible without covering content","evidence context is visible","responsive order follows task order","operation screens expose run status and watermark"]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"contractVersion": "2.0",
|
||||
"templates": [
|
||||
{ "id": "T01", "component": "SearchListCrudPage", "purpose": "search/list CRUD" },
|
||||
{ "id": "T02", "component": "DetailReadPage", "purpose": "read-only detail with evidence" },
|
||||
{ "id": "T03", "component": "EditFormPage", "purpose": "create/update form" },
|
||||
{ "id": "T04", "component": "MasterDetailCrudPage", "purpose": "master-detail CRUD" },
|
||||
{ "id": "T05", "component": "ApprovalWorkbenchPage", "purpose": "maker-checker review" },
|
||||
{ "id": "T06", "component": "StepWizardPage", "purpose": "multi-step workflow" },
|
||||
{ "id": "T07", "component": "ScorecardDashboardPage", "purpose": "dashboard and scorecard" },
|
||||
{ "id": "T08", "component": "BatchOperationsPageV2", "purpose": "batch and data operations" },
|
||||
{ "id": "T09", "component": "ReconciliationExceptionPage", "purpose": "reconciliation and correction" },
|
||||
{ "id": "T10", "component": "VersionGovernancePage", "purpose": "version comparison and governance" }
|
||||
],
|
||||
"mandatoryCrossCutting": [
|
||||
"loading/empty/warn/error/unauthorized/partial states",
|
||||
"as-of and version evidence",
|
||||
"permission boundary",
|
||||
"correlation and audit link",
|
||||
"responsive and keyboard operation"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"contractVersion": "2.0",
|
||||
"requiredCapabilities": [
|
||||
"button", "text-field", "text-area", "select", "checkbox",
|
||||
"date-field", "number-field", "dialog", "status-tag", "data-grid"
|
||||
],
|
||||
"providers": [
|
||||
{ "id": "primevue-aggrid", "productionEligible": true, "selection": "VITE_UI_ADAPTER=primevue" },
|
||||
{ "id": "native-accessible", "productionEligible": false, "selection": "VITE_UI_ADAPTER=native" }
|
||||
],
|
||||
"featureImportRule": "Feature code imports only from @/shared/ui/components, @/shared/ui/layouts or @/shared/ui/screen-types.",
|
||||
"replacementGate": [
|
||||
"adapter contract tests", "accessibility keyboard tests", "visual regression",
|
||||
"screen-state matrix", "large-list performance", "security review"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"contractVersion": "3.0",
|
||||
"status": "CURRENT",
|
||||
"principle": "Feature code depends on normalized K-ArtSell contracts, never vendor props or events.",
|
||||
"requiredCapabilities": ["button","text-field","text-area","select","multi-select","checkbox","date-field","number-field","dialog","status-tag","inline-message","paginator","tabs","data-grid"],
|
||||
"providers": [
|
||||
{"id":"primevue-aggrid","productionEligible":true,"boundary":"frontend/src/shared/ui/adapter/primevue"},
|
||||
{"id":"native-accessible","productionEligible":false,"purpose":"reference and contract conformance"}
|
||||
],
|
||||
"forbidden": ["vendor import outside provider", "pass-through of unreviewed vendor props", "vendor-specific state in feature store", "silent fallback when capability is missing"],
|
||||
"acceptance": ["contract conformance", "keyboard and label tests", "T01-T10 state matrix", "server paging and sorting contract", "visual regression", "accessibility review"]
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"title": "K-ArtSell UI Adapter Contract v4",
|
||||
"contractVersion": "4.0",
|
||||
"status": "IMPLEMENTATION_TEMPLATE",
|
||||
"requiredCapabilities": [
|
||||
"button",
|
||||
"text-field",
|
||||
"text-area",
|
||||
"select",
|
||||
"multi-select",
|
||||
"checkbox",
|
||||
"date-field",
|
||||
"number-field",
|
||||
"dialog",
|
||||
"status-tag",
|
||||
"inline-message",
|
||||
"paginator",
|
||||
"tabs",
|
||||
"data-grid"
|
||||
],
|
||||
"requiredEvidence": [
|
||||
"contract-conformance",
|
||||
"keyboard-focus",
|
||||
"accessible-name",
|
||||
"t01-t10-state-regression",
|
||||
"provider-switch-smoke",
|
||||
"visual-regression",
|
||||
"performance-budget",
|
||||
"rollback-rehearsal"
|
||||
],
|
||||
"rules": {
|
||||
"featureVendorImports": 0,
|
||||
"unknownCapability": "FAIL_FAST",
|
||||
"unsupportedContract": "FAIL_FAST",
|
||||
"providerSelection": "STARTUP_ONLY",
|
||||
"mutableGlobalProviderSwitch": false,
|
||||
"normalizedSemantics": [
|
||||
"disabled",
|
||||
"invalid",
|
||||
"busy",
|
||||
"aria-describedby",
|
||||
"stable-events"
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user