frontend-project-context 1.6.0 → 1.7.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/CHANGELOG.md +22 -0
- package/README.md +92 -46
- package/UPGRADING.md +22 -1
- package/docs/05-ACCEPTANCE-CONTRACT.md +20 -1
- package/docs/08-INSTALLATION-AND-DISTRIBUTION.md +44 -21
- package/docs/14-FORMAL-RELEASE-READINESS.md +9 -5
- package/docs/19-POST-1.3.1-AI-TAKEOVER-EVIDENCE-AND-UPGRADE-PLAN.md +5 -5
- package/docs/20-PHASE-A-AI-TAKEOVER-AND-HEALTH-CLOSURE-DESIGN.md +11 -11
- package/docs/22-PHASE-C-TARGET-UPGRADE-PROTOCOL-DESIGN.md +4 -4
- package/docs/23-ADAPTIVE-BOUNDED-TASK-CONTEXT-DESIGN.md +432 -0
- package/docs/24-A130-REAL-HOST-TARGET-PROJECT-COMPARISON.md +210 -0
- package/docs/25-REAL-PROJECT-SOURCE-OF-TRUTH-MAINTENANCE-DESIGN.md +409 -0
- package/docs/26-A130-QUALITY-CLOSURE-AND-ADAPTIVE-DELIVERY-REPAIR-DESIGN.md +609 -0
- package/docs/README.md +22 -6
- package/docs/USER-AND-AI-OPERATION-MANUAL.md +73 -30
- package/examples/README.md +4 -4
- package/examples/package.json +1 -1
- package/migration-manifest.json +30 -8
- package/package.json +2 -2
- package/schemas/adaptive-context-bundle.schema.json +70 -0
- package/schemas/capabilities.schema.json +20 -6
- package/schemas/context-query.schema.json +69 -0
- package/schemas/coverage-audit.schema.json +32 -0
- package/schemas/evidence-bundle.schema.json +2 -2
- package/schemas/host-promotion-evidence.schema.json +33 -0
- package/schemas/migration-manifest.schema.json +3 -3
- package/schemas/migration-plan.schema.json +2 -2
- package/schemas/projection-lock.schema.json +1 -1
- package/schemas/routing-index.schema.json +58 -0
- package/schemas/truth-reconciliation-input.schema.json +60 -0
- package/schemas/truth-reconciliation-review-bundle.schema.json +155 -0
- package/schemas/upgrade-assessment.schema.json +2 -2
- package/schemas/upgrade-result-bundle.schema.json +1 -1
- package/src/project-context/a130-evaluation.mjs +91 -0
- package/src/project-context/adaptive-context-schema.mjs +392 -0
- package/src/project-context/adaptive-context.mjs +547 -0
- package/src/project-context/ai-entry.mjs +9 -9
- package/src/project-context/assist.mjs +4 -2
- package/src/project-context/capabilities.mjs +18 -0
- package/src/project-context/checker.mjs +4 -3
- package/src/project-context/cli.mjs +40 -5
- package/src/project-context/contract-schema.mjs +1 -1
- package/src/project-context/discovery.mjs +7 -7
- package/src/project-context/exchange-schema.mjs +6 -5
- package/src/project-context/maintenance.mjs +2 -2
- package/src/project-context/migration-manifest.mjs +7 -5
- package/src/project-context/renderer.mjs +75 -1
- package/src/project-context/source-reader.mjs +63 -30
- package/src/project-context/task-context.mjs +14 -2
- package/src/project-context/truth-reconciliation-schema.mjs +488 -0
- package/src/project-context/truth-reconciliation.mjs +543 -0
- package/src/project-context/upgrade-schema.mjs +5 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "urn:frontend-project-context:schema:capabilities:
|
|
3
|
+
"$id": "urn:frontend-project-context:schema:capabilities:7",
|
|
4
4
|
"title": "Frontend Project Context Capabilities",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"additionalProperties": false,
|
|
@@ -18,28 +18,32 @@
|
|
|
18
18
|
"boundaries"
|
|
19
19
|
],
|
|
20
20
|
"properties": {
|
|
21
|
-
"schemaVersion": { "const":
|
|
21
|
+
"schemaVersion": { "const": 7 },
|
|
22
22
|
"package": {
|
|
23
23
|
"type": "object",
|
|
24
24
|
"additionalProperties": false,
|
|
25
25
|
"required": ["name", "version"],
|
|
26
26
|
"properties": {
|
|
27
27
|
"name": { "const": "frontend-project-context" },
|
|
28
|
-
"version": { "const": "1.
|
|
28
|
+
"version": { "const": "1.7.0" }
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
|
-
"exchangeProtocolVersion": { "const":
|
|
31
|
+
"exchangeProtocolVersion": { "const": 7 },
|
|
32
32
|
"schemas": {
|
|
33
33
|
"type": "object",
|
|
34
34
|
"additionalProperties": false,
|
|
35
35
|
"required": [
|
|
36
36
|
"actionPlan",
|
|
37
|
+
"adaptiveContextBundle",
|
|
37
38
|
"assistBundle",
|
|
38
39
|
"capabilities",
|
|
39
40
|
"contract",
|
|
41
|
+
"contextQuery",
|
|
42
|
+
"coverageAudit",
|
|
40
43
|
"dashboardViewModel",
|
|
41
44
|
"evidenceBundle",
|
|
42
45
|
"evidenceInput",
|
|
46
|
+
"hostPromotionEvidence",
|
|
43
47
|
"integrationReviewBundle",
|
|
44
48
|
"projectionLock",
|
|
45
49
|
"projectionLockReadable",
|
|
@@ -51,21 +55,28 @@
|
|
|
51
55
|
"migrationManifest",
|
|
52
56
|
"migrationPlan",
|
|
53
57
|
"reviewBundle",
|
|
58
|
+
"routingIndex",
|
|
54
59
|
"sourceLock",
|
|
55
60
|
"stageContextBundle",
|
|
56
61
|
"stageReceipt",
|
|
57
62
|
"taskContextPlan",
|
|
63
|
+
"truthReconciliationInput",
|
|
64
|
+
"truthReconciliationReviewBundle",
|
|
58
65
|
"upgradeAssessment",
|
|
59
66
|
"upgradeResultBundle"
|
|
60
67
|
],
|
|
61
68
|
"properties": {
|
|
62
69
|
"actionPlan": { "const": 2 },
|
|
70
|
+
"adaptiveContextBundle": { "const": 2 },
|
|
63
71
|
"assistBundle": { "const": 1 },
|
|
64
|
-
"capabilities": { "const":
|
|
72
|
+
"capabilities": { "const": 7 },
|
|
65
73
|
"contract": { "const": 2 },
|
|
74
|
+
"contextQuery": { "const": 2 },
|
|
75
|
+
"coverageAudit": { "const": 1 },
|
|
66
76
|
"dashboardViewModel": { "type": "integer" },
|
|
67
77
|
"evidenceBundle": { "const": 1 },
|
|
68
78
|
"evidenceInput": { "const": 1 },
|
|
79
|
+
"hostPromotionEvidence": { "const": 1 },
|
|
69
80
|
"integrationReviewBundle": { "const": 1 },
|
|
70
81
|
"projectionLock": { "const": 2 },
|
|
71
82
|
"projectionLockReadable": { "const": [1, 2] },
|
|
@@ -73,14 +84,17 @@
|
|
|
73
84
|
"projectionRenderer": { "type": "integer" },
|
|
74
85
|
"proposal": { "const": 1 },
|
|
75
86
|
"projectStatus": { "const": 1 },
|
|
76
|
-
"aiEntryRenderer": { "const":
|
|
87
|
+
"aiEntryRenderer": { "const": 3 },
|
|
77
88
|
"migrationManifest": { "const": 2 },
|
|
78
89
|
"migrationPlan": { "const": 1 },
|
|
79
90
|
"reviewBundle": { "const": 2 },
|
|
91
|
+
"routingIndex": { "const": 2 },
|
|
80
92
|
"sourceLock": { "const": 1 },
|
|
81
93
|
"stageContextBundle": { "const": 1 },
|
|
82
94
|
"stageReceipt": { "const": 1 },
|
|
83
95
|
"taskContextPlan": { "const": 1 },
|
|
96
|
+
"truthReconciliationInput": { "const": 2 },
|
|
97
|
+
"truthReconciliationReviewBundle": { "const": 2 },
|
|
84
98
|
"upgradeAssessment": { "const": 1 },
|
|
85
99
|
"upgradeResultBundle": { "const": 1 }
|
|
86
100
|
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:frontend-project-context:schema:context-query:2",
|
|
4
|
+
"title": "Frontend Project Context Query",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "kind", "projectId", "snapshots", "task", "level", "freshness", "budget", "expansion"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": 2 },
|
|
10
|
+
"kind": { "const": "context-query" },
|
|
11
|
+
"projectId": { "$ref": "#/$defs/id" },
|
|
12
|
+
"snapshots": { "$ref": "#/$defs/snapshots" },
|
|
13
|
+
"task": {
|
|
14
|
+
"type": "object", "additionalProperties": false,
|
|
15
|
+
"required": ["text", "paths", "topics", "itemIds", "changedPaths"],
|
|
16
|
+
"properties": {
|
|
17
|
+
"text": { "type": "string", "minLength": 1 },
|
|
18
|
+
"paths": { "$ref": "#/$defs/nonEmptyPaths" },
|
|
19
|
+
"topics": { "$ref": "#/$defs/texts" },
|
|
20
|
+
"itemIds": { "$ref": "#/$defs/ids" },
|
|
21
|
+
"changedPaths": { "$ref": "#/$defs/paths" }
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"level": { "enum": ["initial", "expanded", "complete"] },
|
|
25
|
+
"freshness": { "enum": ["snapshot-and-signal-bound", "strict-current"] },
|
|
26
|
+
"budget": {
|
|
27
|
+
"type": "object", "additionalProperties": false, "required": ["audit", "delivery", "readTargets"],
|
|
28
|
+
"properties": {
|
|
29
|
+
"audit": { "$ref": "#/$defs/auditBudget" },
|
|
30
|
+
"delivery": { "$ref": "#/$defs/deliveryBudget" },
|
|
31
|
+
"readTargets": { "$ref": "#/$defs/readBudget" }
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"expansion": {
|
|
35
|
+
"oneOf": [
|
|
36
|
+
{ "type": "null" },
|
|
37
|
+
{
|
|
38
|
+
"type": "object", "additionalProperties": false,
|
|
39
|
+
"required": ["previousBundleDigest", "requestedItemIds", "requestedSubjects", "requestedSourceIds"],
|
|
40
|
+
"properties": {
|
|
41
|
+
"previousBundleDigest": { "$ref": "#/$defs/digest" },
|
|
42
|
+
"requestedItemIds": { "$ref": "#/$defs/ids" },
|
|
43
|
+
"requestedSubjects": { "$ref": "#/$defs/ids" },
|
|
44
|
+
"requestedSourceIds": { "$ref": "#/$defs/ids" }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"allOf": [
|
|
51
|
+
{ "if": { "properties": { "level": { "const": "expanded" } } }, "then": { "properties": { "expansion": { "type": "object" } } } },
|
|
52
|
+
{ "if": { "properties": { "level": { "enum": ["initial", "complete"] } } }, "then": { "properties": { "expansion": { "type": "null" } } } }
|
|
53
|
+
],
|
|
54
|
+
"$defs": {
|
|
55
|
+
"id": { "type": "string", "pattern": "^[a-z0-9]+(?:[.-][a-z0-9]+)*$" },
|
|
56
|
+
"digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
57
|
+
"ids": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/id" } },
|
|
58
|
+
"paths": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
59
|
+
"nonEmptyPaths": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
60
|
+
"texts": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
61
|
+
"snapshots": {
|
|
62
|
+
"type": "object", "additionalProperties": false, "required": ["contract", "sourcesLock", "projectionsLock"],
|
|
63
|
+
"properties": { "contract": { "$ref": "#/$defs/digest" }, "sourcesLock": { "$ref": "#/$defs/digest" }, "projectionsLock": { "$ref": "#/$defs/digest" } }
|
|
64
|
+
},
|
|
65
|
+
"auditBudget": { "type": "object", "additionalProperties": false, "required": ["targetUtf8Bytes", "maxUtf8Bytes"], "properties": { "targetUtf8Bytes": { "type": "integer", "minimum": 1 }, "maxUtf8Bytes": { "type": "integer", "minimum": 1 } } },
|
|
66
|
+
"deliveryBudget": { "type": "object", "additionalProperties": false, "required": ["completeBelowUtf8Bytes", "maxUtf8Bytes"], "properties": { "completeBelowUtf8Bytes": { "type": "integer", "minimum": 1 }, "maxUtf8Bytes": { "type": "integer", "minimum": 1 } } },
|
|
67
|
+
"readBudget": { "type": "object", "additionalProperties": false, "required": ["target", "max"], "properties": { "target": { "type": "integer", "minimum": 1 }, "max": { "type": "integer", "minimum": 1 } } }
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:frontend-project-context:schema:coverage-audit:1",
|
|
4
|
+
"title": "Frontend Project Context Coverage Audit",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "kind", "project", "snapshots", "profile", "registrationCoverage", "categories", "guarantee", "auditDigest"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": 1 },
|
|
10
|
+
"kind": { "const": "coverage-audit" },
|
|
11
|
+
"project": { "type": "object", "additionalProperties": false, "required": ["id", "name"], "properties": { "id": { "type": "string" }, "name": { "type": "string" } } },
|
|
12
|
+
"snapshots": { "$ref": "context-query.schema.json#/$defs/snapshots" },
|
|
13
|
+
"profile": { "type": ["object", "null"] },
|
|
14
|
+
"registrationCoverage": { "enum": ["not-declared", "review-required", "closed-for-declared-scope"] },
|
|
15
|
+
"categories": {
|
|
16
|
+
"type": "object",
|
|
17
|
+
"additionalProperties": false,
|
|
18
|
+
"required": ["registered", "excluded-approved", "review-required", "outside-declared-coverage"],
|
|
19
|
+
"properties": {
|
|
20
|
+
"registered": { "$ref": "#/$defs/candidates" },
|
|
21
|
+
"excluded-approved": { "$ref": "#/$defs/candidates" },
|
|
22
|
+
"review-required": { "$ref": "#/$defs/candidates" },
|
|
23
|
+
"outside-declared-coverage": { "$ref": "#/$defs/candidates" }
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"guarantee": { "const": "declared-scope-only-never-all-project-truth" },
|
|
27
|
+
"auditDigest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
|
|
28
|
+
},
|
|
29
|
+
"$defs": {
|
|
30
|
+
"candidates": { "type": "array", "items": { "type": "object", "required": ["path", "origin"], "properties": { "path": { "type": "string" }, "origin": { "type": "string" }, "proposedSourceId": { "type": "string" } } } }
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"required": ["name", "version", "exchangeProtocolVersion"],
|
|
15
15
|
"properties": {
|
|
16
16
|
"name": { "const": "frontend-project-context" },
|
|
17
|
-
"version": { "const": "1.
|
|
18
|
-
"exchangeProtocolVersion": { "const":
|
|
17
|
+
"version": { "const": "1.7.0" },
|
|
18
|
+
"exchangeProtocolVersion": { "const": 6 }
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"capability": { "enum": ["setup", "takeover", "maintenance", "staged-context", "upgrade", "other-protocol"] },
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:frontend-project-context:schema:host-promotion-evidence:1",
|
|
4
|
+
"title": "Frontend Project Context Host Promotion Evidence",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "kind", "taskId", "stage", "baseRevision", "candidateRevision", "codeSnapshotDigest", "sourceSnapshotDigest", "artifactDigest", "changedPaths", "projectSnapshots", "acceptanceSuiteDigest", "verificationResults"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": 1 },
|
|
10
|
+
"kind": { "const": "host-promotion-evidence" },
|
|
11
|
+
"taskId": { "$ref": "#/$defs/id" },
|
|
12
|
+
"stage": { "enum": ["qa", "preproduction", "production", "withdrawn", "rollback"] },
|
|
13
|
+
"baseRevision": { "$ref": "#/$defs/text" },
|
|
14
|
+
"candidateRevision": { "$ref": "#/$defs/text" },
|
|
15
|
+
"codeSnapshotDigest": { "$ref": "#/$defs/digest" },
|
|
16
|
+
"sourceSnapshotDigest": { "$ref": "#/$defs/digest" },
|
|
17
|
+
"artifactDigest": { "$ref": "#/$defs/digest" },
|
|
18
|
+
"changedPaths": { "$ref": "#/$defs/paths" },
|
|
19
|
+
"projectSnapshots": { "$ref": "#/$defs/snapshots" },
|
|
20
|
+
"acceptanceSuiteDigest": { "$ref": "#/$defs/digest" },
|
|
21
|
+
"verificationResults": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/verification" } },
|
|
22
|
+
"integration": { "type": "boolean", "default": false },
|
|
23
|
+
"equivalentToCodeSnapshotDigest": { "$ref": "#/$defs/digest" }
|
|
24
|
+
},
|
|
25
|
+
"$defs": {
|
|
26
|
+
"id": { "type": "string", "pattern": "^[a-z0-9]+(?:[.-][a-z0-9]+)*$" },
|
|
27
|
+
"text": { "type": "string", "minLength": 1 },
|
|
28
|
+
"digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
29
|
+
"paths": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
30
|
+
"snapshots": { "type": "object", "additionalProperties": false, "required": ["contract", "sourcesLock", "projectionsLock"], "properties": { "contract": { "$ref": "#/$defs/digest" }, "sourcesLock": { "$ref": "#/$defs/digest" }, "projectionsLock": { "$ref": "#/$defs/digest" } } },
|
|
31
|
+
"verification": { "type": "object", "additionalProperties": false, "required": ["id", "status"], "properties": { "id": { "$ref": "#/$defs/id" }, "status": { "enum": ["passed", "failed", "skipped", "observed"] } } }
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
"required": ["schemaVersion", "package", "upgradeFrom", "stores", "renderers", "protocols", "paths", "builtInMigrations", "consumerChanges", "acceptanceCommands", "rollback", "externalEffects", "manifestDigest"],
|
|
8
8
|
"properties": {
|
|
9
9
|
"schemaVersion": {"const": 2},
|
|
10
|
-
"package": {"type": "object", "additionalProperties": false, "required": ["name", "version"], "properties": {"name": {"const": "frontend-project-context"}, "version": {"const": "1.
|
|
11
|
-
"upgradeFrom": {"const": ["1.3.1", "1.4.0", "1.5.0"]},
|
|
10
|
+
"package": {"type": "object", "additionalProperties": false, "required": ["name", "version"], "properties": {"name": {"const": "frontend-project-context"}, "version": {"const": "1.7.0"}}},
|
|
11
|
+
"upgradeFrom": {"const": ["1.3.1", "1.4.0", "1.5.0", "1.6.0"]},
|
|
12
12
|
"stores": {"type": "object", "additionalProperties": false, "required": ["contract", "projectionLock", "proposal", "sourceLock"], "properties": {"contract": {"$ref": "#/$defs/versionMatrix"}, "projectionLock": {"$ref": "#/$defs/versionMatrix"}, "proposal": {"$ref": "#/$defs/versionMatrix"}, "sourceLock": {"$ref": "#/$defs/versionMatrix"}}},
|
|
13
13
|
"renderers": {"type": "object", "additionalProperties": false, "required": ["aiEntry", "projection"], "properties": {"aiEntry": {"$ref": "#/$defs/versionTarget"}, "projection": {"$ref": "#/$defs/versionTarget"}}},
|
|
14
14
|
"protocols": {"type": "object", "additionalProperties": {"$ref": "#/$defs/versionTarget"}},
|
|
15
|
-
"paths": {"type": "array", "minItems":
|
|
15
|
+
"paths": {"type": "array", "minItems": 4, "maxItems": 4, "items": {"type": "object", "additionalProperties": false, "required": ["fromVersion", "classification", "migrationIds", "requiresHumanReview", "rollbackClass", "acceptance"], "properties": {"fromVersion": {"enum": ["1.3.1", "1.4.0", "1.5.0", "1.6.0"]}, "classification": {"enum": ["package-only", "republish-ai-entry", "republish-projection", "built-in-store-migration", "invalidate-ephemeral-protocol"]}, "migrationIds": {"$ref": "#/$defs/strings"}, "requiresHumanReview": {"type": "boolean"}, "rollbackClass": {"$ref": "#/$defs/rollbackClass"}, "acceptance": {"$ref": "#/$defs/strings"}}}},
|
|
16
16
|
"builtInMigrations": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["id", "kind", "input", "targetType", "writes", "rollbackClass", "reverseMigrationId"], "properties": {"id": {"type": "string"}, "kind": {"enum": ["package-only", "republish-ai-entry", "republish-projection", "built-in-store-migration", "invalidate-ephemeral-protocol"]}, "input": {"type": "object", "additionalProperties": false, "required": ["schemaVersions", "beforeDigestRequired"], "properties": {"schemaVersions": {"type": "array", "items": {"type": "integer", "minimum": 1}}, "beforeDigestRequired": {"type": "boolean"}}}, "targetType": {"enum": ["none", "ai-entry", "projection", "store", "ephemeral-protocol"]}, "writes": {"type": "boolean"}, "rollbackClass": {"$ref": "#/$defs/rollbackClass"}, "reverseMigrationId": {"type": ["string", "null"]}}}},
|
|
17
17
|
"consumerChanges": {"type": "object", "additionalProperties": {"type": "object", "additionalProperties": false, "required": ["state", "reason"], "properties": {"state": {"enum": ["preserve", "regenerate", "invalidate"]}, "reason": {"type": "string"}}}},
|
|
18
18
|
"acceptanceCommands": {"$ref": "#/$defs/strings"},
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"properties": {
|
|
9
9
|
"schemaVersion": {"const": 1},
|
|
10
10
|
"kind": {"const": "target-upgrade-plan"},
|
|
11
|
-
"fromVersion": {"enum": ["1.3.1", "1.4.0", "1.5.0"]},
|
|
12
|
-
"targetVersion": {"const": "1.
|
|
11
|
+
"fromVersion": {"enum": ["1.3.1", "1.4.0", "1.5.0", "1.6.0"]},
|
|
12
|
+
"targetVersion": {"const": "1.7.0"},
|
|
13
13
|
"manifestDigest": {"$ref": "#/$defs/digest"},
|
|
14
14
|
"assessmentDigest": {"$ref": "#/$defs/digest"},
|
|
15
15
|
"snapshots": {"anyOf": [{"type": "null"}, {"$ref": "#/$defs/snapshots"}]},
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"properties": {
|
|
34
34
|
"path": { "type": "string" }, "target": { "const": "ai-entry" }, "ownership": { "const": "region" },
|
|
35
35
|
"regionId": { "const": "project-context-ai-entry" }, "regionDigest": { "$ref": "#/$defs/digest" },
|
|
36
|
-
"rendererVersion": { "
|
|
36
|
+
"rendererVersion": { "enum": [1, 2, 3] }, "createdFile": { "type": "boolean" }
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
"schema1": {
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:frontend-project-context:schema:routing-index:2",
|
|
4
|
+
"title": "Frontend Project Context Routing Index",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "kind", "projectId", "selectorVersion", "snapshots", "items", "sources", "indexDigest"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": 2 },
|
|
10
|
+
"kind": { "const": "routing-index" },
|
|
11
|
+
"projectId": { "type": "string" },
|
|
12
|
+
"selectorVersion": { "const": 2 },
|
|
13
|
+
"snapshots": { "$ref": "context-query.schema.json#/$defs/snapshots" },
|
|
14
|
+
"items": {
|
|
15
|
+
"type": "array",
|
|
16
|
+
"items": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"additionalProperties": false,
|
|
19
|
+
"required": ["id", "kind", "subject", "scope", "sourceIds", "terms", "itemDigest"],
|
|
20
|
+
"properties": {
|
|
21
|
+
"id": { "type": "string" },
|
|
22
|
+
"kind": { "enum": ["fact", "policy", "reference", "validation-description"] },
|
|
23
|
+
"subject": { "type": "string" },
|
|
24
|
+
"scope": { "$ref": "#/$defs/scope" },
|
|
25
|
+
"sourceIds": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
|
|
26
|
+
"terms": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
|
|
27
|
+
"itemDigest": { "type": "string" }
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"sources": {
|
|
32
|
+
"type": "array",
|
|
33
|
+
"items": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"additionalProperties": false,
|
|
36
|
+
"required": ["id", "kind", "locator", "itemIds", "sourceDigest"],
|
|
37
|
+
"properties": {
|
|
38
|
+
"id": { "type": "string" },
|
|
39
|
+
"kind": { "type": "string" },
|
|
40
|
+
"locator": { "$ref": "#/$defs/locator" },
|
|
41
|
+
"itemIds": { "type": "array", "uniqueItems": true, "items": { "type": "string" } },
|
|
42
|
+
"sourceDigest": { "type": "string" }
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"indexDigest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
|
|
47
|
+
},
|
|
48
|
+
"$defs": {
|
|
49
|
+
"scope": { "oneOf": [
|
|
50
|
+
{ "type": "object", "additionalProperties": false, "required": ["kind"], "properties": { "kind": { "const": "project" } } },
|
|
51
|
+
{ "type": "object", "additionalProperties": false, "required": ["kind", "path"], "properties": { "kind": { "enum": ["path-prefix", "file"] }, "path": { "type": "string", "minLength": 1 } } }
|
|
52
|
+
] },
|
|
53
|
+
"locator": { "oneOf": [
|
|
54
|
+
{ "type": "object", "additionalProperties": false, "required": ["path"], "properties": { "path": { "type": "string", "minLength": 1 }, "pointer": { "type": "string" } } },
|
|
55
|
+
{ "type": "object", "additionalProperties": false, "required": ["reference"], "properties": { "reference": { "type": "string", "minLength": 1 } } }
|
|
56
|
+
] }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:frontend-project-context:schema:truth-reconciliation-input:2",
|
|
4
|
+
"title": "Frontend Project Context Truth Reconciliation Input",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "kind", "projectId", "current", "task", "candidates", "globalFindings", "resolutionAttempt"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": 2 },
|
|
10
|
+
"kind": { "const": "truth-reconciliation-input" },
|
|
11
|
+
"projectId": { "$ref": "#/$defs/id" },
|
|
12
|
+
"current": { "$ref": "#/$defs/current" },
|
|
13
|
+
"task": { "$ref": "#/$defs/task" },
|
|
14
|
+
"candidates": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/candidate" } },
|
|
15
|
+
"globalFindings": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/globalFinding" } },
|
|
16
|
+
"resolutionAttempt": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/resolutionAttempt" }] }
|
|
17
|
+
},
|
|
18
|
+
"$defs": {
|
|
19
|
+
"id": { "type": "string", "pattern": "^[a-z0-9]+(?:[.-][a-z0-9]+)*$" },
|
|
20
|
+
"text": { "type": "string", "minLength": 1 },
|
|
21
|
+
"digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
22
|
+
"ids": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/id" } },
|
|
23
|
+
"paths": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
24
|
+
"snapshots": { "type": "object", "additionalProperties": false, "required": ["contract", "sourcesLock", "projectionsLock"], "properties": { "contract": { "$ref": "#/$defs/digest" }, "sourcesLock": { "$ref": "#/$defs/digest" }, "projectionsLock": { "$ref": "#/$defs/digest" } } },
|
|
25
|
+
"scope": {
|
|
26
|
+
"oneOf": [
|
|
27
|
+
{ "type": "object", "additionalProperties": false, "required": ["kind"], "properties": { "kind": { "const": "project" } } },
|
|
28
|
+
{ "type": "object", "additionalProperties": false, "required": ["kind", "path"], "properties": { "kind": { "enum": ["path-prefix", "file"] }, "path": { "type": "string", "minLength": 1 } } }
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"scopes": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/scope" } },
|
|
32
|
+
"itemKind": { "enum": ["fact", "policy", "reference", "validation-description"] },
|
|
33
|
+
"classification": { "enum": ["duplicate", "compatible-compose", "scope-split", "supersede", "semantic-conflict", "implementation-only"] },
|
|
34
|
+
"current": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"additionalProperties": false,
|
|
37
|
+
"required": ["revision", "projectSnapshots", "sources", "items"],
|
|
38
|
+
"properties": {
|
|
39
|
+
"revision": { "$ref": "#/$defs/text" },
|
|
40
|
+
"projectSnapshots": { "$ref": "#/$defs/snapshots" },
|
|
41
|
+
"sources": {
|
|
42
|
+
"type": "array", "uniqueItems": true,
|
|
43
|
+
"items": { "type": "object", "additionalProperties": false, "required": ["id", "digest"], "properties": { "id": { "$ref": "#/$defs/id" }, "digest": { "$ref": "#/$defs/digest" } } }
|
|
44
|
+
},
|
|
45
|
+
"items": {
|
|
46
|
+
"type": "array", "uniqueItems": true,
|
|
47
|
+
"items": { "type": "object", "additionalProperties": false, "required": ["id", "digest", "subject", "kind", "scope"], "properties": { "id": { "$ref": "#/$defs/id" }, "digest": { "$ref": "#/$defs/digest" }, "subject": { "$ref": "#/$defs/id" }, "kind": { "$ref": "#/$defs/itemKind" }, "scope": { "$ref": "#/$defs/scope" } } }
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"task": { "type": "object", "additionalProperties": false, "required": ["id", "paths"], "properties": { "id": { "$ref": "#/$defs/id" }, "paths": { "$ref": "#/$defs/paths" } } },
|
|
52
|
+
"sourceChange": { "type": "object", "additionalProperties": false, "required": ["sourceId", "expectedDigest", "candidateDigest", "affectedItemIds", "subjects", "scopes", "classification"], "properties": { "sourceId": { "$ref": "#/$defs/id" }, "expectedDigest": { "$ref": "#/$defs/digest" }, "candidateDigest": { "$ref": "#/$defs/digest" }, "affectedItemIds": { "$ref": "#/$defs/ids" }, "subjects": { "$ref": "#/$defs/ids" }, "scopes": { "$ref": "#/$defs/scopes" }, "classification": { "$ref": "#/$defs/classification" } } },
|
|
53
|
+
"itemChange": { "type": "object", "additionalProperties": false, "required": ["itemId", "expectedDigest", "candidateDigest", "sourceIds", "subject", "kind", "scope", "classification"], "properties": { "itemId": { "$ref": "#/$defs/id" }, "expectedDigest": { "$ref": "#/$defs/digest" }, "candidateDigest": { "$ref": "#/$defs/digest" }, "sourceIds": { "$ref": "#/$defs/ids" }, "subject": { "$ref": "#/$defs/id" }, "kind": { "$ref": "#/$defs/itemKind" }, "scope": { "$ref": "#/$defs/scope" }, "classification": { "$ref": "#/$defs/classification" } } },
|
|
54
|
+
"candidate": { "type": "object", "additionalProperties": false, "required": ["id", "taskId", "lifecycle", "targetStage", "baseRevision", "expectedProjectSnapshots", "currentCodeSnapshotDigest", "currentSourceSnapshotDigest", "currentArtifactDigest", "currentAcceptanceSuiteDigest", "changedPaths", "sourceChanges", "itemChanges", "decisionCandidateIds", "promotionEvidence"], "properties": { "id": { "$ref": "#/$defs/id" }, "taskId": { "$ref": "#/$defs/id" }, "lifecycle": { "enum": ["active", "released", "withdrawn", "rolled-back"] }, "targetStage": { "enum": ["development", "qa", "preproduction", "production"] }, "baseRevision": { "$ref": "#/$defs/text" }, "expectedProjectSnapshots": { "$ref": "#/$defs/snapshots" }, "currentCodeSnapshotDigest": { "$ref": "#/$defs/digest" }, "currentSourceSnapshotDigest": { "$ref": "#/$defs/digest" }, "currentArtifactDigest": { "$ref": "#/$defs/digest" }, "currentAcceptanceSuiteDigest": { "$ref": "#/$defs/digest" }, "changedPaths": { "$ref": "#/$defs/paths" }, "sourceChanges": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/sourceChange" } }, "itemChanges": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/itemChange" } }, "decisionCandidateIds": { "$ref": "#/$defs/ids" }, "promotionEvidence": { "type": "array", "uniqueItems": true, "items": { "$ref": "host-promotion-evidence.schema.json" } } } },
|
|
55
|
+
"globalFinding": { "type": "object", "additionalProperties": false, "required": ["code", "severity", "sourceIds", "itemIds", "subjects", "scopes", "itemKinds"], "properties": { "code": { "$ref": "#/$defs/id" }, "severity": { "enum": ["attention", "conflict", "blocked"] }, "sourceIds": { "$ref": "#/$defs/ids" }, "itemIds": { "$ref": "#/$defs/ids" }, "subjects": { "$ref": "#/$defs/ids" }, "scopes": { "$ref": "#/$defs/scopes" }, "itemKinds": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/itemKind" } } } },
|
|
56
|
+
"resolutionKind": { "enum": ["keep-current-baseline", "accept-branch-change", "compose-compatible-changes", "split-scope-or-override", "replace-or-deprecate-source", "fix-source-and-rerun", "refresh-promotion-evidence", "defer-scoped-conflict", "external-implementation-fix-required"] },
|
|
57
|
+
"resolutionDecision": { "type": "object", "additionalProperties": false, "required": ["findingDigest", "resolutionKind", "humanInputs"], "properties": { "findingDigest": { "$ref": "#/$defs/digest" }, "resolutionKind": { "$ref": "#/$defs/resolutionKind" }, "humanInputs": { "type": "object" }, "externalAction": { "type": "object", "additionalProperties": false, "required": ["kind", "completed", "evidenceDigests"], "properties": { "kind": { "$ref": "#/$defs/text" }, "completed": { "type": "boolean" }, "evidenceDigests": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/digest" } } } } } },
|
|
58
|
+
"resolutionAttempt": { "type": "object", "additionalProperties": false, "required": ["previousReviewDigest", "decisions", "projectContextStatus"], "properties": { "previousReviewDigest": { "$ref": "#/$defs/digest" }, "decisions": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/resolutionDecision" } }, "projectContextStatus": { "enum": ["clean", "attention", "conflict", "invalid", "partial"] } } }
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "urn:frontend-project-context:schema:truth-reconciliation-review-bundle:2",
|
|
4
|
+
"title": "Frontend Project Context Truth Reconciliation Review Bundle",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "kind", "project", "current", "task", "inputDigest", "summary", "candidateOutcomes", "collisionGroups", "findings", "resolutionOutcomes", "guarantees", "boundaries", "bundleDigest"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": 2 },
|
|
10
|
+
"kind": { "const": "truth-reconciliation-review-bundle" },
|
|
11
|
+
"project": { "$ref": "#/$defs/project" },
|
|
12
|
+
"current": { "$ref": "#/$defs/current" },
|
|
13
|
+
"task": { "$ref": "#/$defs/task" },
|
|
14
|
+
"inputDigest": { "$ref": "#/$defs/digest" },
|
|
15
|
+
"summary": { "$ref": "#/$defs/summary" },
|
|
16
|
+
"candidateOutcomes": { "type": "array", "items": { "$ref": "#/$defs/candidateOutcome" } },
|
|
17
|
+
"collisionGroups": { "type": "array", "items": { "$ref": "#/$defs/collisionGroup" } },
|
|
18
|
+
"findings": { "type": "array", "items": { "$ref": "#/$defs/finding" } },
|
|
19
|
+
"resolutionOutcomes": { "type": "array", "items": { "$ref": "#/$defs/resolutionOutcome" } },
|
|
20
|
+
"guarantees": { "$ref": "#/$defs/guarantees" },
|
|
21
|
+
"boundaries": { "$ref": "#/$defs/boundaries" },
|
|
22
|
+
"bundleDigest": { "$ref": "#/$defs/digest" }
|
|
23
|
+
},
|
|
24
|
+
"$defs": {
|
|
25
|
+
"id": { "type": "string", "pattern": "^[a-z0-9]+(?:[.-][a-z0-9]+)*$" },
|
|
26
|
+
"text": { "type": "string", "minLength": 1 },
|
|
27
|
+
"digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
28
|
+
"nullableDigest": { "oneOf": [{ "$ref": "#/$defs/digest" }, { "type": "null" }] },
|
|
29
|
+
"nullableText": { "oneOf": [{ "$ref": "#/$defs/text" }, { "type": "null" }] },
|
|
30
|
+
"ids": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/id" } },
|
|
31
|
+
"paths": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
32
|
+
"scope": {
|
|
33
|
+
"oneOf": [
|
|
34
|
+
{ "type": "object", "additionalProperties": false, "required": ["kind"], "properties": { "kind": { "const": "project" } } },
|
|
35
|
+
{ "type": "object", "additionalProperties": false, "required": ["kind", "path"], "properties": { "kind": { "enum": ["path-prefix", "file"] }, "path": { "type": "string", "minLength": 1 } } }
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"scopes": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/scope" } },
|
|
39
|
+
"snapshots": {
|
|
40
|
+
"type": "object", "additionalProperties": false,
|
|
41
|
+
"required": ["contract", "sourcesLock", "projectionsLock"],
|
|
42
|
+
"properties": { "contract": { "$ref": "#/$defs/digest" }, "sourcesLock": { "$ref": "#/$defs/digest" }, "projectionsLock": { "$ref": "#/$defs/digest" } }
|
|
43
|
+
},
|
|
44
|
+
"project": {
|
|
45
|
+
"type": "object", "additionalProperties": false, "required": ["id", "name"],
|
|
46
|
+
"properties": { "id": { "$ref": "#/$defs/id" }, "name": { "$ref": "#/$defs/text" } }
|
|
47
|
+
},
|
|
48
|
+
"current": {
|
|
49
|
+
"type": "object", "additionalProperties": false, "required": ["revision", "projectSnapshots"],
|
|
50
|
+
"properties": { "revision": { "$ref": "#/$defs/text" }, "projectSnapshots": { "$ref": "#/$defs/snapshots" } }
|
|
51
|
+
},
|
|
52
|
+
"task": {
|
|
53
|
+
"type": "object", "additionalProperties": false, "required": ["id", "paths"],
|
|
54
|
+
"properties": { "id": { "$ref": "#/$defs/id" }, "paths": { "$ref": "#/$defs/paths" } }
|
|
55
|
+
},
|
|
56
|
+
"summary": {
|
|
57
|
+
"type": "object", "additionalProperties": false,
|
|
58
|
+
"required": ["candidates", "eligibleCandidates", "collisionGroups", "findings", "taskHealth", "globalHealth", "existingDelivery"],
|
|
59
|
+
"properties": {
|
|
60
|
+
"candidates": { "type": "integer", "minimum": 0 },
|
|
61
|
+
"eligibleCandidates": { "type": "integer", "minimum": 0 },
|
|
62
|
+
"collisionGroups": { "type": "integer", "minimum": 0 },
|
|
63
|
+
"findings": { "type": "integer", "minimum": 0 },
|
|
64
|
+
"taskHealth": { "enum": ["ready", "blocked"] },
|
|
65
|
+
"globalHealth": { "enum": ["clean", "attention"] },
|
|
66
|
+
"existingDelivery": { "const": "not-blocked" }
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"promotionEvidence": {
|
|
70
|
+
"type": "object", "additionalProperties": false,
|
|
71
|
+
"required": ["assurance", "currentEvidenceCount", "staleEvidenceCount", "localQaReusable", "integrationVerified"],
|
|
72
|
+
"properties": {
|
|
73
|
+
"assurance": { "const": "host-asserted" },
|
|
74
|
+
"currentEvidenceCount": { "type": "integer", "minimum": 0 },
|
|
75
|
+
"staleEvidenceCount": { "type": "integer", "minimum": 0 },
|
|
76
|
+
"localQaReusable": { "type": "boolean" },
|
|
77
|
+
"integrationVerified": { "type": "boolean" }
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"candidateOutcome": {
|
|
81
|
+
"type": "object", "additionalProperties": false,
|
|
82
|
+
"required": ["candidateId", "lifecycle", "baseline", "promotionEvidence", "decisionCandidates", "eligibleForReconciliation"],
|
|
83
|
+
"properties": {
|
|
84
|
+
"candidateId": { "$ref": "#/$defs/id" },
|
|
85
|
+
"lifecycle": { "enum": ["active", "released", "withdrawn", "rolled-back"] },
|
|
86
|
+
"baseline": { "enum": ["current", "stale"] },
|
|
87
|
+
"promotionEvidence": { "$ref": "#/$defs/promotionEvidence" },
|
|
88
|
+
"decisionCandidates": { "enum": ["authority-free-candidates", "discarded-not-promoted"] },
|
|
89
|
+
"eligibleForReconciliation": { "type": "boolean" }
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"resolutionKind": { "enum": ["keep-current-baseline", "accept-branch-change", "compose-compatible-changes", "split-scope-or-override", "replace-or-deprecate-source", "fix-source-and-rerun", "refresh-promotion-evidence", "defer-scoped-conflict", "external-implementation-fix-required"] },
|
|
93
|
+
"collisionGroup": {
|
|
94
|
+
"type": "object", "additionalProperties": false,
|
|
95
|
+
"required": ["kind", "key", "classification", "candidateIds", "candidateDigests", "affectedSourceIds", "affectedItemIds", "affectedSubjects", "affectedScopes", "resolutionKinds", "promoted"],
|
|
96
|
+
"properties": {
|
|
97
|
+
"kind": { "enum": ["source", "item", "subject"] },
|
|
98
|
+
"key": { "$ref": "#/$defs/id" },
|
|
99
|
+
"classification": { "enum": ["duplicate", "compatible-compose", "scope-split", "supersede", "semantic-conflict", "implementation-only"] },
|
|
100
|
+
"candidateIds": { "$ref": "#/$defs/ids" },
|
|
101
|
+
"candidateDigests": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/digest" } },
|
|
102
|
+
"affectedSourceIds": { "$ref": "#/$defs/ids" },
|
|
103
|
+
"affectedItemIds": { "$ref": "#/$defs/ids" },
|
|
104
|
+
"affectedSubjects": { "$ref": "#/$defs/ids" },
|
|
105
|
+
"affectedScopes": { "$ref": "#/$defs/scopes" },
|
|
106
|
+
"resolutionKinds": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/resolutionKind" } },
|
|
107
|
+
"promoted": { "const": false }
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"baseline": {
|
|
111
|
+
"type": "object", "additionalProperties": false,
|
|
112
|
+
"required": ["expectedDigest", "actualDigest", "expectedLabel", "actualLabel"],
|
|
113
|
+
"properties": { "expectedDigest": { "$ref": "#/$defs/nullableDigest" }, "actualDigest": { "$ref": "#/$defs/nullableDigest" }, "expectedLabel": { "$ref": "#/$defs/nullableText" }, "actualLabel": { "$ref": "#/$defs/nullableText" } }
|
|
114
|
+
},
|
|
115
|
+
"invocation": {
|
|
116
|
+
"type": "object", "additionalProperties": false, "required": ["command", "args"],
|
|
117
|
+
"properties": { "command": { "$ref": "#/$defs/id" }, "args": { "type": "array", "items": { "type": "string" } } }
|
|
118
|
+
},
|
|
119
|
+
"externalAction": { "type": "object", "additionalProperties": false, "required": ["kind"], "properties": { "kind": { "type": "string" }, "affectedSourceIds": { "$ref": "#/$defs/ids" }, "affectedItemIds": { "$ref": "#/$defs/ids" }, "affectedPaths": { "$ref": "#/$defs/paths" } } },
|
|
120
|
+
"recoveryPreview": { "type": "object", "additionalProperties": false, "required": ["resolutionKind"], "properties": { "resolutionKind": { "$ref": "#/$defs/resolutionKind" }, "invocation": { "$ref": "#/$defs/invocation" }, "externalAction": { "$ref": "#/$defs/externalAction" }, "requiredHumanInputs": { "type": "array", "items": { "type": "string" } } } },
|
|
121
|
+
"resolutionContract": { "type": "object", "additionalProperties": false, "required": ["resolutionState", "resolutionKinds", "requiredHumanInputs", "nextActions", "requiredPostResolutionEvidence", "completionCriteria", "recomputeFromCurrentBaseline"], "properties": { "resolutionState": { "enum": ["needs-human-decision", "contract-action-required", "external-fix-required", "revalidation-required", "resolved", "deferred-open"] }, "resolutionKinds": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/resolutionKind" } }, "requiredHumanInputs": { "type": "array", "uniqueItems": true, "items": { "type": "string" } }, "nextActions": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/recoveryPreview" } }, "requiredPostResolutionEvidence": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string" } }, "completionCriteria": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string" } }, "recomputeFromCurrentBaseline": { "const": true } } },
|
|
122
|
+
"finding": {
|
|
123
|
+
"type": "object", "additionalProperties": false,
|
|
124
|
+
"required": ["code", "severity", "affectedSourceIds", "affectedItemIds", "affectedSubjects", "affectedScopes", "baseline", "blocksTask", "blocksExistingDelivery", "resolutionKinds", "recoveryPreviews", "humanRoles", "validateAfterResolution", "recomputeFromCurrentBaseline", "findingDigest", "resolutionContract"],
|
|
125
|
+
"properties": {
|
|
126
|
+
"code": { "$ref": "#/$defs/id" },
|
|
127
|
+
"severity": { "enum": ["attention", "conflict", "blocked"] },
|
|
128
|
+
"affectedSourceIds": { "$ref": "#/$defs/ids" },
|
|
129
|
+
"affectedItemIds": { "$ref": "#/$defs/ids" },
|
|
130
|
+
"affectedSubjects": { "$ref": "#/$defs/ids" },
|
|
131
|
+
"affectedScopes": { "$ref": "#/$defs/scopes" },
|
|
132
|
+
"baseline": { "$ref": "#/$defs/baseline" },
|
|
133
|
+
"blocksTask": { "type": "boolean" },
|
|
134
|
+
"blocksExistingDelivery": { "const": false },
|
|
135
|
+
"resolutionKinds": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/resolutionKind" } },
|
|
136
|
+
"recoveryPreviews": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/recoveryPreview" } },
|
|
137
|
+
"humanRoles": { "$ref": "#/$defs/ids" },
|
|
138
|
+
"validateAfterResolution": { "$ref": "#/$defs/ids" },
|
|
139
|
+
"recomputeFromCurrentBaseline": { "const": true },
|
|
140
|
+
"findingDigest": { "$ref": "#/$defs/digest" },
|
|
141
|
+
"resolutionContract": { "$ref": "#/$defs/resolutionContract" }
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"resolutionOutcome": { "type": "object", "additionalProperties": false, "required": ["findingDigest", "resolutionKind", "resolutionState", "outcome", "completionCriteriaMet", "recomputedFromCurrentBaseline"], "properties": { "findingDigest": { "$ref": "#/$defs/digest" }, "resolutionKind": { "$ref": "#/$defs/resolutionKind" }, "resolutionState": { "enum": ["revalidation-required", "external-fix-required", "resolved", "deferred-open"] }, "outcome": { "enum": ["open", "deferred", "resolved", "rejected"] }, "completionCriteriaMet": { "type": "array", "uniqueItems": true, "items": { "type": "string" } }, "recomputedFromCurrentBaseline": { "const": true } } },
|
|
145
|
+
"guarantees": {
|
|
146
|
+
"type": "object", "additionalProperties": false, "required": ["projectContextVerified", "hostAsserted", "humanDecided"],
|
|
147
|
+
"properties": { "projectContextVerified": { "$ref": "#/$defs/ids" }, "hostAsserted": { "$ref": "#/$defs/ids" }, "humanDecided": { "$ref": "#/$defs/ids" } }
|
|
148
|
+
},
|
|
149
|
+
"boundaries": {
|
|
150
|
+
"type": "object", "additionalProperties": false,
|
|
151
|
+
"required": ["readOnly", "git", "ciClient", "network", "provider", "taskExecution", "automaticApproval", "automaticPromotion", "persistentQueue", "blocksExistingDelivery"],
|
|
152
|
+
"properties": { "readOnly": { "const": true }, "git": { "const": false }, "ciClient": { "const": false }, "network": { "const": false }, "provider": { "const": false }, "taskExecution": { "const": false }, "automaticApproval": { "const": false }, "automaticPromotion": { "const": false }, "persistentQueue": { "const": false }, "blocksExistingDelivery": { "const": false } }
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"schemaVersion": {"const": 1},
|
|
10
10
|
"kind": {"const": "upgrade-assessment"},
|
|
11
11
|
"product": {"type": "object", "additionalProperties": false, "required": ["name"], "properties": {"name": {"const": "frontend-project-context"}}},
|
|
12
|
-
"fromVersion": {"enum": ["1.3.1", "1.4.0", "1.5.0"]},
|
|
13
|
-
"targetVersion": {"const": "1.
|
|
12
|
+
"fromVersion": {"enum": ["1.3.1", "1.4.0", "1.5.0", "1.6.0"]},
|
|
13
|
+
"targetVersion": {"const": "1.7.0"},
|
|
14
14
|
"fromVersionEvidence": {"const": "host-asserted"},
|
|
15
15
|
"manifestSchemaVersion": {"const": 2},
|
|
16
16
|
"manifestDigest": {"$ref": "#/$defs/digest"},
|