Files
Jyotisha/references/cross_project_contract/import_manifest.schema.json
T

67 lines
3.0 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://jyotisha.chat/contracts/yinduzhanxing-import-manifest.v1.schema.json",
"title": "Yinduzhanxing one-way import manifest",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version", "source_repository", "source_commit", "source_tree_hash",
"source_mode", "target_repository", "target_base_commit", "policy_version",
"generated_at", "mirror_files", "semantic_merge_files", "protected_rejections",
"tests_run", "privacy_scan", "operator_review_required"
],
"properties": {
"schema_version": {"const": 1},
"source_repository": {"type": "string", "minLength": 1},
"source_commit": {"type": "string", "pattern": "^(unknown|[0-9a-f]{40})$"},
"source_tree_hash": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
"source_mode": {"enum": ["git", "snapshot"]},
"target_repository": {"type": "string", "minLength": 1},
"target_base_commit": {"type": "string", "pattern": "^[0-9a-f]{40}$"},
"policy_version": {"const": 2},
"generated_at": {"type": "string", "format": "date-time"},
"mirror_files": {"type": "array", "items": {"$ref": "#/$defs/file"}},
"semantic_merge_files": {"type": "array", "items": {"$ref": "#/$defs/semantic"}},
"protected_rejections": {"type": "array", "items": {"type": "string"}},
"tests_run": {"type": "array", "items": {"type": "string"}},
"privacy_scan": {
"type": "object",
"additionalProperties": false,
"required": ["status", "scanned_files", "rejections"],
"properties": {
"status": {"enum": ["pass", "rejected"]},
"scanned_files": {"type": "integer", "minimum": 0},
"rejections": {"type": "array", "items": {"type": "string"}}
}
},
"operator_review_required": {"type": "boolean"}
},
"$defs": {
"file": {
"type": "object",
"additionalProperties": false,
"required": ["source", "target", "status", "source_sha256", "target_sha256_before", "target_sha256_after", "license"],
"properties": {
"source": {"type": "string"}, "target": {"type": "string"},
"status": {"enum": ["new", "update", "unchanged", "applied"]},
"source_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
"target_sha256_before": {"type": ["string", "null"], "pattern": "^[0-9a-f]{64}$"},
"target_sha256_after": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
"license": {"type": "string"}
}
},
"semantic": {
"type": "object",
"additionalProperties": false,
"required": ["path", "status", "source_sha256", "target_sha256", "diff_summary"],
"properties": {
"path": {"type": "string"},
"status": {"enum": ["unchanged", "source_missing", "target_missing", "review_required"]},
"source_sha256": {"type": ["string", "null"], "pattern": "^[0-9a-f]{64}$"},
"target_sha256": {"type": ["string", "null"], "pattern": "^[0-9a-f]{64}$"},
"diff_summary": {"type": "string"}
}
}
}
}