kg-ssot 4.16.0 → 4.16.1
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/kg.mjs +25 -3
- package/must.mjs +1 -1
- package/package.json +1 -1
- package/spec/kg-contract-v4.schema.json +1 -1
- package/spec/release.json +2 -2
package/kg.mjs
CHANGED
|
@@ -154,7 +154,24 @@ function tooDeep(root) {
|
|
|
154
154
|
// Converte a árvore de um documento no valor que a referência constrói. Alias compartilha o valor (como o
|
|
155
155
|
// PyYAML), âncora repetida e alias sem âncora são erro de composição, chave composta é erro, e chave repetida
|
|
156
156
|
// é comparada na forma JSON (1 e "1" colidem; 1 e 1.0, não).
|
|
157
|
-
|
|
157
|
+
// A quebra escapada seguida de linha vazia num texto entre aspas duplas (v4.10): pela especificação do YAML, cada linha
|
|
158
|
+
// vazia depois da quebra escapada vira um \n, e a referência dá "x\ny"; o yaml 2.x dobra como espaço. O valor é relido
|
|
159
|
+
// de um texto equivalente, com as linhas vazias trocadas pelo escape \n antes da quebra escapada, que o yaml lê certo.
|
|
160
|
+
const ESCAPED_BREAK_THEN_EMPTY = /(?<!\\)((?:\\\\)*)\\\n((?:[ \t]*\n)+)/g;
|
|
161
|
+
|
|
162
|
+
function fixEscapedBreak(node, src) {
|
|
163
|
+
if (src === null || node.type !== 'QUOTE_DOUBLE' || !Array.isArray(node.range)) return;
|
|
164
|
+
const raw = src.slice(node.range[0], node.range[1]);
|
|
165
|
+
if (!raw.includes('\\\n')) return;
|
|
166
|
+
const fixed = raw.replace(ESCAPED_BREAK_THEN_EMPTY, (_, bs, empty) => `${bs}${'\\n'.repeat(empty.split('\n').length - 1)}\\\n`);
|
|
167
|
+
if (fixed === raw) return;
|
|
168
|
+
const [d] = Array.from(new Composer({ version: '1.2', schema: 'core' }).compose(new Parser().parse(`k: ${fixed.replace(/\n/g, '\n ')}\n`)));
|
|
169
|
+
const v = d && !d.errors.length && isMap(d.contents) ? d.contents.items[0].value : null;
|
|
170
|
+
if (!isScalar(v) || typeof v.value !== 'string') throw new ParseError('parse.yaml-error'); // nunca o valor velho em silêncio
|
|
171
|
+
node.value = v.value;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function convertDocument(doc, marks = {}, src = null) {
|
|
158
175
|
const anchors = new Map();
|
|
159
176
|
const built = new Map();
|
|
160
177
|
// a data sem aspas, em chave ou valor: escalar plain na forma do timestamp 1.1, ou com a tag !!timestamp
|
|
@@ -176,6 +193,7 @@ function convertDocument(doc, marks = {}) {
|
|
|
176
193
|
anchors.set(node.anchor, node);
|
|
177
194
|
}
|
|
178
195
|
if (isScalar(node)) {
|
|
196
|
+
fixEscapedBreak(node, src);
|
|
179
197
|
noteDate(node);
|
|
180
198
|
const v = scalarOf(node).value;
|
|
181
199
|
built.set(node, v);
|
|
@@ -204,6 +222,7 @@ function convertDocument(doc, marks = {}) {
|
|
|
204
222
|
let key = 'null';
|
|
205
223
|
if (keyNode !== null && keyNode !== undefined) {
|
|
206
224
|
if (!isScalar(keyNode)) throw new ParseError('parse.yaml-error'); // chave composta (mapa ou lista)
|
|
225
|
+
fixEscapedBreak(keyNode, src);
|
|
207
226
|
noteDate(keyNode);
|
|
208
227
|
key = scalarOf(keyNode).key;
|
|
209
228
|
}
|
|
@@ -271,7 +290,10 @@ export function parseYaml(text) {
|
|
|
271
290
|
let docs;
|
|
272
291
|
// O \r\n e o \r sozinho viram \n antes do parse, como na especificação do YAML e no leitor de referência (decisão
|
|
273
292
|
// de contrato de 2026-10-20): sem isso, o \r ficava como caractere dentro das aspas, e o CRLF entre aspas reprovava.
|
|
274
|
-
|
|
293
|
+
let src = text.includes('\r') ? text.replace(/\r\n?/g, '\n') : text;
|
|
294
|
+
// O BOM no começo do stream é permitido pelo YAML e não conta como coluna (v4.10): o yaml 2.x o contava, e o documento
|
|
295
|
+
// indentado depois dele reprovava com BAD_INDENT; a referência aceita.
|
|
296
|
+
if (src.charCodeAt(0) === 0xfeff && src.charCodeAt(1) !== 0xfeff) src = src.slice(1);
|
|
275
297
|
try {
|
|
276
298
|
const tokens = Array.from(new Parser().parse(src));
|
|
277
299
|
if (strictTokenError(tokens)) return { code: 'parse.yaml-error' };
|
|
@@ -287,7 +309,7 @@ export function parseYaml(text) {
|
|
|
287
309
|
for (const d of docs) {
|
|
288
310
|
if (d.errors.length) return { code: 'parse.yaml-error' };
|
|
289
311
|
if (d.contents && tooDeep(d.contents)) return { code: 'parse.yaml-error' };
|
|
290
|
-
raw.push(convertDocument(d, marks));
|
|
312
|
+
raw.push(convertDocument(d, marks, src));
|
|
291
313
|
}
|
|
292
314
|
} catch (exc) {
|
|
293
315
|
if (exc instanceof ParseError) return { code: exc.code };
|
package/must.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";export const validate = validate20;export default validate20;const schema31 = {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"urn:kg-ssot:spec:kg-contract-v4.schema.json","title":"kg.yaml — contrato v4, nível MUST","description":"O contrato v4 do .kg.yaml, nível MUST (reprova), o vigente (substitui o v3). É o v3 com três promoções a MUST. (1) Proveniência estruturada: nó confirmed ou PROD exige provenance com source, locator e method (form.required.node.provenance), que no v3 só alertava; status unverifiable não exige, mesmo em PROD, porque é o destino do nó sem fonte recuperável. (2) Fonte que não é placeholder: provenance.source não pode ser placeholder: só espaço, ou um destes sozinho, sem distinguir maiúscula e com pontuação final (. ou :) e espaço em volta (inclusive NBSP, espaço ideográfico, BOM e espaço de largura zero) ignorados: desconhecida, desconhecido, unknown, n/a, n / a, na, n.a., none, null, sem fonte, tbd, um ou mais hífens, travessão, meia-risca, ?. A regra é um not+pattern sem lookahead, portável a leitores RE2: form.pattern.node.provenance.source. O vazio segue form.range.node.provenance.source, como no v3. Origem que é uma pessoa ou sessão recuperável é fonte válida, com method de testemunho. (3) Política de extensão: chave desconhecida sem o prefixo x_ no topo, no meta, no nó e na aresta reprova (form.unknown-key.<escopo>.<chave>), com a mesma lista de chaves conhecidas que o SHOULD v3 usava; nome sem x_ que nem é slug reprova como form.pattern.<escopo>.key. Chave x_ segue livre, e x_ com nome que não é slug só alerta. A chave on da aresta segue na lista porque já reprova como yaml.forbidden-key-on. Dentro de provenance, a chave desconhecida segue SHOULD. O resto é o v3: escrito à mão em JSON Schema 2020-12; PROD sem verified_at é SHOULD e o gatilho de TRANSITIONS é trigger; narrative no nó, note e purpose no meta, data no calendário (format: date é ASSERÇÃO) e .nan ou .inf reprovando como tipo; provenance, quando presente, com os três campos não vazios, e provenance: null reprova. O par SHOULD é kg-contract-v4.should.schema.json; as regras de perfil YAML (chave on proibida, chave duplicada, documento único) são do leitor, porque o JSON não as vê. No v4.3 entra external_edges, opcional, no topo: arestas entre grafos com uma ponta externa <caminho>#<id> e a outra local (ou o grafo inteiro, com from ausente), nos tipos SUPERSEDES, CONSTRAINS, SUPPORTS, REFUTES, TRACES_TO e DEPENDS_ON. A ponta local tem de existir (integrity.dangling-external-local); com o corpus, o arquivo e o id da ponta externa também (integrity.dangling-external). A chave é opcional: um grafo que não a usa tem o mesmo veredito do v4.2. No v4.5 entra a chave verified_scope, opcional: o alcance do que o verified_at conferiu. O valor é julgado pelo SHOULD (o enum fato, mecanismo, nenhum), como a provenance.locality. No v4.6 entram duas regras do leitor, que o JSON não vê: a linha de continuação de um texto entre aspas tem de ser mais indentada que o mapa ou a lista que o contém (menos que isso é parse.yaml-error), e o \\r\\n e o \\r sozinho são quebra de linha. Elas entram aqui para mover a identidade do contrato que o gate guarda. No v4.7, a ponta externa das external_edges pode ser também um .kg.json (<caminho>.kg.json#<id>), o formato JSON do mesmo modelo, e o corpus que confere a ponta lê os dois formatos. É ampliação: nada que passava reprova. No v4.8 entram três chaves opcionais do nó, no eixo da verificação: reverify_every (a cadência, em duração ISO 8601 só com data, como P3M ou P1Y), reverify_on (o gatilho por evento, em texto) e retain_for (por quanto tempo a evidência tem de ser guardada, na mesma duração). O valor é julgado pelo SHOULD, e o vencimento (verified_at somado ao reverify_every) nunca entra no veredito: sai num relatório com data explícita. O owner, que já existia, é um papel (quem responde pelo nó), não uma pessoa.","type":"object","required":["meta","nodes","edges"],"properties":{"meta":{"$ref":"#/$defs/meta"},"nodes":{"type":"array","items":{"$ref":"#/$defs/node"}},"edges":{"type":"array","items":{"$ref":"#/$defs/edge"}},"external_edges":{"type":"array","items":{"$ref":"#/$defs/externalEdge"}}},"$defs":{"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$","format":"date"},"partialDate":{"type":"string","pattern":"^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})(-(0[1-9]|1[0-2])(-[0-9]{2})?)?$","if":{"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"then":{"format":"date"}},"nodeId":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]*$"},"layer":{"enum":["audit","domain"]},"meta":{"type":"object","required":["schema_version","id"],"properties":{"schema_version":{"const":"1"},"id":{"type":"string","minLength":1},"baseline":{"$ref":"#/$defs/date"},"date":{"$ref":"#/$defs/date"},"review_after":{"$ref":"#/$defs/date"},"layer":{"$ref":"#/$defs/layer"},"note":{"type":"string"},"purpose":{"type":"string"}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["baseline","date","id","layer","note","purpose","review_after","schema_version"]}]}}},"node":{"type":"object","required":["id","node_type","plane","status","impact","confidence","label"],"properties":{"id":{"$ref":"#/$defs/nodeId"},"node_type":{"enum":["entity","claim","decision","question","evidence","artifact","state","event","rule","invariant","policy"]},"layer":{"$ref":"#/$defs/layer"},"plane":{"enum":["DEV","PROD"]},"status":{"enum":["open","confirmed","drifted","unverifiable","refuted","superseded","done"]},"impact":{"type":"integer","minimum":1,"maximum":5},"confidence":{"type":"number","minimum":0,"maximum":1},"label":{"type":"string","minLength":1},"trace":{"type":"string"},"verified_at":{"$ref":"#/$defs/date"},"verified_against":{"type":"string"},"verified_scope":{},"reverify_every":{},"reverify_on":{},"retain_for":{},"valid_from":{"$ref":"#/$defs/partialDate"},"source_tier":{"type":"integer","minimum":1,"maximum":10},"source_kind":{"type":"string"},"owner":{"type":"string"},"drive_kind":{"type":"string"},"evidence_class":{"type":"string"},"sealed_by":{"type":"string"},"sealed_at":{"type":"string"},"narrative":{"type":"string"},"provenance":{"$ref":"#/$defs/provenance"}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["confidence","drive_kind","evidence_class","id","impact","label","layer","narrative","node_type","owner","plane","provenance","retain_for","reverify_every","reverify_on","sealed_at","sealed_by","source_kind","source_tier","status","trace","valid_from","verified_against","verified_at","verified_scope"]}]}},"if":{"anyOf":[{"properties":{"status":{"const":"confirmed"}},"required":["status"]},{"properties":{"plane":{"const":"PROD"}},"required":["plane"]}],"not":{"properties":{"status":{"const":"unverifiable"}},"required":["status"]}},"then":{"required":["provenance"]}},"edge":{"type":"object","required":["from","to","edge_type"],"properties":{"from":{"$ref":"#/$defs/nodeId"},"to":{"$ref":"#/$defs/nodeId"},"edge_type":{"enum":["SUPPORTS","REFUTES","SUPERSEDES","CAUSES","DEPENDS_ON","TRACES_TO","CONSTRAINS","HAS_STATE","TRANSITIONS","EMITS","READS","WRITES"]},"label":{"type":"string"},"trigger":{"$ref":"#/$defs/nodeId"}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["edge_type","from","label","on","to","trigger"]}]}}},"provenance":{"type":"object","required":["source","locator","method"],"properties":{"source":{"type":"string","minLength":1,"not":{"type":"string","pattern":"^(?:[ \t\n\r ]+|[ \t\n\r ]*(?:[Dd][Ee][Ss][Cc][Oo][Nn][Hh][Ee][Cc][Ii][Dd][AaOo]|[Uu][Nn][Kk][Nn][Oo][Ww][Nn]|[Nn] ?/? ?[Aa]|[Nn]\\.[Aa]\\.?|[Nn][Oo][Nn][Ee]|[Nn][Uu][Ll][Ll]|[Ss][Ee][Mm] [Ff][Oo][Nn][Tt][Ee]|[Tt][Bb][Dd]|-+|—|–|\\?)[.:]?[ \t\n\r ]*)$"}},"locator":{"type":"string","minLength":1},"method":{"type":"string","minLength":1}}},"externalRef":{"type":"string","pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$","description":"Referência a um nó de outro grafo do mesmo repo: <caminho relativo à raiz do repo>#<id>. Os segmentos do caminho começam por letra, dígito ou _ e só levam [A-Za-z0-9_.-]: sem / inicial, sem . ou .., sem \\, sem :."},"externalEdge":{"description":"Aresta entre grafos (v4.3): exatamente uma ponta externa (<caminho>#<id>), a outra um id deste arquivo; from ausente vale o grafo inteiro. Só os tipos da camada audit.","type":"object","required":["to","edge_type"],"properties":{"from":{"type":"string"},"to":{"type":"string"},"edge_type":{"enum":["SUPERSEDES","CONSTRAINS","SUPPORTS","REFUTES","TRACES_TO","DEPENDS_ON"]},"label":{"type":"string"}},"if":{"required":["from"],"properties":{"from":{"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$"}}},"then":{"properties":{"to":{"$ref":"#/$defs/nodeId"}}},"else":{"properties":{"from":{"$ref":"#/$defs/nodeId"},"to":{"$ref":"#/$defs/externalRef"}}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["edge_type","from","label","to"]}]}}}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["edges","external_edges","meta","nodes"]}]}}};const pattern4 = new RegExp("^x_", "u");const pattern5 = new RegExp("^[A-Za-z_][A-Za-z0-9_-]*$", "u");const schema32 = {"type":"object","required":["schema_version","id"],"properties":{"schema_version":{"const":"1"},"id":{"type":"string","minLength":1},"baseline":{"$ref":"#/$defs/date"},"date":{"$ref":"#/$defs/date"},"review_after":{"$ref":"#/$defs/date"},"layer":{"$ref":"#/$defs/layer"},"note":{"type":"string"},"purpose":{"type":"string"}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["baseline","date","id","layer","note","purpose","review_after","schema_version"]}]}}};const schema33 = {"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$","format":"date"};const schema36 = {"enum":["audit","domain"]};const pattern8 = new RegExp("^[0-9]{4}-[0-9]{2}-[0-9]{2}$", "u");import func1_mod from "ajv/dist/runtime/ucs2length.js";const func1 = func1_mod.default;const formats0 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;function validate21(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate21.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.schema_version === undefined){const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "schema_version"},message:"must have required property '"+"schema_version"+"'",schema:schema32.required,parentSchema:schema32,data};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.id === undefined){const err1 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "id"},message:"must have required property '"+"id"+"'",schema:schema32.required,parentSchema:schema32,data};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}for(const key0 in data){const _errs1 = errors;const _errs2 = errors;let valid1 = true;const _errs3 = errors;if(typeof key0 === "string"){if(!pattern4.test(key0)){const err2 = {};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}var _valid0 = _errs3 === errors;errors = _errs2;if(vErrors !== null){if(_errs2){vErrors.length = _errs2;}else {vErrors = null;}}if(!_valid0){const _errs4 = errors;if(typeof key0 === "string"){if(!pattern5.test(key0)){const err3 = {instancePath,schemaPath:"#/propertyNames/else/allOf/0/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z_][A-Za-z0-9_-]*$"},message:"must match pattern \""+"^[A-Za-z_][A-Za-z0-9_-]*$"+"\"",schema:"^[A-Za-z_][A-Za-z0-9_-]*$",parentSchema:schema32.propertyNames.else.allOf[0],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(!((((((((key0 === "baseline") || (key0 === "date")) || (key0 === "id")) || (key0 === "layer")) || (key0 === "note")) || (key0 === "purpose")) || (key0 === "review_after")) || (key0 === "schema_version"))){const err4 = {instancePath,schemaPath:"#/propertyNames/else/allOf/1/enum",keyword:"enum",params:{allowedValues: schema32.propertyNames.else.allOf[1].enum},message:"must be equal to one of the allowed values",schema:schema32.propertyNames.else.allOf[1].enum,parentSchema:schema32.propertyNames.else.allOf[1],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}var _valid0 = _errs4 === errors;valid1 = _valid0;}if(!valid1){const err5 = {instancePath,schemaPath:"#/propertyNames/if",keyword:"if",params:{failingKeyword: "else"},message:"must match \"else\" schema",schema:schema32.propertyNames.if,parentSchema:schema32.propertyNames,data:key0,propertyName:key0};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}var valid0 = _errs1 === errors;if(!valid0){const err6 = {instancePath,schemaPath:"#/propertyNames",keyword:"propertyNames",params:{propertyName: key0},message:"property name must be valid",schema:schema32.propertyNames,parentSchema:schema32,data};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.schema_version !== undefined){let data0 = data.schema_version;if("1" !== data0){const err7 = {instancePath:instancePath+"/schema_version",schemaPath:"#/properties/schema_version/const",keyword:"const",params:{allowedValue: "1"},message:"must be equal to constant",schema:"1",parentSchema:schema32.properties.schema_version,data:data0};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.id !== undefined){let data1 = data.id;if(typeof data1 === "string"){if(func1(data1) < 1){const err8 = {instancePath:instancePath+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema32.properties.id,data:data1};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}else {const err9 = {instancePath:instancePath+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema32.properties.id.type,parentSchema:schema32.properties.id,data:data1};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}if(data.baseline !== undefined){let data2 = data.baseline;if(typeof data2 === "string"){if(!pattern8.test(data2)){const err10 = {instancePath:instancePath+"/baseline",schemaPath:"#/$defs/date/pattern",keyword:"pattern",params:{pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},message:"must match pattern \""+"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"+"\"",schema:"^[0-9]{4}-[0-9]{2}-[0-9]{2}$",parentSchema:schema33,data:data2};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}if(!(formats0.test(data2))){const err11 = {instancePath:instancePath+"/baseline",schemaPath:"#/$defs/date/format",keyword:"format",params:{format: "date"},message:"must match format \""+"date"+"\"",schema:"date",parentSchema:schema33,data:data2};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}else {const err12 = {instancePath:instancePath+"/baseline",schemaPath:"#/$defs/date/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema33.type,parentSchema:schema33,data:data2};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}if(data.date !== undefined){let data3 = data.date;if(typeof data3 === "string"){if(!pattern8.test(data3)){const err13 = {instancePath:instancePath+"/date",schemaPath:"#/$defs/date/pattern",keyword:"pattern",params:{pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},message:"must match pattern \""+"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"+"\"",schema:"^[0-9]{4}-[0-9]{2}-[0-9]{2}$",parentSchema:schema33,data:data3};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}if(!(formats0.test(data3))){const err14 = {instancePath:instancePath+"/date",schemaPath:"#/$defs/date/format",keyword:"format",params:{format: "date"},message:"must match format \""+"date"+"\"",schema:"date",parentSchema:schema33,data:data3};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}else {const err15 = {instancePath:instancePath+"/date",schemaPath:"#/$defs/date/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema33.type,parentSchema:schema33,data:data3};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data.review_after !== undefined){let data4 = data.review_after;if(typeof data4 === "string"){if(!pattern8.test(data4)){const err16 = {instancePath:instancePath+"/review_after",schemaPath:"#/$defs/date/pattern",keyword:"pattern",params:{pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},message:"must match pattern \""+"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"+"\"",schema:"^[0-9]{4}-[0-9]{2}-[0-9]{2}$",parentSchema:schema33,data:data4};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}if(!(formats0.test(data4))){const err17 = {instancePath:instancePath+"/review_after",schemaPath:"#/$defs/date/format",keyword:"format",params:{format: "date"},message:"must match format \""+"date"+"\"",schema:"date",parentSchema:schema33,data:data4};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}else {const err18 = {instancePath:instancePath+"/review_after",schemaPath:"#/$defs/date/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema33.type,parentSchema:schema33,data:data4};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}if(data.layer !== undefined){let data5 = data.layer;if(!((data5 === "audit") || (data5 === "domain"))){const err19 = {instancePath:instancePath+"/layer",schemaPath:"#/$defs/layer/enum",keyword:"enum",params:{allowedValues: schema36.enum},message:"must be equal to one of the allowed values",schema:schema36.enum,parentSchema:schema36,data:data5};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}if(data.note !== undefined){let data6 = data.note;if(typeof data6 !== "string"){const err20 = {instancePath:instancePath+"/note",schemaPath:"#/properties/note/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema32.properties.note.type,parentSchema:schema32.properties.note,data:data6};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}if(data.purpose !== undefined){let data7 = data.purpose;if(typeof data7 !== "string"){const err21 = {instancePath:instancePath+"/purpose",schemaPath:"#/properties/purpose/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema32.properties.purpose.type,parentSchema:schema32.properties.purpose,data:data7};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}}else {const err22 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema32.type,parentSchema:schema32,data};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}validate21.errors = vErrors;return errors === 0;}validate21.evaluated = {"props":{"schema_version":true,"id":true,"baseline":true,"date":true,"review_after":true,"layer":true,"note":true,"purpose":true},"dynamicProps":false,"dynamicItems":false};const schema37 = {"type":"object","required":["id","node_type","plane","status","impact","confidence","label"],"properties":{"id":{"$ref":"#/$defs/nodeId"},"node_type":{"enum":["entity","claim","decision","question","evidence","artifact","state","event","rule","invariant","policy"]},"layer":{"$ref":"#/$defs/layer"},"plane":{"enum":["DEV","PROD"]},"status":{"enum":["open","confirmed","drifted","unverifiable","refuted","superseded","done"]},"impact":{"type":"integer","minimum":1,"maximum":5},"confidence":{"type":"number","minimum":0,"maximum":1},"label":{"type":"string","minLength":1},"trace":{"type":"string"},"verified_at":{"$ref":"#/$defs/date"},"verified_against":{"type":"string"},"verified_scope":{},"reverify_every":{},"reverify_on":{},"retain_for":{},"valid_from":{"$ref":"#/$defs/partialDate"},"source_tier":{"type":"integer","minimum":1,"maximum":10},"source_kind":{"type":"string"},"owner":{"type":"string"},"drive_kind":{"type":"string"},"evidence_class":{"type":"string"},"sealed_by":{"type":"string"},"sealed_at":{"type":"string"},"narrative":{"type":"string"},"provenance":{"$ref":"#/$defs/provenance"}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["confidence","drive_kind","evidence_class","id","impact","label","layer","narrative","node_type","owner","plane","provenance","retain_for","reverify_every","reverify_on","sealed_at","sealed_by","source_kind","source_tier","status","trace","valid_from","verified_against","verified_at","verified_scope"]}]}},"if":{"anyOf":[{"properties":{"status":{"const":"confirmed"}},"required":["status"]},{"properties":{"plane":{"const":"PROD"}},"required":["plane"]}],"not":{"properties":{"status":{"const":"unverifiable"}},"required":["status"]}},"then":{"required":["provenance"]}};const schema38 = {"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]*$"};const schema41 = {"type":"string","pattern":"^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})(-(0[1-9]|1[0-2])(-[0-9]{2})?)?$","if":{"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"then":{"format":"date"}};const schema42 = {"type":"object","required":["source","locator","method"],"properties":{"source":{"type":"string","minLength":1,"not":{"type":"string","pattern":"^(?:[ \t\n\r ]+|[ \t\n\r ]*(?:[Dd][Ee][Ss][Cc][Oo][Nn][Hh][Ee][Cc][Ii][Dd][AaOo]|[Uu][Nn][Kk][Nn][Oo][Ww][Nn]|[Nn] ?/? ?[Aa]|[Nn]\\.[Aa]\\.?|[Nn][Oo][Nn][Ee]|[Nn][Uu][Ll][Ll]|[Ss][Ee][Mm] [Ff][Oo][Nn][Tt][Ee]|[Tt][Bb][Dd]|-+|—|–|\\?)[.:]?[ \t\n\r ]*)$"}},"locator":{"type":"string","minLength":1},"method":{"type":"string","minLength":1}}};const pattern13 = new RegExp("^[A-Za-z][A-Za-z0-9_]*$", "u");const pattern16 = new RegExp("^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})(-(0[1-9]|1[0-2])(-[0-9]{2})?)?$", "u");const pattern17 = new RegExp("^(?:[ \t\n\r ]+|[ \t\n\r ]*(?:[Dd][Ee][Ss][Cc][Oo][Nn][Hh][Ee][Cc][Ii][Dd][AaOo]|[Uu][Nn][Kk][Nn][Oo][Ww][Nn]|[Nn] ?/? ?[Aa]|[Nn]\\.[Aa]\\.?|[Nn][Oo][Nn][Ee]|[Nn][Uu][Ll][Ll]|[Ss][Ee][Mm] [Ff][Oo][Nn][Tt][Ee]|[Tt][Bb][Dd]|-+|—|–|\\?)[.:]?[ \t\n\r ]*)$", "u");function validate23(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate23.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}const _errs1 = errors;let valid0 = true;const _errs2 = errors;const _errs3 = errors;const _errs4 = errors;if(data && typeof data == "object" && !Array.isArray(data)){let missing0;if((data.status === undefined) && (missing0 = "status")){const err0 = {};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}else {if(data.status !== undefined){if("unverifiable" !== data.status){const err1 = {};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}}}var valid1 = _errs4 === errors;if(valid1){const err2 = {};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}else {errors = _errs3;if(vErrors !== null){if(_errs3){vErrors.length = _errs3;}else {vErrors = null;}}const _errs6 = errors;let valid3 = false;const _errs7 = errors;if(data && typeof data == "object" && !Array.isArray(data)){let missing1;if((data.status === undefined) && (missing1 = "status")){const err3 = {};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}else {if(data.status !== undefined){if("confirmed" !== data.status){const err4 = {};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}}}var _valid1 = _errs7 === errors;valid3 = valid3 || _valid1;if(_valid1){var props0 = {};props0.status = true;}const _errs9 = errors;if(data && typeof data == "object" && !Array.isArray(data)){let missing2;if((data.plane === undefined) && (missing2 = "plane")){const err5 = {};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}else {if(data.plane !== undefined){if("PROD" !== data.plane){const err6 = {};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}}}var _valid1 = _errs9 === errors;valid3 = valid3 || _valid1;if(_valid1){if(props0 !== true){props0 = props0 || {};props0.plane = true;}}if(!valid3){const err7 = {};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}else {errors = _errs6;if(vErrors !== null){if(_errs6){vErrors.length = _errs6;}else {vErrors = null;}}}}var _valid0 = _errs2 === errors;errors = _errs1;if(vErrors !== null){if(_errs1){vErrors.length = _errs1;}else {vErrors = null;}}if(_valid0){const _errs11 = errors;if(data && typeof data == "object" && !Array.isArray(data)){if(data.provenance === undefined){const err8 = {instancePath,schemaPath:"#/then/required",keyword:"required",params:{missingProperty: "provenance"},message:"must have required property '"+"provenance"+"'",schema:schema37.then.required,parentSchema:schema37.then,data};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}var _valid0 = _errs11 === errors;valid0 = _valid0;}if(!valid0){const err9 = {instancePath,schemaPath:"#/if",keyword:"if",params:{failingKeyword: "then"},message:"must match \"then\" schema",schema:schema37.if,parentSchema:schema37,data};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.id === undefined){const err10 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "id"},message:"must have required property '"+"id"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}if(data.node_type === undefined){const err11 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "node_type"},message:"must have required property '"+"node_type"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if(data.plane === undefined){const err12 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "plane"},message:"must have required property '"+"plane"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(data.status === undefined){const err13 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "status"},message:"must have required property '"+"status"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}if(data.impact === undefined){const err14 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "impact"},message:"must have required property '"+"impact"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}if(data.confidence === undefined){const err15 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "confidence"},message:"must have required property '"+"confidence"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}if(data.label === undefined){const err16 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "label"},message:"must have required property '"+"label"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}for(const key0 in data){const _errs12 = errors;const _errs13 = errors;let valid7 = true;const _errs14 = errors;if(typeof key0 === "string"){if(!pattern4.test(key0)){const err17 = {};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}var _valid2 = _errs14 === errors;errors = _errs13;if(vErrors !== null){if(_errs13){vErrors.length = _errs13;}else {vErrors = null;}}if(!_valid2){const _errs15 = errors;if(typeof key0 === "string"){if(!pattern5.test(key0)){const err18 = {instancePath,schemaPath:"#/propertyNames/else/allOf/0/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z_][A-Za-z0-9_-]*$"},message:"must match pattern \""+"^[A-Za-z_][A-Za-z0-9_-]*$"+"\"",schema:"^[A-Za-z_][A-Za-z0-9_-]*$",parentSchema:schema37.propertyNames.else.allOf[0],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}if(!(((((((((((((((((((((((((key0 === "confidence") || (key0 === "drive_kind")) || (key0 === "evidence_class")) || (key0 === "id")) || (key0 === "impact")) || (key0 === "label")) || (key0 === "layer")) || (key0 === "narrative")) || (key0 === "node_type")) || (key0 === "owner")) || (key0 === "plane")) || (key0 === "provenance")) || (key0 === "retain_for")) || (key0 === "reverify_every")) || (key0 === "reverify_on")) || (key0 === "sealed_at")) || (key0 === "sealed_by")) || (key0 === "source_kind")) || (key0 === "source_tier")) || (key0 === "status")) || (key0 === "trace")) || (key0 === "valid_from")) || (key0 === "verified_against")) || (key0 === "verified_at")) || (key0 === "verified_scope"))){const err19 = {instancePath,schemaPath:"#/propertyNames/else/allOf/1/enum",keyword:"enum",params:{allowedValues: schema37.propertyNames.else.allOf[1].enum},message:"must be equal to one of the allowed values",schema:schema37.propertyNames.else.allOf[1].enum,parentSchema:schema37.propertyNames.else.allOf[1],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}var _valid2 = _errs15 === errors;valid7 = _valid2;}if(!valid7){const err20 = {instancePath,schemaPath:"#/propertyNames/if",keyword:"if",params:{failingKeyword: "else"},message:"must match \"else\" schema",schema:schema37.propertyNames.if,parentSchema:schema37.propertyNames,data:key0,propertyName:key0};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}var valid6 = _errs12 === errors;if(!valid6){const err21 = {instancePath,schemaPath:"#/propertyNames",keyword:"propertyNames",params:{propertyName: key0},message:"property name must be valid",schema:schema37.propertyNames,parentSchema:schema37,data};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}if(props0 !== true){props0 = props0 || {};props0.id = true;props0.node_type = true;props0.layer = true;props0.plane = true;props0.status = true;props0.impact = true;props0.confidence = true;props0.label = true;props0.trace = true;props0.verified_at = true;props0.verified_against = true;props0.verified_scope = true;props0.reverify_every = true;props0.reverify_on = true;props0.retain_for = true;props0.valid_from = true;props0.source_tier = true;props0.source_kind = true;props0.owner = true;props0.drive_kind = true;props0.evidence_class = true;props0.sealed_by = true;props0.sealed_at = true;props0.narrative = true;props0.provenance = true;}if(data.id !== undefined){let data3 = data.id;if(typeof data3 === "string"){if(!pattern13.test(data3)){const err22 = {instancePath:instancePath+"/id",schemaPath:"#/$defs/nodeId/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema38,data:data3};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}else {const err23 = {instancePath:instancePath+"/id",schemaPath:"#/$defs/nodeId/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema38.type,parentSchema:schema38,data:data3};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data.node_type !== undefined){let data4 = data.node_type;if(!(((((((((((data4 === "entity") || (data4 === "claim")) || (data4 === "decision")) || (data4 === "question")) || (data4 === "evidence")) || (data4 === "artifact")) || (data4 === "state")) || (data4 === "event")) || (data4 === "rule")) || (data4 === "invariant")) || (data4 === "policy"))){const err24 = {instancePath:instancePath+"/node_type",schemaPath:"#/properties/node_type/enum",keyword:"enum",params:{allowedValues: schema37.properties.node_type.enum},message:"must be equal to one of the allowed values",schema:schema37.properties.node_type.enum,parentSchema:schema37.properties.node_type,data:data4};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data.layer !== undefined){let data5 = data.layer;if(!((data5 === "audit") || (data5 === "domain"))){const err25 = {instancePath:instancePath+"/layer",schemaPath:"#/$defs/layer/enum",keyword:"enum",params:{allowedValues: schema36.enum},message:"must be equal to one of the allowed values",schema:schema36.enum,parentSchema:schema36,data:data5};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}if(data.plane !== undefined){let data6 = data.plane;if(!((data6 === "DEV") || (data6 === "PROD"))){const err26 = {instancePath:instancePath+"/plane",schemaPath:"#/properties/plane/enum",keyword:"enum",params:{allowedValues: schema37.properties.plane.enum},message:"must be equal to one of the allowed values",schema:schema37.properties.plane.enum,parentSchema:schema37.properties.plane,data:data6};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}if(data.status !== undefined){let data7 = data.status;if(!(((((((data7 === "open") || (data7 === "confirmed")) || (data7 === "drifted")) || (data7 === "unverifiable")) || (data7 === "refuted")) || (data7 === "superseded")) || (data7 === "done"))){const err27 = {instancePath:instancePath+"/status",schemaPath:"#/properties/status/enum",keyword:"enum",params:{allowedValues: schema37.properties.status.enum},message:"must be equal to one of the allowed values",schema:schema37.properties.status.enum,parentSchema:schema37.properties.status,data:data7};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}if(data.impact !== undefined){let data8 = data.impact;if(!((typeof data8 == "number") && (!(data8 % 1) && !isNaN(data8)))){const err28 = {instancePath:instancePath+"/impact",schemaPath:"#/properties/impact/type",keyword:"type",params:{type: "integer"},message:"must be integer",schema:schema37.properties.impact.type,parentSchema:schema37.properties.impact,data:data8};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}if(typeof data8 == "number"){if(data8 > 5 || isNaN(data8)){const err29 = {instancePath:instancePath+"/impact",schemaPath:"#/properties/impact/maximum",keyword:"maximum",params:{comparison: "<=", limit: 5},message:"must be <= 5",schema:5,parentSchema:schema37.properties.impact,data:data8};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}if(data8 < 1 || isNaN(data8)){const err30 = {instancePath:instancePath+"/impact",schemaPath:"#/properties/impact/minimum",keyword:"minimum",params:{comparison: ">=", limit: 1},message:"must be >= 1",schema:1,parentSchema:schema37.properties.impact,data:data8};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}}if(data.confidence !== undefined){let data9 = data.confidence;if(typeof data9 == "number"){if(data9 > 1 || isNaN(data9)){const err31 = {instancePath:instancePath+"/confidence",schemaPath:"#/properties/confidence/maximum",keyword:"maximum",params:{comparison: "<=", limit: 1},message:"must be <= 1",schema:1,parentSchema:schema37.properties.confidence,data:data9};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}if(data9 < 0 || isNaN(data9)){const err32 = {instancePath:instancePath+"/confidence",schemaPath:"#/properties/confidence/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0",schema:0,parentSchema:schema37.properties.confidence,data:data9};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}else {const err33 = {instancePath:instancePath+"/confidence",schemaPath:"#/properties/confidence/type",keyword:"type",params:{type: "number"},message:"must be number",schema:schema37.properties.confidence.type,parentSchema:schema37.properties.confidence,data:data9};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}if(data.label !== undefined){let data10 = data.label;if(typeof data10 === "string"){if(func1(data10) < 1){const err34 = {instancePath:instancePath+"/label",schemaPath:"#/properties/label/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema37.properties.label,data:data10};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}else {const err35 = {instancePath:instancePath+"/label",schemaPath:"#/properties/label/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.label.type,parentSchema:schema37.properties.label,data:data10};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}if(data.trace !== undefined){let data11 = data.trace;if(typeof data11 !== "string"){const err36 = {instancePath:instancePath+"/trace",schemaPath:"#/properties/trace/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.trace.type,parentSchema:schema37.properties.trace,data:data11};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}}if(data.verified_at !== undefined){let data12 = data.verified_at;if(typeof data12 === "string"){if(!pattern8.test(data12)){const err37 = {instancePath:instancePath+"/verified_at",schemaPath:"#/$defs/date/pattern",keyword:"pattern",params:{pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},message:"must match pattern \""+"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"+"\"",schema:"^[0-9]{4}-[0-9]{2}-[0-9]{2}$",parentSchema:schema33,data:data12};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}if(!(formats0.test(data12))){const err38 = {instancePath:instancePath+"/verified_at",schemaPath:"#/$defs/date/format",keyword:"format",params:{format: "date"},message:"must match format \""+"date"+"\"",schema:"date",parentSchema:schema33,data:data12};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}}else {const err39 = {instancePath:instancePath+"/verified_at",schemaPath:"#/$defs/date/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema33.type,parentSchema:schema33,data:data12};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}}if(data.verified_against !== undefined){let data13 = data.verified_against;if(typeof data13 !== "string"){const err40 = {instancePath:instancePath+"/verified_against",schemaPath:"#/properties/verified_against/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.verified_against.type,parentSchema:schema37.properties.verified_against,data:data13};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}}if(data.valid_from !== undefined){let data14 = data.valid_from;const _errs42 = errors;let valid14 = true;const _errs43 = errors;if(typeof data14 === "string"){if(!pattern8.test(data14)){const err41 = {};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}}var _valid3 = _errs43 === errors;errors = _errs42;if(vErrors !== null){if(_errs42){vErrors.length = _errs42;}else {vErrors = null;}}if(_valid3){const _errs44 = errors;if(typeof data14 === "string"){if(!(formats0.test(data14))){const err42 = {instancePath:instancePath+"/valid_from",schemaPath:"#/$defs/partialDate/then/format",keyword:"format",params:{format: "date"},message:"must match format \""+"date"+"\"",schema:"date",parentSchema:schema41.then,data:data14};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}var _valid3 = _errs44 === errors;valid14 = _valid3;}if(!valid14){const err43 = {instancePath:instancePath+"/valid_from",schemaPath:"#/$defs/partialDate/if",keyword:"if",params:{failingKeyword: "then"},message:"must match \"then\" schema",schema:schema41.if,parentSchema:schema41,data:data14};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}if(typeof data14 === "string"){if(!pattern16.test(data14)){const err44 = {instancePath:instancePath+"/valid_from",schemaPath:"#/$defs/partialDate/pattern",keyword:"pattern",params:{pattern: "^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})(-(0[1-9]|1[0-2])(-[0-9]{2})?)?$"},message:"must match pattern \""+"^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})(-(0[1-9]|1[0-2])(-[0-9]{2})?)?$"+"\"",schema:"^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})(-(0[1-9]|1[0-2])(-[0-9]{2})?)?$",parentSchema:schema41,data:data14};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}}else {const err45 = {instancePath:instancePath+"/valid_from",schemaPath:"#/$defs/partialDate/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema41.type,parentSchema:schema41,data:data14};if(vErrors === null){vErrors = [err45];}else {vErrors.push(err45);}errors++;}}if(data.source_tier !== undefined){let data15 = data.source_tier;if(!((typeof data15 == "number") && (!(data15 % 1) && !isNaN(data15)))){const err46 = {instancePath:instancePath+"/source_tier",schemaPath:"#/properties/source_tier/type",keyword:"type",params:{type: "integer"},message:"must be integer",schema:schema37.properties.source_tier.type,parentSchema:schema37.properties.source_tier,data:data15};if(vErrors === null){vErrors = [err46];}else {vErrors.push(err46);}errors++;}if(typeof data15 == "number"){if(data15 > 10 || isNaN(data15)){const err47 = {instancePath:instancePath+"/source_tier",schemaPath:"#/properties/source_tier/maximum",keyword:"maximum",params:{comparison: "<=", limit: 10},message:"must be <= 10",schema:10,parentSchema:schema37.properties.source_tier,data:data15};if(vErrors === null){vErrors = [err47];}else {vErrors.push(err47);}errors++;}if(data15 < 1 || isNaN(data15)){const err48 = {instancePath:instancePath+"/source_tier",schemaPath:"#/properties/source_tier/minimum",keyword:"minimum",params:{comparison: ">=", limit: 1},message:"must be >= 1",schema:1,parentSchema:schema37.properties.source_tier,data:data15};if(vErrors === null){vErrors = [err48];}else {vErrors.push(err48);}errors++;}}}if(data.source_kind !== undefined){let data16 = data.source_kind;if(typeof data16 !== "string"){const err49 = {instancePath:instancePath+"/source_kind",schemaPath:"#/properties/source_kind/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.source_kind.type,parentSchema:schema37.properties.source_kind,data:data16};if(vErrors === null){vErrors = [err49];}else {vErrors.push(err49);}errors++;}}if(data.owner !== undefined){let data17 = data.owner;if(typeof data17 !== "string"){const err50 = {instancePath:instancePath+"/owner",schemaPath:"#/properties/owner/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.owner.type,parentSchema:schema37.properties.owner,data:data17};if(vErrors === null){vErrors = [err50];}else {vErrors.push(err50);}errors++;}}if(data.drive_kind !== undefined){let data18 = data.drive_kind;if(typeof data18 !== "string"){const err51 = {instancePath:instancePath+"/drive_kind",schemaPath:"#/properties/drive_kind/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.drive_kind.type,parentSchema:schema37.properties.drive_kind,data:data18};if(vErrors === null){vErrors = [err51];}else {vErrors.push(err51);}errors++;}}if(data.evidence_class !== undefined){let data19 = data.evidence_class;if(typeof data19 !== "string"){const err52 = {instancePath:instancePath+"/evidence_class",schemaPath:"#/properties/evidence_class/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.evidence_class.type,parentSchema:schema37.properties.evidence_class,data:data19};if(vErrors === null){vErrors = [err52];}else {vErrors.push(err52);}errors++;}}if(data.sealed_by !== undefined){let data20 = data.sealed_by;if(typeof data20 !== "string"){const err53 = {instancePath:instancePath+"/sealed_by",schemaPath:"#/properties/sealed_by/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.sealed_by.type,parentSchema:schema37.properties.sealed_by,data:data20};if(vErrors === null){vErrors = [err53];}else {vErrors.push(err53);}errors++;}}if(data.sealed_at !== undefined){let data21 = data.sealed_at;if(typeof data21 !== "string"){const err54 = {instancePath:instancePath+"/sealed_at",schemaPath:"#/properties/sealed_at/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.sealed_at.type,parentSchema:schema37.properties.sealed_at,data:data21};if(vErrors === null){vErrors = [err54];}else {vErrors.push(err54);}errors++;}}if(data.narrative !== undefined){let data22 = data.narrative;if(typeof data22 !== "string"){const err55 = {instancePath:instancePath+"/narrative",schemaPath:"#/properties/narrative/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.narrative.type,parentSchema:schema37.properties.narrative,data:data22};if(vErrors === null){vErrors = [err55];}else {vErrors.push(err55);}errors++;}}if(data.provenance !== undefined){let data23 = data.provenance;if(data23 && typeof data23 == "object" && !Array.isArray(data23)){if(data23.source === undefined){const err56 = {instancePath:instancePath+"/provenance",schemaPath:"#/$defs/provenance/required",keyword:"required",params:{missingProperty: "source"},message:"must have required property '"+"source"+"'",schema:schema42.required,parentSchema:schema42,data:data23};if(vErrors === null){vErrors = [err56];}else {vErrors.push(err56);}errors++;}if(data23.locator === undefined){const err57 = {instancePath:instancePath+"/provenance",schemaPath:"#/$defs/provenance/required",keyword:"required",params:{missingProperty: "locator"},message:"must have required property '"+"locator"+"'",schema:schema42.required,parentSchema:schema42,data:data23};if(vErrors === null){vErrors = [err57];}else {vErrors.push(err57);}errors++;}if(data23.method === undefined){const err58 = {instancePath:instancePath+"/provenance",schemaPath:"#/$defs/provenance/required",keyword:"required",params:{missingProperty: "method"},message:"must have required property '"+"method"+"'",schema:schema42.required,parentSchema:schema42,data:data23};if(vErrors === null){vErrors = [err58];}else {vErrors.push(err58);}errors++;}if(data23.source !== undefined){let data24 = data23.source;const _errs66 = errors;const _errs67 = errors;if(errors === _errs67){if(typeof data24 === "string"){if(!pattern17.test(data24)){const err59 = {};if(vErrors === null){vErrors = [err59];}else {vErrors.push(err59);}errors++;}}else {const err60 = {};if(vErrors === null){vErrors = [err60];}else {vErrors.push(err60);}errors++;}}var valid17 = _errs67 === errors;if(valid17){const err61 = {instancePath:instancePath+"/provenance/source",schemaPath:"#/$defs/provenance/properties/source/not",keyword:"not",params:{},message:"must NOT be valid",schema:schema42.properties.source.not,parentSchema:schema42.properties.source,data:data24};if(vErrors === null){vErrors = [err61];}else {vErrors.push(err61);}errors++;}else {errors = _errs66;if(vErrors !== null){if(_errs66){vErrors.length = _errs66;}else {vErrors = null;}}}if(typeof data24 === "string"){if(func1(data24) < 1){const err62 = {instancePath:instancePath+"/provenance/source",schemaPath:"#/$defs/provenance/properties/source/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema42.properties.source,data:data24};if(vErrors === null){vErrors = [err62];}else {vErrors.push(err62);}errors++;}}else {const err63 = {instancePath:instancePath+"/provenance/source",schemaPath:"#/$defs/provenance/properties/source/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema42.properties.source.type,parentSchema:schema42.properties.source,data:data24};if(vErrors === null){vErrors = [err63];}else {vErrors.push(err63);}errors++;}}if(data23.locator !== undefined){let data25 = data23.locator;if(typeof data25 === "string"){if(func1(data25) < 1){const err64 = {instancePath:instancePath+"/provenance/locator",schemaPath:"#/$defs/provenance/properties/locator/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema42.properties.locator,data:data25};if(vErrors === null){vErrors = [err64];}else {vErrors.push(err64);}errors++;}}else {const err65 = {instancePath:instancePath+"/provenance/locator",schemaPath:"#/$defs/provenance/properties/locator/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema42.properties.locator.type,parentSchema:schema42.properties.locator,data:data25};if(vErrors === null){vErrors = [err65];}else {vErrors.push(err65);}errors++;}}if(data23.method !== undefined){let data26 = data23.method;if(typeof data26 === "string"){if(func1(data26) < 1){const err66 = {instancePath:instancePath+"/provenance/method",schemaPath:"#/$defs/provenance/properties/method/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema42.properties.method,data:data26};if(vErrors === null){vErrors = [err66];}else {vErrors.push(err66);}errors++;}}else {const err67 = {instancePath:instancePath+"/provenance/method",schemaPath:"#/$defs/provenance/properties/method/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema42.properties.method.type,parentSchema:schema42.properties.method,data:data26};if(vErrors === null){vErrors = [err67];}else {vErrors.push(err67);}errors++;}}}else {const err68 = {instancePath:instancePath+"/provenance",schemaPath:"#/$defs/provenance/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema42.type,parentSchema:schema42,data:data23};if(vErrors === null){vErrors = [err68];}else {vErrors.push(err68);}errors++;}}}else {const err69 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema37.type,parentSchema:schema37,data};if(vErrors === null){vErrors = [err69];}else {vErrors.push(err69);}errors++;}validate23.errors = vErrors;evaluated0.props = props0;return errors === 0;}validate23.evaluated = {"dynamicProps":true,"dynamicItems":false};const schema43 = {"type":"object","required":["from","to","edge_type"],"properties":{"from":{"$ref":"#/$defs/nodeId"},"to":{"$ref":"#/$defs/nodeId"},"edge_type":{"enum":["SUPPORTS","REFUTES","SUPERSEDES","CAUSES","DEPENDS_ON","TRACES_TO","CONSTRAINS","HAS_STATE","TRANSITIONS","EMITS","READS","WRITES"]},"label":{"type":"string"},"trigger":{"$ref":"#/$defs/nodeId"}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["edge_type","from","label","on","to","trigger"]}]}}};function validate25(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate25.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.from === undefined){const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "from"},message:"must have required property '"+"from"+"'",schema:schema43.required,parentSchema:schema43,data};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.to === undefined){const err1 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "to"},message:"must have required property '"+"to"+"'",schema:schema43.required,parentSchema:schema43,data};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.edge_type === undefined){const err2 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "edge_type"},message:"must have required property '"+"edge_type"+"'",schema:schema43.required,parentSchema:schema43,data};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}for(const key0 in data){const _errs1 = errors;const _errs2 = errors;let valid1 = true;const _errs3 = errors;if(typeof key0 === "string"){if(!pattern4.test(key0)){const err3 = {};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}var _valid0 = _errs3 === errors;errors = _errs2;if(vErrors !== null){if(_errs2){vErrors.length = _errs2;}else {vErrors = null;}}if(!_valid0){const _errs4 = errors;if(typeof key0 === "string"){if(!pattern5.test(key0)){const err4 = {instancePath,schemaPath:"#/propertyNames/else/allOf/0/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z_][A-Za-z0-9_-]*$"},message:"must match pattern \""+"^[A-Za-z_][A-Za-z0-9_-]*$"+"\"",schema:"^[A-Za-z_][A-Za-z0-9_-]*$",parentSchema:schema43.propertyNames.else.allOf[0],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(!((((((key0 === "edge_type") || (key0 === "from")) || (key0 === "label")) || (key0 === "on")) || (key0 === "to")) || (key0 === "trigger"))){const err5 = {instancePath,schemaPath:"#/propertyNames/else/allOf/1/enum",keyword:"enum",params:{allowedValues: schema43.propertyNames.else.allOf[1].enum},message:"must be equal to one of the allowed values",schema:schema43.propertyNames.else.allOf[1].enum,parentSchema:schema43.propertyNames.else.allOf[1],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}var _valid0 = _errs4 === errors;valid1 = _valid0;}if(!valid1){const err6 = {instancePath,schemaPath:"#/propertyNames/if",keyword:"if",params:{failingKeyword: "else"},message:"must match \"else\" schema",schema:schema43.propertyNames.if,parentSchema:schema43.propertyNames,data:key0,propertyName:key0};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}var valid0 = _errs1 === errors;if(!valid0){const err7 = {instancePath,schemaPath:"#/propertyNames",keyword:"propertyNames",params:{propertyName: key0},message:"property name must be valid",schema:schema43.propertyNames,parentSchema:schema43,data};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.from !== undefined){let data0 = data.from;if(typeof data0 === "string"){if(!pattern13.test(data0)){const err8 = {instancePath:instancePath+"/from",schemaPath:"#/$defs/nodeId/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema38,data:data0};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}else {const err9 = {instancePath:instancePath+"/from",schemaPath:"#/$defs/nodeId/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema38.type,parentSchema:schema38,data:data0};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}if(data.to !== undefined){let data1 = data.to;if(typeof data1 === "string"){if(!pattern13.test(data1)){const err10 = {instancePath:instancePath+"/to",schemaPath:"#/$defs/nodeId/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema38,data:data1};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}else {const err11 = {instancePath:instancePath+"/to",schemaPath:"#/$defs/nodeId/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema38.type,parentSchema:schema38,data:data1};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data.edge_type !== undefined){let data2 = data.edge_type;if(!((((((((((((data2 === "SUPPORTS") || (data2 === "REFUTES")) || (data2 === "SUPERSEDES")) || (data2 === "CAUSES")) || (data2 === "DEPENDS_ON")) || (data2 === "TRACES_TO")) || (data2 === "CONSTRAINS")) || (data2 === "HAS_STATE")) || (data2 === "TRANSITIONS")) || (data2 === "EMITS")) || (data2 === "READS")) || (data2 === "WRITES"))){const err12 = {instancePath:instancePath+"/edge_type",schemaPath:"#/properties/edge_type/enum",keyword:"enum",params:{allowedValues: schema43.properties.edge_type.enum},message:"must be equal to one of the allowed values",schema:schema43.properties.edge_type.enum,parentSchema:schema43.properties.edge_type,data:data2};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}if(data.label !== undefined){let data3 = data.label;if(typeof data3 !== "string"){const err13 = {instancePath:instancePath+"/label",schemaPath:"#/properties/label/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema43.properties.label.type,parentSchema:schema43.properties.label,data:data3};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}if(data.trigger !== undefined){let data4 = data.trigger;if(typeof data4 === "string"){if(!pattern13.test(data4)){const err14 = {instancePath:instancePath+"/trigger",schemaPath:"#/$defs/nodeId/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema38,data:data4};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}else {const err15 = {instancePath:instancePath+"/trigger",schemaPath:"#/$defs/nodeId/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema38.type,parentSchema:schema38,data:data4};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}}else {const err16 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema43.type,parentSchema:schema43,data};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}validate25.errors = vErrors;return errors === 0;}validate25.evaluated = {"props":{"from":true,"to":true,"edge_type":true,"label":true,"trigger":true},"dynamicProps":false,"dynamicItems":false};const schema47 = {"description":"Aresta entre grafos (v4.3): exatamente uma ponta externa (<caminho>#<id>), a outra um id deste arquivo; from ausente vale o grafo inteiro. Só os tipos da camada audit.","type":"object","required":["to","edge_type"],"properties":{"from":{"type":"string"},"to":{"type":"string"},"edge_type":{"enum":["SUPERSEDES","CONSTRAINS","SUPPORTS","REFUTES","TRACES_TO","DEPENDS_ON"]},"label":{"type":"string"}},"if":{"required":["from"],"properties":{"from":{"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$"}}},"then":{"properties":{"to":{"$ref":"#/$defs/nodeId"}}},"else":{"properties":{"from":{"$ref":"#/$defs/nodeId"},"to":{"$ref":"#/$defs/externalRef"}}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["edge_type","from","label","to"]}]}}};const schema50 = {"type":"string","pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$","description":"Referência a um nó de outro grafo do mesmo repo: <caminho relativo à raiz do repo>#<id>. Os segmentos do caminho começam por letra, dígito ou _ e só levam [A-Za-z0-9_.-]: sem / inicial, sem . ou .., sem \\, sem :."};const pattern23 = new RegExp("^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$", "u");function validate27(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate27.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}const _errs1 = errors;let valid0 = true;const _errs2 = errors;if(data && typeof data == "object" && !Array.isArray(data)){let missing0;if((data.from === undefined) && (missing0 = "from")){const err0 = {};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}else {if(data.from !== undefined){let data0 = data.from;if(typeof data0 === "string"){if(!pattern23.test(data0)){const err1 = {};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}}}}var _valid0 = _errs2 === errors;errors = _errs1;if(vErrors !== null){if(_errs1){vErrors.length = _errs1;}else {vErrors = null;}}let ifClause0;if(_valid0){const _errs4 = errors;if(data && typeof data == "object" && !Array.isArray(data)){if(data.to !== undefined){let data1 = data.to;if(typeof data1 === "string"){if(!pattern13.test(data1)){const err2 = {instancePath:instancePath+"/to",schemaPath:"#/$defs/nodeId/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema38,data:data1};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}else {const err3 = {instancePath:instancePath+"/to",schemaPath:"#/$defs/nodeId/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema38.type,parentSchema:schema38,data:data1};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}}var _valid0 = _errs4 === errors;valid0 = _valid0;if(valid0){var props0 = {};props0.to = true;props0.from = true;}ifClause0 = "then";}else {const _errs8 = errors;if(data && typeof data == "object" && !Array.isArray(data)){if(data.from !== undefined){let data2 = data.from;if(typeof data2 === "string"){if(!pattern13.test(data2)){const err4 = {instancePath:instancePath+"/from",schemaPath:"#/$defs/nodeId/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema38,data:data2};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}else {const err5 = {instancePath:instancePath+"/from",schemaPath:"#/$defs/nodeId/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema38.type,parentSchema:schema38,data:data2};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.to !== undefined){let data3 = data.to;if(typeof data3 === "string"){if(!pattern23.test(data3)){const err6 = {instancePath:instancePath+"/to",schemaPath:"#/$defs/externalRef/pattern",keyword:"pattern",params:{pattern: "^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema50,data:data3};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}else {const err7 = {instancePath:instancePath+"/to",schemaPath:"#/$defs/externalRef/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema50.type,parentSchema:schema50,data:data3};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}}var _valid0 = _errs8 === errors;valid0 = _valid0;if(valid0){if(props0 !== true){props0 = props0 || {};props0.from = true;props0.to = true;}}ifClause0 = "else";}if(!valid0){const err8 = {instancePath,schemaPath:"#/if",keyword:"if",params:{failingKeyword: ifClause0},message:"must match \""+ifClause0+"\" schema",schema:schema47.if,parentSchema:schema47,data};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.to === undefined){const err9 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "to"},message:"must have required property '"+"to"+"'",schema:schema47.required,parentSchema:schema47,data};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}if(data.edge_type === undefined){const err10 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "edge_type"},message:"must have required property '"+"edge_type"+"'",schema:schema47.required,parentSchema:schema47,data};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}for(const key0 in data){const _errs15 = errors;const _errs16 = errors;let valid8 = true;const _errs17 = errors;if(typeof key0 === "string"){if(!pattern4.test(key0)){const err11 = {};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}var _valid1 = _errs17 === errors;errors = _errs16;if(vErrors !== null){if(_errs16){vErrors.length = _errs16;}else {vErrors = null;}}if(!_valid1){const _errs18 = errors;if(typeof key0 === "string"){if(!pattern5.test(key0)){const err12 = {instancePath,schemaPath:"#/propertyNames/else/allOf/0/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z_][A-Za-z0-9_-]*$"},message:"must match pattern \""+"^[A-Za-z_][A-Za-z0-9_-]*$"+"\"",schema:"^[A-Za-z_][A-Za-z0-9_-]*$",parentSchema:schema47.propertyNames.else.allOf[0],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}if(!((((key0 === "edge_type") || (key0 === "from")) || (key0 === "label")) || (key0 === "to"))){const err13 = {instancePath,schemaPath:"#/propertyNames/else/allOf/1/enum",keyword:"enum",params:{allowedValues: schema47.propertyNames.else.allOf[1].enum},message:"must be equal to one of the allowed values",schema:schema47.propertyNames.else.allOf[1].enum,parentSchema:schema47.propertyNames.else.allOf[1],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}var _valid1 = _errs18 === errors;valid8 = _valid1;}if(!valid8){const err14 = {instancePath,schemaPath:"#/propertyNames/if",keyword:"if",params:{failingKeyword: "else"},message:"must match \"else\" schema",schema:schema47.propertyNames.if,parentSchema:schema47.propertyNames,data:key0,propertyName:key0};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}var valid7 = _errs15 === errors;if(!valid7){const err15 = {instancePath,schemaPath:"#/propertyNames",keyword:"propertyNames",params:{propertyName: key0},message:"property name must be valid",schema:schema47.propertyNames,parentSchema:schema47,data};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(props0 !== true){props0 = props0 || {};props0.from = true;props0.to = true;props0.edge_type = true;props0.label = true;}if(data.from !== undefined){let data4 = data.from;if(typeof data4 !== "string"){const err16 = {instancePath:instancePath+"/from",schemaPath:"#/properties/from/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema47.properties.from.type,parentSchema:schema47.properties.from,data:data4};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}if(data.to !== undefined){let data5 = data.to;if(typeof data5 !== "string"){const err17 = {instancePath:instancePath+"/to",schemaPath:"#/properties/to/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema47.properties.to.type,parentSchema:schema47.properties.to,data:data5};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}if(data.edge_type !== undefined){let data6 = data.edge_type;if(!((((((data6 === "SUPERSEDES") || (data6 === "CONSTRAINS")) || (data6 === "SUPPORTS")) || (data6 === "REFUTES")) || (data6 === "TRACES_TO")) || (data6 === "DEPENDS_ON"))){const err18 = {instancePath:instancePath+"/edge_type",schemaPath:"#/properties/edge_type/enum",keyword:"enum",params:{allowedValues: schema47.properties.edge_type.enum},message:"must be equal to one of the allowed values",schema:schema47.properties.edge_type.enum,parentSchema:schema47.properties.edge_type,data:data6};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}if(data.label !== undefined){let data7 = data.label;if(typeof data7 !== "string"){const err19 = {instancePath:instancePath+"/label",schemaPath:"#/properties/label/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema47.properties.label.type,parentSchema:schema47.properties.label,data:data7};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}}else {const err20 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema47.type,parentSchema:schema47,data};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}validate27.errors = vErrors;evaluated0.props = props0;return errors === 0;}validate27.evaluated = {"dynamicProps":true,"dynamicItems":false};function validate20(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){/*# sourceURL="urn:kg-ssot:spec:kg-contract-v4.schema.json" */;let vErrors = null;let errors = 0;const evaluated0 = validate20.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.meta === undefined){const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "meta"},message:"must have required property '"+"meta"+"'",schema:schema31.required,parentSchema:schema31,data};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.nodes === undefined){const err1 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "nodes"},message:"must have required property '"+"nodes"+"'",schema:schema31.required,parentSchema:schema31,data};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.edges === undefined){const err2 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "edges"},message:"must have required property '"+"edges"+"'",schema:schema31.required,parentSchema:schema31,data};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}for(const key0 in data){const _errs1 = errors;const _errs2 = errors;let valid1 = true;const _errs3 = errors;if(typeof key0 === "string"){if(!pattern4.test(key0)){const err3 = {};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}var _valid0 = _errs3 === errors;errors = _errs2;if(vErrors !== null){if(_errs2){vErrors.length = _errs2;}else {vErrors = null;}}if(!_valid0){const _errs4 = errors;if(typeof key0 === "string"){if(!pattern5.test(key0)){const err4 = {instancePath,schemaPath:"#/propertyNames/else/allOf/0/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z_][A-Za-z0-9_-]*$"},message:"must match pattern \""+"^[A-Za-z_][A-Za-z0-9_-]*$"+"\"",schema:"^[A-Za-z_][A-Za-z0-9_-]*$",parentSchema:schema31.propertyNames.else.allOf[0],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(!((((key0 === "edges") || (key0 === "external_edges")) || (key0 === "meta")) || (key0 === "nodes"))){const err5 = {instancePath,schemaPath:"#/propertyNames/else/allOf/1/enum",keyword:"enum",params:{allowedValues: schema31.propertyNames.else.allOf[1].enum},message:"must be equal to one of the allowed values",schema:schema31.propertyNames.else.allOf[1].enum,parentSchema:schema31.propertyNames.else.allOf[1],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}var _valid0 = _errs4 === errors;valid1 = _valid0;}if(!valid1){const err6 = {instancePath,schemaPath:"#/propertyNames/if",keyword:"if",params:{failingKeyword: "else"},message:"must match \"else\" schema",schema:schema31.propertyNames.if,parentSchema:schema31.propertyNames,data:key0,propertyName:key0};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}var valid0 = _errs1 === errors;if(!valid0){const err7 = {instancePath,schemaPath:"#/propertyNames",keyword:"propertyNames",params:{propertyName: key0},message:"property name must be valid",schema:schema31.propertyNames,parentSchema:schema31,data};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.meta !== undefined){if(!(validate21(data.meta, {instancePath:instancePath+"/meta",parentData:data,parentDataProperty:"meta",rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate21.errors : vErrors.concat(validate21.errors);errors = vErrors.length;}}if(data.nodes !== undefined){let data1 = data.nodes;if(Array.isArray(data1)){const len0 = data1.length;for(let i0=0; i0<len0; i0++){if(!(validate23(data1[i0], {instancePath:instancePath+"/nodes/" + i0,parentData:data1,parentDataProperty:i0,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate23.errors : vErrors.concat(validate23.errors);errors = vErrors.length;}}}else {const err8 = {instancePath:instancePath+"/nodes",schemaPath:"#/properties/nodes/type",keyword:"type",params:{type: "array"},message:"must be array",schema:schema31.properties.nodes.type,parentSchema:schema31.properties.nodes,data:data1};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data.edges !== undefined){let data3 = data.edges;if(Array.isArray(data3)){const len1 = data3.length;for(let i1=0; i1<len1; i1++){if(!(validate25(data3[i1], {instancePath:instancePath+"/edges/" + i1,parentData:data3,parentDataProperty:i1,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate25.errors : vErrors.concat(validate25.errors);errors = vErrors.length;}}}else {const err9 = {instancePath:instancePath+"/edges",schemaPath:"#/properties/edges/type",keyword:"type",params:{type: "array"},message:"must be array",schema:schema31.properties.edges.type,parentSchema:schema31.properties.edges,data:data3};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}if(data.external_edges !== undefined){let data5 = data.external_edges;if(Array.isArray(data5)){const len2 = data5.length;for(let i2=0; i2<len2; i2++){if(!(validate27(data5[i2], {instancePath:instancePath+"/external_edges/" + i2,parentData:data5,parentDataProperty:i2,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate27.errors : vErrors.concat(validate27.errors);errors = vErrors.length;}}}else {const err10 = {instancePath:instancePath+"/external_edges",schemaPath:"#/properties/external_edges/type",keyword:"type",params:{type: "array"},message:"must be array",schema:schema31.properties.external_edges.type,parentSchema:schema31.properties.external_edges,data:data5};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}}else {const err11 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema31.type,parentSchema:schema31,data};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}validate20.errors = vErrors;return errors === 0;}validate20.evaluated = {"props":{"meta":true,"nodes":true,"edges":true,"external_edges":true},"dynamicProps":false,"dynamicItems":false};
|
|
1
|
+
"use strict";export const validate = validate20;export default validate20;const schema31 = {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"urn:kg-ssot:spec:kg-contract-v4.schema.json","title":"kg.yaml — contrato v4, nível MUST","description":"O contrato v4 do .kg.yaml, nível MUST (reprova), o vigente (substitui o v3). É o v3 com três promoções a MUST. (1) Proveniência estruturada: nó confirmed ou PROD exige provenance com source, locator e method (form.required.node.provenance), que no v3 só alertava; status unverifiable não exige, mesmo em PROD, porque é o destino do nó sem fonte recuperável. (2) Fonte que não é placeholder: provenance.source não pode ser placeholder: só espaço, ou um destes sozinho, sem distinguir maiúscula e com pontuação final (. ou :) e espaço em volta (inclusive NBSP, espaço ideográfico, BOM e espaço de largura zero) ignorados: desconhecida, desconhecido, unknown, n/a, n / a, na, n.a., none, null, sem fonte, tbd, um ou mais hífens, travessão, meia-risca, ?. A regra é um not+pattern sem lookahead, portável a leitores RE2: form.pattern.node.provenance.source. O vazio segue form.range.node.provenance.source, como no v3. Origem que é uma pessoa ou sessão recuperável é fonte válida, com method de testemunho. (3) Política de extensão: chave desconhecida sem o prefixo x_ no topo, no meta, no nó e na aresta reprova (form.unknown-key.<escopo>.<chave>), com a mesma lista de chaves conhecidas que o SHOULD v3 usava; nome sem x_ que nem é slug reprova como form.pattern.<escopo>.key. Chave x_ segue livre, e x_ com nome que não é slug só alerta. A chave on da aresta segue na lista porque já reprova como yaml.forbidden-key-on. Dentro de provenance, a chave desconhecida segue SHOULD. O resto é o v3: escrito à mão em JSON Schema 2020-12; PROD sem verified_at é SHOULD e o gatilho de TRANSITIONS é trigger; narrative no nó, note e purpose no meta, data no calendário (format: date é ASSERÇÃO) e .nan ou .inf reprovando como tipo; provenance, quando presente, com os três campos não vazios, e provenance: null reprova. O par SHOULD é kg-contract-v4.should.schema.json; as regras de perfil YAML (chave on proibida, chave duplicada, documento único) são do leitor, porque o JSON não as vê. No v4.3 entra external_edges, opcional, no topo: arestas entre grafos com uma ponta externa <caminho>#<id> e a outra local (ou o grafo inteiro, com from ausente), nos tipos SUPERSEDES, CONSTRAINS, SUPPORTS, REFUTES, TRACES_TO e DEPENDS_ON. A ponta local tem de existir (integrity.dangling-external-local); com o corpus, o arquivo e o id da ponta externa também (integrity.dangling-external). A chave é opcional: um grafo que não a usa tem o mesmo veredito do v4.2. No v4.5 entra a chave verified_scope, opcional: o alcance do que o verified_at conferiu. O valor é julgado pelo SHOULD (o enum fato, mecanismo, nenhum), como a provenance.locality. No v4.6 entram duas regras do leitor, que o JSON não vê: a linha de continuação de um texto entre aspas tem de ser mais indentada que o mapa ou a lista que o contém (menos que isso é parse.yaml-error), e o \\r\\n e o \\r sozinho são quebra de linha. Elas entram aqui para mover a identidade do contrato que o gate guarda. No v4.7, a ponta externa das external_edges pode ser também um .kg.json (<caminho>.kg.json#<id>), o formato JSON do mesmo modelo, e o corpus que confere a ponta lê os dois formatos. É ampliação: nada que passava reprova. No v4.8 entram três chaves opcionais do nó, no eixo da verificação: reverify_every (a cadência, em duração ISO 8601 só com data, como P3M ou P1Y), reverify_on (o gatilho por evento, em texto) e retain_for (por quanto tempo a evidência tem de ser guardada, na mesma duração). O valor é julgado pelo SHOULD, e o vencimento (verified_at somado ao reverify_every) nunca entra no veredito: sai num relatório com data explícita. O owner, que já existia, é um papel (quem responde pelo nó), não uma pessoa. No v4.10, três pontos do perfil YAML em que os leitores divergiam, nenhum presente em grafo real: a ordem dos erros segue o documento (a chave repetida antes de uma âncora repetida ou de um alias sem âncora dá parse.duplicate-key), a linha vazia depois de uma quebra escapada entre aspas duplas vira \\n, como pede a especificação, e o BOM no começo do stream não conta como coluna. Nenhum veredito do leitor de referência muda.","type":"object","required":["meta","nodes","edges"],"properties":{"meta":{"$ref":"#/$defs/meta"},"nodes":{"type":"array","items":{"$ref":"#/$defs/node"}},"edges":{"type":"array","items":{"$ref":"#/$defs/edge"}},"external_edges":{"type":"array","items":{"$ref":"#/$defs/externalEdge"}}},"$defs":{"date":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$","format":"date"},"partialDate":{"type":"string","pattern":"^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})(-(0[1-9]|1[0-2])(-[0-9]{2})?)?$","if":{"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"then":{"format":"date"}},"nodeId":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]*$"},"layer":{"enum":["audit","domain"]},"meta":{"type":"object","required":["schema_version","id"],"properties":{"schema_version":{"const":"1"},"id":{"type":"string","minLength":1},"baseline":{"$ref":"#/$defs/date"},"date":{"$ref":"#/$defs/date"},"review_after":{"$ref":"#/$defs/date"},"layer":{"$ref":"#/$defs/layer"},"note":{"type":"string"},"purpose":{"type":"string"}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["baseline","date","id","layer","note","purpose","review_after","schema_version"]}]}}},"node":{"type":"object","required":["id","node_type","plane","status","impact","confidence","label"],"properties":{"id":{"$ref":"#/$defs/nodeId"},"node_type":{"enum":["entity","claim","decision","question","evidence","artifact","state","event","rule","invariant","policy"]},"layer":{"$ref":"#/$defs/layer"},"plane":{"enum":["DEV","PROD"]},"status":{"enum":["open","confirmed","drifted","unverifiable","refuted","superseded","done"]},"impact":{"type":"integer","minimum":1,"maximum":5},"confidence":{"type":"number","minimum":0,"maximum":1},"label":{"type":"string","minLength":1},"trace":{"type":"string"},"verified_at":{"$ref":"#/$defs/date"},"verified_against":{"type":"string"},"verified_scope":{},"reverify_every":{},"reverify_on":{},"retain_for":{},"valid_from":{"$ref":"#/$defs/partialDate"},"source_tier":{"type":"integer","minimum":1,"maximum":10},"source_kind":{"type":"string"},"owner":{"type":"string"},"drive_kind":{"type":"string"},"evidence_class":{"type":"string"},"sealed_by":{"type":"string"},"sealed_at":{"type":"string"},"narrative":{"type":"string"},"provenance":{"$ref":"#/$defs/provenance"}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["confidence","drive_kind","evidence_class","id","impact","label","layer","narrative","node_type","owner","plane","provenance","retain_for","reverify_every","reverify_on","sealed_at","sealed_by","source_kind","source_tier","status","trace","valid_from","verified_against","verified_at","verified_scope"]}]}},"if":{"anyOf":[{"properties":{"status":{"const":"confirmed"}},"required":["status"]},{"properties":{"plane":{"const":"PROD"}},"required":["plane"]}],"not":{"properties":{"status":{"const":"unverifiable"}},"required":["status"]}},"then":{"required":["provenance"]}},"edge":{"type":"object","required":["from","to","edge_type"],"properties":{"from":{"$ref":"#/$defs/nodeId"},"to":{"$ref":"#/$defs/nodeId"},"edge_type":{"enum":["SUPPORTS","REFUTES","SUPERSEDES","CAUSES","DEPENDS_ON","TRACES_TO","CONSTRAINS","HAS_STATE","TRANSITIONS","EMITS","READS","WRITES"]},"label":{"type":"string"},"trigger":{"$ref":"#/$defs/nodeId"}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["edge_type","from","label","on","to","trigger"]}]}}},"provenance":{"type":"object","required":["source","locator","method"],"properties":{"source":{"type":"string","minLength":1,"not":{"type":"string","pattern":"^(?:[ \t\n\r ]+|[ \t\n\r ]*(?:[Dd][Ee][Ss][Cc][Oo][Nn][Hh][Ee][Cc][Ii][Dd][AaOo]|[Uu][Nn][Kk][Nn][Oo][Ww][Nn]|[Nn] ?/? ?[Aa]|[Nn]\\.[Aa]\\.?|[Nn][Oo][Nn][Ee]|[Nn][Uu][Ll][Ll]|[Ss][Ee][Mm] [Ff][Oo][Nn][Tt][Ee]|[Tt][Bb][Dd]|-+|—|–|\\?)[.:]?[ \t\n\r ]*)$"}},"locator":{"type":"string","minLength":1},"method":{"type":"string","minLength":1}}},"externalRef":{"type":"string","pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$","description":"Referência a um nó de outro grafo do mesmo repo: <caminho relativo à raiz do repo>#<id>. Os segmentos do caminho começam por letra, dígito ou _ e só levam [A-Za-z0-9_.-]: sem / inicial, sem . ou .., sem \\, sem :."},"externalEdge":{"description":"Aresta entre grafos (v4.3): exatamente uma ponta externa (<caminho>#<id>), a outra um id deste arquivo; from ausente vale o grafo inteiro. Só os tipos da camada audit.","type":"object","required":["to","edge_type"],"properties":{"from":{"type":"string"},"to":{"type":"string"},"edge_type":{"enum":["SUPERSEDES","CONSTRAINS","SUPPORTS","REFUTES","TRACES_TO","DEPENDS_ON"]},"label":{"type":"string"}},"if":{"required":["from"],"properties":{"from":{"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$"}}},"then":{"properties":{"to":{"$ref":"#/$defs/nodeId"}}},"else":{"properties":{"from":{"$ref":"#/$defs/nodeId"},"to":{"$ref":"#/$defs/externalRef"}}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["edge_type","from","label","to"]}]}}}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["edges","external_edges","meta","nodes"]}]}}};const pattern4 = new RegExp("^x_", "u");const pattern5 = new RegExp("^[A-Za-z_][A-Za-z0-9_-]*$", "u");const schema32 = {"type":"object","required":["schema_version","id"],"properties":{"schema_version":{"const":"1"},"id":{"type":"string","minLength":1},"baseline":{"$ref":"#/$defs/date"},"date":{"$ref":"#/$defs/date"},"review_after":{"$ref":"#/$defs/date"},"layer":{"$ref":"#/$defs/layer"},"note":{"type":"string"},"purpose":{"type":"string"}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["baseline","date","id","layer","note","purpose","review_after","schema_version"]}]}}};const schema33 = {"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$","format":"date"};const schema36 = {"enum":["audit","domain"]};const pattern8 = new RegExp("^[0-9]{4}-[0-9]{2}-[0-9]{2}$", "u");import func1_mod from "ajv/dist/runtime/ucs2length.js";const func1 = func1_mod.default;const formats0 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;function validate21(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate21.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.schema_version === undefined){const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "schema_version"},message:"must have required property '"+"schema_version"+"'",schema:schema32.required,parentSchema:schema32,data};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.id === undefined){const err1 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "id"},message:"must have required property '"+"id"+"'",schema:schema32.required,parentSchema:schema32,data};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}for(const key0 in data){const _errs1 = errors;const _errs2 = errors;let valid1 = true;const _errs3 = errors;if(typeof key0 === "string"){if(!pattern4.test(key0)){const err2 = {};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}var _valid0 = _errs3 === errors;errors = _errs2;if(vErrors !== null){if(_errs2){vErrors.length = _errs2;}else {vErrors = null;}}if(!_valid0){const _errs4 = errors;if(typeof key0 === "string"){if(!pattern5.test(key0)){const err3 = {instancePath,schemaPath:"#/propertyNames/else/allOf/0/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z_][A-Za-z0-9_-]*$"},message:"must match pattern \""+"^[A-Za-z_][A-Za-z0-9_-]*$"+"\"",schema:"^[A-Za-z_][A-Za-z0-9_-]*$",parentSchema:schema32.propertyNames.else.allOf[0],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}if(!((((((((key0 === "baseline") || (key0 === "date")) || (key0 === "id")) || (key0 === "layer")) || (key0 === "note")) || (key0 === "purpose")) || (key0 === "review_after")) || (key0 === "schema_version"))){const err4 = {instancePath,schemaPath:"#/propertyNames/else/allOf/1/enum",keyword:"enum",params:{allowedValues: schema32.propertyNames.else.allOf[1].enum},message:"must be equal to one of the allowed values",schema:schema32.propertyNames.else.allOf[1].enum,parentSchema:schema32.propertyNames.else.allOf[1],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}var _valid0 = _errs4 === errors;valid1 = _valid0;}if(!valid1){const err5 = {instancePath,schemaPath:"#/propertyNames/if",keyword:"if",params:{failingKeyword: "else"},message:"must match \"else\" schema",schema:schema32.propertyNames.if,parentSchema:schema32.propertyNames,data:key0,propertyName:key0};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}var valid0 = _errs1 === errors;if(!valid0){const err6 = {instancePath,schemaPath:"#/propertyNames",keyword:"propertyNames",params:{propertyName: key0},message:"property name must be valid",schema:schema32.propertyNames,parentSchema:schema32,data};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.schema_version !== undefined){let data0 = data.schema_version;if("1" !== data0){const err7 = {instancePath:instancePath+"/schema_version",schemaPath:"#/properties/schema_version/const",keyword:"const",params:{allowedValue: "1"},message:"must be equal to constant",schema:"1",parentSchema:schema32.properties.schema_version,data:data0};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.id !== undefined){let data1 = data.id;if(typeof data1 === "string"){if(func1(data1) < 1){const err8 = {instancePath:instancePath+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema32.properties.id,data:data1};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}else {const err9 = {instancePath:instancePath+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema32.properties.id.type,parentSchema:schema32.properties.id,data:data1};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}if(data.baseline !== undefined){let data2 = data.baseline;if(typeof data2 === "string"){if(!pattern8.test(data2)){const err10 = {instancePath:instancePath+"/baseline",schemaPath:"#/$defs/date/pattern",keyword:"pattern",params:{pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},message:"must match pattern \""+"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"+"\"",schema:"^[0-9]{4}-[0-9]{2}-[0-9]{2}$",parentSchema:schema33,data:data2};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}if(!(formats0.test(data2))){const err11 = {instancePath:instancePath+"/baseline",schemaPath:"#/$defs/date/format",keyword:"format",params:{format: "date"},message:"must match format \""+"date"+"\"",schema:"date",parentSchema:schema33,data:data2};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}else {const err12 = {instancePath:instancePath+"/baseline",schemaPath:"#/$defs/date/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema33.type,parentSchema:schema33,data:data2};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}if(data.date !== undefined){let data3 = data.date;if(typeof data3 === "string"){if(!pattern8.test(data3)){const err13 = {instancePath:instancePath+"/date",schemaPath:"#/$defs/date/pattern",keyword:"pattern",params:{pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},message:"must match pattern \""+"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"+"\"",schema:"^[0-9]{4}-[0-9]{2}-[0-9]{2}$",parentSchema:schema33,data:data3};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}if(!(formats0.test(data3))){const err14 = {instancePath:instancePath+"/date",schemaPath:"#/$defs/date/format",keyword:"format",params:{format: "date"},message:"must match format \""+"date"+"\"",schema:"date",parentSchema:schema33,data:data3};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}else {const err15 = {instancePath:instancePath+"/date",schemaPath:"#/$defs/date/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema33.type,parentSchema:schema33,data:data3};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(data.review_after !== undefined){let data4 = data.review_after;if(typeof data4 === "string"){if(!pattern8.test(data4)){const err16 = {instancePath:instancePath+"/review_after",schemaPath:"#/$defs/date/pattern",keyword:"pattern",params:{pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},message:"must match pattern \""+"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"+"\"",schema:"^[0-9]{4}-[0-9]{2}-[0-9]{2}$",parentSchema:schema33,data:data4};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}if(!(formats0.test(data4))){const err17 = {instancePath:instancePath+"/review_after",schemaPath:"#/$defs/date/format",keyword:"format",params:{format: "date"},message:"must match format \""+"date"+"\"",schema:"date",parentSchema:schema33,data:data4};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}else {const err18 = {instancePath:instancePath+"/review_after",schemaPath:"#/$defs/date/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema33.type,parentSchema:schema33,data:data4};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}if(data.layer !== undefined){let data5 = data.layer;if(!((data5 === "audit") || (data5 === "domain"))){const err19 = {instancePath:instancePath+"/layer",schemaPath:"#/$defs/layer/enum",keyword:"enum",params:{allowedValues: schema36.enum},message:"must be equal to one of the allowed values",schema:schema36.enum,parentSchema:schema36,data:data5};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}if(data.note !== undefined){let data6 = data.note;if(typeof data6 !== "string"){const err20 = {instancePath:instancePath+"/note",schemaPath:"#/properties/note/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema32.properties.note.type,parentSchema:schema32.properties.note,data:data6};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}}if(data.purpose !== undefined){let data7 = data.purpose;if(typeof data7 !== "string"){const err21 = {instancePath:instancePath+"/purpose",schemaPath:"#/properties/purpose/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema32.properties.purpose.type,parentSchema:schema32.properties.purpose,data:data7};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}}else {const err22 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema32.type,parentSchema:schema32,data};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}validate21.errors = vErrors;return errors === 0;}validate21.evaluated = {"props":{"schema_version":true,"id":true,"baseline":true,"date":true,"review_after":true,"layer":true,"note":true,"purpose":true},"dynamicProps":false,"dynamicItems":false};const schema37 = {"type":"object","required":["id","node_type","plane","status","impact","confidence","label"],"properties":{"id":{"$ref":"#/$defs/nodeId"},"node_type":{"enum":["entity","claim","decision","question","evidence","artifact","state","event","rule","invariant","policy"]},"layer":{"$ref":"#/$defs/layer"},"plane":{"enum":["DEV","PROD"]},"status":{"enum":["open","confirmed","drifted","unverifiable","refuted","superseded","done"]},"impact":{"type":"integer","minimum":1,"maximum":5},"confidence":{"type":"number","minimum":0,"maximum":1},"label":{"type":"string","minLength":1},"trace":{"type":"string"},"verified_at":{"$ref":"#/$defs/date"},"verified_against":{"type":"string"},"verified_scope":{},"reverify_every":{},"reverify_on":{},"retain_for":{},"valid_from":{"$ref":"#/$defs/partialDate"},"source_tier":{"type":"integer","minimum":1,"maximum":10},"source_kind":{"type":"string"},"owner":{"type":"string"},"drive_kind":{"type":"string"},"evidence_class":{"type":"string"},"sealed_by":{"type":"string"},"sealed_at":{"type":"string"},"narrative":{"type":"string"},"provenance":{"$ref":"#/$defs/provenance"}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["confidence","drive_kind","evidence_class","id","impact","label","layer","narrative","node_type","owner","plane","provenance","retain_for","reverify_every","reverify_on","sealed_at","sealed_by","source_kind","source_tier","status","trace","valid_from","verified_against","verified_at","verified_scope"]}]}},"if":{"anyOf":[{"properties":{"status":{"const":"confirmed"}},"required":["status"]},{"properties":{"plane":{"const":"PROD"}},"required":["plane"]}],"not":{"properties":{"status":{"const":"unverifiable"}},"required":["status"]}},"then":{"required":["provenance"]}};const schema38 = {"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]*$"};const schema41 = {"type":"string","pattern":"^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})(-(0[1-9]|1[0-2])(-[0-9]{2})?)?$","if":{"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},"then":{"format":"date"}};const schema42 = {"type":"object","required":["source","locator","method"],"properties":{"source":{"type":"string","minLength":1,"not":{"type":"string","pattern":"^(?:[ \t\n\r ]+|[ \t\n\r ]*(?:[Dd][Ee][Ss][Cc][Oo][Nn][Hh][Ee][Cc][Ii][Dd][AaOo]|[Uu][Nn][Kk][Nn][Oo][Ww][Nn]|[Nn] ?/? ?[Aa]|[Nn]\\.[Aa]\\.?|[Nn][Oo][Nn][Ee]|[Nn][Uu][Ll][Ll]|[Ss][Ee][Mm] [Ff][Oo][Nn][Tt][Ee]|[Tt][Bb][Dd]|-+|—|–|\\?)[.:]?[ \t\n\r ]*)$"}},"locator":{"type":"string","minLength":1},"method":{"type":"string","minLength":1}}};const pattern13 = new RegExp("^[A-Za-z][A-Za-z0-9_]*$", "u");const pattern16 = new RegExp("^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})(-(0[1-9]|1[0-2])(-[0-9]{2})?)?$", "u");const pattern17 = new RegExp("^(?:[ \t\n\r ]+|[ \t\n\r ]*(?:[Dd][Ee][Ss][Cc][Oo][Nn][Hh][Ee][Cc][Ii][Dd][AaOo]|[Uu][Nn][Kk][Nn][Oo][Ww][Nn]|[Nn] ?/? ?[Aa]|[Nn]\\.[Aa]\\.?|[Nn][Oo][Nn][Ee]|[Nn][Uu][Ll][Ll]|[Ss][Ee][Mm] [Ff][Oo][Nn][Tt][Ee]|[Tt][Bb][Dd]|-+|—|–|\\?)[.:]?[ \t\n\r ]*)$", "u");function validate23(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate23.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}const _errs1 = errors;let valid0 = true;const _errs2 = errors;const _errs3 = errors;const _errs4 = errors;if(data && typeof data == "object" && !Array.isArray(data)){let missing0;if((data.status === undefined) && (missing0 = "status")){const err0 = {};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}else {if(data.status !== undefined){if("unverifiable" !== data.status){const err1 = {};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}}}var valid1 = _errs4 === errors;if(valid1){const err2 = {};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}else {errors = _errs3;if(vErrors !== null){if(_errs3){vErrors.length = _errs3;}else {vErrors = null;}}const _errs6 = errors;let valid3 = false;const _errs7 = errors;if(data && typeof data == "object" && !Array.isArray(data)){let missing1;if((data.status === undefined) && (missing1 = "status")){const err3 = {};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}else {if(data.status !== undefined){if("confirmed" !== data.status){const err4 = {};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}}}var _valid1 = _errs7 === errors;valid3 = valid3 || _valid1;if(_valid1){var props0 = {};props0.status = true;}const _errs9 = errors;if(data && typeof data == "object" && !Array.isArray(data)){let missing2;if((data.plane === undefined) && (missing2 = "plane")){const err5 = {};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}else {if(data.plane !== undefined){if("PROD" !== data.plane){const err6 = {};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}}}var _valid1 = _errs9 === errors;valid3 = valid3 || _valid1;if(_valid1){if(props0 !== true){props0 = props0 || {};props0.plane = true;}}if(!valid3){const err7 = {};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}else {errors = _errs6;if(vErrors !== null){if(_errs6){vErrors.length = _errs6;}else {vErrors = null;}}}}var _valid0 = _errs2 === errors;errors = _errs1;if(vErrors !== null){if(_errs1){vErrors.length = _errs1;}else {vErrors = null;}}if(_valid0){const _errs11 = errors;if(data && typeof data == "object" && !Array.isArray(data)){if(data.provenance === undefined){const err8 = {instancePath,schemaPath:"#/then/required",keyword:"required",params:{missingProperty: "provenance"},message:"must have required property '"+"provenance"+"'",schema:schema37.then.required,parentSchema:schema37.then,data};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}var _valid0 = _errs11 === errors;valid0 = _valid0;}if(!valid0){const err9 = {instancePath,schemaPath:"#/if",keyword:"if",params:{failingKeyword: "then"},message:"must match \"then\" schema",schema:schema37.if,parentSchema:schema37,data};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.id === undefined){const err10 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "id"},message:"must have required property '"+"id"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}if(data.node_type === undefined){const err11 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "node_type"},message:"must have required property '"+"node_type"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}if(data.plane === undefined){const err12 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "plane"},message:"must have required property '"+"plane"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}if(data.status === undefined){const err13 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "status"},message:"must have required property '"+"status"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}if(data.impact === undefined){const err14 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "impact"},message:"must have required property '"+"impact"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}if(data.confidence === undefined){const err15 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "confidence"},message:"must have required property '"+"confidence"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}if(data.label === undefined){const err16 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "label"},message:"must have required property '"+"label"+"'",schema:schema37.required,parentSchema:schema37,data};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}for(const key0 in data){const _errs12 = errors;const _errs13 = errors;let valid7 = true;const _errs14 = errors;if(typeof key0 === "string"){if(!pattern4.test(key0)){const err17 = {};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}var _valid2 = _errs14 === errors;errors = _errs13;if(vErrors !== null){if(_errs13){vErrors.length = _errs13;}else {vErrors = null;}}if(!_valid2){const _errs15 = errors;if(typeof key0 === "string"){if(!pattern5.test(key0)){const err18 = {instancePath,schemaPath:"#/propertyNames/else/allOf/0/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z_][A-Za-z0-9_-]*$"},message:"must match pattern \""+"^[A-Za-z_][A-Za-z0-9_-]*$"+"\"",schema:"^[A-Za-z_][A-Za-z0-9_-]*$",parentSchema:schema37.propertyNames.else.allOf[0],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}if(!(((((((((((((((((((((((((key0 === "confidence") || (key0 === "drive_kind")) || (key0 === "evidence_class")) || (key0 === "id")) || (key0 === "impact")) || (key0 === "label")) || (key0 === "layer")) || (key0 === "narrative")) || (key0 === "node_type")) || (key0 === "owner")) || (key0 === "plane")) || (key0 === "provenance")) || (key0 === "retain_for")) || (key0 === "reverify_every")) || (key0 === "reverify_on")) || (key0 === "sealed_at")) || (key0 === "sealed_by")) || (key0 === "source_kind")) || (key0 === "source_tier")) || (key0 === "status")) || (key0 === "trace")) || (key0 === "valid_from")) || (key0 === "verified_against")) || (key0 === "verified_at")) || (key0 === "verified_scope"))){const err19 = {instancePath,schemaPath:"#/propertyNames/else/allOf/1/enum",keyword:"enum",params:{allowedValues: schema37.propertyNames.else.allOf[1].enum},message:"must be equal to one of the allowed values",schema:schema37.propertyNames.else.allOf[1].enum,parentSchema:schema37.propertyNames.else.allOf[1],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}var _valid2 = _errs15 === errors;valid7 = _valid2;}if(!valid7){const err20 = {instancePath,schemaPath:"#/propertyNames/if",keyword:"if",params:{failingKeyword: "else"},message:"must match \"else\" schema",schema:schema37.propertyNames.if,parentSchema:schema37.propertyNames,data:key0,propertyName:key0};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}var valid6 = _errs12 === errors;if(!valid6){const err21 = {instancePath,schemaPath:"#/propertyNames",keyword:"propertyNames",params:{propertyName: key0},message:"property name must be valid",schema:schema37.propertyNames,parentSchema:schema37,data};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}}if(props0 !== true){props0 = props0 || {};props0.id = true;props0.node_type = true;props0.layer = true;props0.plane = true;props0.status = true;props0.impact = true;props0.confidence = true;props0.label = true;props0.trace = true;props0.verified_at = true;props0.verified_against = true;props0.verified_scope = true;props0.reverify_every = true;props0.reverify_on = true;props0.retain_for = true;props0.valid_from = true;props0.source_tier = true;props0.source_kind = true;props0.owner = true;props0.drive_kind = true;props0.evidence_class = true;props0.sealed_by = true;props0.sealed_at = true;props0.narrative = true;props0.provenance = true;}if(data.id !== undefined){let data3 = data.id;if(typeof data3 === "string"){if(!pattern13.test(data3)){const err22 = {instancePath:instancePath+"/id",schemaPath:"#/$defs/nodeId/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema38,data:data3};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}else {const err23 = {instancePath:instancePath+"/id",schemaPath:"#/$defs/nodeId/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema38.type,parentSchema:schema38,data:data3};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data.node_type !== undefined){let data4 = data.node_type;if(!(((((((((((data4 === "entity") || (data4 === "claim")) || (data4 === "decision")) || (data4 === "question")) || (data4 === "evidence")) || (data4 === "artifact")) || (data4 === "state")) || (data4 === "event")) || (data4 === "rule")) || (data4 === "invariant")) || (data4 === "policy"))){const err24 = {instancePath:instancePath+"/node_type",schemaPath:"#/properties/node_type/enum",keyword:"enum",params:{allowedValues: schema37.properties.node_type.enum},message:"must be equal to one of the allowed values",schema:schema37.properties.node_type.enum,parentSchema:schema37.properties.node_type,data:data4};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}if(data.layer !== undefined){let data5 = data.layer;if(!((data5 === "audit") || (data5 === "domain"))){const err25 = {instancePath:instancePath+"/layer",schemaPath:"#/$defs/layer/enum",keyword:"enum",params:{allowedValues: schema36.enum},message:"must be equal to one of the allowed values",schema:schema36.enum,parentSchema:schema36,data:data5};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}if(data.plane !== undefined){let data6 = data.plane;if(!((data6 === "DEV") || (data6 === "PROD"))){const err26 = {instancePath:instancePath+"/plane",schemaPath:"#/properties/plane/enum",keyword:"enum",params:{allowedValues: schema37.properties.plane.enum},message:"must be equal to one of the allowed values",schema:schema37.properties.plane.enum,parentSchema:schema37.properties.plane,data:data6};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}if(data.status !== undefined){let data7 = data.status;if(!(((((((data7 === "open") || (data7 === "confirmed")) || (data7 === "drifted")) || (data7 === "unverifiable")) || (data7 === "refuted")) || (data7 === "superseded")) || (data7 === "done"))){const err27 = {instancePath:instancePath+"/status",schemaPath:"#/properties/status/enum",keyword:"enum",params:{allowedValues: schema37.properties.status.enum},message:"must be equal to one of the allowed values",schema:schema37.properties.status.enum,parentSchema:schema37.properties.status,data:data7};if(vErrors === null){vErrors = [err27];}else {vErrors.push(err27);}errors++;}}if(data.impact !== undefined){let data8 = data.impact;if(!((typeof data8 == "number") && (!(data8 % 1) && !isNaN(data8)))){const err28 = {instancePath:instancePath+"/impact",schemaPath:"#/properties/impact/type",keyword:"type",params:{type: "integer"},message:"must be integer",schema:schema37.properties.impact.type,parentSchema:schema37.properties.impact,data:data8};if(vErrors === null){vErrors = [err28];}else {vErrors.push(err28);}errors++;}if(typeof data8 == "number"){if(data8 > 5 || isNaN(data8)){const err29 = {instancePath:instancePath+"/impact",schemaPath:"#/properties/impact/maximum",keyword:"maximum",params:{comparison: "<=", limit: 5},message:"must be <= 5",schema:5,parentSchema:schema37.properties.impact,data:data8};if(vErrors === null){vErrors = [err29];}else {vErrors.push(err29);}errors++;}if(data8 < 1 || isNaN(data8)){const err30 = {instancePath:instancePath+"/impact",schemaPath:"#/properties/impact/minimum",keyword:"minimum",params:{comparison: ">=", limit: 1},message:"must be >= 1",schema:1,parentSchema:schema37.properties.impact,data:data8};if(vErrors === null){vErrors = [err30];}else {vErrors.push(err30);}errors++;}}}if(data.confidence !== undefined){let data9 = data.confidence;if(typeof data9 == "number"){if(data9 > 1 || isNaN(data9)){const err31 = {instancePath:instancePath+"/confidence",schemaPath:"#/properties/confidence/maximum",keyword:"maximum",params:{comparison: "<=", limit: 1},message:"must be <= 1",schema:1,parentSchema:schema37.properties.confidence,data:data9};if(vErrors === null){vErrors = [err31];}else {vErrors.push(err31);}errors++;}if(data9 < 0 || isNaN(data9)){const err32 = {instancePath:instancePath+"/confidence",schemaPath:"#/properties/confidence/minimum",keyword:"minimum",params:{comparison: ">=", limit: 0},message:"must be >= 0",schema:0,parentSchema:schema37.properties.confidence,data:data9};if(vErrors === null){vErrors = [err32];}else {vErrors.push(err32);}errors++;}}else {const err33 = {instancePath:instancePath+"/confidence",schemaPath:"#/properties/confidence/type",keyword:"type",params:{type: "number"},message:"must be number",schema:schema37.properties.confidence.type,parentSchema:schema37.properties.confidence,data:data9};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}if(data.label !== undefined){let data10 = data.label;if(typeof data10 === "string"){if(func1(data10) < 1){const err34 = {instancePath:instancePath+"/label",schemaPath:"#/properties/label/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema37.properties.label,data:data10};if(vErrors === null){vErrors = [err34];}else {vErrors.push(err34);}errors++;}}else {const err35 = {instancePath:instancePath+"/label",schemaPath:"#/properties/label/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.label.type,parentSchema:schema37.properties.label,data:data10};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}if(data.trace !== undefined){let data11 = data.trace;if(typeof data11 !== "string"){const err36 = {instancePath:instancePath+"/trace",schemaPath:"#/properties/trace/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.trace.type,parentSchema:schema37.properties.trace,data:data11};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}}if(data.verified_at !== undefined){let data12 = data.verified_at;if(typeof data12 === "string"){if(!pattern8.test(data12)){const err37 = {instancePath:instancePath+"/verified_at",schemaPath:"#/$defs/date/pattern",keyword:"pattern",params:{pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"},message:"must match pattern \""+"^[0-9]{4}-[0-9]{2}-[0-9]{2}$"+"\"",schema:"^[0-9]{4}-[0-9]{2}-[0-9]{2}$",parentSchema:schema33,data:data12};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}if(!(formats0.test(data12))){const err38 = {instancePath:instancePath+"/verified_at",schemaPath:"#/$defs/date/format",keyword:"format",params:{format: "date"},message:"must match format \""+"date"+"\"",schema:"date",parentSchema:schema33,data:data12};if(vErrors === null){vErrors = [err38];}else {vErrors.push(err38);}errors++;}}else {const err39 = {instancePath:instancePath+"/verified_at",schemaPath:"#/$defs/date/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema33.type,parentSchema:schema33,data:data12};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}}if(data.verified_against !== undefined){let data13 = data.verified_against;if(typeof data13 !== "string"){const err40 = {instancePath:instancePath+"/verified_against",schemaPath:"#/properties/verified_against/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.verified_against.type,parentSchema:schema37.properties.verified_against,data:data13};if(vErrors === null){vErrors = [err40];}else {vErrors.push(err40);}errors++;}}if(data.valid_from !== undefined){let data14 = data.valid_from;const _errs42 = errors;let valid14 = true;const _errs43 = errors;if(typeof data14 === "string"){if(!pattern8.test(data14)){const err41 = {};if(vErrors === null){vErrors = [err41];}else {vErrors.push(err41);}errors++;}}var _valid3 = _errs43 === errors;errors = _errs42;if(vErrors !== null){if(_errs42){vErrors.length = _errs42;}else {vErrors = null;}}if(_valid3){const _errs44 = errors;if(typeof data14 === "string"){if(!(formats0.test(data14))){const err42 = {instancePath:instancePath+"/valid_from",schemaPath:"#/$defs/partialDate/then/format",keyword:"format",params:{format: "date"},message:"must match format \""+"date"+"\"",schema:"date",parentSchema:schema41.then,data:data14};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}var _valid3 = _errs44 === errors;valid14 = _valid3;}if(!valid14){const err43 = {instancePath:instancePath+"/valid_from",schemaPath:"#/$defs/partialDate/if",keyword:"if",params:{failingKeyword: "then"},message:"must match \"then\" schema",schema:schema41.if,parentSchema:schema41,data:data14};if(vErrors === null){vErrors = [err43];}else {vErrors.push(err43);}errors++;}if(typeof data14 === "string"){if(!pattern16.test(data14)){const err44 = {instancePath:instancePath+"/valid_from",schemaPath:"#/$defs/partialDate/pattern",keyword:"pattern",params:{pattern: "^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})(-(0[1-9]|1[0-2])(-[0-9]{2})?)?$"},message:"must match pattern \""+"^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})(-(0[1-9]|1[0-2])(-[0-9]{2})?)?$"+"\"",schema:"^(000[1-9]|00[1-9][0-9]|0[1-9][0-9]{2}|[1-9][0-9]{3})(-(0[1-9]|1[0-2])(-[0-9]{2})?)?$",parentSchema:schema41,data:data14};if(vErrors === null){vErrors = [err44];}else {vErrors.push(err44);}errors++;}}else {const err45 = {instancePath:instancePath+"/valid_from",schemaPath:"#/$defs/partialDate/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema41.type,parentSchema:schema41,data:data14};if(vErrors === null){vErrors = [err45];}else {vErrors.push(err45);}errors++;}}if(data.source_tier !== undefined){let data15 = data.source_tier;if(!((typeof data15 == "number") && (!(data15 % 1) && !isNaN(data15)))){const err46 = {instancePath:instancePath+"/source_tier",schemaPath:"#/properties/source_tier/type",keyword:"type",params:{type: "integer"},message:"must be integer",schema:schema37.properties.source_tier.type,parentSchema:schema37.properties.source_tier,data:data15};if(vErrors === null){vErrors = [err46];}else {vErrors.push(err46);}errors++;}if(typeof data15 == "number"){if(data15 > 10 || isNaN(data15)){const err47 = {instancePath:instancePath+"/source_tier",schemaPath:"#/properties/source_tier/maximum",keyword:"maximum",params:{comparison: "<=", limit: 10},message:"must be <= 10",schema:10,parentSchema:schema37.properties.source_tier,data:data15};if(vErrors === null){vErrors = [err47];}else {vErrors.push(err47);}errors++;}if(data15 < 1 || isNaN(data15)){const err48 = {instancePath:instancePath+"/source_tier",schemaPath:"#/properties/source_tier/minimum",keyword:"minimum",params:{comparison: ">=", limit: 1},message:"must be >= 1",schema:1,parentSchema:schema37.properties.source_tier,data:data15};if(vErrors === null){vErrors = [err48];}else {vErrors.push(err48);}errors++;}}}if(data.source_kind !== undefined){let data16 = data.source_kind;if(typeof data16 !== "string"){const err49 = {instancePath:instancePath+"/source_kind",schemaPath:"#/properties/source_kind/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.source_kind.type,parentSchema:schema37.properties.source_kind,data:data16};if(vErrors === null){vErrors = [err49];}else {vErrors.push(err49);}errors++;}}if(data.owner !== undefined){let data17 = data.owner;if(typeof data17 !== "string"){const err50 = {instancePath:instancePath+"/owner",schemaPath:"#/properties/owner/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.owner.type,parentSchema:schema37.properties.owner,data:data17};if(vErrors === null){vErrors = [err50];}else {vErrors.push(err50);}errors++;}}if(data.drive_kind !== undefined){let data18 = data.drive_kind;if(typeof data18 !== "string"){const err51 = {instancePath:instancePath+"/drive_kind",schemaPath:"#/properties/drive_kind/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.drive_kind.type,parentSchema:schema37.properties.drive_kind,data:data18};if(vErrors === null){vErrors = [err51];}else {vErrors.push(err51);}errors++;}}if(data.evidence_class !== undefined){let data19 = data.evidence_class;if(typeof data19 !== "string"){const err52 = {instancePath:instancePath+"/evidence_class",schemaPath:"#/properties/evidence_class/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.evidence_class.type,parentSchema:schema37.properties.evidence_class,data:data19};if(vErrors === null){vErrors = [err52];}else {vErrors.push(err52);}errors++;}}if(data.sealed_by !== undefined){let data20 = data.sealed_by;if(typeof data20 !== "string"){const err53 = {instancePath:instancePath+"/sealed_by",schemaPath:"#/properties/sealed_by/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.sealed_by.type,parentSchema:schema37.properties.sealed_by,data:data20};if(vErrors === null){vErrors = [err53];}else {vErrors.push(err53);}errors++;}}if(data.sealed_at !== undefined){let data21 = data.sealed_at;if(typeof data21 !== "string"){const err54 = {instancePath:instancePath+"/sealed_at",schemaPath:"#/properties/sealed_at/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.sealed_at.type,parentSchema:schema37.properties.sealed_at,data:data21};if(vErrors === null){vErrors = [err54];}else {vErrors.push(err54);}errors++;}}if(data.narrative !== undefined){let data22 = data.narrative;if(typeof data22 !== "string"){const err55 = {instancePath:instancePath+"/narrative",schemaPath:"#/properties/narrative/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema37.properties.narrative.type,parentSchema:schema37.properties.narrative,data:data22};if(vErrors === null){vErrors = [err55];}else {vErrors.push(err55);}errors++;}}if(data.provenance !== undefined){let data23 = data.provenance;if(data23 && typeof data23 == "object" && !Array.isArray(data23)){if(data23.source === undefined){const err56 = {instancePath:instancePath+"/provenance",schemaPath:"#/$defs/provenance/required",keyword:"required",params:{missingProperty: "source"},message:"must have required property '"+"source"+"'",schema:schema42.required,parentSchema:schema42,data:data23};if(vErrors === null){vErrors = [err56];}else {vErrors.push(err56);}errors++;}if(data23.locator === undefined){const err57 = {instancePath:instancePath+"/provenance",schemaPath:"#/$defs/provenance/required",keyword:"required",params:{missingProperty: "locator"},message:"must have required property '"+"locator"+"'",schema:schema42.required,parentSchema:schema42,data:data23};if(vErrors === null){vErrors = [err57];}else {vErrors.push(err57);}errors++;}if(data23.method === undefined){const err58 = {instancePath:instancePath+"/provenance",schemaPath:"#/$defs/provenance/required",keyword:"required",params:{missingProperty: "method"},message:"must have required property '"+"method"+"'",schema:schema42.required,parentSchema:schema42,data:data23};if(vErrors === null){vErrors = [err58];}else {vErrors.push(err58);}errors++;}if(data23.source !== undefined){let data24 = data23.source;const _errs66 = errors;const _errs67 = errors;if(errors === _errs67){if(typeof data24 === "string"){if(!pattern17.test(data24)){const err59 = {};if(vErrors === null){vErrors = [err59];}else {vErrors.push(err59);}errors++;}}else {const err60 = {};if(vErrors === null){vErrors = [err60];}else {vErrors.push(err60);}errors++;}}var valid17 = _errs67 === errors;if(valid17){const err61 = {instancePath:instancePath+"/provenance/source",schemaPath:"#/$defs/provenance/properties/source/not",keyword:"not",params:{},message:"must NOT be valid",schema:schema42.properties.source.not,parentSchema:schema42.properties.source,data:data24};if(vErrors === null){vErrors = [err61];}else {vErrors.push(err61);}errors++;}else {errors = _errs66;if(vErrors !== null){if(_errs66){vErrors.length = _errs66;}else {vErrors = null;}}}if(typeof data24 === "string"){if(func1(data24) < 1){const err62 = {instancePath:instancePath+"/provenance/source",schemaPath:"#/$defs/provenance/properties/source/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema42.properties.source,data:data24};if(vErrors === null){vErrors = [err62];}else {vErrors.push(err62);}errors++;}}else {const err63 = {instancePath:instancePath+"/provenance/source",schemaPath:"#/$defs/provenance/properties/source/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema42.properties.source.type,parentSchema:schema42.properties.source,data:data24};if(vErrors === null){vErrors = [err63];}else {vErrors.push(err63);}errors++;}}if(data23.locator !== undefined){let data25 = data23.locator;if(typeof data25 === "string"){if(func1(data25) < 1){const err64 = {instancePath:instancePath+"/provenance/locator",schemaPath:"#/$defs/provenance/properties/locator/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema42.properties.locator,data:data25};if(vErrors === null){vErrors = [err64];}else {vErrors.push(err64);}errors++;}}else {const err65 = {instancePath:instancePath+"/provenance/locator",schemaPath:"#/$defs/provenance/properties/locator/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema42.properties.locator.type,parentSchema:schema42.properties.locator,data:data25};if(vErrors === null){vErrors = [err65];}else {vErrors.push(err65);}errors++;}}if(data23.method !== undefined){let data26 = data23.method;if(typeof data26 === "string"){if(func1(data26) < 1){const err66 = {instancePath:instancePath+"/provenance/method",schemaPath:"#/$defs/provenance/properties/method/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema42.properties.method,data:data26};if(vErrors === null){vErrors = [err66];}else {vErrors.push(err66);}errors++;}}else {const err67 = {instancePath:instancePath+"/provenance/method",schemaPath:"#/$defs/provenance/properties/method/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema42.properties.method.type,parentSchema:schema42.properties.method,data:data26};if(vErrors === null){vErrors = [err67];}else {vErrors.push(err67);}errors++;}}}else {const err68 = {instancePath:instancePath+"/provenance",schemaPath:"#/$defs/provenance/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema42.type,parentSchema:schema42,data:data23};if(vErrors === null){vErrors = [err68];}else {vErrors.push(err68);}errors++;}}}else {const err69 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema37.type,parentSchema:schema37,data};if(vErrors === null){vErrors = [err69];}else {vErrors.push(err69);}errors++;}validate23.errors = vErrors;evaluated0.props = props0;return errors === 0;}validate23.evaluated = {"dynamicProps":true,"dynamicItems":false};const schema43 = {"type":"object","required":["from","to","edge_type"],"properties":{"from":{"$ref":"#/$defs/nodeId"},"to":{"$ref":"#/$defs/nodeId"},"edge_type":{"enum":["SUPPORTS","REFUTES","SUPERSEDES","CAUSES","DEPENDS_ON","TRACES_TO","CONSTRAINS","HAS_STATE","TRANSITIONS","EMITS","READS","WRITES"]},"label":{"type":"string"},"trigger":{"$ref":"#/$defs/nodeId"}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["edge_type","from","label","on","to","trigger"]}]}}};function validate25(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate25.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.from === undefined){const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "from"},message:"must have required property '"+"from"+"'",schema:schema43.required,parentSchema:schema43,data};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.to === undefined){const err1 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "to"},message:"must have required property '"+"to"+"'",schema:schema43.required,parentSchema:schema43,data};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.edge_type === undefined){const err2 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "edge_type"},message:"must have required property '"+"edge_type"+"'",schema:schema43.required,parentSchema:schema43,data};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}for(const key0 in data){const _errs1 = errors;const _errs2 = errors;let valid1 = true;const _errs3 = errors;if(typeof key0 === "string"){if(!pattern4.test(key0)){const err3 = {};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}var _valid0 = _errs3 === errors;errors = _errs2;if(vErrors !== null){if(_errs2){vErrors.length = _errs2;}else {vErrors = null;}}if(!_valid0){const _errs4 = errors;if(typeof key0 === "string"){if(!pattern5.test(key0)){const err4 = {instancePath,schemaPath:"#/propertyNames/else/allOf/0/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z_][A-Za-z0-9_-]*$"},message:"must match pattern \""+"^[A-Za-z_][A-Za-z0-9_-]*$"+"\"",schema:"^[A-Za-z_][A-Za-z0-9_-]*$",parentSchema:schema43.propertyNames.else.allOf[0],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(!((((((key0 === "edge_type") || (key0 === "from")) || (key0 === "label")) || (key0 === "on")) || (key0 === "to")) || (key0 === "trigger"))){const err5 = {instancePath,schemaPath:"#/propertyNames/else/allOf/1/enum",keyword:"enum",params:{allowedValues: schema43.propertyNames.else.allOf[1].enum},message:"must be equal to one of the allowed values",schema:schema43.propertyNames.else.allOf[1].enum,parentSchema:schema43.propertyNames.else.allOf[1],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}var _valid0 = _errs4 === errors;valid1 = _valid0;}if(!valid1){const err6 = {instancePath,schemaPath:"#/propertyNames/if",keyword:"if",params:{failingKeyword: "else"},message:"must match \"else\" schema",schema:schema43.propertyNames.if,parentSchema:schema43.propertyNames,data:key0,propertyName:key0};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}var valid0 = _errs1 === errors;if(!valid0){const err7 = {instancePath,schemaPath:"#/propertyNames",keyword:"propertyNames",params:{propertyName: key0},message:"property name must be valid",schema:schema43.propertyNames,parentSchema:schema43,data};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.from !== undefined){let data0 = data.from;if(typeof data0 === "string"){if(!pattern13.test(data0)){const err8 = {instancePath:instancePath+"/from",schemaPath:"#/$defs/nodeId/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema38,data:data0};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}else {const err9 = {instancePath:instancePath+"/from",schemaPath:"#/$defs/nodeId/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema38.type,parentSchema:schema38,data:data0};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}if(data.to !== undefined){let data1 = data.to;if(typeof data1 === "string"){if(!pattern13.test(data1)){const err10 = {instancePath:instancePath+"/to",schemaPath:"#/$defs/nodeId/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema38,data:data1};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}else {const err11 = {instancePath:instancePath+"/to",schemaPath:"#/$defs/nodeId/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema38.type,parentSchema:schema38,data:data1};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}if(data.edge_type !== undefined){let data2 = data.edge_type;if(!((((((((((((data2 === "SUPPORTS") || (data2 === "REFUTES")) || (data2 === "SUPERSEDES")) || (data2 === "CAUSES")) || (data2 === "DEPENDS_ON")) || (data2 === "TRACES_TO")) || (data2 === "CONSTRAINS")) || (data2 === "HAS_STATE")) || (data2 === "TRANSITIONS")) || (data2 === "EMITS")) || (data2 === "READS")) || (data2 === "WRITES"))){const err12 = {instancePath:instancePath+"/edge_type",schemaPath:"#/properties/edge_type/enum",keyword:"enum",params:{allowedValues: schema43.properties.edge_type.enum},message:"must be equal to one of the allowed values",schema:schema43.properties.edge_type.enum,parentSchema:schema43.properties.edge_type,data:data2};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}if(data.label !== undefined){let data3 = data.label;if(typeof data3 !== "string"){const err13 = {instancePath:instancePath+"/label",schemaPath:"#/properties/label/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema43.properties.label.type,parentSchema:schema43.properties.label,data:data3};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}}if(data.trigger !== undefined){let data4 = data.trigger;if(typeof data4 === "string"){if(!pattern13.test(data4)){const err14 = {instancePath:instancePath+"/trigger",schemaPath:"#/$defs/nodeId/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema38,data:data4};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}else {const err15 = {instancePath:instancePath+"/trigger",schemaPath:"#/$defs/nodeId/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema38.type,parentSchema:schema38,data:data4};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}}else {const err16 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema43.type,parentSchema:schema43,data};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}validate25.errors = vErrors;return errors === 0;}validate25.evaluated = {"props":{"from":true,"to":true,"edge_type":true,"label":true,"trigger":true},"dynamicProps":false,"dynamicItems":false};const schema47 = {"description":"Aresta entre grafos (v4.3): exatamente uma ponta externa (<caminho>#<id>), a outra um id deste arquivo; from ausente vale o grafo inteiro. Só os tipos da camada audit.","type":"object","required":["to","edge_type"],"properties":{"from":{"type":"string"},"to":{"type":"string"},"edge_type":{"enum":["SUPERSEDES","CONSTRAINS","SUPPORTS","REFUTES","TRACES_TO","DEPENDS_ON"]},"label":{"type":"string"}},"if":{"required":["from"],"properties":{"from":{"pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$"}}},"then":{"properties":{"to":{"$ref":"#/$defs/nodeId"}}},"else":{"properties":{"from":{"$ref":"#/$defs/nodeId"},"to":{"$ref":"#/$defs/externalRef"}}},"propertyNames":{"if":{"pattern":"^x_"},"else":{"allOf":[{"pattern":"^[A-Za-z_][A-Za-z0-9_-]*$"},{"enum":["edge_type","from","label","to"]}]}}};const schema50 = {"type":"string","pattern":"^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$","description":"Referência a um nó de outro grafo do mesmo repo: <caminho relativo à raiz do repo>#<id>. Os segmentos do caminho começam por letra, dígito ou _ e só levam [A-Za-z0-9_.-]: sem / inicial, sem . ou .., sem \\, sem :."};const pattern23 = new RegExp("^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$", "u");function validate27(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){let vErrors = null;let errors = 0;const evaluated0 = validate27.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}const _errs1 = errors;let valid0 = true;const _errs2 = errors;if(data && typeof data == "object" && !Array.isArray(data)){let missing0;if((data.from === undefined) && (missing0 = "from")){const err0 = {};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}else {if(data.from !== undefined){let data0 = data.from;if(typeof data0 === "string"){if(!pattern23.test(data0)){const err1 = {};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}}}}}var _valid0 = _errs2 === errors;errors = _errs1;if(vErrors !== null){if(_errs1){vErrors.length = _errs1;}else {vErrors = null;}}let ifClause0;if(_valid0){const _errs4 = errors;if(data && typeof data == "object" && !Array.isArray(data)){if(data.to !== undefined){let data1 = data.to;if(typeof data1 === "string"){if(!pattern13.test(data1)){const err2 = {instancePath:instancePath+"/to",schemaPath:"#/$defs/nodeId/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema38,data:data1};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}}else {const err3 = {instancePath:instancePath+"/to",schemaPath:"#/$defs/nodeId/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema38.type,parentSchema:schema38,data:data1};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}}var _valid0 = _errs4 === errors;valid0 = _valid0;if(valid0){var props0 = {};props0.to = true;props0.from = true;}ifClause0 = "then";}else {const _errs8 = errors;if(data && typeof data == "object" && !Array.isArray(data)){if(data.from !== undefined){let data2 = data.from;if(typeof data2 === "string"){if(!pattern13.test(data2)){const err4 = {instancePath:instancePath+"/from",schemaPath:"#/$defs/nodeId/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema38,data:data2};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}else {const err5 = {instancePath:instancePath+"/from",schemaPath:"#/$defs/nodeId/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema38.type,parentSchema:schema38,data:data2};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.to !== undefined){let data3 = data.to;if(typeof data3 === "string"){if(!pattern23.test(data3)){const err6 = {instancePath:instancePath+"/to",schemaPath:"#/$defs/externalRef/pattern",keyword:"pattern",params:{pattern: "^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$"},message:"must match pattern \""+"^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$"+"\"",schema:"^(?:[A-Za-z0-9_][A-Za-z0-9_.-]*/)*[A-Za-z0-9_][A-Za-z0-9_.-]*\\.kg\\.(?:yaml|json)#[A-Za-z][A-Za-z0-9_]*$",parentSchema:schema50,data:data3};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}else {const err7 = {instancePath:instancePath+"/to",schemaPath:"#/$defs/externalRef/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema50.type,parentSchema:schema50,data:data3};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}}var _valid0 = _errs8 === errors;valid0 = _valid0;if(valid0){if(props0 !== true){props0 = props0 || {};props0.from = true;props0.to = true;}}ifClause0 = "else";}if(!valid0){const err8 = {instancePath,schemaPath:"#/if",keyword:"if",params:{failingKeyword: ifClause0},message:"must match \""+ifClause0+"\" schema",schema:schema47.if,parentSchema:schema47,data};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.to === undefined){const err9 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "to"},message:"must have required property '"+"to"+"'",schema:schema47.required,parentSchema:schema47,data};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}if(data.edge_type === undefined){const err10 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "edge_type"},message:"must have required property '"+"edge_type"+"'",schema:schema47.required,parentSchema:schema47,data};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}for(const key0 in data){const _errs15 = errors;const _errs16 = errors;let valid8 = true;const _errs17 = errors;if(typeof key0 === "string"){if(!pattern4.test(key0)){const err11 = {};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}}var _valid1 = _errs17 === errors;errors = _errs16;if(vErrors !== null){if(_errs16){vErrors.length = _errs16;}else {vErrors = null;}}if(!_valid1){const _errs18 = errors;if(typeof key0 === "string"){if(!pattern5.test(key0)){const err12 = {instancePath,schemaPath:"#/propertyNames/else/allOf/0/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z_][A-Za-z0-9_-]*$"},message:"must match pattern \""+"^[A-Za-z_][A-Za-z0-9_-]*$"+"\"",schema:"^[A-Za-z_][A-Za-z0-9_-]*$",parentSchema:schema47.propertyNames.else.allOf[0],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}if(!((((key0 === "edge_type") || (key0 === "from")) || (key0 === "label")) || (key0 === "to"))){const err13 = {instancePath,schemaPath:"#/propertyNames/else/allOf/1/enum",keyword:"enum",params:{allowedValues: schema47.propertyNames.else.allOf[1].enum},message:"must be equal to one of the allowed values",schema:schema47.propertyNames.else.allOf[1].enum,parentSchema:schema47.propertyNames.else.allOf[1],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err13];}else {vErrors.push(err13);}errors++;}var _valid1 = _errs18 === errors;valid8 = _valid1;}if(!valid8){const err14 = {instancePath,schemaPath:"#/propertyNames/if",keyword:"if",params:{failingKeyword: "else"},message:"must match \"else\" schema",schema:schema47.propertyNames.if,parentSchema:schema47.propertyNames,data:key0,propertyName:key0};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}var valid7 = _errs15 === errors;if(!valid7){const err15 = {instancePath,schemaPath:"#/propertyNames",keyword:"propertyNames",params:{propertyName: key0},message:"property name must be valid",schema:schema47.propertyNames,parentSchema:schema47,data};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}}if(props0 !== true){props0 = props0 || {};props0.from = true;props0.to = true;props0.edge_type = true;props0.label = true;}if(data.from !== undefined){let data4 = data.from;if(typeof data4 !== "string"){const err16 = {instancePath:instancePath+"/from",schemaPath:"#/properties/from/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema47.properties.from.type,parentSchema:schema47.properties.from,data:data4};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}if(data.to !== undefined){let data5 = data.to;if(typeof data5 !== "string"){const err17 = {instancePath:instancePath+"/to",schemaPath:"#/properties/to/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema47.properties.to.type,parentSchema:schema47.properties.to,data:data5};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}}if(data.edge_type !== undefined){let data6 = data.edge_type;if(!((((((data6 === "SUPERSEDES") || (data6 === "CONSTRAINS")) || (data6 === "SUPPORTS")) || (data6 === "REFUTES")) || (data6 === "TRACES_TO")) || (data6 === "DEPENDS_ON"))){const err18 = {instancePath:instancePath+"/edge_type",schemaPath:"#/properties/edge_type/enum",keyword:"enum",params:{allowedValues: schema47.properties.edge_type.enum},message:"must be equal to one of the allowed values",schema:schema47.properties.edge_type.enum,parentSchema:schema47.properties.edge_type,data:data6};if(vErrors === null){vErrors = [err18];}else {vErrors.push(err18);}errors++;}}if(data.label !== undefined){let data7 = data.label;if(typeof data7 !== "string"){const err19 = {instancePath:instancePath+"/label",schemaPath:"#/properties/label/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema47.properties.label.type,parentSchema:schema47.properties.label,data:data7};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}}else {const err20 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema47.type,parentSchema:schema47,data};if(vErrors === null){vErrors = [err20];}else {vErrors.push(err20);}errors++;}validate27.errors = vErrors;evaluated0.props = props0;return errors === 0;}validate27.evaluated = {"dynamicProps":true,"dynamicItems":false};function validate20(data, {instancePath="", parentData, parentDataProperty, rootData=data, dynamicAnchors={}}={}){/*# sourceURL="urn:kg-ssot:spec:kg-contract-v4.schema.json" */;let vErrors = null;let errors = 0;const evaluated0 = validate20.evaluated;if(evaluated0.dynamicProps){evaluated0.props = undefined;}if(evaluated0.dynamicItems){evaluated0.items = undefined;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.meta === undefined){const err0 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "meta"},message:"must have required property '"+"meta"+"'",schema:schema31.required,parentSchema:schema31,data};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.nodes === undefined){const err1 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "nodes"},message:"must have required property '"+"nodes"+"'",schema:schema31.required,parentSchema:schema31,data};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.edges === undefined){const err2 = {instancePath,schemaPath:"#/required",keyword:"required",params:{missingProperty: "edges"},message:"must have required property '"+"edges"+"'",schema:schema31.required,parentSchema:schema31,data};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}for(const key0 in data){const _errs1 = errors;const _errs2 = errors;let valid1 = true;const _errs3 = errors;if(typeof key0 === "string"){if(!pattern4.test(key0)){const err3 = {};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}}var _valid0 = _errs3 === errors;errors = _errs2;if(vErrors !== null){if(_errs2){vErrors.length = _errs2;}else {vErrors = null;}}if(!_valid0){const _errs4 = errors;if(typeof key0 === "string"){if(!pattern5.test(key0)){const err4 = {instancePath,schemaPath:"#/propertyNames/else/allOf/0/pattern",keyword:"pattern",params:{pattern: "^[A-Za-z_][A-Za-z0-9_-]*$"},message:"must match pattern \""+"^[A-Za-z_][A-Za-z0-9_-]*$"+"\"",schema:"^[A-Za-z_][A-Za-z0-9_-]*$",parentSchema:schema31.propertyNames.else.allOf[0],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(!((((key0 === "edges") || (key0 === "external_edges")) || (key0 === "meta")) || (key0 === "nodes"))){const err5 = {instancePath,schemaPath:"#/propertyNames/else/allOf/1/enum",keyword:"enum",params:{allowedValues: schema31.propertyNames.else.allOf[1].enum},message:"must be equal to one of the allowed values",schema:schema31.propertyNames.else.allOf[1].enum,parentSchema:schema31.propertyNames.else.allOf[1],data:key0,propertyName:key0};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}var _valid0 = _errs4 === errors;valid1 = _valid0;}if(!valid1){const err6 = {instancePath,schemaPath:"#/propertyNames/if",keyword:"if",params:{failingKeyword: "else"},message:"must match \"else\" schema",schema:schema31.propertyNames.if,parentSchema:schema31.propertyNames,data:key0,propertyName:key0};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}var valid0 = _errs1 === errors;if(!valid0){const err7 = {instancePath,schemaPath:"#/propertyNames",keyword:"propertyNames",params:{propertyName: key0},message:"property name must be valid",schema:schema31.propertyNames,parentSchema:schema31,data};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.meta !== undefined){if(!(validate21(data.meta, {instancePath:instancePath+"/meta",parentData:data,parentDataProperty:"meta",rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate21.errors : vErrors.concat(validate21.errors);errors = vErrors.length;}}if(data.nodes !== undefined){let data1 = data.nodes;if(Array.isArray(data1)){const len0 = data1.length;for(let i0=0; i0<len0; i0++){if(!(validate23(data1[i0], {instancePath:instancePath+"/nodes/" + i0,parentData:data1,parentDataProperty:i0,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate23.errors : vErrors.concat(validate23.errors);errors = vErrors.length;}}}else {const err8 = {instancePath:instancePath+"/nodes",schemaPath:"#/properties/nodes/type",keyword:"type",params:{type: "array"},message:"must be array",schema:schema31.properties.nodes.type,parentSchema:schema31.properties.nodes,data:data1};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data.edges !== undefined){let data3 = data.edges;if(Array.isArray(data3)){const len1 = data3.length;for(let i1=0; i1<len1; i1++){if(!(validate25(data3[i1], {instancePath:instancePath+"/edges/" + i1,parentData:data3,parentDataProperty:i1,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate25.errors : vErrors.concat(validate25.errors);errors = vErrors.length;}}}else {const err9 = {instancePath:instancePath+"/edges",schemaPath:"#/properties/edges/type",keyword:"type",params:{type: "array"},message:"must be array",schema:schema31.properties.edges.type,parentSchema:schema31.properties.edges,data:data3};if(vErrors === null){vErrors = [err9];}else {vErrors.push(err9);}errors++;}}if(data.external_edges !== undefined){let data5 = data.external_edges;if(Array.isArray(data5)){const len2 = data5.length;for(let i2=0; i2<len2; i2++){if(!(validate27(data5[i2], {instancePath:instancePath+"/external_edges/" + i2,parentData:data5,parentDataProperty:i2,rootData,dynamicAnchors}))){vErrors = vErrors === null ? validate27.errors : vErrors.concat(validate27.errors);errors = vErrors.length;}}}else {const err10 = {instancePath:instancePath+"/external_edges",schemaPath:"#/properties/external_edges/type",keyword:"type",params:{type: "array"},message:"must be array",schema:schema31.properties.external_edges.type,parentSchema:schema31.properties.external_edges,data:data5};if(vErrors === null){vErrors = [err10];}else {vErrors.push(err10);}errors++;}}}else {const err11 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema31.type,parentSchema:schema31,data};if(vErrors === null){vErrors = [err11];}else {vErrors.push(err11);}errors++;}validate20.errors = vErrors;return errors === 0;}validate20.evaluated = {"props":{"meta":true,"nodes":true,"edges":true,"external_edges":true},"dynamicProps":false,"dynamicItems":false};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kg-ssot",
|
|
3
|
-
"version": "4.16.
|
|
3
|
+
"version": "4.16.1",
|
|
4
4
|
"description": "Leitor JS do contrato do grafo de conhecimento verificável KG-SSOT (.kg.yaml e .kg.json): validador pré-compilado, sem eval, para Node e React Native/Expo.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"knowledge-graph",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "urn:kg-ssot:spec:kg-contract-v4.schema.json",
|
|
4
4
|
"title": "kg.yaml — contrato v4, nível MUST",
|
|
5
|
-
"description": "O contrato v4 do .kg.yaml, nível MUST (reprova), o vigente (substitui o v3). É o v3 com três promoções a MUST. (1) Proveniência estruturada: nó confirmed ou PROD exige provenance com source, locator e method (form.required.node.provenance), que no v3 só alertava; status unverifiable não exige, mesmo em PROD, porque é o destino do nó sem fonte recuperável. (2) Fonte que não é placeholder: provenance.source não pode ser placeholder: só espaço, ou um destes sozinho, sem distinguir maiúscula e com pontuação final (. ou :) e espaço em volta (inclusive NBSP, espaço ideográfico, BOM e espaço de largura zero) ignorados: desconhecida, desconhecido, unknown, n/a, n / a, na, n.a., none, null, sem fonte, tbd, um ou mais hífens, travessão, meia-risca, ?. A regra é um not+pattern sem lookahead, portável a leitores RE2: form.pattern.node.provenance.source. O vazio segue form.range.node.provenance.source, como no v3. Origem que é uma pessoa ou sessão recuperável é fonte válida, com method de testemunho. (3) Política de extensão: chave desconhecida sem o prefixo x_ no topo, no meta, no nó e na aresta reprova (form.unknown-key.<escopo>.<chave>), com a mesma lista de chaves conhecidas que o SHOULD v3 usava; nome sem x_ que nem é slug reprova como form.pattern.<escopo>.key. Chave x_ segue livre, e x_ com nome que não é slug só alerta. A chave on da aresta segue na lista porque já reprova como yaml.forbidden-key-on. Dentro de provenance, a chave desconhecida segue SHOULD. O resto é o v3: escrito à mão em JSON Schema 2020-12; PROD sem verified_at é SHOULD e o gatilho de TRANSITIONS é trigger; narrative no nó, note e purpose no meta, data no calendário (format: date é ASSERÇÃO) e .nan ou .inf reprovando como tipo; provenance, quando presente, com os três campos não vazios, e provenance: null reprova. O par SHOULD é kg-contract-v4.should.schema.json; as regras de perfil YAML (chave on proibida, chave duplicada, documento único) são do leitor, porque o JSON não as vê. No v4.3 entra external_edges, opcional, no topo: arestas entre grafos com uma ponta externa <caminho>#<id> e a outra local (ou o grafo inteiro, com from ausente), nos tipos SUPERSEDES, CONSTRAINS, SUPPORTS, REFUTES, TRACES_TO e DEPENDS_ON. A ponta local tem de existir (integrity.dangling-external-local); com o corpus, o arquivo e o id da ponta externa também (integrity.dangling-external). A chave é opcional: um grafo que não a usa tem o mesmo veredito do v4.2. No v4.5 entra a chave verified_scope, opcional: o alcance do que o verified_at conferiu. O valor é julgado pelo SHOULD (o enum fato, mecanismo, nenhum), como a provenance.locality. No v4.6 entram duas regras do leitor, que o JSON não vê: a linha de continuação de um texto entre aspas tem de ser mais indentada que o mapa ou a lista que o contém (menos que isso é parse.yaml-error), e o \\r\\n e o \\r sozinho são quebra de linha. Elas entram aqui para mover a identidade do contrato que o gate guarda. No v4.7, a ponta externa das external_edges pode ser também um .kg.json (<caminho>.kg.json#<id>), o formato JSON do mesmo modelo, e o corpus que confere a ponta lê os dois formatos. É ampliação: nada que passava reprova. No v4.8 entram três chaves opcionais do nó, no eixo da verificação: reverify_every (a cadência, em duração ISO 8601 só com data, como P3M ou P1Y), reverify_on (o gatilho por evento, em texto) e retain_for (por quanto tempo a evidência tem de ser guardada, na mesma duração). O valor é julgado pelo SHOULD, e o vencimento (verified_at somado ao reverify_every) nunca entra no veredito: sai num relatório com data explícita. O owner, que já existia, é um papel (quem responde pelo nó), não uma pessoa.",
|
|
5
|
+
"description": "O contrato v4 do .kg.yaml, nível MUST (reprova), o vigente (substitui o v3). É o v3 com três promoções a MUST. (1) Proveniência estruturada: nó confirmed ou PROD exige provenance com source, locator e method (form.required.node.provenance), que no v3 só alertava; status unverifiable não exige, mesmo em PROD, porque é o destino do nó sem fonte recuperável. (2) Fonte que não é placeholder: provenance.source não pode ser placeholder: só espaço, ou um destes sozinho, sem distinguir maiúscula e com pontuação final (. ou :) e espaço em volta (inclusive NBSP, espaço ideográfico, BOM e espaço de largura zero) ignorados: desconhecida, desconhecido, unknown, n/a, n / a, na, n.a., none, null, sem fonte, tbd, um ou mais hífens, travessão, meia-risca, ?. A regra é um not+pattern sem lookahead, portável a leitores RE2: form.pattern.node.provenance.source. O vazio segue form.range.node.provenance.source, como no v3. Origem que é uma pessoa ou sessão recuperável é fonte válida, com method de testemunho. (3) Política de extensão: chave desconhecida sem o prefixo x_ no topo, no meta, no nó e na aresta reprova (form.unknown-key.<escopo>.<chave>), com a mesma lista de chaves conhecidas que o SHOULD v3 usava; nome sem x_ que nem é slug reprova como form.pattern.<escopo>.key. Chave x_ segue livre, e x_ com nome que não é slug só alerta. A chave on da aresta segue na lista porque já reprova como yaml.forbidden-key-on. Dentro de provenance, a chave desconhecida segue SHOULD. O resto é o v3: escrito à mão em JSON Schema 2020-12; PROD sem verified_at é SHOULD e o gatilho de TRANSITIONS é trigger; narrative no nó, note e purpose no meta, data no calendário (format: date é ASSERÇÃO) e .nan ou .inf reprovando como tipo; provenance, quando presente, com os três campos não vazios, e provenance: null reprova. O par SHOULD é kg-contract-v4.should.schema.json; as regras de perfil YAML (chave on proibida, chave duplicada, documento único) são do leitor, porque o JSON não as vê. No v4.3 entra external_edges, opcional, no topo: arestas entre grafos com uma ponta externa <caminho>#<id> e a outra local (ou o grafo inteiro, com from ausente), nos tipos SUPERSEDES, CONSTRAINS, SUPPORTS, REFUTES, TRACES_TO e DEPENDS_ON. A ponta local tem de existir (integrity.dangling-external-local); com o corpus, o arquivo e o id da ponta externa também (integrity.dangling-external). A chave é opcional: um grafo que não a usa tem o mesmo veredito do v4.2. No v4.5 entra a chave verified_scope, opcional: o alcance do que o verified_at conferiu. O valor é julgado pelo SHOULD (o enum fato, mecanismo, nenhum), como a provenance.locality. No v4.6 entram duas regras do leitor, que o JSON não vê: a linha de continuação de um texto entre aspas tem de ser mais indentada que o mapa ou a lista que o contém (menos que isso é parse.yaml-error), e o \\r\\n e o \\r sozinho são quebra de linha. Elas entram aqui para mover a identidade do contrato que o gate guarda. No v4.7, a ponta externa das external_edges pode ser também um .kg.json (<caminho>.kg.json#<id>), o formato JSON do mesmo modelo, e o corpus que confere a ponta lê os dois formatos. É ampliação: nada que passava reprova. No v4.8 entram três chaves opcionais do nó, no eixo da verificação: reverify_every (a cadência, em duração ISO 8601 só com data, como P3M ou P1Y), reverify_on (o gatilho por evento, em texto) e retain_for (por quanto tempo a evidência tem de ser guardada, na mesma duração). O valor é julgado pelo SHOULD, e o vencimento (verified_at somado ao reverify_every) nunca entra no veredito: sai num relatório com data explícita. O owner, que já existia, é um papel (quem responde pelo nó), não uma pessoa. No v4.10, três pontos do perfil YAML em que os leitores divergiam, nenhum presente em grafo real: a ordem dos erros segue o documento (a chave repetida antes de uma âncora repetida ou de um alias sem âncora dá parse.duplicate-key), a linha vazia depois de uma quebra escapada entre aspas duplas vira \\n, como pede a especificação, e o BOM no começo do stream não conta como coluna. Nenhum veredito do leitor de referência muda.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": [
|
|
8
8
|
"meta",
|
package/spec/release.json
CHANGED