Files
llm-wiki/harness/source/artifact-schemas/ca-skeleton-frontend/bundle-report.schema.json
T

49 lines
1.9 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "ca-skeleton-frontend/bundle-report.schema.json",
"title": "artifacts/performance/bundle.json",
"description": "pnpm check:bundle 산출물. build-bundle 이 생산하고 web-vitals 가 FE-NFR-001/FE-NFR-002 판정에 소비한다. 두 branch 가 서로 다른 필드 명명(camelCase vs snake_case)을 제안하던 co-owned 스키마를 이 파일 하나로 확정한다.",
"type": "object",
"additionalProperties": true,
"required": ["context", "buildId", "commit", "runner", "initialJsGzipBytes", "chunks"],
"properties": {
"context": {
"type": "string",
"const": "FE-NFR-C04",
"description": "측정 context ID. bundle 측정은 build context 에서만 유효하다."
},
"buildId": { "type": "string" },
"commit": { "type": "string" },
"runner": {
"type": "object",
"description": "FE-NFR-C04 재현 메타데이터. build-manifest.schema.json 의 buildContext 와 같은 값을 담는다.",
"required": ["nodeVersion", "packageManagerVersion", "runnerImage"],
"additionalProperties": true,
"properties": {
"nodeVersion": { "type": "string" },
"packageManagerVersion": { "type": "string" },
"runnerImage": { "type": "string" }
}
},
"initialJsGzipBytes": {
"type": "integer",
"minimum": 0,
"description": "initial JS(app) gzip 바이트. FE-NFR-001 판정 입력."
},
"chunks": {
"type": "array",
"description": "chunk 별 gzip 크기. FE-NFR-002 판정 입력.",
"items": {
"type": "object",
"required": ["chunkId", "kind", "gzipBytes"],
"additionalProperties": true,
"properties": {
"chunkId": { "type": "string" },
"kind": { "enum": ["initial", "lazy"] },
"gzipBytes": { "type": "integer", "minimum": 0 }
}
}
}
}
}