refactor: 리펙토링
This commit is contained in:
+24
-24
@@ -78,21 +78,21 @@
|
||||
"steps": [
|
||||
{ "script": "check:types", "expect": "pass" },
|
||||
{ "script": "check:types:recipes", "expect": "pass" },
|
||||
{ "script": "check:types:fixture", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:ts-port", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:ts-result", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:application-output", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:application-input", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:feature-input", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:failure-kind", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:reference-operation", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:async-overlay", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:route-runtime", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:page-action", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:icon-button", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:i18n-key", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:i18n-params", "expect": "fail" },
|
||||
{ "script": "check:types:fixture:diagnostics", "expect": "fail" }
|
||||
{ "script": "check:types:fixture", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2322:" },
|
||||
{ "script": "check:types:fixture:ts-port", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2322:" },
|
||||
{ "script": "check:types:fixture:ts-result", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2339:" },
|
||||
{ "script": "check:types:fixture:application-output", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2322:" },
|
||||
{ "script": "check:types:fixture:application-input", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2739:" },
|
||||
{ "script": "check:types:fixture:feature-input", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2345:" },
|
||||
{ "script": "check:types:fixture:failure-kind", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2322:" },
|
||||
{ "script": "check:types:fixture:reference-operation", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2345:" },
|
||||
{ "script": "check:types:fixture:async-overlay", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2322:" },
|
||||
{ "script": "check:types:fixture:route-runtime", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2353:" },
|
||||
{ "script": "check:types:fixture:page-action", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS1360:" },
|
||||
{ "script": "check:types:fixture:icon-button", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2741:" },
|
||||
{ "script": "check:types:fixture:i18n-key", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2345:" },
|
||||
{ "script": "check:types:fixture:i18n-params", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "error TS2554:" },
|
||||
{ "script": "check:types:fixture:diagnostics", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "UNKNOWN_DIAGNOSTIC_EVENT" }
|
||||
],
|
||||
"logPath": "artifacts/quality/check-types.txt",
|
||||
"evidence": ["artifacts/quality/check-types.txt"],
|
||||
@@ -110,7 +110,7 @@
|
||||
"steps": [
|
||||
{ "script": "test:unit", "expect": "pass" },
|
||||
{ "script": "test:coverage", "expect": "pass" },
|
||||
{ "script": "check:coverage:fixture", "expect": "fail" }
|
||||
{ "script": "check:coverage:fixture", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "Risk coverage failed:" }
|
||||
],
|
||||
"logPath": "artifacts/quality/gates/FE-GATE-005.txt",
|
||||
"evidence": [
|
||||
@@ -156,7 +156,7 @@
|
||||
{ "script": "test:storybook", "expect": "pass" },
|
||||
{ "script": "test:visual", "expect": "pass" },
|
||||
{ "script": "check:test-evidence", "expect": "pass" },
|
||||
{ "script": "check:test-evidence:fixture", "expect": "fail" }
|
||||
{ "script": "check:test-evidence:fixture", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "Test evidence failed:" }
|
||||
],
|
||||
"logPath": "artifacts/quality/gates/FE-GATE-008.txt",
|
||||
"evidence": [
|
||||
@@ -197,11 +197,11 @@
|
||||
"steps": [
|
||||
{ "script": "check:architecture", "expect": "pass" },
|
||||
{ "script": "check:design-system", "expect": "pass" },
|
||||
{ "script": "check:design-system:fixture", "expect": "fail" },
|
||||
{ "script": "check:design-system:fixture", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "Design system contract failed:" },
|
||||
{ "script": "check:i18n", "expect": "pass" },
|
||||
{ "script": "check:i18n:fixture", "expect": "fail" },
|
||||
{ "script": "check:i18n:fixture", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "I18n contract failed:" },
|
||||
{ "script": "check:diagnostics", "expect": "pass" },
|
||||
{ "script": "check:diagnostics:fixture", "expect": "fail" },
|
||||
{ "script": "check:diagnostics:fixture", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "Diagnostics contract failed:" },
|
||||
{ "script": "check:browser-file-storage-boundaries", "expect": "pass" },
|
||||
{ "script": "check:realtime-boundaries", "expect": "pass" },
|
||||
{ "script": "check:realtime-boundaries:fixture", "expect": "pass" },
|
||||
@@ -212,9 +212,9 @@
|
||||
"script": "check:registries:compatibility-fixtures",
|
||||
"expect": "pass"
|
||||
},
|
||||
{ "script": "check:registries:baseline-fixture", "expect": "fail" },
|
||||
{ "script": "check:registries:fixture", "expect": "fail" },
|
||||
{ "script": "check:routes:fixture", "expect": "fail" }
|
||||
{ "script": "check:registries:baseline-fixture", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "registry baseline approval digest mismatch:" },
|
||||
{ "script": "check:registries:fixture", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "duplicates id=duplicate" },
|
||||
{ "script": "check:routes:fixture", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "duplicates routeId=DUPLICATE" }
|
||||
],
|
||||
"logPath": "artifacts/quality/gates/FE-GATE-010.txt",
|
||||
"evidence": [
|
||||
@@ -275,7 +275,7 @@
|
||||
"script": "check:supply-chain:provider-fixtures",
|
||||
"expect": "pass"
|
||||
},
|
||||
{ "script": "scan:security:fixture", "expect": "fail" },
|
||||
{ "script": "scan:security:fixture", "expect": "fail", "expectedExitCode": 1, "expectedDiagnosticId": "Security scan found" },
|
||||
{ "script": "check:browser-security", "expect": "pass" }
|
||||
],
|
||||
"logPath": "artifacts/quality/gates/FE-GATE-013.txt",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"snapshotDigest": "67f1ad2bf35d04470a7fba1a5ae8f98608b5d70b70887e383692b1e2d6127752",
|
||||
"snapshotDigest": "53468eada148a7afc821b0885b8a53bf47978bfd17adf26b424054beedcce608",
|
||||
"owner": "frontend-platform",
|
||||
"reason": "Typed Web Storage codecs and query invalidation topic protocol",
|
||||
"approvedAt": "2026-07-27T16:41:15.888Z"
|
||||
"reason": "Make the reference feature route access policy explicitly session-required",
|
||||
"approvedAt": "2026-08-01T07:18:30.000Z"
|
||||
}
|
||||
|
||||
@@ -41,8 +41,7 @@
|
||||
"allowedValues": {
|
||||
"access": [
|
||||
"public",
|
||||
"session-required",
|
||||
"integration-defined"
|
||||
"session-required"
|
||||
],
|
||||
"paramsSchema": [
|
||||
null,
|
||||
@@ -162,7 +161,7 @@
|
||||
"title": "페이지를 찾을 수 없음"
|
||||
},
|
||||
"REFERENCE_RESOURCE_DETAIL": {
|
||||
"access": "integration-defined",
|
||||
"access": "session-required",
|
||||
"chunkId": "route-reference-resource-detail",
|
||||
"errorSurface": "feature-boundary",
|
||||
"loadingSurface": "reference-resource-detail",
|
||||
@@ -175,7 +174,7 @@
|
||||
"title": "Reference detail"
|
||||
},
|
||||
"REFERENCE_RESOURCE_FORM": {
|
||||
"access": "integration-defined",
|
||||
"access": "session-required",
|
||||
"chunkId": "route-reference-resource-form",
|
||||
"errorSurface": "feature-boundary",
|
||||
"loadingSurface": "reference-resource-form",
|
||||
@@ -188,7 +187,7 @@
|
||||
"title": "Reference form"
|
||||
},
|
||||
"REFERENCE_RESOURCE_LIST": {
|
||||
"access": "integration-defined",
|
||||
"access": "session-required",
|
||||
"chunkId": "route-reference-resources",
|
||||
"errorSurface": "feature-boundary",
|
||||
"loadingSurface": "reference-resource-list",
|
||||
@@ -201,7 +200,7 @@
|
||||
"title": "Reference feature"
|
||||
},
|
||||
"REFERENCE_RESOURCE_STATUS": {
|
||||
"access": "integration-defined",
|
||||
"access": "session-required",
|
||||
"chunkId": "route-reference-resource-status",
|
||||
"errorSurface": "feature-boundary",
|
||||
"loadingSurface": "reference-resource-status",
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"changes": [
|
||||
{
|
||||
"changeId": "FE-REG-ENV:API_CONTRACT_VERSION:*:removed",
|
||||
"versionBump": "Runtime Config V2 (CONFIG_SCHEMA_VERSION 2.0) removes the scalar API contract version.",
|
||||
"migration": "Release Manifest V2 contractSet replaces the scalar: the compiled external contract package set is canonicalized and digested, and boot compares it against the manifest.",
|
||||
"compatibilityWindow": "The V1 config and V1 manifest readers stay in place for one release. A V1 document may still carry the scalar; a V2 document is rejected if it does.",
|
||||
"rollback": "Restore the V1 writer in scripts/generate-build-manifest.ts and the scalar key in public/config.json; the V1 reader is still present.",
|
||||
"owner": "frontend-platform"
|
||||
},
|
||||
{
|
||||
"changeId": "FE-REG-QUERY:$contract:allowedValues:contract-field-changed",
|
||||
"versionBump": "Cross-context invalidation wire protocol starts at version 1.",
|
||||
@@ -41,6 +49,14 @@
|
||||
"rollback": "Drop invalidationTopic uniqueness after removing the transport consumer.",
|
||||
"owner": "frontend-platform"
|
||||
},
|
||||
{
|
||||
"changeId": "FE-REG-RELEASE:apiContractVersion:compatibilityRole:field-changed",
|
||||
"versionBump": "The release token registry adds contractSetDigest and demotes apiContractVersion to a legacy V1 scalar.",
|
||||
"migration": "compareReleaseToRuntime no longer sources the scalar from Runtime Config; when neither side declares it there is nothing to compare and contractSet verification owns contract coherence.",
|
||||
"compatibilityWindow": "A V1 manifest still supplies apiContractVersion and is still compared against a V1 config that declares one.",
|
||||
"rollback": "Restore the previous compatibilityRole text and remove the contractSetDigest token together with the V2 manifest writer.",
|
||||
"owner": "frontend-platform"
|
||||
},
|
||||
{
|
||||
"changeId": "FE-REG-STORAGE:$contract:allowedValues:contract-field-changed",
|
||||
"versionBump": "Web Storage value codec contracts start at version 1.",
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
},
|
||||
"uniqueFields": ["routeId", "path", "chunkId"],
|
||||
"allowedValues": {
|
||||
"access": ["public", "session-required", "integration-defined"],
|
||||
"access": ["public", "session-required"],
|
||||
"paramsSchema": [null, "NotFoundSplat", "ReferenceResourceParams"],
|
||||
"searchSchema": [null, "ReferenceResourceListQuery"],
|
||||
"loadingSurface": [
|
||||
|
||||
Reference in New Issue
Block a user