kg-ssot 4.48.0 → 4.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/kg.mjs CHANGED
@@ -488,6 +488,10 @@ export function formCodes(err, doc) {
488
488
  let kind = FORM_TYPE[err.keyword] || err.keyword;
489
489
  if (err.keyword === 'not' && isObj(err.schema) && 'pattern' in err.schema) kind = 'pattern';
490
490
  if (err.keyword === 'not' && isObj(err.schema) && 'required' in err.schema) kind = 'exclusive'; // v4.12: ref e text
491
+ // v4.20: a chave fora do lugar (x_classification no nó), por not com o schema vazio, que nada satisfaz
492
+ if (err.keyword === 'not' && isObj(err.schema) && Object.keys(err.schema).length === 0) kind = 'misplaced';
493
+ // v4.21: a forma aceita e em retirada (o apelido em português do method), por not com deprecated: true
494
+ if (err.keyword === 'not' && isObj(err.schema) && err.schema.deprecated === true) kind = 'deprecated';
491
495
  if (err.keyword === 'required') return [`form.${kind}.${scope}.${[...prefix, err.params.missingProperty].join('.')}`];
492
496
  if (err.keyword === 'additionalProperties') {
493
497
  return [`form.${kind}.${scope}.${[...prefix, err.params.additionalProperty].join('.')}`];
@@ -614,12 +618,23 @@ export function docCodes(doc, validate, corpus = null, format = 'yaml') {
614
618
  return docCodesWithForm(doc, validate, corpus, format).codes;
615
619
  }
616
620
 
617
- // docCodes e, à parte, os form.* que o próprio validador MUST acusou (o `must` do warning_counts da referência, sem
618
- // os do .nan nem os do inteiro inseguro).
621
+ // A ocorrência de um código: o código e o caminho do erro. O aviso se deduplica contra o MUST por ocorrência, não por
622
+ // documento: o que o MUST acusa em OUTRO nó segue avisando (v4.21; o `must` do warning_counts da referência).
623
+ const occurrenceKey = (err, code) => `${err.instancePath}\u0000${code}`;
624
+
625
+ // docCodes e, à parte, as ocorrências form.* que o próprio validador MUST acusou (sem as do .nan nem as do inteiro
626
+ // inseguro).
619
627
  function docCodesWithForm(doc, validate, corpus, format) {
628
+ const out = new Set();
620
629
  const mustForm = new Set();
621
- if (!validate(doc)) for (const err of validate.errors || []) for (const c of formCodes(err, doc)) mustForm.add(c);
622
- const out = new Set(mustForm);
630
+ if (!validate(doc)) {
631
+ for (const err of validate.errors || []) {
632
+ for (const c of formCodes(err, doc)) {
633
+ out.add(c);
634
+ mustForm.add(occurrenceKey(err, c));
635
+ }
636
+ }
637
+ }
623
638
  for (const c of nonFiniteCodes(doc)) out.add(c);
624
639
  if (format === 'json') for (const c of unsafeIntegerCodes(doc)) out.add(c);
625
640
  for (const c of integrity(doc, corpus)) out.add(c);
@@ -951,17 +966,17 @@ export function warnings(text, validate, validateShould, { format = 'yaml', corp
951
966
  return parsed.code ? [] : warningsOf(parsed, validate, validateShould, format, null, corpus);
952
967
  }
953
968
 
954
- // Os avisos de um texto já parseado. mustCodes: os form.* do MUST, se quem chama já os tem (o verdictOf, para não
955
- // validar duas vezes).
956
- function warningsOf(parsed, validate, validateShould, format, mustCodes = null, corpus = null) {
969
+ // Os avisos de um texto já parseado. mustOccurrences: as ocorrências form.* do MUST, se quem chama já as tem (o
970
+ // verdictOf, para não validar duas vezes).
971
+ function warningsOf(parsed, validate, validateShould, format, mustOccurrences = null, corpus = null) {
957
972
  const { doc } = parsed;
958
- let must = mustCodes;
973
+ let must = mustOccurrences;
959
974
  if (must === null) {
960
975
  must = new Set();
961
- if (!validate(doc)) for (const err of validate.errors || []) for (const c of formCodes(err, doc)) must.add(c);
976
+ if (!validate(doc)) for (const err of validate.errors || []) for (const c of formCodes(err, doc)) must.add(occurrenceKey(err, c));
962
977
  }
963
978
  const out = new Set();
964
- if (!validateShould(doc)) for (const err of validateShould.errors || []) for (const c of formCodes(err, doc)) if (!must.has(c)) out.add(c);
979
+ if (!validateShould(doc)) for (const err of validateShould.errors || []) for (const c of formCodes(err, doc)) if (!must.has(occurrenceKey(err, c))) out.add(c);
965
980
  if (format !== 'json') {
966
981
  if (parsed.unquotedDate) out.add('yaml.unquoted-date');
967
982
  for (const c of yamlProfileCodes(doc)) out.add(c);
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. 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. No v4.11, o meta ganha duas chaves conhecidas, title (o título humano do grafo, texto não vazio) e slug (o nome curto, texto não vazio; a forma em minúsculas com hífen é julgada pelo SHOULD), que os grafos já usavam sem lugar canônico. É ampliação: nada que passava reprova, e o grafo que reprovava só por meta.title ou meta.slug passa. Os perfis canônicos das chaves x_ recorrentes (x_term, x_mirror, x_doc_cycle, x_questionnaire, x_severity no nó; x_confidence e x_provisional na aresta) são do SHOULD: a chave x_ segue livre no MUST. No v4.12 entram, só no SHOULD, os perfis do critério pré-registrado (x_criterion no nó do critério e x_measured_under no resultado) e cinco avisos de coerência entre eles: a chave x_ segue livre no MUST, e nada que passava reprova. No v4.13, o perfil x_questionnaire ganha, só no SHOULD, a chave role (item, evidence_request ou evidence_requirement), que separa a pergunta do questionário, e a resposta a ela, do pedido de evidência a uma pessoa e do requisito de evidência: nada que passava reprova. No v4.14 entram, só no SHOULD, o x_term.scheme (o esquema do vocabulário) e o aviso integrity.term-notation-duplicate, a mesma notation em dois termos vivos do mesmo esquema: nada que passava reprova. No v4.15, o segmento do caminho de uma ponta externa pode começar por ponto (.github/, .config/, a pasta onde a maquinaria de um repo mora), desde que o ponto seja seguido de letra, dígito ou _: os segmentos . e .. seguem recusados, porque a regra existe para barrar a travessia. É ampliação: nada que passava reprova. No v4.17 entram, só no SHOULD, provenance.scheme (o esquema do locator) e provenance.sha256 (o hash do conteúdo lido): dentro de provenance a chave desconhecida já era SHOULD. Nada que passava reprova. No v4.18 entra, só no SHOULD, provenance.node_sha256 (o hash canônico do nó citado, pela RFC 8785): dentro de provenance a chave desconhecida já era SHOULD. Nada que passava reprova. No v4.19 entram dois avisos do leitor, que o JSON não exprime porque cruzam o nó com as arestas: integrity.bare-decision (decision done sem narrative com texto e sem SUPPORTS chegando a ela) e integrity.superseded-without-successor (nó superseded sem SUPERSEDES chegando a ele). Conta a aresta declarada no próprio grafo, local ou nas external_edges com from externo. São SHOULD: nada que passava reprova.","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"},"title":{"type":"string","minLength":1},"slug":{"type":"string","minLength":1}},"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","slug","title"]}]}}},"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>. Cada segmento do caminho começa por letra, dígito ou _, ou por um ponto seguido de um deles (.github, .config, desde o v4.15), e só leva [A-Za-z0-9_.-]: sem / inicial, sem os segmentos . e .. (a travessia), 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"},"title":{"type":"string","minLength":1},"slug":{"type":"string","minLength":1}},"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","slug","title"]}]}}};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")) || (key0 === "slug")) || (key0 === "title"))){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++;}}if(data.title !== undefined){let data8 = data.title;if(typeof data8 === "string"){if(func1(data8) < 1){const err22 = {instancePath:instancePath+"/title",schemaPath:"#/properties/title/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema32.properties.title,data:data8};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}else {const err23 = {instancePath:instancePath+"/title",schemaPath:"#/properties/title/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema32.properties.title.type,parentSchema:schema32.properties.title,data:data8};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data.slug !== undefined){let data9 = data.slug;if(typeof data9 === "string"){if(func1(data9) < 1){const err24 = {instancePath:instancePath+"/slug",schemaPath:"#/properties/slug/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema32.properties.slug,data:data9};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}else {const err25 = {instancePath:instancePath+"/slug",schemaPath:"#/properties/slug/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema32.properties.slug.type,parentSchema:schema32.properties.slug,data:data9};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}}else {const err26 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema32.type,parentSchema:schema32,data};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}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,"title":true,"slug":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>. Cada segmento do caminho começa por letra, dígito ou _, ou por um ponto seguido de um deles (.github, .config, desde o v4.15), e só leva [A-Za-z0-9_.-]: sem / inicial, sem os segmentos . e .. (a travessia), 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. No v4.11, o meta ganha duas chaves conhecidas, title (o título humano do grafo, texto não vazio) e slug (o nome curto, texto não vazio; a forma em minúsculas com hífen é julgada pelo SHOULD), que os grafos já usavam sem lugar canônico. É ampliação: nada que passava reprova, e o grafo que reprovava só por meta.title ou meta.slug passa. Os perfis canônicos das chaves x_ recorrentes (x_term, x_mirror, x_doc_cycle, x_questionnaire, x_severity no nó; x_confidence e x_provisional na aresta) são do SHOULD: a chave x_ segue livre no MUST. No v4.12 entram, só no SHOULD, os perfis do critério pré-registrado (x_criterion no nó do critério e x_measured_under no resultado) e cinco avisos de coerência entre eles: a chave x_ segue livre no MUST, e nada que passava reprova. No v4.13, o perfil x_questionnaire ganha, só no SHOULD, a chave role (item, evidence_request ou evidence_requirement), que separa a pergunta do questionário, e a resposta a ela, do pedido de evidência a uma pessoa e do requisito de evidência: nada que passava reprova. No v4.14 entram, só no SHOULD, o x_term.scheme (o esquema do vocabulário) e o aviso integrity.term-notation-duplicate, a mesma notation em dois termos vivos do mesmo esquema: nada que passava reprova. No v4.15, o segmento do caminho de uma ponta externa pode começar por ponto (.github/, .config/, a pasta onde a maquinaria de um repo mora), desde que o ponto seja seguido de letra, dígito ou _: os segmentos . e .. seguem recusados, porque a regra existe para barrar a travessia. É ampliação: nada que passava reprova. No v4.17 entram, só no SHOULD, provenance.scheme (o esquema do locator) e provenance.sha256 (o hash do conteúdo lido): dentro de provenance a chave desconhecida já era SHOULD. Nada que passava reprova. No v4.18 entra, só no SHOULD, provenance.node_sha256 (o hash canônico do nó citado, pela RFC 8785): dentro de provenance a chave desconhecida já era SHOULD. Nada que passava reprova. No v4.19 entram dois avisos do leitor, que o JSON não exprime porque cruzam o nó com as arestas: integrity.bare-decision (decision done sem narrative com texto e sem SUPPORTS chegando a ela) e integrity.superseded-without-successor (nó superseded sem SUPERSEDES chegando a ele). Conta a aresta declarada no próprio grafo, local ou nas external_edges com from externo. São SHOULD: nada que passava reprova. No v4.20 entra, só no SHOULD, o perfil canônico x_classification no meta (o nível de sensibilidade do grafo inteiro, em forma de slug), e x_classification no nó alerta como form.misplaced.node.x_classification: a chave x_ segue livre no MUST, e nada que passava reprova. No v4.21 entram, só no SHOULD, o aviso do apelido em português da classe de provenance.method (form.deprecated.node.provenance.method) e o de proveniência sempre (o nó evidence que não é unverifiable e a decision done sem provenance alertam como form.required.node.provenance): o MUST não muda, e nada que passava reprova.","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"},"title":{"type":"string","minLength":1},"slug":{"type":"string","minLength":1}},"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","slug","title"]}]}}},"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>. Cada segmento do caminho começa por letra, dígito ou _, ou por um ponto seguido de um deles (.github, .config, desde o v4.15), e só leva [A-Za-z0-9_.-]: sem / inicial, sem os segmentos . e .. (a travessia), 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"},"title":{"type":"string","minLength":1},"slug":{"type":"string","minLength":1}},"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","slug","title"]}]}}};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")) || (key0 === "slug")) || (key0 === "title"))){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++;}}if(data.title !== undefined){let data8 = data.title;if(typeof data8 === "string"){if(func1(data8) < 1){const err22 = {instancePath:instancePath+"/title",schemaPath:"#/properties/title/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema32.properties.title,data:data8};if(vErrors === null){vErrors = [err22];}else {vErrors.push(err22);}errors++;}}else {const err23 = {instancePath:instancePath+"/title",schemaPath:"#/properties/title/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema32.properties.title.type,parentSchema:schema32.properties.title,data:data8};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}if(data.slug !== undefined){let data9 = data.slug;if(typeof data9 === "string"){if(func1(data9) < 1){const err24 = {instancePath:instancePath+"/slug",schemaPath:"#/properties/slug/minLength",keyword:"minLength",params:{limit: 1},message:"must NOT have fewer than 1 characters",schema:1,parentSchema:schema32.properties.slug,data:data9};if(vErrors === null){vErrors = [err24];}else {vErrors.push(err24);}errors++;}}else {const err25 = {instancePath:instancePath+"/slug",schemaPath:"#/properties/slug/type",keyword:"type",params:{type: "string"},message:"must be string",schema:schema32.properties.slug.type,parentSchema:schema32.properties.slug,data:data9};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}}else {const err26 = {instancePath,schemaPath:"#/type",keyword:"type",params:{type: "object"},message:"must be object",schema:schema32.type,parentSchema:schema32,data};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}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,"title":true,"slug":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>. Cada segmento do caminho começa por letra, dígito ou _, ou por um ponto seguido de um deles (.github, .config, desde o v4.15), e só leva [A-Za-z0-9_.-]: sem / inicial, sem os segmentos . e .. (a travessia), 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.48.0",
3
+ "version": "4.50.0",
4
4
  "description": "JavaScript reader for KG-SSOT, the trust layer for a company brain: knowledge graphs (.kg.yaml and .kg.json) where a confirmed claim cites its source. A precompiled validator, no eval, for Node and React Native/Expo.",
5
5
  "keywords": [
6
6
  "knowledge-graph",