ChronaxisUser manual中文
On this pageanalysis.schema.jsonanalysis.schema.json: $analysis.schema.json: $.allOf[0].properties.signalsanalysis.schema.json: $.allOf[0].properties.signals.items.dependentSchemas.code_dtype.properties.dtypeanalysis.schema.json: $.allOf[0].properties.signals.items.properties.signalsanalysis.schema.json: $.allOf[0].properties.signals.items.properties.signals.items.dependentSchemas.code_dtype.properties.dtypeanalysis.schema.json: $.allOf[1]analysis.schema.json: $.allOf[2].then.properties.signalsanalysis.schema.json: $.allOf[2].then.properties.signals.items.notanalysis.schema.json: $.allOf[2].then.properties.signals.items.properties.fieldanalysis.schema.json: $.allOf[2].ifanalysis.schema.json: $.allOf[2].if.notanalysis.schema.json: $.allOf[2].if.properties.sourcesanalysis.schema.json: $.allOf[2].if.properties.sources.itemsanalysis.schema.json: $.allOf[2].if.properties.sources.items.properties.source_typeanalysis.schema.json: $.allOf[3].then.properties.signalsanalysis.schema.json: $.allOf[3].then.properties.signals.items.properties.fieldanalysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.allOf[0].then.properties.frame_idanalysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.allOf[0].ifanalysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.allOf[0].if.properties.is_extendedanalysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.channelanalysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.signalanalysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.frame_idanalysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.frame_id.oneOf[0]analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.frame_id.oneOf[1]analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.is_extendedanalysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.is_fdanalysis.schema.json: $.allOf[3].ifanalysis.schema.json: $.allOf[3].if.notanalysis.schema.json: $.allOf[3].if.properties.sourcesanalysis.schema.json: $.allOf[3].if.properties.sources.itemsanalysis.schema.json: $.allOf[3].if.properties.sources.items.properties.source_typeanalysis.schema.json: $.anyOf[0]analysis.schema.json: $.anyOf[1]analysis.schema.json: $.properties.config_versionanalysis.schema.json: $.properties.transformsanalysis.schema.json: $.properties.transforms.itemsanalysis.schema.json: $.properties.transforms.items.allOf[0].then.elseanalysis.schema.json: $.properties.transforms.items.allOf[0].then.else.properties.max_gapanalysis.schema.json: $.properties.transforms.items.allOf[0].then.thenanalysis.schema.json: $.properties.transforms.items.allOf[0].then.then.properties.windowanalysis.schema.json: $.properties.transforms.items.allOf[0].then.then.properties.stepanalysis.schema.json: $.properties.transforms.items.allOf[0].then.then.properties.originanalysis.schema.json: $.properties.transforms.items.allOf[0].then.then.properties.partial_policyanalysis.schema.json: $.properties.transforms.items.allOf[0].then.then.properties.minimum_coverageanalysis.schema.json: $.properties.transforms.items.allOf[0].then.if.properties.operationanalysis.schema.json: $.properties.transforms.items.allOf[0].ifanalysis.schema.json: $.properties.transforms.items.allOf[0].if.properties.operationanalysis.schema.json: $.properties.transforms.items.properties.nameanalysis.schema.json: $.properties.transforms.items.properties.operationanalysis.schema.json: $.properties.transforms.items.properties.expranalysis.schema.json: $.properties.transforms.items.properties.unitanalysis.schema.json: $.properties.transforms.items.properties.windowanalysis.schema.json: $.properties.transforms.items.properties.stepanalysis.schema.json: $.properties.transforms.items.properties.originanalysis.schema.json: $.properties.transforms.items.properties.max_gapanalysis.schema.json: $.properties.transforms.items.properties.partial_policyanalysis.schema.json: $.properties.transforms.items.properties.minimum_coverageanalysis.schema.json: $.properties.transforms.items.properties.intervalanalysis.schema.json: $.properties.aggregationsanalysis.schema.json: $.properties.aggregations.itemsanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[0].else.properties.qanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[0].thenanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[0].if.properties.operationanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[1].else.properties.ddofanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[1].if.properties.operationanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[2].then.properties.fieldanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[2].then.properties.unitanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[2].if.properties.operationanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[3].then.then.properties.group_byanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[3].then.then.properties.group_by.itemsanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[3].then.then.properties.fieldanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[3].then.if.properties.sourceanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[3].ifanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[3].if.properties.sourceanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[4].then.then.properties.group_byanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[4].then.then.properties.group_by.itemsanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[4].then.then.properties.fieldanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[4].then.if.properties.sourceanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[4].ifanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[4].if.properties.sourceanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].then.then.properties.group_byanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].then.then.properties.group_by.itemsanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].then.then.properties.operationanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].then.then.properties.fieldanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].then.if.properties.sourceanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].ifanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].if.properties.sourceanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].then.then.properties.group_byanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].then.then.properties.group_by.itemsanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].then.then.properties.operationanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].then.then.properties.fieldanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].then.if.properties.sourceanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].ifanalysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].if.properties.sourceanalysis.schema.json: $.properties.aggregations.items.allOf[0].ifanalysis.schema.json: $.properties.aggregations.items.allOf[0].if.properties.operationanalysis.schema.json: $.properties.aggregations.items.properties.nameanalysis.schema.json: $.properties.aggregations.items.properties.sourceanalysis.schema.json: $.properties.aggregations.items.properties.source.properties.calculationanalysis.schema.json: $.properties.aggregations.items.properties.source.properties.sequenceanalysis.schema.json: $.properties.aggregations.items.properties.source.properties.ruleanalysis.schema.json: $.properties.aggregations.items.properties.source.properties.windowanalysis.schema.json: $.properties.aggregations.items.properties.operationanalysis.schema.json: $.properties.aggregations.items.properties.fieldanalysis.schema.json: $.properties.aggregations.items.properties.group_byanalysis.schema.json: $.properties.aggregations.items.properties.group_by.itemsanalysis.schema.json: $.properties.aggregations.items.properties.unitanalysis.schema.json: $.properties.aggregations.items.properties.include_partialanalysis.schema.json: $.properties.aggregations.items.properties.partial_policyanalysis.schema.json: $.properties.aggregations.items.properties.qanalysis.schema.json: $.properties.aggregations.items.properties.ddofanalysis.schema.json: $.properties.lookupsanalysis.schema.json: $.properties.lookups.itemsanalysis.schema.json: $.properties.lookups.items.properties.nameanalysis.schema.json: $.properties.lookups.items.properties.input_unitanalysis.schema.json: $.properties.lookups.items.properties.unitanalysis.schema.json: $.properties.lookups.items.properties.pointsanalysis.schema.json: $.properties.lookups.items.properties.points.itemsanalysis.schema.json: $.properties.lookups.items.properties.points.items.itemsanalysis.schema.json: $.properties.datasetanalysis.schema.json: $.properties.dataset.properties.nameanalysis.schema.json: $.properties.dataset.properties.name.notanalysis.schema.json: $.properties.dataset.properties.entityanalysis.schema.json: $.properties.dataset.properties.entity.notanalysis.schema.json: $.properties.dataset.properties.sessionanalysis.schema.json: $.properties.dataset.properties.session.notanalysis.schema.json: $.properties.dataset.properties.domainanalysis.schema.json: $.properties.dataset.properties.domain.properties.startanalysis.schema.json: $.properties.dataset.properties.domain.properties.start.anyOf[0]analysis.schema.json: $.properties.dataset.properties.domain.properties.start.anyOf[1]analysis.schema.json: $.properties.dataset.properties.domain.properties.endanalysis.schema.json: $.properties.dataset.properties.domain.properties.end.anyOf[0]analysis.schema.json: $.properties.dataset.properties.domain.properties.end.anyOf[1]analysis.schema.json: $.properties.dataset.properties.metadataanalysis.schema.json: $.properties.sourcesanalysis.schema.json: $.properties.sources.items.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[0].properties.nameanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.name.notanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.timeanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.unitanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.time_typeanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.clockanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.unitanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.timezoneanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.time_typeanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.metadataanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.rowsanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows.itemsanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows.items.properties.timeanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows.items.properties.time.anyOf[0]analysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows.items.properties.time.anyOf[1]analysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows.items.properties.valuesanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows.items.properties.values.additionalPropertiesanalysis.schema.json: $.properties.sources.items.oneOf[0].properties.source_typeanalysis.schema.json: $.properties.sources.items.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[1].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[1].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[1].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[1].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.nameanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.name.notanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.timeanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.unitanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.time_typeanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.clockanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.unitanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.timezoneanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.time_typeanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.metadataanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[2].itemsanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.pathsanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[2].itemsanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.time_columnanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.source_typeanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.readeranalysis.schema.json: $.properties.sources.items.oneOf[1].properties.reader.properties.encodinganalysis.schema.json: $.properties.sources.items.oneOf[1].properties.reader.properties.delimiteranalysis.schema.json: $.properties.sources.items.oneOf[1].properties.reader.properties.missing_valuesanalysis.schema.json: $.properties.sources.items.oneOf[1].properties.reader.properties.missing_values.itemsanalysis.schema.json: $.properties.sources.items.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[2].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[2].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[2].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[2].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.nameanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.name.notanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.timeanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.unitanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.time_typeanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.clockanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[1].properties.unitanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[1].properties.time_typeanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.legacy_profileanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[2].itemsanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.pathsanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[2].itemsanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.dbc_by_channelanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.dbc_by_channel.additionalPropertiesanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.metadataanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.source_typeanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.readeranalysis.schema.json: $.properties.sources.items.oneOf[2].properties.reader.properties.decode_policyanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.reader.properties.decode_scopeanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.reader.properties.input_checkanalysis.schema.json: $.properties.sources.items.oneOf[2].properties.file_mergeanalysis.schema.json: $.properties.sources.items.oneOf[3]analysis.schema.json: $.properties.sources.items.oneOf[3].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[3].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[3].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[3].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.nameanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.name.notanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.timeanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.unitanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.time_typeanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.clockanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.unitanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.time_typeanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.timezoneanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[2].itemsanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.pathsanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[2].itemsanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.offsetsanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.offsets.itemsanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.dbc_by_channelanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.dbc_by_channel.patternProperties.^[1-9][0-9]*(?![\s\S])analysis.schema.json: $.properties.sources.items.oneOf[3].properties.metadataanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.source_typeanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.readeranalysis.schema.json: $.properties.sources.items.oneOf[3].properties.reader.properties.versionanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.reader.properties.encodinganalysis.schema.json: $.properties.sources.items.oneOf[3].properties.reader.properties.decode_policyanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.reader.properties.input_checkanalysis.schema.json: $.properties.sources.items.oneOf[3].properties.file_mergeanalysis.schema.json: $.properties.sources.items.oneOf[4]analysis.schema.json: $.properties.sources.items.oneOf[4].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.nameanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.name.notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.timeanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.unitanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.time_typeanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.clockanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.unitanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.time_typeanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.timezoneanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[2].itemsanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.pathsanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[2].itemsanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.offsetsanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.offsets.itemsanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.dbc_by_channelanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.dbc_by_channel.patternProperties.^[1-9][0-9]*(?![\s\S])analysis.schema.json: $.properties.sources.items.oneOf[4].properties.metadataanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.source_typeanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.readeranalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layoutanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fieldsanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestampanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.columnanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.column.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.column.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.stripanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.value_mapanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.value_map.additionalProperties.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.value_map.additionalProperties.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.value_map.additionalProperties.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_idanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.columnanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.column.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.column.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.stripanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.value_mapanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.value_map.additionalProperties.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.value_map.additionalProperties.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.value_map.additionalProperties.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channelanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.columnanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.column.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.column.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.stripanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.value_mapanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.value_map.additionalProperties.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.value_map.additionalProperties.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.value_map.additionalProperties.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rxanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.columnanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.column.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.column.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.stripanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.value_mapanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.value_map.additionalProperties.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.value_map.additionalProperties.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.value_map.additionalProperties.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extendedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.columnanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.column.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.column.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.stripanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.value_mapanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.value_map.additionalProperties.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.value_map.additionalProperties.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.value_map.additionalProperties.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fdanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.columnanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.column.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.column.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.stripanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.value_mapanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.value_map.additionalProperties.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.value_map.additionalProperties.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.value_map.additionalProperties.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kindanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.columnanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.column.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.column.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.stripanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.value_mapanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.value_map.additionalProperties.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.value_map.additionalProperties.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.value_map.additionalProperties.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dataanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.columnanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.column.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.column.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.stripanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.value_mapanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.value_map.additionalProperties.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.value_map.additionalProperties.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.value_map.additionalProperties.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_lengthanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.columnanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.column.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.column.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.stripanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.value_mapanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.value_map.additionalProperties.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.value_map.additionalProperties.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.value_map.additionalProperties.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_codeanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.columnanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.column.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.column.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.stripanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.value_mapanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.value_map.additionalProperties.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.value_map.additionalProperties.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.value_map.additionalProperties.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switchanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.columnanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.column.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.column.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.stripanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.value_mapanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.value_map.additionalProperties.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.value_map.additionalProperties.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.value_map.additionalProperties.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicatoranalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.columnanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.column.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.column.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixedanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.stripanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.value_mapanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.value_map.additionalProperties.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.value_map.additionalProperties.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.value_map.additionalProperties.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.encodinganalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.delimiteranalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.has_headeranalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.skip_rowsanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.layout_versionanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.time_formatanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.id_baseanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.length_baseanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.channel_originanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.payload_styleanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.rollover_min_dropanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.decode_policyanalysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.input_checkanalysis.schema.json: $.properties.sources.items.oneOf[5]analysis.schema.json: $.properties.sources.items.oneOf[5].oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[5].oneOf[0].notanalysis.schema.json: $.properties.sources.items.oneOf[5].oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[5].oneOf[1].notanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.nameanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.name.notanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.timeanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.unitanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.time_typeanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.clockanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.unitanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.time_typeanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.timezoneanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.legacy_profileanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[2].itemsanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.pathsanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[2]analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[2].itemsanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[0]analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[1]analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[1].properties.pathanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[1].properties.offsetanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.dbc_by_channelanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.dbc_by_channel.additionalPropertiesanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.metadataanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.source_typeanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.offsetsanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.offsets.itemsanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.readeranalysis.schema.json: $.properties.sources.items.oneOf[5].properties.reader.properties.versionanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.reader.properties.encodinganalysis.schema.json: $.properties.sources.items.oneOf[5].properties.reader.properties.decode_policyanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.reader.properties.decode_scopeanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.reader.properties.input_checkanalysis.schema.json: $.properties.sources.items.oneOf[5].properties.file_mergeanalysis.schema.json: $.properties.signalsanalysis.schema.json: $.properties.signals.items.oneOf[0]analysis.schema.json: $.properties.signals.items.oneOf[0].allOf[0].then.allOf[0].thenanalysis.schema.json: $.properties.signals.items.oneOf[0].allOf[0].then.allOf[0].ifanalysis.schema.json: $.properties.signals.items.oneOf[0].allOf[0].then.allOf[0].if.properties.fieldanalysis.schema.json: $.properties.signals.items.oneOf[0].allOf[0].then.properties.choicesanalysis.schema.json: $.properties.signals.items.oneOf[0].allOf[0].ifanalysis.schema.json: $.properties.signals.items.oneOf[0].allOf[0].if.properties.dtypeanalysis.schema.json: $.properties.signals.items.oneOf[0].allOf[1].thenanalysis.schema.json: $.properties.signals.items.oneOf[0].allOf[1].ifanalysis.schema.json: $.properties.signals.items.oneOf[0].allOf[1].if.properties.fieldanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.nameanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.name.notanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.sourceanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.source.notanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.fieldanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[0]analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1]analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].allOf[0].then.properties.frame_idanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].allOf[0].ifanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].allOf[0].if.properties.is_extendedanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.channelanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.signalanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.frame_idanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.frame_id.oneOf[0]analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.frame_id.oneOf[1]analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.is_extendedanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.is_fdanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.dtypeanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.unitanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.valid_foranalysis.schema.json: $.properties.signals.items.oneOf[0].properties.sample_policyanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.same_time_policyanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.code_dtypeanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.choicesanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.choices.itemsanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.choices.items.prefixItems[0]analysis.schema.json: $.properties.signals.items.oneOf[0].properties.choices.items.prefixItems[1]analysis.schema.json: $.properties.signals.items.oneOf[0].properties.valid_rangeanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.valid_range.itemsanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.invalid_valuesanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.invalid_values.itemsanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.semantic_idanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.semantic_contract_versionanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.mapping_versionanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.sign_conventionanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.measurement_locationanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.metadataanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.periodanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.conversionanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.conversion.properties.input_unitanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.conversion.properties.scaleanalysis.schema.json: $.properties.signals.items.oneOf[0].properties.conversion.properties.offsetanalysis.schema.json: $.properties.signals.items.oneOf[1]analysis.schema.json: $.properties.signals.items.oneOf[1].allOf[0].then.properties.frame_idanalysis.schema.json: $.properties.signals.items.oneOf[1].allOf[0].ifanalysis.schema.json: $.properties.signals.items.oneOf[1].allOf[0].if.properties.is_extendedanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.frame_idanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.frame_id.oneOf[0]analysis.schema.json: $.properties.signals.items.oneOf[1].properties.frame_id.oneOf[1]analysis.schema.json: $.properties.signals.items.oneOf[1].properties.channelanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.is_extendedanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.is_fdanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.sourceanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.source.notanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.periodanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.valid_foranalysis.schema.json: $.properties.signals.items.oneOf[1].properties.same_time_policyanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signalsanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.itemsanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[0].then.allOf[0].thenanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[0].then.allOf[0].ifanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[0].then.allOf[0].if.properties.fieldanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[0].then.properties.choicesanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[0].ifanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[0].if.properties.dtypeanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[1].thenanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[1].ifanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[1].if.properties.fieldanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.nameanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.name.notanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.dtypeanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.unitanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.valid_foranalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.sample_policyanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.same_time_policyanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.code_dtypeanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.choicesanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.choices.itemsanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.choices.items.prefixItems[0]analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.choices.items.prefixItems[1]analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.valid_rangeanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.valid_range.itemsanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.invalid_valuesanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.invalid_values.itemsanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.semantic_idanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.semantic_contract_versionanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.mapping_versionanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.sign_conventionanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.measurement_locationanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.metadataanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.periodanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.signalanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.conversionanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion.properties.input_unitanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion.properties.scaleanalysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion.properties.offsetanalysis.schema.json: $.properties.derivedanalysis.schema.json: $.properties.derived.additionalPropertiesanalysis.schema.json: $.properties.derived.additionalProperties.properties.expranalysis.schema.json: $.properties.derived.additionalProperties.properties.unitanalysis.schema.json: $.properties.derived.additionalProperties.properties.semantic_idanalysis.schema.json: $.properties.derived.additionalProperties.properties.semantic_contract_versionanalysis.schema.json: $.properties.derived.additionalProperties.properties.sign_conventionanalysis.schema.json: $.properties.derived.additionalProperties.properties.measurement_locationanalysis.schema.json: $.properties.derived.additionalProperties.properties.metadataanalysis.schema.json: $.properties.rulesanalysis.schema.json: $.properties.rules.items.oneOf[0]analysis.schema.json: $.properties.rules.items.oneOf[0].properties.nameanalysis.schema.json: $.properties.rules.items.oneOf[0].properties.name.notanalysis.schema.json: $.properties.rules.items.oneOf[0].properties.conditionanalysis.schema.json: $.properties.rules.items.oneOf[0].properties.selection_originanalysis.schema.json: $.properties.rules.items.oneOf[0].properties.rule_typeanalysis.schema.json: $.properties.rules.items.oneOf[0].properties.minimum_durationanalysis.schema.json: $.properties.rules.items.oneOf[0].properties.duration_comparisonanalysis.schema.json: $.properties.rules.items.oneOf[0].properties.intervalanalysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[0]analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[0].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[1]analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[1].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[1].properties.valueanalysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[1].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[2]analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[2].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[2].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[1]analysis.schema.json: $.properties.rules.items.oneOf[1].properties.nameanalysis.schema.json: $.properties.rules.items.oneOf[1].properties.name.notanalysis.schema.json: $.properties.rules.items.oneOf[1].properties.conditionanalysis.schema.json: $.properties.rules.items.oneOf[1].properties.emit_initialanalysis.schema.json: $.properties.rules.items.oneOf[1].properties.rule_typeanalysis.schema.json: $.properties.rules.items.oneOf[1].properties.intervalanalysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[0]analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[0].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[1]analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[1].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[1].properties.valueanalysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[1].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[2]analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[2].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[2].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[2]analysis.schema.json: $.properties.rules.items.oneOf[2].properties.nameanalysis.schema.json: $.properties.rules.items.oneOf[2].properties.name.notanalysis.schema.json: $.properties.rules.items.oneOf[2].properties.conditionanalysis.schema.json: $.properties.rules.items.oneOf[2].properties.emit_initialanalysis.schema.json: $.properties.rules.items.oneOf[2].properties.rule_typeanalysis.schema.json: $.properties.rules.items.oneOf[2].properties.intervalanalysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[0]analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[0].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[1]analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[1].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[1].properties.valueanalysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[1].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[2]analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[2].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[2].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[3]analysis.schema.json: $.properties.rules.items.oneOf[3].properties.nameanalysis.schema.json: $.properties.rules.items.oneOf[3].properties.name.notanalysis.schema.json: $.properties.rules.items.oneOf[3].properties.conditionanalysis.schema.json: $.properties.rules.items.oneOf[3].properties.window_durationanalysis.schema.json: $.properties.rules.items.oneOf[3].properties.emit_initialanalysis.schema.json: $.properties.rules.items.oneOf[3].properties.rule_typeanalysis.schema.json: $.properties.rules.items.oneOf[3].properties.intervalanalysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[0]analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[0].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[1]analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[1].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[1].properties.valueanalysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[1].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[2]analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[2].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[2].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[4]analysis.schema.json: $.properties.rules.items.oneOf[4].properties.nameanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.name.notanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.signalanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.windowanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.directionanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.thresholdanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.monotonicanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.coverage_policyanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.emit_initialanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.retriggeranalysis.schema.json: $.properties.rules.items.oneOf[4].properties.rule_typeanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.intervalanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[0]analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[0].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[1]analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[1].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[1].properties.valueanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[1].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[2]analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[2].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[2].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[5]analysis.schema.json: $.properties.rules.items.oneOf[5].properties.nameanalysis.schema.json: $.properties.rules.items.oneOf[5].properties.name.notanalysis.schema.json: $.properties.rules.items.oneOf[5].properties.conditionanalysis.schema.json: $.properties.rules.items.oneOf[5].properties.enter_delayanalysis.schema.json: $.properties.rules.items.oneOf[5].properties.exit_delayanalysis.schema.json: $.properties.rules.items.oneOf[5].properties.rule_typeanalysis.schema.json: $.properties.rules.items.oneOf[5].properties.intervalanalysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[0]analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[0].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[1]analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[1].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[1].properties.valueanalysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[1].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[2]analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[2].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[2].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[6]analysis.schema.json: $.properties.rules.items.oneOf[6].properties.nameanalysis.schema.json: $.properties.rules.items.oneOf[6].properties.name.notanalysis.schema.json: $.properties.rules.items.oneOf[6].properties.enter_conditionanalysis.schema.json: $.properties.rules.items.oneOf[6].properties.exit_conditionanalysis.schema.json: $.properties.rules.items.oneOf[6].properties.enter_delayanalysis.schema.json: $.properties.rules.items.oneOf[6].properties.exit_delayanalysis.schema.json: $.properties.rules.items.oneOf[6].properties.rule_typeanalysis.schema.json: $.properties.rules.items.oneOf[6].properties.intervalanalysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[0]analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[0].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[1]analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[1].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[1].properties.valueanalysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[1].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[2]analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[2].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[2].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[7]analysis.schema.json: $.properties.rules.items.oneOf[7].properties.nameanalysis.schema.json: $.properties.rules.items.oneOf[7].properties.name.notanalysis.schema.json: $.properties.rules.items.oneOf[7].properties.start_conditionanalysis.schema.json: $.properties.rules.items.oneOf[7].properties.end_conditionanalysis.schema.json: $.properties.rules.items.oneOf[7].properties.timeoutanalysis.schema.json: $.properties.rules.items.oneOf[7].properties.timeout.anyOf[0]analysis.schema.json: $.properties.rules.items.oneOf[7].properties.timeout.anyOf[1]analysis.schema.json: $.properties.rules.items.oneOf[7].properties.emit_initialanalysis.schema.json: $.properties.rules.items.oneOf[7].properties.rule_typeanalysis.schema.json: $.properties.rules.items.oneOf[7].properties.intervalanalysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[0]analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[0].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[1]analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[1].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[1].properties.valueanalysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[1].properties.driveranalysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[2]analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[2].properties.modeanalysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[2].properties.driveranalysis.schema.json: $.properties.windowsanalysis.schema.json: $.properties.windows.itemsanalysis.schema.json: $.properties.windows.items.allOf[0].else.notanalysis.schema.json: $.properties.windows.items.allOf[0].thenanalysis.schema.json: $.properties.windows.items.allOf[0].then.properties.anchoranalysis.schema.json: $.properties.windows.items.allOf[0].ifanalysis.schema.json: $.properties.windows.items.allOf[0].if.properties.mergeanalysis.schema.json: $.properties.windows.items.properties.nameanalysis.schema.json: $.properties.windows.items.properties.name.notanalysis.schema.json: $.properties.windows.items.properties.ruleanalysis.schema.json: $.properties.windows.items.properties.rule.notanalysis.schema.json: $.properties.windows.items.properties.anchoranalysis.schema.json: $.properties.windows.items.properties.preanalysis.schema.json: $.properties.windows.items.properties.postanalysis.schema.json: $.properties.windows.items.properties.mergeanalysis.schema.json: $.properties.windows.items.properties.exit_delayanalysis.schema.json: $.properties.windows.items.properties.intervalanalysis.schema.json: $.properties.windows.items.properties.interval.oneOf[0]analysis.schema.json: $.properties.windows.items.properties.interval.oneOf[0].properties.modeanalysis.schema.json: $.properties.windows.items.properties.interval.oneOf[1]analysis.schema.json: $.properties.windows.items.properties.interval.oneOf[1].properties.modeanalysis.schema.json: $.properties.windows.items.properties.interval.oneOf[1].properties.valueanalysis.schema.json: $.properties.windows.items.properties.interval.oneOf[1].properties.driveranalysis.schema.json: $.properties.windows.items.properties.interval.oneOf[2]analysis.schema.json: $.properties.windows.items.properties.interval.oneOf[2].properties.modeanalysis.schema.json: $.properties.windows.items.properties.interval.oneOf[2].properties.driveranalysis.schema.json: $.properties.calculationsanalysis.schema.json: $.properties.calculations.itemsanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].else.elseanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].else.if.properties.operationanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].then.oneOf[0]analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].then.oneOf[0].notanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].then.oneOf[1]analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].then.oneOf[1].notanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].if.properties.operationanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[1].else.notanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[1].if.properties.operationanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[2].else.properties.ruleanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[2].thenanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[2].if.properties.operationanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[3].else.properties.windowanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[3].thenanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[3].if.properties.operationanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[4].then.properties.unitanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[4].if.properties.operationanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].then.properties.scopeanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].then.properties.expranalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].then.properties.conditionanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].then.properties.methodanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].then.properties.minimum_coverageanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].then.properties.intervalanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].if.properties.operationanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[6].else.properties.ddofanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[6].if.properties.operationanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[7].then.properties.ddofanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[7].if.properties.operationanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[8].else.properties.qanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[8].thenanalysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[8].if.properties.operationanalysis.schema.json: $.properties.calculations.items.allOf[0].ifanalysis.schema.json: $.properties.calculations.items.allOf[0].if.properties.operationanalysis.schema.json: $.properties.calculations.items.properties.nameanalysis.schema.json: $.properties.calculations.items.properties.name.notanalysis.schema.json: $.properties.calculations.items.properties.scopeanalysis.schema.json: $.properties.calculations.items.properties.scope.oneOf[0]analysis.schema.json: $.properties.calculations.items.properties.scope.oneOf[1]analysis.schema.json: $.properties.calculations.items.properties.scope.oneOf[1].properties.ruleanalysis.schema.json: $.properties.calculations.items.properties.scope.oneOf[2]analysis.schema.json: $.properties.calculations.items.properties.scope.oneOf[2].properties.windowanalysis.schema.json: $.properties.calculations.items.properties.operationanalysis.schema.json: $.properties.calculations.items.properties.conditionanalysis.schema.json: $.properties.calculations.items.properties.unitanalysis.schema.json: $.properties.calculations.items.properties.methodanalysis.schema.json: $.properties.calculations.items.properties.partial_policyanalysis.schema.json: $.properties.calculations.items.properties.minimum_coverageanalysis.schema.json: $.properties.calculations.items.properties.expranalysis.schema.json: $.properties.calculations.items.properties.intervalanalysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[0]analysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[0].properties.modeanalysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[1]analysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[1].properties.modeanalysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[1].properties.valueanalysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[1].properties.driveranalysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[2]analysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[2].properties.modeanalysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[2].properties.driveranalysis.schema.json: $.properties.calculations.items.properties.ruleanalysis.schema.json: $.properties.calculations.items.properties.windowanalysis.schema.json: $.properties.calculations.items.properties.ddofanalysis.schema.json: $.properties.calculations.items.properties.qanalysis.schema.json: $.properties.presetsanalysis.schema.json: $.properties.presets.items.oneOf[0]analysis.schema.json: $.properties.presets.items.oneOf[0].properties.nameanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.name.notanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.versionanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindingsanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings.properties.modeanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings.properties.mode.notanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings.properties.currentanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings.properties.current.notanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings.properties.voltageanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings.properties.voltage.notanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.parametersanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.mode_valueanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.current_minanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.compute_energyanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.compute_chargeanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.minimum_coverageanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.partial_policyanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.minimum_durationanalysis.schema.json: $.properties.presets.items.oneOf[0].properties.preset_typeanalysis.schema.json: $.properties.presets.items.oneOf[1]analysis.schema.json: $.properties.presets.items.oneOf[1].properties.nameanalysis.schema.json: $.properties.presets.items.oneOf[1].properties.name.notanalysis.schema.json: $.properties.presets.items.oneOf[1].properties.versionanalysis.schema.json: $.properties.presets.items.oneOf[1].properties.role_bindingsanalysis.schema.json: $.properties.presets.items.oneOf[1].properties.role_bindings.properties.alarmanalysis.schema.json: $.properties.presets.items.oneOf[1].properties.role_bindings.properties.alarm.notanalysis.schema.json: $.properties.presets.items.oneOf[1].properties.parametersanalysis.schema.json: $.properties.presets.items.oneOf[1].properties.parameters.properties.preanalysis.schema.json: $.properties.presets.items.oneOf[1].properties.parameters.properties.postanalysis.schema.json: $.properties.presets.items.oneOf[1].properties.parameters.properties.emit_initialanalysis.schema.json: $.properties.presets.items.oneOf[1].properties.preset_typeanalysis.schema.json: $.properties.presets.items.oneOf[2]analysis.schema.json: $.properties.presets.items.oneOf[2].properties.nameanalysis.schema.json: $.properties.presets.items.oneOf[2].properties.name.notanalysis.schema.json: $.properties.presets.items.oneOf[2].properties.versionanalysis.schema.json: $.properties.presets.items.oneOf[2].properties.role_bindingsanalysis.schema.json: $.properties.presets.items.oneOf[2].properties.role_bindings.properties.requestanalysis.schema.json: $.properties.presets.items.oneOf[2].properties.role_bindings.properties.request.notanalysis.schema.json: $.properties.presets.items.oneOf[2].properties.role_bindings.properties.responseanalysis.schema.json: $.properties.presets.items.oneOf[2].properties.role_bindings.properties.response.notanalysis.schema.json: $.properties.presets.items.oneOf[2].properties.parametersanalysis.schema.json: $.properties.presets.items.oneOf[2].properties.parameters.properties.min_delayanalysis.schema.json: $.properties.presets.items.oneOf[2].properties.parameters.properties.max_delayanalysis.schema.json: $.properties.presets.items.oneOf[2].properties.parameters.properties.emit_initialanalysis.schema.json: $.properties.presets.items.oneOf[2].properties.parameters.properties.max_pendinganalysis.schema.json: $.properties.presets.items.oneOf[2].properties.preset_typeanalysis.schema.json: $.properties.presets.items.oneOf[3]analysis.schema.json: $.properties.presets.items.oneOf[3].properties.nameanalysis.schema.json: $.properties.presets.items.oneOf[3].properties.name.notanalysis.schema.json: $.properties.presets.items.oneOf[3].properties.versionanalysis.schema.json: $.properties.presets.items.oneOf[3].properties.role_bindingsanalysis.schema.json: $.properties.presets.items.oneOf[3].properties.role_bindings.properties.signalanalysis.schema.json: $.properties.presets.items.oneOf[3].properties.role_bindings.properties.signal.notanalysis.schema.json: $.properties.presets.items.oneOf[3].properties.parametersanalysis.schema.json: $.properties.presets.items.oneOf[3].properties.parameters.properties.unitanalysis.schema.json: $.properties.presets.items.oneOf[3].properties.parameters.properties.enter_thresholdanalysis.schema.json: $.properties.presets.items.oneOf[3].properties.parameters.properties.exit_thresholdanalysis.schema.json: $.properties.presets.items.oneOf[3].properties.parameters.properties.enter_delayanalysis.schema.json: $.properties.presets.items.oneOf[3].properties.parameters.properties.exit_delayanalysis.schema.json: $.properties.presets.items.oneOf[3].properties.preset_typeanalysis.schema.json: $.properties.message_calculationsanalysis.schema.json: $.properties.message_calculations.itemsanalysis.schema.json: $.properties.message_calculations.items.properties.nameanalysis.schema.json: $.properties.message_calculations.items.properties.name.notanalysis.schema.json: $.properties.message_calculations.items.properties.sourceanalysis.schema.json: $.properties.message_calculations.items.properties.source.notanalysis.schema.json: $.properties.message_calculations.items.properties.profileanalysis.schema.json: $.properties.message_calculations.items.properties.operationanalysis.schema.json: $.properties.message_calculations.items.properties.message_policyanalysis.schema.json: $.properties.message_calculations.items.properties.expranalysis.schema.json: $.properties.message_calculations.items.properties.unitanalysis.schema.json: $.properties.message_calculations.items.properties.update_messageanalysis.schema.json: $.properties.message_calculations.items.properties.update_message.allOf[0].then.properties.frame_idanalysis.schema.json: $.properties.message_calculations.items.properties.update_message.allOf[0].ifanalysis.schema.json: $.properties.message_calculations.items.properties.update_message.allOf[0].if.properties.is_extendedanalysis.schema.json: $.properties.message_calculations.items.properties.update_message.properties.channelanalysis.schema.json: $.properties.message_calculations.items.properties.update_message.properties.frame_idanalysis.schema.json: $.properties.message_calculations.items.properties.update_message.properties.frame_id.oneOf[0]analysis.schema.json: $.properties.message_calculations.items.properties.update_message.properties.frame_id.oneOf[1]analysis.schema.json: $.properties.message_calculations.items.properties.update_message.properties.is_extendedanalysis.schema.json: $.properties.message_calculations.items.properties.update_message.properties.is_fdanalysis.schema.json: $.properties.message_calculations.items.properties.split_by_signanalysis.schema.json: $.properties.message_calculations.items.properties.split_by_sign.properties.signalanalysis.schema.json: $.properties.message_calculations.items.properties.split_by_sign.properties.signal.notanalysis.schema.json: $.properties.message_calculations.items.properties.split_by_sign.properties.bucketanalysis.schema.json: $.properties.message_calculations.items.properties.split_by_sign.properties.value_policyanalysis.schema.json: $.properties.message_calculations.items.properties.parametersanalysis.schema.json: $.properties.message_calculations.items.properties.parameters.additionalPropertiesanalysis.schema.json: $.properties.message_calculations.items.properties.parameters.additionalProperties.properties.valueanalysis.schema.json: $.properties.message_calculations.items.properties.parameters.additionalProperties.properties.unitanalysis.schema.json: $.properties.executionanalysis.schema.json: $.properties.execution.properties.backendanalysis.schema.json: $.properties.execution.properties.batch_rowsanalysis.schema.json: $.properties.execution.properties.memory_budget_bytesanalysis.schema.json: $.properties.execution.properties.result_buffer_rowsanalysis.schema.json: $.properties.execution.properties.partial_policyanalysis.schema.json: $.properties.execution.properties.on_budget_exceededanalysis.schema.json: $.properties.execution.properties.spool_quota_bytesanalysis.schema.json: $.properties.execution.properties.spool_quota_bytes.anyOf[0]analysis.schema.json: $.properties.execution.properties.spool_quota_bytes.anyOf[1]analysis.schema.json: $.properties.execution.properties.process_countanalysis.schema.json: $.properties.outputsanalysis.schema.json: $.properties.outputs.properties.contributionsanalysis.schema.json: $.properties.outputs.properties.tablesanalysis.schema.json: $.properties.outputs.properties.manifestanalysis.schema.json: $.properties.outputs.properties.signal_csvanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[0]analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1]analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.signalsanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.signals.itemsanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.signals.items.notanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.scopeanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.scope.oneOf[0]analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.scope.oneOf[1]analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.scope.oneOf[1].properties.windowanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resamplinganalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[0]analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1]analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.continuousanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.continuous.itemsanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.continuous.items.notanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.max_gapanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.periodanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[0]analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1]analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.modeanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.driveranalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.driver.notanalysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.startanalysis.schema.json: $.properties.outputs.properties.can_framesanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[0]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[0].thenanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[0].ifanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[1].thenanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[1].ifanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[2].then.not.anyOf[0]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[2].then.not.anyOf[1]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[2].ifanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[2].if.properties.source_time_referenceanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.sourceanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.source.notanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.formatanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.scopeanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[0]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[1]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[1].properties.windowanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[2]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[2].properties.windowsanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.source_time_referenceanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.capture_dateanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.output_offsetanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resamplinganalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[0]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.max_gapanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messagesanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.itemsanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.allOf[0].then.properties.frame_idanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.allOf[0].ifanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.allOf[0].if.properties.is_extendedanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.channelanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.frame_idanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.frame_id.oneOf[0]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.frame_id.oneOf[1]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.is_extendedanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.is_fdanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.continuousanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.continuous.itemsanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.protectedanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.protected.itemsanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.same_time_policyanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.unknown_policyanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.max_distanceanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.periodanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[0]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1]analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.modeanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.startanalysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.timezoneanalysis.schema.json: $.properties.metadataanalysis.schema.json: $.properties.sequencesanalysis.schema.json: $.properties.sequences.itemsanalysis.schema.json: $.properties.sequences.items.properties.nameanalysis.schema.json: $.properties.sequences.items.properties.name.notanalysis.schema.json: $.properties.sequences.items.properties.startanalysis.schema.json: $.properties.sequences.items.properties.start.notanalysis.schema.json: $.properties.sequences.items.properties.responseanalysis.schema.json: $.properties.sequences.items.properties.response.notanalysis.schema.json: $.properties.sequences.items.properties.min_delayanalysis.schema.json: $.properties.sequences.items.properties.max_delayanalysis.schema.json: $.properties.sequences.items.properties.max_pendinganalysis.schema.json: $.properties.sequences.items.properties.intervalanalysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[0]analysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[0].properties.modeanalysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[1]analysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[1].properties.modeanalysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[1].properties.valueanalysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[1].properties.driveranalysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[2]analysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[2].properties.modeanalysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[2].properties.driveranalysis.schema.json: $.properties.intervalsanalysis.schema.json: $.properties.intervals.properties.defaultanalysis.schema.json: $.properties.intervals.properties.default.oneOf[0]analysis.schema.json: $.properties.intervals.properties.default.oneOf[0].properties.modeanalysis.schema.json: $.properties.intervals.properties.default.oneOf[1]analysis.schema.json: $.properties.intervals.properties.default.oneOf[1].properties.modeanalysis.schema.json: $.properties.intervals.properties.default.oneOf[1].properties.valueanalysis.schema.json: $.properties.intervals.properties.default.oneOf[1].properties.driveranalysis.schema.json: $.properties.intervals.properties.default.oneOf[2]analysis.schema.json: $.properties.intervals.properties.default.oneOf[2].properties.modeanalysis.schema.json: $.properties.intervals.properties.default.oneOf[2].properties.driveranalysis.schema.json: $.properties.diagnosticsanalysis.schema.json: $.properties.diagnostics.properties.traceanalysis.schema.json: $.properties.diagnostics.properties.integrityanalysis.schema.json: $.properties.diagnostics.properties.retain_workanalysis.schema.json: $.properties.importsanalysis.schema.json: $.properties.imports.itemsanalysis.schema.json: $.properties.overridesanalysis.schema.json: $.properties.overrides.properties.sourcesanalysis.schema.json: $.properties.overrides.properties.sources.additionalPropertiesanalysis.schema.json: $.properties.overrides.properties.signalsanalysis.schema.json: $.properties.overrides.properties.signals.additionalPropertiesanalysis.schema.json: $.properties.overrides.properties.derivedanalysis.schema.json: $.properties.overrides.properties.derived.additionalPropertiesbatch-v1.schema.jsonbatch-v1.schema.json: $batch-v1.schema.json: $.oneOf[0]batch-v1.schema.json: $.oneOf[0].not.anyOf[0]batch-v1.schema.json: $.oneOf[0].not.anyOf[1]batch-v1.schema.json: $.oneOf[0].not.anyOf[2]batch-v1.schema.json: $.oneOf[1]batch-v1.schema.json: $.oneOf[1].notbatch-v1.schema.json: $.properties.batch_versionbatch-v1.schema.json: $.properties.process_countbatch-v1.schema.json: $.properties.fail_fastbatch-v1.schema.json: $.properties.backendbatch-v1.schema.json: $.properties.jobsbatch-v1.schema.json: $.properties.jobs.itemsbatch-v1.schema.json: $.properties.jobs.items.properties.namebatch-v1.schema.json: $.properties.jobs.items.properties.planbatch-v1.schema.json: $.properties.templatebatch-v1.schema.json: $.properties.inputsbatch-v1.schema.json: $.properties.inputs.oneOf[0]batch-v1.schema.json: $.properties.inputs.oneOf[1]batch-v1.schema.json: $.properties.inputs.oneOf[1].properties.pathbatch-v1.schema.json: $.properties.inputs.oneOf[1].properties.offsetbatch-v1.schema.json: $.properties.inputs.oneOf[2]batch-v1.schema.json: $.properties.inputs.oneOf[2].itemsbatch-v1.schema.json: $.properties.inputs.oneOf[2].items.oneOf[0]batch-v1.schema.json: $.properties.inputs.oneOf[2].items.oneOf[1]batch-v1.schema.json: $.properties.inputs.oneOf[2].items.oneOf[1].properties.pathbatch-v1.schema.json: $.properties.inputs.oneOf[2].items.oneOf[1].properties.offsetbatch-v1.schema.json: $.properties.sourcedefinitions.schema.jsondefinitions.schema.json: $definitions.schema.json: $.properties.sourcesdefinitions.schema.json: $.properties.sources.itemsdefinitions.schema.json: $.properties.signalsdefinitions.schema.json: $.properties.signals.itemsdefinitions.schema.json: $.properties.derived

Complete configuration schema reference

Start with the configuration guide. The paths below locate nodes in JSON Schema, not literal keys to paste into YAML. $defs holds reusable definitions and $ref points to them. This page translates descriptions; the linked original schemas define validation. Runtime plan checks also validate references, units, and supported combinations.

analysis.schema.json

Original validation schema

analysis.schema.json: $

json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$comment": "分析配置格式4;本地相对引用。字段结构由本规范检查,展开后的跨字段约束由计划模型检查。",
  "title": "Current Chronaxis analysis configuration",
  "description": "Current analysis configuration version 4 with automatic compatible-unit conversion. Defaults to actual record intervals and requested outputs only; AnalysisPlan checks references, units, drivers and time bounds.",
  "type": "object",
  "required": [
    "config_version",
    "dataset"
  ],
  "dependentRequired": {
    "overrides": [
      "imports"
    ]
  },
  "additionalProperties": false
}

analysis.schema.json: $.allOf[0].properties.signals

json
{
  "description": "Restrict signal fields to those supported by the selected version."
}

analysis.schema.json: $.allOf[0].properties.signals.items.dependentSchemas.code_dtype.properties.dtype

json
{
  "const": "enum",
  "description": "Signal value type; it determines which additional fields apply."
}

analysis.schema.json: $.allOf[0].properties.signals.items.properties.signals

json
{
  "description": "Restrict signal fields to those supported by the selected version."
}

analysis.schema.json: $.allOf[0].properties.signals.items.properties.signals.items.dependentSchemas.code_dtype.properties.dtype

json
{
  "const": "enum",
  "description": "Signal value type; it determines which additional fields apply."
}

analysis.schema.json: $.allOf[1]

json
{
  "$comment": "省略domain时由同次读取确定实际观测范围,普通分析与按需导出均可使用。"
}

analysis.schema.json: $.allOf[2].then.properties.signals

json
{
  "description": "Bind original source fields to simple analysis signal names, specifying type, unit, and validity duration."
}

analysis.schema.json: $.allOf[2].then.properties.signals.items.not

json
{
  "required": [
    "signals"
  ]
}

analysis.schema.json: $.allOf[2].then.properties.signals.items.properties.field

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Actual field in the source: an original field name for signal tables/memory, or a CAN channel/message/signal locator object."
}

analysis.schema.json: $.allOf[2].if

json
{
  "required": [
    "sources"
  ]
}

analysis.schema.json: $.allOf[2].if.not

json
{
  "required": [
    "imports"
  ]
}

analysis.schema.json: $.allOf[2].if.properties.sources

json
{
  "description": "Sources in declaration order. Put consecutive files in one source's paths. Loading may enumerate filenames and read DBC metadata needed for omitted signal settings, but does not read business records."
}

analysis.schema.json: $.allOf[2].if.properties.sources.items

json
{
  "required": [
    "source_type"
  ]
}

analysis.schema.json: $.allOf[2].if.properties.sources.items.properties.source_type

json
{
  "enum": [
    "memory",
    "signal_csv"
  ],
  "description": "Source type, selecting the reader and required fields. Options: \"memory\", ordered records embedded in configuration; \"signal_csv\", decoded-signal CSV."
}

analysis.schema.json: $.allOf[3].then.properties.signals

json
{
  "description": "Bind original source fields to simple analysis signal names, specifying type, unit, and validity duration."
}

analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field

json
{
  "type": "object",
  "required": [
    "signal",
    "frame_id"
  ],
  "description": "Actual field in the source: an original field name for signal tables/memory, or a CAN channel/message/signal locator object.",
  "additionalProperties": false
}

analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.allOf[0].then.properties.frame_id

json
{
  "maximum": 2047,
  "description": "Integer message IDs for standard frames are limited to 2047. The plan loader checks the range after converting string IDs."
}

analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.allOf[0].if

json
{
  "required": [
    "is_extended"
  ]
}

analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.allOf[0].if.properties.is_extended

json
{
  "const": false,
  "description": "When standard frame format is explicitly selected, an integer ID must fit in 11 bits."
}

analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.channel

json
{
  "type": "integer",
  "minimum": 1,
  "description": "CAN channels in user configuration start at 1; 1 maps to internal channel 0. If omitted, inherits the source's unique channel."
}

analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.signal

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name in the DBC, used with frame_id to locate a signal within that message. This is not the analysis alias."
}

analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.frame_id

json
{
  "description": "CAN message ID, as an integer or string. 0x is hexadecimal, 0b binary, and no prefix decimal. The parsed value must be 0 to 536870911; an explicitly standard frame is limited to 2047."
}

analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.frame_id.oneOf[0]

json
{
  "type": "integer",
  "minimum": 0,
  "maximum": 536870911
}

analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.frame_id.oneOf[1]

json
{
  "type": "string",
  "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
  "minLength": 1
}

analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.is_extended

json
{
  "type": "boolean",
  "description": "Optional standard/extended frame constraint. If omitted, use DBC and actual frames; request an explicit value only when ambiguous. Explicit null is invalid."
}

analysis.schema.json: $.allOf[3].then.properties.signals.items.properties.field.properties.is_fd

json
{
  "type": "boolean",
  "description": "Optional CAN/CAN FD constraint. If omitted, use DBC and actual frames; request an explicit value only when ambiguous. Explicit null is invalid."
}

analysis.schema.json: $.allOf[3].if

json
{
  "required": [
    "sources"
  ]
}

analysis.schema.json: $.allOf[3].if.not

json
{
  "required": [
    "imports"
  ]
}

analysis.schema.json: $.allOf[3].if.properties.sources

json
{
  "description": "Sources in declaration order. Put consecutive files in one source's paths. Loading may enumerate filenames and read DBC metadata needed for omitted signal settings, but does not read business records."
}

analysis.schema.json: $.allOf[3].if.properties.sources.items

json
{
  "required": [
    "source_type"
  ]
}

analysis.schema.json: $.allOf[3].if.properties.sources.items.properties.source_type

json
{
  "enum": [
    "can_blf",
    "can_asc",
    "raw_can_csv"
  ],
  "description": "Source type, selecting the reader and required fields. Options: \"can_blf\", raw CAN binary BLF; \"can_asc\", raw CAN text ASC; \"raw_can_csv\", raw CAN frame CSV with an explicit layout."
}

analysis.schema.json: $.anyOf[0]

json
{
  "required": [
    "imports"
  ]
}

analysis.schema.json: $.anyOf[1]

json
{
  "required": [
    "sources",
    "signals"
  ]
}

analysis.schema.json: $.properties.config_version

json
{
  "type": "integer",
  "description": "Analysis format number. Only integer 4 is accepted; older versions, omissions and incorrect types are rejected without conversion.",
  "const": 4
}

analysis.schema.json: $.properties.transforms

json
{
  "type": "array",
  "maxItems": 64,
  "description": "In version 4, compute rolling values and rates at real record updates or specified output ticks."
}

analysis.schema.json: $.properties.transforms.items

json
{
  "type": "object",
  "required": [
    "name",
    "operation",
    "expr"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.transforms.items.allOf[0].then.else

json
{
  "required": [
    "window",
    "step"
  ]
}

analysis.schema.json: $.properties.transforms.items.allOf[0].then.else.properties.max_gap

json
{
  "description": "Do not set max_gap for this version or operation."
}

analysis.schema.json: $.properties.transforms.items.allOf[0].then.then

json
{
  "required": [
    "max_gap"
  ]
}

analysis.schema.json: $.properties.transforms.items.allOf[0].then.then.properties.window

json
{
  "description": "Do not set window for this version or operation."
}

analysis.schema.json: $.properties.transforms.items.allOf[0].then.then.properties.step

json
{
  "description": "Do not set step for this version or operation."
}

analysis.schema.json: $.properties.transforms.items.allOf[0].then.then.properties.origin

json
{
  "description": "Do not set origin for this version or operation."
}

analysis.schema.json: $.properties.transforms.items.allOf[0].then.then.properties.partial_policy

json
{
  "description": "Do not set partial_policy for this version or operation."
}

analysis.schema.json: $.properties.transforms.items.allOf[0].then.then.properties.minimum_coverage

json
{
  "description": "Do not set minimum_coverage for this version or operation."
}

analysis.schema.json: $.properties.transforms.items.allOf[0].then.if.properties.operation

json
{
  "const": "adjacent_rate",
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.transforms.items.allOf[0].if

json
{
  "required": [
    "operation"
  ]
}

analysis.schema.json: $.properties.transforms.items.allOf[0].if.properties.operation

json
{
  "$ref": "#/properties/transforms/items/properties/operation",
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.transforms.items.properties.name

json
{
  "type": "string",
  "minLength": 1,
  "description": "Name assigned to this declaration and used by references."
}

analysis.schema.json: $.properties.transforms.items.properties.operation

json
{
  "enum": [
    "rolling_time_mean",
    "rolling_minimum",
    "rolling_maximum",
    "rolling_integral",
    "adjacent_rate",
    "window_rate",
    "sample_fit_slope"
  ],
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.transforms.items.properties.expr

json
{
  "type": "string",
  "minLength": 1,
  "description": "Expression over bound signals or derived values used as input."
}

analysis.schema.json: $.properties.transforms.items.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "description": "Requested result unit; it must be compatible with the quantity."
}

analysis.schema.json: $.properties.transforms.items.properties.window

json
{
  "type": "string",
  "pattern": "^\\s*[+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Select the window; the duration of a transform window must be positive."
}

analysis.schema.json: $.properties.transforms.items.properties.step

json
{
  "type": "string",
  "pattern": "^\\s*[+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Positive actual-time spacing between scheduled outputs."
}

analysis.schema.json: $.properties.transforms.items.properties.origin

json
{
  "type": "string",
  "description": "Actual time origin used to align outputs in the source clock."
}

analysis.schema.json: $.properties.transforms.items.properties.max_gap

json
{
  "type": "string",
  "pattern": "^\\s*[+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Longest permitted gap between adjacent actual updates."
}

analysis.schema.json: $.properties.transforms.items.properties.partial_policy

json
{
  "enum": [
    "strict",
    "report"
  ],
  "description": "Choose whether to return a partial value or null when data are incomplete."
}

analysis.schema.json: $.properties.transforms.items.properties.minimum_coverage

json
{
  "type": "number",
  "minimum": 0,
  "maximum": 1,
  "description": "Minimum fraction of the requested window covered by valid data."
}

analysis.schema.json: $.properties.transforms.items.properties.interval

json
{
  "$ref": "#/properties/calculations/items/properties/interval",
  "description": "Use actual intervals, a fixed period or a DBC period from raw messages."
}

analysis.schema.json: $.properties.aggregations

json
{
  "type": "array",
  "description": "Summarize calculations, pairings, events or windows within this run when requested."
}

analysis.schema.json: $.properties.aggregations.items

json
{
  "type": "object",
  "required": [
    "name",
    "source",
    "operation"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[0].else.properties.q

json
{
  "description": "Do not set q for this version or operation."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[0].then

json
{
  "required": [
    "q"
  ]
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[0].if.properties.operation

json
{
  "const": "quantile",
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[1].else.properties.ddof

json
{
  "description": "Do not set ddof for this version or operation."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[1].if.properties.operation

json
{
  "const": "variance",
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[2].then.properties.field

json
{
  "description": "Do not set field for this version or operation."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[2].then.properties.unit

json
{
  "const": "1",
  "description": "Requested result unit; it must be compatible with the quantity."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[2].if.properties.operation

json
{
  "const": "count",
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[3].then.then.properties.group_by

json
{
  "description": "Group rows by identifiers available on the selected source."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[3].then.then.properties.group_by.items

json
{
  "enum": [
    "dataset_id",
    "entity_id",
    "session_id",
    "sequence_id"
  ],
  "description": "Grouping key available for this source. Use each key at most once."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[3].then.then.properties.field

json
{
  "const": "delay_ns",
  "description": "Numeric column to read from the selected result rows."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[3].then.if.properties.source

json
{
  "required": [
    "sequence"
  ],
  "description": "Select the kind and name of the result to aggregate."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[3].if

json
{
  "required": [
    "source"
  ]
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[3].if.properties.source

json
{
  "$ref": "#/properties/aggregations/items/properties/source",
  "description": "Select exactly one calculation, sequence, rule or window from the current run."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[4].then.then.properties.group_by

json
{
  "description": "Group rows by identifiers available on the selected source."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[4].then.then.properties.group_by.items

json
{
  "enum": [
    "dataset_id",
    "entity_id",
    "session_id",
    "calculation_id",
    "parent_id"
  ],
  "description": "Grouping key available for this source. Use each key at most once."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[4].then.then.properties.field

json
{
  "const": "value",
  "description": "Numeric column to read from the selected result rows."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[4].then.if.properties.source

json
{
  "required": [
    "calculation"
  ],
  "description": "Select the kind and name of the result to aggregate."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[4].if

json
{
  "required": [
    "source"
  ]
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[4].if.properties.source

json
{
  "$ref": "#/properties/aggregations/items/properties/source",
  "description": "Select exactly one calculation, sequence, rule or window from the current run."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].then.then.properties.group_by

json
{
  "description": "Group rows by identifiers available on the selected source."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].then.then.properties.group_by.items

json
{
  "enum": [
    "dataset_id",
    "entity_id",
    "session_id",
    "rule_id"
  ],
  "description": "Grouping key available for this source. Use each key at most once."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].then.then.properties.operation

json
{
  "const": "count",
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].then.then.properties.field

json
{
  "description": "Do not set field for this version or operation."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].then.if.properties.source

json
{
  "required": [
    "rule"
  ],
  "description": "Select the kind and name of the result to aggregate."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].if

json
{
  "required": [
    "source"
  ]
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[5].if.properties.source

json
{
  "$ref": "#/properties/aggregations/items/properties/source",
  "description": "Select exactly one calculation, sequence, rule or window from the current run."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].then.then.properties.group_by

json
{
  "description": "Group rows by identifiers available on the selected source."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].then.then.properties.group_by.items

json
{
  "enum": [
    "dataset_id",
    "entity_id",
    "session_id",
    "window_id"
  ],
  "description": "Grouping key available for this source. Use each key at most once."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].then.then.properties.operation

json
{
  "const": "count",
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].then.then.properties.field

json
{
  "description": "Do not set field for this version or operation."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].then.if.properties.source

json
{
  "required": [
    "window"
  ],
  "description": "Select the kind and name of the result to aggregate."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].if

json
{
  "required": [
    "source"
  ]
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].then.allOf[6].if.properties.source

json
{
  "$ref": "#/properties/aggregations/items/properties/source",
  "description": "Select exactly one calculation, sequence, rule or window from the current run."
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].if

json
{
  "required": [
    "operation"
  ]
}

analysis.schema.json: $.properties.aggregations.items.allOf[0].if.properties.operation

json
{
  "$ref": "#/properties/aggregations/items/properties/operation",
  "description": "Operation on the selected result rows. Mean and P95 response delay use successfully matched responses only."
}

analysis.schema.json: $.properties.aggregations.items.properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Name assigned to this declaration and used by references."
}

analysis.schema.json: $.properties.aggregations.items.properties.source

json
{
  "type": "object",
  "description": "Select exactly one calculation, sequence, rule or window from the current run.",
  "minProperties": 1,
  "maxProperties": 1,
  "additionalProperties": false
}

analysis.schema.json: $.properties.aggregations.items.properties.source.properties.calculation

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Name of the scalar calculation whose rows are to be aggregated."
}

analysis.schema.json: $.properties.aggregations.items.properties.source.properties.sequence

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Name of the declared sequence producing request and response outcomes."
}

analysis.schema.json: $.properties.aggregations.items.properties.source.properties.rule

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Name of the declared rule that produces the events to count."
}

analysis.schema.json: $.properties.aggregations.items.properties.source.properties.window

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Name of the declared window producing the segments to count."
}

analysis.schema.json: $.properties.aggregations.items.properties.operation

json
{
  "enum": [
    "count",
    "sum",
    "mean",
    "variance",
    "quantile",
    "median"
  ],
  "description": "Operation on the selected result rows. Mean and P95 response delay use successfully matched responses only."
}

analysis.schema.json: $.properties.aggregations.items.properties.field

json
{
  "enum": [
    "value",
    "delay_ns"
  ],
  "description": "Optional numeric field. Calculations default to value and sequences to delay_ns. Counts have no numeric field."
}

analysis.schema.json: $.properties.aggregations.items.properties.group_by

json
{
  "type": "array",
  "uniqueItems": true,
  "description": "Group by these stable fields. Omitting group_by produces a single group for the selected source."
}

analysis.schema.json: $.properties.aggregations.items.properties.group_by.items

json
{
  "enum": [
    "dataset_id",
    "entity_id",
    "session_id",
    "calculation_id",
    "parent_id",
    "sequence_id",
    "rule_id",
    "window_id"
  ],
  "description": "Grouping key available for this source. Use each key at most once."
}

analysis.schema.json: $.properties.aggregations.items.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "description": "Unit of the aggregate. Counts use 1; response latency can use ms or s."
}

analysis.schema.json: $.properties.aggregations.items.properties.include_partial

json
{
  "type": "boolean",
  "description": "Include existing partial values. Including them does not make the aggregate complete."
}

analysis.schema.json: $.properties.aggregations.items.properties.partial_policy

json
{
  "enum": [
    "report",
    "strict"
  ],
  "description": "For an incomplete population, report may return the known part; strict returns no value."
}

analysis.schema.json: $.properties.aggregations.items.properties.q

json
{
  "type": "number",
  "minimum": 0,
  "maximum": 1,
  "description": "Quantile probability, required for quantile. Median uses 0.5 and does not accept q."
}

analysis.schema.json: $.properties.aggregations.items.properties.ddof

json
{
  "type": "integer",
  "enum": [
    0,
    1
  ],
  "description": "Degrees of freedom correction for variance; defaults to 0."
}

analysis.schema.json: $.properties.lookups

json
{
  "type": "array",
  "maxItems": 64,
  "description": "Version 4 one-dimensional calibration tables referenced by name in lookup. Input coordinates must strictly increase in their declared unit. Step interpolation retains the fixed-width output type."
}

analysis.schema.json: $.properties.lookups.items

json
{
  "type": "object",
  "required": [
    "name",
    "points",
    "input_unit",
    "unit"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.lookups.items.properties.name

json
{
  "$ref": "#/properties/dataset/properties/name",
  "description": "Unique table name used by expressions."
}

analysis.schema.json: $.properties.lookups.items.properties.input_unit

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256,
  "description": "Calibration axis unit. Compatible query values are converted to this unit."
}

analysis.schema.json: $.properties.lookups.items.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256,
  "description": "Requested result unit; it must be compatible with the quantity."
}

analysis.schema.json: $.properties.lookups.items.properties.points

json
{
  "type": "array",
  "minItems": 2,
  "maxItems": 4096,
  "description": "Numeric [input, output] pairs in ascending input order. The loader checks finite coordinates, fixed-width integers and precision."
}

analysis.schema.json: $.properties.lookups.items.properties.points.items

json
{
  "type": "array",
  "minItems": 2,
  "maxItems": 2
}

analysis.schema.json: $.properties.lookups.items.properties.points.items.items

json
{
  "type": "number"
}

analysis.schema.json: $.properties.dataset

json
{
  "type": "object",
  "required": [
    "name"
  ],
  "description": "Object, session, and requested time range for this analysis. The requested range does not establish actual data coverage.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.dataset.properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.dataset.properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.dataset.properties.entity

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Identifier of the object being analyzed, such as a device or experiment. It has no built-in vehicle meaning. Defaults to dataset.name."
}

analysis.schema.json: $.properties.dataset.properties.entity.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.dataset.properties.session

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Identifier of this shared analysis session. Signals analyzed together must have explicitly comparable time coordinates. Defaults to dataset.name; runtime state is isolated per task."
}

analysis.schema.json: $.properties.dataset.properties.session.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.dataset.properties.domain

json
{
  "type": "object",
  "required": [
    "start",
    "end"
  ],
  "description": "Requested half-open analysis range [start,end), including the start and excluding the end. Both ordinary analysis and message accumulation may omit it and use actual observations. When provided, both start and end are required; null and an empty object are not omission.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.dataset.properties.domain.properties.start

json
{
  "type": "string",
  "description": "Start of the analysis range: a relative time with a unit, or an absolute timestamp with an explicit timezone."
}

analysis.schema.json: $.properties.dataset.properties.domain.properties.start.anyOf[0]

json
{
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$"
}

analysis.schema.json: $.properties.dataset.properties.domain.properties.start.anyOf[1]

json
{
  "pattern": "^\\s*\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}"
}

analysis.schema.json: $.properties.dataset.properties.domain.properties.end

json
{
  "type": "string",
  "description": "Excluded end of the analysis range. It must use the same time coordinates as the start and must not precede it."
}

analysis.schema.json: $.properties.dataset.properties.domain.properties.end.anyOf[0]

json
{
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$"
}

analysis.schema.json: $.properties.dataset.properties.domain.properties.end.anyOf[1]

json
{
  "pattern": "^\\s*\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}"
}

analysis.schema.json: $.properties.dataset.properties.metadata

json
{
  "type": "object",
  "description": "Additional notes as an object of JSON-native values. They do not trigger implicit conversion, template execution, or inference of business parameters.",
  "additionalProperties": true
}

analysis.schema.json: $.properties.sources

json
{
  "type": "array",
  "minItems": 1,
  "description": "Sources in declaration order. Put consecutive files in one source's paths. Loading may enumerate filenames and read DBC metadata needed for omitted signal settings, but does not read business records."
}

analysis.schema.json: $.properties.sources.items.oneOf[0]

json
{
  "type": "object",
  "required": [
    "source_type",
    "rows"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Source name within this plan. If omitted, names such as source_1 and source_2 are assigned by declaration order. References use this name; it does not infer source fields or synchronization."
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time

json
{
  "description": "Source time type, unit, clock, and offset. time_type defaults to relative; an omitted clock creates an independent source origin. Set a shared clock only for sources with a known synchronization basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.unit

json
{
  "enum": [
    "s",
    "ms",
    "us",
    "ns"
  ],
  "description": "Unit of numeric values. Units are checked during expression evaluation and conversion and are not inferred from field or file names. Options: \"s\" seconds; \"ms\" milliseconds; \"us\" microseconds; \"ns\" nanoseconds."
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed offset added to source timestamps. Positive or negative values require s/ms/us/ns; this is not a timezone or date.",
  "default": "0s"
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.time_type

json
{
  "const": "relative",
  "description": "Time coordinates: relative to a shared origin, or absolute with a timezone. Constant: \"relative\", relative to an explicitly defined common origin."
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[0].properties.clock

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Shared name for the relative time origin. Use the same value only when inputs actually share that origin. Omitting it does not synchronize inputs."
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[1]

json
{
  "type": "object",
  "required": [
    "time_type"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.unit

json
{
  "enum": [
    "s",
    "ms",
    "us",
    "ns",
    "ISO8601"
  ],
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names. Options: \"s\" seconds; \"ms\" milliseconds; \"us\" microseconds; \"ns\" nanoseconds; \"ISO8601\" timestamp text containing a date and timezone basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed offset added to source timestamps. Positive or negative values require s/ms/us/ns; this is not a timezone or date.",
  "default": "0s"
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.timezone

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Explicit timezone used when an absolute timestamp has no timezone of its own, for example UTC or an IANA name. The machine's default timezone is not used as configuration."
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.time.oneOf[1].properties.time_type

json
{
  "const": "absolute",
  "description": "Time coordinates: relative to a shared origin, or absolute with a timezone. Constant: \"absolute\", an absolute timestamp with a timezone basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.metadata

json
{
  "type": "object",
  "description": "Additional notes as an object of JSON-native values. They do not trigger implicit conversion, template execution, or inference of business parameters.",
  "additionalProperties": true
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows

json
{
  "type": "array",
  "description": "Ordered in-memory records, each containing time and original-field values. Records are not automatically sorted to conceal out-of-order input."
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows.items

json
{
  "type": "object",
  "required": [
    "time",
    "values"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows.items.properties.time

json
{
  "type": "string",
  "description": "Source time type, unit, clock, and offset. time_type defaults to relative; an omitted clock creates an independent source origin. Set a shared clock only for sources with a known synchronization basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows.items.properties.time.anyOf[0]

json
{
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$"
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows.items.properties.time.anyOf[1]

json
{
  "pattern": "^\\s*\\d{4}-\\d{2}-\\d{2}[T ]\\d{2}:\\d{2}:\\d{2}"
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows.items.properties.values

json
{
  "type": "object",
  "description": "Mapping from original fields to native values for this in-memory record. Original field names may contain dots; expressions refer to aliases declared in signals."
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.rows.items.properties.values.additionalProperties

json
{
  "type": [
    "number",
    "string",
    "boolean",
    "null"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[0].properties.source_type

json
{
  "const": "memory",
  "description": "Source type, which selects the reader and required fields. Constant: \"memory\", ordered records embedded in configuration."
}

analysis.schema.json: $.properties.sources.items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "source_type",
    "time",
    "time_column"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[1].oneOf[0]

json
{
  "required": [
    "path"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[1].oneOf[0].not

json
{
  "required": [
    "paths"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[1].oneOf[1]

json
{
  "required": [
    "paths"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[1].oneOf[1].not

json
{
  "required": [
    "path"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Source name within this plan. If omitted, names such as source_1 and source_2 are assigned by declaration order. References use this name; it does not infer source fields or synchronization."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time

json
{
  "description": "Source time type, unit, clock, and offset. time_type defaults to relative; an omitted clock creates an independent source origin. Set a shared clock only for sources with a known synchronization basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[0]

json
{
  "type": "object",
  "required": [
    "unit"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.unit

json
{
  "enum": [
    "s",
    "ms",
    "us",
    "ns"
  ],
  "description": "Unit of numeric values. Units are checked during expression evaluation and conversion and are not inferred from field or file names. Options: \"s\" seconds; \"ms\" milliseconds; \"us\" microseconds; \"ns\" nanoseconds."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed offset added to source timestamps. Positive or negative values require s/ms/us/ns; this is not a timezone or date.",
  "default": "0s"
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.time_type

json
{
  "const": "relative",
  "description": "Time coordinates: relative to a shared origin, or absolute with a timezone. Constant: \"relative\", relative to an explicitly defined common origin."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[0].properties.clock

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Shared name for the relative time origin. Use the same value only when inputs actually share that origin. Omitting it does not synchronize inputs."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[1]

json
{
  "type": "object",
  "required": [
    "time_type",
    "unit"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.unit

json
{
  "enum": [
    "s",
    "ms",
    "us",
    "ns",
    "ISO8601"
  ],
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names. Options: \"s\" seconds; \"ms\" milliseconds; \"us\" microseconds; \"ns\" nanoseconds; \"ISO8601\" timestamp text containing a date and timezone basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed offset added to source timestamps. Positive or negative values require s/ms/us/ns; this is not a timezone or date.",
  "default": "0s"
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.timezone

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Explicit timezone used when an absolute timestamp has no timezone of its own, for example UTC or an IANA name. The machine's default timezone is not used as configuration."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time.oneOf[1].properties.time_type

json
{
  "const": "absolute",
  "description": "Time coordinates: relative to a shared origin, or absolute with a timezone. Constant: \"absolute\", an absolute timestamp with a timezone basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.metadata

json
{
  "type": "object",
  "description": "Additional notes as an object of JSON-native values. They do not trigger implicit conversion, template execution, or inference of business parameters.",
  "additionalProperties": true
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path

json
{
  "description": "Input file, directory, or wildcard, as one item or a list. path and paths are mutually exclusive."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Paths kept in declaration order. Each directory's matched files are sorted in natural order."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[2].items

json
{
  "description": "Path text, or a file declaration with its own offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.path.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths

json
{
  "description": "Input file, directory, or wildcard, as one item or a list. path and paths are mutually exclusive."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Paths kept in declaration order. Each directory's matched files are sorted in natural order."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items

json
{
  "description": "Path text, or a file declaration with its own offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.paths.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.time_column

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Time column in decoded-signal CSV, interpreted using the source time unit and coordinates."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.source_type

json
{
  "const": "signal_csv",
  "description": "Source type, which selects the reader and required fields. Constant: \"signal_csv\", decoded-signal CSV."
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.reader

json
{
  "type": "object",
  "required": [],
  "description": "Reading, text parsing, and decoding options for this source format. Omitted applicable parameters use their documented defaults.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.reader.properties.encoding

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Text encoding used when reading; static validation does not establish that a file is readable. Decoded CSV defaults to utf-8-sig, accepting UTF-8 with or without a file-leading BOM. An explicit encoding takes precedence; U+FEFF inside the file is not removed.",
  "default": "utf-8-sig"
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.reader.properties.delimiter

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 1,
  "pattern": "^[^\\r\\n]$",
  "description": "Single-character delimiter for decoded-signal CSV. Newline characters are not allowed.",
  "default": ","
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.reader.properties.missing_values

json
{
  "type": "array",
  "uniqueItems": true,
  "description": "Texts explicitly treated as missing values. Missing values are not automatically converted to zero.",
  "default": [
    ""
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[1].properties.reader.properties.missing_values.items

json
{
  "type": "string"
}

analysis.schema.json: $.properties.sources.items.oneOf[2]

json
{
  "type": "object",
  "required": [
    "source_type",
    "dbc_by_channel"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[2].oneOf[0]

json
{
  "required": [
    "path"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[2].oneOf[0].not

json
{
  "required": [
    "paths"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[2].oneOf[1]

json
{
  "required": [
    "paths"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[2].oneOf[1].not

json
{
  "required": [
    "path"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Source name within this plan. If omitted, names such as source_1 and source_2 are assigned by declaration order. References use this name; it does not infer source fields or synchronization."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.time

json
{
  "description": "Source time type, unit, clock, and offset. time_type defaults to relative; an omitted clock creates an independent source origin. Set a shared clock only for sources with a known synchronization basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.unit

json
{
  "const": "s",
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names. Constant: \"s\", seconds."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed offset added to source timestamps. Positive or negative values require s/ms/us/ns; this is not a timezone or date.",
  "default": "0s"
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.time_type

json
{
  "const": "relative",
  "description": "Time coordinates: relative to a shared origin, or absolute with a timezone. Constant: \"relative\", relative to an explicitly defined common origin."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[0].properties.clock

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Shared name for the relative time origin. Use the same value only when inputs actually share that origin. Omitting it does not synchronize inputs."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[1]

json
{
  "type": "object",
  "required": [
    "time_type"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[1].properties.unit

json
{
  "const": "s",
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names. Constant: \"s\", seconds."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[1].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed offset added to source timestamps. Positive or negative values require s/ms/us/ns; this is not a timezone or date.",
  "default": "0s"
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.time.oneOf[1].properties.time_type

json
{
  "const": "absolute",
  "description": "Time coordinates: relative to a shared origin, or absolute with a timezone. Constant: \"absolute\", an absolute timestamp with a timezone basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.legacy_profile

json
{
  "const": "sclicer-functions-v1",
  "description": "Existing BLF reader/decoder implementation. Optional; defaults to sclicer-functions-v1. If specified, only that integrated implementation is accepted."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path

json
{
  "description": "Input file, directory, or wildcard, as one item or a list. path and paths are mutually exclusive."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Paths kept in declaration order. Each directory's matched files are sorted in natural order."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[2].items

json
{
  "description": "Path text, or a file declaration with its own offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.path.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths

json
{
  "description": "Input file, directory, or wildcard, as one item or a list. path and paths are mutually exclusive."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Paths kept in declaration order. Each directory's matched files are sorted in natural order."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items

json
{
  "description": "Path text, or a file declaration with its own offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.paths.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.dbc_by_channel

json
{
  "type": "object",
  "minProperties": 1,
  "maxProperties": 1,
  "propertyNames": {
    "pattern": "^[1-9][0-9]*(?![\\s\\S])"
  },
  "description": "Explicit mapping from unique target channels to DBC files. Keys are positive integer strings starting at 1, without leading zeros. DBC paths are resolved relative to the declaring file."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.dbc_by_channel.additionalProperties

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S"
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.metadata

json
{
  "type": "object",
  "description": "Additional notes as an object of JSON-native values. They do not trigger implicit conversion, template execution, or inference of business parameters.",
  "additionalProperties": true
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.source_type

json
{
  "const": "can_blf",
  "description": "Source type, which selects the reader and required fields. Constant: \"can_blf\", raw CAN binary BLF."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.reader

json
{
  "type": "object",
  "required": [],
  "description": "Reading, text parsing, and decoding options for this source format. Omitted applicable parameters use their documented defaults.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.reader.properties.decode_policy

json
{
  "enum": [
    "strict",
    "partial",
    "legacy"
  ],
  "default": "strict",
  "description": "Payload-length policy for selected CAN messages; defaults to strict. strict requires the actual payload length to equal the DBC length and DLC to agree with the byte count. partial allows payloads shorter than the DBC length, but not longer payloads or DLC/byte-count inconsistencies; decoding still uses the existing implementation. legacy retains the original decode calls and length handling."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.reader.properties.decode_scope

json
{
  "type": "string",
  "enum": [
    "all",
    "requested"
  ],
  "default": "requested",
  "description": "Scope of attempted CAN decoding. The default requested decodes only messages/fields needed by this analysis; all broadens attempted decoding. In serial pure-BLF concatenation, strict/partial skip remote and error frames. all does not guarantee a DBC definition, successful decoding, or a per-frame diagnostic for every frame. Selecting all does not itself require dataset.domain. File multiprocessing and time_order support requested only."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.reader.properties.input_check

json
{
  "type": "string",
  "enum": [
    "auto",
    "full"
  ],
  "default": "auto",
  "description": "CAN input checks. auto selects checks required by actual consumers. full checks all raw frames and timestamps without forcing unrelated signal decoding. Options: \"auto\" and \"full\"."
}

analysis.schema.json: $.properties.sources.items.oneOf[2].properties.file_merge

json
{
  "enum": [
    "concatenate",
    "time_order"
  ],
  "default": "concatenate",
  "description": "Controls how files in one source are combined. concatenate follows paths order and rejects time regressions only within the time-check scope required by the task. time_order requires each file to be ordered for the records being merged, then stably merges by timestamp, file position and local record sequence. Overlapping messages are retained; timestamps are not shifted and records are not deduplicated. This setting is independent of the process count."
}

analysis.schema.json: $.properties.sources.items.oneOf[3]

json
{
  "type": "object",
  "required": [
    "source_type",
    "dbc_by_channel"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[3].oneOf[0]

json
{
  "required": [
    "path"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[3].oneOf[0].not

json
{
  "required": [
    "paths"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[3].oneOf[1]

json
{
  "required": [
    "paths"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[3].oneOf[1].not

json
{
  "required": [
    "path"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Source name within this plan. If omitted, names such as source_1 and source_2 are assigned by declaration order. References use this name; it does not infer source fields or synchronization."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time

json
{
  "description": "Source time type, unit, clock, and offset. time_type defaults to relative; an omitted clock creates an independent source origin. Set a shared clock only for sources with a known synchronization basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.unit

json
{
  "const": "s",
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names. Constant: \"s\", seconds."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed offset added to source timestamps. Positive or negative values require s/ms/us/ns; this is not a timezone or date.",
  "default": "0s"
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.time_type

json
{
  "const": "relative",
  "description": "Time coordinates: relative to a shared origin, or absolute with a timezone. Constant: \"relative\", relative to an explicitly defined common origin."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[0].properties.clock

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Shared name for the relative time origin. Use the same value only when inputs actually share that origin. Omitting it does not synchronize inputs."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[1]

json
{
  "type": "object",
  "required": [
    "time_type"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.unit

json
{
  "const": "s",
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names. Constant: \"s\", seconds."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed offset added to source timestamps. Positive or negative values require s/ms/us/ns; this is not a timezone or date.",
  "default": "0s"
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.time_type

json
{
  "const": "absolute",
  "description": "Time coordinates: relative to a shared origin, or absolute with a timezone. Constant: \"absolute\", an absolute timestamp with a timezone basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.time.oneOf[1].properties.timezone

json
{
  "type": "string",
  "description": "Fixed acquisition timezone: UTC or a signed hour/minute offset such as +08:00."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path

json
{
  "description": "Input file, directory, or wildcard, as one item or a list. path and paths are mutually exclusive."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Paths kept in declaration order. Each directory's matched files are sorted in natural order."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[2].items

json
{
  "description": "Path text, or a file declaration with its own offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.path.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths

json
{
  "description": "Input file, directory, or wildcard, as one item or a list. path and paths are mutually exclusive."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Paths kept in declaration order. Each directory's matched files are sorted in natural order."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items

json
{
  "description": "Path text, or a file declaration with its own offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.paths.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.offsets

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Time offsets in input-file order. The number of offsets must match the file list; offsets must not silently reorder files."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.offsets.items

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed time offset: a number with s/ms/us/ns. Dates are not accepted."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.dbc_by_channel

json
{
  "type": "object",
  "minProperties": 1,
  "maxProperties": 1,
  "description": "Explicit mapping from unique target channels to DBC files. Keys are positive integer strings starting at 1, without leading zeros. DBC paths are resolved relative to the declaring file.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.dbc_by_channel.patternProperties.^[1-9][0-9]*(?![\s\S])

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.metadata

json
{
  "type": "object",
  "description": "Additional notes as an object of JSON-native values. They do not trigger implicit conversion, template execution, or inference of business parameters."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.source_type

json
{
  "const": "can_asc",
  "description": "Source type, which selects the reader and required fields. Constant: \"can_asc\", raw CAN text ASC."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.reader

json
{
  "type": "object",
  "required": [],
  "description": "Reading, text parsing, and decoding options for this source format. Omitted applicable parameters use their documented defaults.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.reader.properties.version

json
{
  "enum": [
    "vector-asc-v1",
    "vector-asc-statistics-v1",
    "sclicer-asc-v1"
  ],
  "description": "Select the ASC row layout. Default vector-asc-v1 reads standard Vector ASC with an optional Length/BitCount/ID suffix, retaining strict field-order, value and ID checks. vector-asc-statistics-v1 remains an explicit standard-statistics selection; sclicer-asc-v1 selects the different Sclicer FD layout. Dialects are not guessed."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.reader.properties.encoding

json
{
  "type": "string",
  "minLength": 1,
  "description": "Input text encoding used during reading. Static checks do not prove that the file can be read. CAN text parsing defaults to utf-8-sig.",
  "default": "utf-8-sig"
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.reader.properties.decode_policy

json
{
  "enum": [
    "strict",
    "partial",
    "legacy"
  ],
  "default": "strict",
  "description": "Payload-length policy for selected CAN messages; defaults to strict. strict requires the actual payload length to equal the DBC length and DLC to agree with the byte count. partial allows payloads shorter than the DBC length, but not longer payloads or DLC/byte-count inconsistencies; decoding still uses the existing implementation. legacy retains the original decode calls and length handling."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.reader.properties.input_check

json
{
  "type": "string",
  "enum": [
    "auto",
    "full"
  ],
  "default": "auto",
  "description": "auto checks time order according to actual consumers. Ordinary ASC analysis checks only required channels/IDs, while the source range uses the earliest/latest timestamps from all records read in the same pass. full and raw-frame export check all records. No mode automatically sorts records or changes timestamps."
}

analysis.schema.json: $.properties.sources.items.oneOf[3].properties.file_merge

json
{
  "enum": [
    "concatenate",
    "time_order"
  ],
  "default": "concatenate",
  "description": "Controls how files in one source are combined. concatenate follows paths order and rejects time regressions only within the time-check scope required by the task. time_order requires each file to be ordered for the records being merged, then stably merges by timestamp, file position and local record sequence. Overlapping messages are retained; timestamps are not shifted and records are not deduplicated. This setting is independent of the process count."
}

analysis.schema.json: $.properties.sources.items.oneOf[4]

json
{
  "type": "object",
  "required": [
    "source_type",
    "time",
    "dbc_by_channel",
    "reader"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].oneOf[0]

json
{
  "required": [
    "path"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].oneOf[0].not

json
{
  "required": [
    "paths"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].oneOf[1]

json
{
  "required": [
    "paths"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].oneOf[1].not

json
{
  "required": [
    "path"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Source name within this plan. If omitted, names such as source_1 and source_2 are assigned by declaration order. References use this name; it does not infer source fields or synchronization."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time

json
{
  "description": "Source time type, unit, clock, and offset. time_type defaults to relative; an omitted clock creates an independent source origin. Set a shared clock only for sources with a known synchronization basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[0]

json
{
  "type": "object",
  "required": [
    "unit"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.unit

json
{
  "enum": [
    "s",
    "ms",
    "us",
    "ns",
    "ISO8601"
  ],
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names. Options: \"s\" seconds; \"ms\" milliseconds; \"us\" microseconds; \"ns\" nanoseconds; \"ISO8601\" timestamp text containing a date and timezone basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed offset added to source timestamps. Positive or negative values require s/ms/us/ns; this is not a timezone or date.",
  "default": "0s"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.time_type

json
{
  "const": "relative",
  "description": "Time coordinates: relative to a shared origin, or absolute with a timezone. Constant: \"relative\", relative to an explicitly defined common origin."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[0].properties.clock

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Shared name for the relative time origin. Use the same value only when inputs actually share that origin. Omitting it does not synchronize inputs."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[1]

json
{
  "type": "object",
  "required": [
    "time_type",
    "unit"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.unit

json
{
  "enum": [
    "s",
    "ms",
    "us",
    "ns",
    "ISO8601"
  ],
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names. Options: \"s\" seconds; \"ms\" milliseconds; \"us\" microseconds; \"ns\" nanoseconds; \"ISO8601\" timestamp text containing a date and timezone basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed offset added to source timestamps. Positive or negative values require s/ms/us/ns; this is not a timezone or date.",
  "default": "0s"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.time_type

json
{
  "const": "absolute",
  "description": "Time coordinates: relative to a shared origin, or absolute with a timezone. Constant: \"absolute\", an absolute timestamp with a timezone basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.time.oneOf[1].properties.timezone

json
{
  "type": "string",
  "description": "Fixed acquisition timezone: UTC or a signed hour/minute offset such as +08:00."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path

json
{
  "description": "Input file, directory, or wildcard, as one item or a list. path and paths are mutually exclusive."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Paths kept in declaration order. Each directory's matched files are sorted in natural order."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[2].items

json
{
  "description": "Path text, or a file declaration with its own offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.path.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths

json
{
  "description": "Input file, directory, or wildcard, as one item or a list. path and paths are mutually exclusive."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Paths kept in declaration order. Each directory's matched files are sorted in natural order."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items

json
{
  "description": "Path text, or a file declaration with its own offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.paths.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.offsets

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Time offsets in input-file order. The number of offsets must match the file list; offsets must not silently reorder files."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.offsets.items

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed time offset: a number with s/ms/us/ns. Dates are not accepted."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.dbc_by_channel

json
{
  "type": "object",
  "minProperties": 1,
  "maxProperties": 1,
  "description": "Explicit mapping from unique target channels to DBC files. Keys are positive integer strings starting at 1, without leading zeros. DBC paths are resolved relative to the declaring file.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.dbc_by_channel.patternProperties.^[1-9][0-9]*(?![\s\S])

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.metadata

json
{
  "type": "object",
  "description": "Additional notes as an object of JSON-native values. They do not trigger implicit conversion, template execution, or inference of business parameters."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.source_type

json
{
  "const": "raw_can_csv",
  "description": "Source type, which selects the reader and required fields. Constant: \"raw_can_csv\", raw CAN frame CSV with an explicit layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader

json
{
  "type": "object",
  "required": [
    "layout",
    "time_format"
  ],
  "description": "Reading, text parsing, and decoding options for this source format. Omitted applicable parameters use their documented defaults.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout

json
{
  "type": "object",
  "required": [
    "fields"
  ],
  "description": "Raw CAN CSV field layout, explicitly describing the delimiter, column/constant mappings, time representation, and numeric formats.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields

json
{
  "type": "object",
  "required": [
    "timestamp",
    "frame_id",
    "data"
  ],
  "description": "Explicit mapping from raw CAN semantic fields to input columns or constants.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp

json
{
  "description": "Column or constant for message timestamps, converted using time_format and the source time declaration. A column name or one-based column number may be written directly; constants still use a fixed object."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "description": "Column or constant for message timestamps, converted using time_format and the source time declaration.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].oneOf[0].not

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].oneOf[1].not

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.column

json
{
  "description": "Column name or index to read, mutually exclusive with fixed. It must agree with has_header and the actual layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed

json
{
  "description": "Explicit constant for this semantic field, mutually exclusive with column. It is not an automatic replacement for missing data."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "Whether to remove whitespace at both ends of an input field. Interior characters are unchanged."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.value_map

json
{
  "type": [
    "object",
    "null"
  ],
  "maxProperties": 256,
  "description": "Omit or use null for no mapping. An object must contain 1 to 256 entries, with original text keys and string targets each at most 256 characters. These limits differ from fixed text limits.",
  "minProperties": 1,
  "propertyNames": {
    "maxLength": 256
  }
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.value_map.additionalProperties.oneOf[0]

json
{
  "type": "string",
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.value_map.additionalProperties.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[0].properties.value_map.additionalProperties.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.timestamp.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id

json
{
  "description": "Column or constant for the CAN arbitration ID, interpreted using id_base. A column name or one-based column number may be written directly; constants still use a fixed object."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "description": "Column or constant for the CAN arbitration ID, interpreted using id_base.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].oneOf[0].not

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].oneOf[1].not

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.column

json
{
  "description": "Column name or index to read, mutually exclusive with fixed. It must agree with has_header and the actual layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed

json
{
  "description": "Explicit constant for this semantic field, mutually exclusive with column. It is not an automatic replacement for missing data."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "Whether to remove whitespace at both ends of an input field. Interior characters are unchanged."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.value_map

json
{
  "type": [
    "object",
    "null"
  ],
  "maxProperties": 256,
  "description": "Omit or use null for no mapping. An object must contain 1 to 256 entries, with original text keys and string targets each at most 256 characters. These limits differ from fixed text limits.",
  "minProperties": 1,
  "propertyNames": {
    "maxLength": 256
  }
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.value_map.additionalProperties.oneOf[0]

json
{
  "type": "string",
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.value_map.additionalProperties.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[0].properties.value_map.additionalProperties.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_id.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel

json
{
  "description": "Channel mapping for raw CSV. Constants retain the file's numbering; channel_origin specifies whether the file starts at 0 or 1. A column name or one-based column number may be written directly; constants still use a fixed object. If omitted, inherits the source's unique DBC channel."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "description": "Channel mapping for raw CSV. Constants retain the file's numbering; channel_origin specifies whether the file starts at 0 or 1.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].oneOf[0].not

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].oneOf[1].not

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.column

json
{
  "description": "Column name or index to read, mutually exclusive with fixed. It must agree with has_header and the actual layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed

json
{
  "description": "Explicit constant for this semantic field, mutually exclusive with column. It is not an automatic replacement for missing data."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "Whether to remove whitespace at both ends of an input field. Interior characters are unchanged."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.value_map

json
{
  "type": [
    "object",
    "null"
  ],
  "maxProperties": 256,
  "description": "Omit or use null for no mapping. An object must contain 1 to 256 entries, with original text keys and string targets each at most 256 characters. These limits differ from fixed text limits.",
  "minProperties": 1,
  "propertyNames": {
    "maxLength": 256
  }
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.value_map.additionalProperties.oneOf[0]

json
{
  "type": "string",
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.value_map.additionalProperties.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[0].properties.value_map.additionalProperties.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.channel.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx

json
{
  "description": "Input mapping for receive/transmit direction. Values must unambiguously identify the direction. A column name or one-based column number may be written directly; constants still use a fixed object. Optional: omission means unknown direction, which must be supplied only for raw-frame export or reconstruction. Rx/Tx and 接收/发送 are recognized directly."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "description": "Input mapping for receive/transmit direction. Values must unambiguously identify the direction.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].oneOf[0].not

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].oneOf[1].not

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.column

json
{
  "description": "Column name or index to read, mutually exclusive with fixed. It must agree with has_header and the actual layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed

json
{
  "description": "Explicit constant for this semantic field, mutually exclusive with column. It is not an automatic replacement for missing data."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "Whether to remove whitespace at both ends of an input field. Interior characters are unchanged."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.value_map

json
{
  "type": [
    "object",
    "null"
  ],
  "maxProperties": 256,
  "description": "Omit or use null for no mapping. An object must contain 1 to 256 entries, with original text keys and string targets each at most 256 characters. These limits differ from fixed text limits.",
  "minProperties": 1,
  "propertyNames": {
    "maxLength": 256
  }
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.value_map.additionalProperties.oneOf[0]

json
{
  "type": "string",
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.value_map.additionalProperties.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[0].properties.value_map.additionalProperties.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_rx.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended

json
{
  "description": "Optional column or constant for standard/extended frame type. An actual input field takes precedence. If omitted, bindings and DBC must identify it uniquely; otherwise supply it. A small ID alone does not prove a standard frame. A column name or one-based column number may be written directly; constants still use a fixed object."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "description": "Optional column or constant for standard/extended frame type. An actual input field takes precedence. If omitted, bindings and DBC must identify it uniquely; otherwise supply it. A small ID alone does not prove a standard frame.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].oneOf[0].not

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].oneOf[1].not

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.column

json
{
  "description": "Column name or index to read, mutually exclusive with fixed. It must agree with has_header and the actual layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed

json
{
  "description": "Explicit constant for this semantic field, mutually exclusive with column. It is not an automatic replacement for missing data."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "Whether to remove whitespace at both ends of an input field. Interior characters are unchanged."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.value_map

json
{
  "type": [
    "object",
    "null"
  ],
  "maxProperties": 256,
  "description": "Omit or use null for no mapping. An object must contain 1 to 256 entries, with original text keys and string targets each at most 256 characters. These limits differ from fixed text limits.",
  "minProperties": 1,
  "propertyNames": {
    "maxLength": 256
  }
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.value_map.additionalProperties.oneOf[0]

json
{
  "type": "string",
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.value_map.additionalProperties.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[0].properties.value_map.additionalProperties.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_extended.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd

json
{
  "description": "Optional CAN/FD column or constant. An actual field takes precedence; otherwise use bindings and DBC. A DBC marked FD may describe actual classic CAN. Supply the type if ambiguous; do not infer it from a short payload. A column name or one-based column number may be written directly; constants still use a fixed object."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "description": "Optional CAN/FD column or constant. An actual field takes precedence; otherwise use bindings and DBC. A DBC marked FD may describe actual classic CAN. Supply the type if ambiguous; do not infer it from a short payload.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].oneOf[0].not

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].oneOf[1].not

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.column

json
{
  "description": "Column name or index to read, mutually exclusive with fixed. It must agree with has_header and the actual layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed

json
{
  "description": "Explicit constant for this semantic field, mutually exclusive with column. It is not an automatic replacement for missing data."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "Whether to remove whitespace at both ends of an input field. Interior characters are unchanged."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.value_map

json
{
  "type": [
    "object",
    "null"
  ],
  "maxProperties": 256,
  "description": "Omit or use null for no mapping. An object must contain 1 to 256 entries, with original text keys and string targets each at most 256 characters. These limits differ from fixed text limits.",
  "minProperties": 1,
  "propertyNames": {
    "maxLength": 256
  }
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.value_map.additionalProperties.oneOf[0]

json
{
  "type": "string",
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.value_map.additionalProperties.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[0].properties.value_map.additionalProperties.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.is_fd.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind

json
{
  "description": "Input mapping for CAN frame kind, distinguishing supported data, remote, or error frames. A column name or one-based column number may be written directly; constants still use a fixed object. Defaults to ordinary data frames; remote or error frames must be explicit."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "description": "Input mapping for CAN frame kind, distinguishing supported data, remote, or error frames.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].oneOf[0].not

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].oneOf[1].not

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.column

json
{
  "description": "Column name or index to read, mutually exclusive with fixed. It must agree with has_header and the actual layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed

json
{
  "description": "Explicit constant for this semantic field, mutually exclusive with column. It is not an automatic replacement for missing data."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "Whether to remove whitespace at both ends of an input field. Interior characters are unchanged."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.value_map

json
{
  "type": [
    "object",
    "null"
  ],
  "maxProperties": 256,
  "description": "Omit or use null for no mapping. An object must contain 1 to 256 entries, with original text keys and string targets each at most 256 characters. These limits differ from fixed text limits.",
  "minProperties": 1,
  "propertyNames": {
    "maxLength": 256
  }
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.value_map.additionalProperties.oneOf[0]

json
{
  "type": "string",
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.value_map.additionalProperties.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[0].properties.value_map.additionalProperties.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.frame_kind.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data

json
{
  "description": "Input mapping for CAN payload bytes, parsed using payload_style. Missing payloads are not filled with zeros. A column name or one-based column number may be written directly; constants still use a fixed object."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "description": "Input mapping for CAN payload bytes, parsed using payload_style. Missing payloads are not filled with zeros.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].oneOf[0].not

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].oneOf[1].not

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.column

json
{
  "description": "Column name or index to read, mutually exclusive with fixed. It must agree with has_header and the actual layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed

json
{
  "description": "Explicit constant for this semantic field, mutually exclusive with column. It is not an automatic replacement for missing data."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "Whether to remove whitespace at both ends of an input field. Interior characters are unchanged."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.value_map

json
{
  "type": [
    "object",
    "null"
  ],
  "maxProperties": 256,
  "description": "Omit or use null for no mapping. An object must contain 1 to 256 entries, with original text keys and string targets each at most 256 characters. These limits differ from fixed text limits.",
  "minProperties": 1,
  "propertyNames": {
    "maxLength": 256
  }
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.value_map.additionalProperties.oneOf[0]

json
{
  "type": "string",
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.value_map.additionalProperties.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[0].properties.value_map.additionalProperties.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.data.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length

json
{
  "description": "Input mapping for the actual payload byte count, handled separately from the DLC code. A column name or one-based column number may be written directly; constants still use a fixed object. If omitted, inferred from the data byte count."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "description": "Input mapping for the actual payload byte count, handled separately from the DLC code.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].oneOf[0].not

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].oneOf[1].not

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.column

json
{
  "description": "Column name or index to read, mutually exclusive with fixed. It must agree with has_header and the actual layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed

json
{
  "description": "Explicit constant for this semantic field, mutually exclusive with column. It is not an automatic replacement for missing data."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "Whether to remove whitespace at both ends of an input field. Interior characters are unchanged."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.value_map

json
{
  "type": [
    "object",
    "null"
  ],
  "maxProperties": 256,
  "description": "Omit or use null for no mapping. An object must contain 1 to 256 entries, with original text keys and string targets each at most 256 characters. These limits differ from fixed text limits.",
  "minProperties": 1,
  "propertyNames": {
    "maxLength": 256
  }
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.value_map.additionalProperties.oneOf[0]

json
{
  "type": "string",
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.value_map.additionalProperties.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[0].properties.value_map.additionalProperties.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.payload_length.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code

json
{
  "description": "Input mapping for the CAN DLC code. A CAN FD DLC code is not the same as the byte count. A column name or one-based column number may be written directly; constants still use a fixed object."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "description": "Input mapping for the CAN DLC code. A CAN FD DLC code is not the same as the byte count.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].oneOf[0].not

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].oneOf[1].not

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.column

json
{
  "description": "Column name or index to read, mutually exclusive with fixed. It must agree with has_header and the actual layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed

json
{
  "description": "Explicit constant for this semantic field, mutually exclusive with column. It is not an automatic replacement for missing data."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "Whether to remove whitespace at both ends of an input field. Interior characters are unchanged."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.value_map

json
{
  "type": [
    "object",
    "null"
  ],
  "maxProperties": 256,
  "description": "Omit or use null for no mapping. An object must contain 1 to 256 entries, with original text keys and string targets each at most 256 characters. These limits differ from fixed text limits.",
  "minProperties": 1,
  "propertyNames": {
    "maxLength": 256
  }
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.value_map.additionalProperties.oneOf[0]

json
{
  "type": "string",
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.value_map.additionalProperties.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[0].properties.value_map.additionalProperties.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.dlc_code.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch

json
{
  "description": "Input mapping for the CAN FD bitrate-switch flag. A column name or one-based column number may be written directly; constants still use a fixed object."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "description": "Input mapping for the CAN FD bitrate-switch flag.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].oneOf[0].not

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].oneOf[1].not

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.column

json
{
  "description": "Column name or index to read, mutually exclusive with fixed. It must agree with has_header and the actual layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed

json
{
  "description": "Explicit constant for this semantic field, mutually exclusive with column. It is not an automatic replacement for missing data."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "Whether to remove whitespace at both ends of an input field. Interior characters are unchanged."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.value_map

json
{
  "type": [
    "object",
    "null"
  ],
  "maxProperties": 256,
  "description": "Omit or use null for no mapping. An object must contain 1 to 256 entries, with original text keys and string targets each at most 256 characters. These limits differ from fixed text limits.",
  "minProperties": 1,
  "propertyNames": {
    "maxLength": 256
  }
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.value_map.additionalProperties.oneOf[0]

json
{
  "type": "string",
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.value_map.additionalProperties.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[0].properties.value_map.additionalProperties.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.bitrate_switch.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator

json
{
  "description": "Input mapping for the CAN FD error-state indicator. A column name or one-based column number may be written directly; constants still use a fixed object."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "description": "Input mapping for the CAN FD error-state indicator.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].oneOf[0]

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].oneOf[0].not

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].oneOf[1]

json
{
  "required": [
    "fixed"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].oneOf[1].not

json
{
  "required": [
    "column"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.column

json
{
  "description": "Column name or index to read, mutually exclusive with fixed. It must agree with has_header and the actual layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.column.oneOf[0]

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.column.oneOf[1]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed

json
{
  "description": "Explicit constant for this semantic field, mutually exclusive with column. It is not an automatic replacement for missing data."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed.oneOf[0]

json
{
  "type": "string",
  "maxLength": 16384
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.fixed.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.strip

json
{
  "type": "boolean",
  "description": "Whether to remove whitespace at both ends of an input field. Interior characters are unchanged."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.value_map

json
{
  "type": [
    "object",
    "null"
  ],
  "maxProperties": 256,
  "description": "Omit or use null for no mapping. An object must contain 1 to 256 entries, with original text keys and string targets each at most 256 characters. These limits differ from fixed text limits.",
  "minProperties": 1,
  "propertyNames": {
    "maxLength": 256
  }
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.value_map.additionalProperties.oneOf[0]

json
{
  "type": "string",
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.value_map.additionalProperties.oneOf[1]

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[0].properties.value_map.additionalProperties.oneOf[2]

json
{
  "type": "boolean"
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[1]

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 256
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.fields.properties.error_state_indicator.oneOf[2]

json
{
  "type": "integer",
  "minimum": 1,
  "maximum": 4096
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.encoding

json
{
  "type": "string",
  "minLength": 1,
  "description": "Input text encoding used during reading. Static checks do not prove that the file can be read. CAN text parsing defaults to utf-8-sig."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.delimiter

json
{
  "type": "string",
  "minLength": 1,
  "maxLength": 1,
  "description": "Delimiter for raw CAN CSV; it must match the file format."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.has_header

json
{
  "type": "boolean",
  "description": "Whether raw CSV has a header row. Column names require a header; indices use the explicitly declared layout."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.skip_rows

json
{
  "type": "integer",
  "minimum": 0,
  "description": "Non-negative number of lines to skip before reading records, for existing introductory lines in the file."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.layout.properties.layout_version

json
{
  "const": "raw-can-csv-layout-v1",
  "description": "Fixed version identifier for the raw CAN CSV field layout. Constant: \"raw-can-csv-layout-v1\"."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.time_format

json
{
  "enum": [
    "numeric",
    "clock",
    "clock-ms-us-v1",
    "iso8601"
  ],
  "description": "Text representation of raw CAN timestamps; it must match the file. Options: \"numeric\", numbers in the source time unit; \"clock\", hour/minute/second text; \"clock-ms-us-v1\", legacy clock/millisecond/microsecond text; \"iso8601\", ISO 8601 date and time."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.id_base

json
{
  "enum": [
    "auto",
    10,
    16
  ],
  "description": "Defaults to auto: 0x means hexadecimal, 0b means binary, and no prefix means decimal. Select 16 explicitly for unprefixed hexadecimal tables."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.length_base

json
{
  "enum": [
    10,
    16
  ],
  "description": "Base of message-length text, either 10 or 16. Declare the presence of DLC codes separately. Options: 10 decimal; 16 hexadecimal."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.channel_origin

json
{
  "enum": [
    0,
    1
  ],
  "description": "Starting channel number in the original file: 0 or 1. Channels are normalized to zero-based internal numbering. Options: 0, file numbering starts at channel 0; 1, file numbering starts at channel 1."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.payload_style

json
{
  "enum": [
    "spaced",
    "contiguous"
  ],
  "description": "Payload text arrangement. Options: \"spaced\", bytes separated by spaces; \"contiguous\", continuous hexadecimal byte text."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.rollover_min_drop

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Minimum timestamp decrease that may be recognized as a day rollover, including a unit. Arbitrary out-of-order records must not be treated as a rollover."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.decode_policy

json
{
  "enum": [
    "strict",
    "partial",
    "legacy"
  ],
  "default": "strict",
  "description": "Payload-length policy for selected CAN messages; defaults to strict. strict requires the actual payload length to equal the DBC length and DLC to agree with the byte count. partial allows payloads shorter than the DBC length, but not longer payloads or DLC/byte-count inconsistencies; decoding still uses the existing implementation. legacy retains the original decode calls and length handling."
}

analysis.schema.json: $.properties.sources.items.oneOf[4].properties.reader.properties.input_check

json
{
  "type": "string",
  "enum": [
    "auto",
    "full"
  ],
  "default": "auto",
  "description": "auto checks time order according to actual consumers. Ordinary ASC analysis checks only required channels/IDs, while the source range uses the earliest/latest timestamps from all records read in the same pass. full and raw-frame export check all records. No mode automatically sorts records or changes timestamps."
}

analysis.schema.json: $.properties.sources.items.oneOf[5]

json
{
  "type": "object",
  "required": [
    "dbc_by_channel"
  ],
  "description": "Automatically choose ASC or BLF reading. Format-specific options are checked against the actual source.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[5].oneOf[0]

json
{
  "required": [
    "path"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[5].oneOf[0].not

json
{
  "required": [
    "paths"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[5].oneOf[1]

json
{
  "required": [
    "paths"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[5].oneOf[1].not

json
{
  "required": [
    "path"
  ]
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Source name within this plan. If omitted, names such as source_1 and source_2 are assigned by declaration order. References use this name; it does not infer source fields or synchronization."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time

json
{
  "description": "Source time type, unit, clock, and offset. time_type defaults to relative; an omitted clock creates an independent source origin. Set a shared clock only for sources with a known synchronization basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[0]

json
{
  "type": "object",
  "required": [],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.unit

json
{
  "const": "s",
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names. Constant: \"s\", seconds."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed offset added to source timestamps. Positive or negative values require s/ms/us/ns; this is not a timezone or date.",
  "default": "0s"
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.time_type

json
{
  "const": "relative",
  "description": "Time coordinates: relative to a shared origin, or absolute with a timezone. Constant: \"relative\", relative to an explicitly defined common origin."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[0].properties.clock

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Shared name for the relative time origin. Use the same value only when inputs actually share that origin. Omitting it does not synchronize inputs."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[1]

json
{
  "type": "object",
  "required": [
    "time_type"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.unit

json
{
  "const": "s",
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names. Constant: \"s\", seconds."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed offset added to source timestamps. Positive or negative values require s/ms/us/ns; this is not a timezone or date.",
  "default": "0s"
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.time_type

json
{
  "const": "absolute",
  "description": "Time coordinates: relative to a shared origin, or absolute with a timezone. Constant: \"absolute\", an absolute timestamp with a timezone basis."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.time.oneOf[1].properties.timezone

json
{
  "type": "string",
  "description": "Fixed acquisition timezone: UTC or a signed hour/minute offset such as +08:00."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.legacy_profile

json
{
  "const": "sclicer-functions-v1",
  "description": "Existing BLF reader/decoder implementation. Optional; defaults to sclicer-functions-v1. If specified, only that integrated implementation is accepted."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path

json
{
  "description": "Input file, directory, or wildcard, as one item or a list. path and paths are mutually exclusive."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Paths kept in declaration order. Each directory's matched files are sorted in natural order."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[2].items

json
{
  "description": "Path text, or a file declaration with its own offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.path.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths

json
{
  "description": "Input file, directory, or wildcard, as one item or a list. path and paths are mutually exclusive."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Paths kept in declaration order. Each directory's matched files are sorted in natural order."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items

json
{
  "description": "Path text, or a file declaration with its own offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.paths.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.dbc_by_channel

json
{
  "type": "object",
  "minProperties": 1,
  "maxProperties": 1,
  "propertyNames": {
    "pattern": "^[1-9][0-9]*(?![\\s\\S])"
  },
  "description": "Explicit mapping from unique target channels to DBC files. Keys are positive integer strings starting at 1, without leading zeros. DBC paths are resolved relative to the declaring file."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.dbc_by_channel.additionalProperties

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S"
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.metadata

json
{
  "type": "object",
  "description": "Additional notes as an object of JSON-native values. They do not trigger implicit conversion, template execution, or inference of business parameters.",
  "additionalProperties": true
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.source_type

json
{
  "enum": [
    "asc_or_blf"
  ],
  "description": "If omitted, identify ASC/BLF by extension; both may be mixed in one source in their original order. CSV and memory inputs require an explicit type."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.offsets

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Time offsets in input-file order. The number of offsets must match the file list; offsets must not silently reorder files."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.offsets.items

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed time offset: a number with s/ms/us/ns. Dates are not accepted."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.reader

json
{
  "type": "object",
  "required": [],
  "description": "Reading, text parsing, and decoding options for this source format. Omitted applicable parameters use their documented defaults.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.reader.properties.version

json
{
  "enum": [
    "vector-asc-v1",
    "vector-asc-statistics-v1",
    "sclicer-asc-v1"
  ],
  "description": "Select the ASC row layout. Default vector-asc-v1 reads standard Vector ASC with an optional Length/BitCount/ID suffix, retaining strict field-order, value and ID checks. vector-asc-statistics-v1 remains an explicit standard-statistics selection; sclicer-asc-v1 selects the different Sclicer FD layout. Dialects are not guessed."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.reader.properties.encoding

json
{
  "type": "string",
  "minLength": 1,
  "description": "Input text encoding used during reading. Static checks do not prove that the file can be read. CAN text parsing defaults to utf-8-sig.",
  "default": "utf-8-sig"
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.reader.properties.decode_policy

json
{
  "enum": [
    "strict",
    "partial",
    "legacy"
  ],
  "default": "strict",
  "description": "Payload-length policy for selected CAN messages; defaults to strict. strict requires the actual payload length to equal the DBC length and DLC to agree with the byte count. partial allows payloads shorter than the DBC length, but not longer payloads or DLC/byte-count inconsistencies; decoding still uses the existing implementation. legacy retains the original decode calls and length handling."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.reader.properties.decode_scope

json
{
  "type": "string",
  "enum": [
    "all",
    "requested"
  ],
  "default": "requested",
  "description": "Scope of attempted CAN decoding. The default requested decodes only messages/fields needed by this analysis; all broadens attempted decoding. In serial pure-BLF concatenation, strict/partial skip remote and error frames. all does not guarantee a DBC definition, successful decoding, or a per-frame diagnostic for every frame. Selecting all does not itself require dataset.domain. File multiprocessing and time_order support requested only."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.reader.properties.input_check

json
{
  "type": "string",
  "enum": [
    "auto",
    "full"
  ],
  "default": "auto",
  "description": "auto checks time order according to actual consumers. Ordinary ASC analysis checks only required channels/IDs, while the source range uses the earliest/latest timestamps from all records read in the same pass. full and raw-frame export check all records. No mode automatically sorts records or changes timestamps."
}

analysis.schema.json: $.properties.sources.items.oneOf[5].properties.file_merge

json
{
  "enum": [
    "concatenate",
    "time_order"
  ],
  "default": "concatenate",
  "description": "Controls how files in one source are combined. concatenate follows paths order and rejects time regressions only within the time-check scope required by the task. time_order requires each file to be ordered for the records being merged, then stably merges by timestamp, file position and local record sequence. Overlapping messages are retained; timestamps are not shifted and records are not deduplicated. This setting is independent of the process count."
}

analysis.schema.json: $.properties.signals

json
{
  "type": "array",
  "description": "Bind original source fields to simple analysis signal names, specifying type, unit, and validity duration."
}

analysis.schema.json: $.properties.signals.items.oneOf[0]

json
{
  "type": "object",
  "required": [
    "name",
    "field"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.signals.items.oneOf[0].allOf[0].then.allOf[0].then

json
{
  "required": [
    "choices"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[0].allOf[0].then.allOf[0].if

json
{
  "required": [
    "field"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[0].allOf[0].then.allOf[0].if.properties.field

json
{
  "type": "string",
  "description": "Decoded signal column names do not provide DBC type or unit metadata, so configuration must declare them."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].allOf[0].then.properties.choices

json
{
  "minItems": 1,
  "description": "Enum pairs [original_code,label]. Preserve the code's native type; do not stringify integer or Boolean codes through object keys."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].allOf[0].if

json
{
  "required": [
    "dtype"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[0].allOf[0].if.properties.dtype

json
{
  "const": "enum",
  "description": "Explicit enum signals use text labels. CAN may obtain choices from the DBC; decoded inputs require choices."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].allOf[1].then

json
{
  "required": [
    "dtype",
    "unit"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[0].allOf[1].if

json
{
  "required": [
    "field"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[0].allOf[1].if.properties.field

json
{
  "type": "string",
  "description": "Decoded signal column names do not provide DBC type or unit metadata, so configuration must declare them."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Simple name of this source or signal, used by subsequent references. It does not infer or rename the original data field."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.source

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "name of a declared source. The reference must exist; sources are not inferred from matching field or semantic names."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.source.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field

json
{
  "description": "Actual field in the source: an original field name for signal tables/memory, or a CAN channel/message/signal locator object."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S"
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1]

json
{
  "type": "object",
  "required": [
    "signal",
    "frame_id"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].allOf[0].then.properties.frame_id

json
{
  "maximum": 2047,
  "description": "Integer message IDs for standard frames are limited to 2047. The plan loader checks the range after converting string IDs."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].allOf[0].if

json
{
  "required": [
    "is_extended"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].allOf[0].if.properties.is_extended

json
{
  "const": false,
  "description": "When standard frame format is explicitly selected, an integer ID must fit in 11 bits."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.channel

json
{
  "type": "integer",
  "minimum": 1,
  "description": "CAN channels in user configuration start at 1; 1 maps to internal channel 0. If omitted, inherits the source's unique channel."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.signal

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name in the DBC, used with frame_id to locate a signal within that message. This is not the analysis alias."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.frame_id

json
{
  "description": "CAN message ID, as an integer or string. 0x is hexadecimal, 0b binary, and no prefix decimal. The parsed value must be 0 to 536870911; an explicitly standard frame is limited to 2047."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.frame_id.oneOf[0]

json
{
  "type": "integer",
  "minimum": 0,
  "maximum": 536870911
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.frame_id.oneOf[1]

json
{
  "type": "string",
  "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
  "minLength": 1
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.is_extended

json
{
  "type": "boolean",
  "description": "Optional standard/extended frame constraint. If omitted, use DBC and actual frames; request an explicit value only when ambiguous. Explicit null is invalid."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.field.oneOf[1].properties.is_fd

json
{
  "type": "boolean",
  "description": "Optional CAN/CAN FD constraint. If omitted, use DBC and actual frames; request an explicit value only when ambiguous. Explicit null is invalid."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.dtype

json
{
  "enum": [
    "int64",
    "uint64",
    "float64",
    "bool",
    "enum"
  ],
  "description": "Analysis signal type: int64, uint64, float64, bool, or enum. For CAN, omission infers a numeric type from DBC-decoded values; a DBC choice table alone does not select enum. Explicit manual choices with text or Boolean labels can establish enum or bool. Decoded inputs still require dtype."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Unit of numeric values, checked for expressions and conversion rather than inferred from field or file names. For CAN, omission reads the DBC unit; a missing DBC unit becomes unknown and unverified, while logical types use 1. Decoded inputs still require an explicit unit."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.valid_for

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Maximum actual duration for reusing a valid sample. Optional; defaults to three times this signal's period, using an explicit period before the DBC message cycle. If neither is available, supply period or valid_for. An explicit valid_for overrides the default.",
  "examples": [
    "500ms",
    "2s"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.sample_policy

json
{
  "const": "backward_hold",
  "description": "Sample reuse policy. Currently only backward_hold is supported: use the most recent valid sample within its validity duration. Constant: \"backward_hold\".",
  "default": "backward_hold"
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.same_time_policy

json
{
  "enum": [
    "error",
    "last_by_sequence"
  ],
  "description": "Handling of multiple updates for one signal at the same timestamp. Conflicts are not ignored and records are not arbitrarily reordered. Options: \"error\", fail on conflicting same-time updates; \"last_by_sequence\", use the last update in original order.",
  "default": "error"
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.code_dtype

json
{
  "enum": [
    "int64",
    "uint64"
  ],
  "description": "Original integer type of a version 4 enum, used by enum_code. The DBC can supply it for unscaled integer CAN signals."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.choices

json
{
  "type": "array",
  "description": "Enum pairs [original_code,label]. Keep the native code type; object keys would turn integer or Boolean codes into strings. With dtype=enum, omission reads DBC choices; an explicit mapping takes precedence. Floating-point enum codes produced by scaling are rejected, not truncated to integers."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.choices.items

json
{
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": false
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.choices.items.prefixItems[0]

json
{
  "type": [
    "integer",
    "boolean",
    "string"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.choices.items.prefixItems[1]

json
{
  "type": [
    "string",
    "boolean"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.valid_range

json
{
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "description": "Allowed normalized numeric range, from lower to upper bound. Values outside the range follow the quality policy and are not clipped to the boundary."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.valid_range.items

json
{
  "type": "number"
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.invalid_values

json
{
  "type": "array",
  "description": "Original codes explicitly marked invalid. An invalid update replaces the previous value; it is not treated as no update.",
  "default": []
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.invalid_values.items

json
{
  "type": [
    "number",
    "string",
    "boolean",
    "null"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.semantic_id

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "Optional business-meaning identifier for documentation or role contracts. A matching identifier does not bind signals automatically. May be omitted or null; otherwise must be non-empty text."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.semantic_contract_version

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "Version of the business meaning identified by this signal's semantic_id, independent of the analysis configuration version. It does not establish that actual inputs were verified. May be omitted or null; every non-null value must be non-empty text and requires semantic_id on the same signal."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.mapping_version

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "Version identifier for the caller's signal mapping, identifying the explicit bindings used. May be omitted or null; otherwise must be non-empty text."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.sign_convention

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "Explicit meaning of positive/negative normalized values, such as positive for inflow. Signals from different locations or directions must not be merged by name alone. May be omitted or null; otherwise must be non-empty text."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.measurement_location

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "Signal measurement location for checking business role contracts. May be omitted or null; otherwise must be non-empty text."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.metadata

json
{
  "type": "object",
  "description": "Additional notes as an object of JSON-native values. They do not trigger implicit conversion, template execution, or inference of business parameters.",
  "additionalProperties": true
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.period

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed period of this signal: a positive duration with a unit, such as 100ms. An explicit period takes precedence over the DBC message cycle; omitted valid_for is three times the period.",
  "examples": [
    "100ms",
    "0.1s"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.conversion

json
{
  "type": "object",
  "description": "Additional unit conversion. If both coefficients are omitted, infer conversion from input and target units. Supplying either coefficient selects a complete explicit conversion; DBC scaling is not repeated.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.conversion.properties.input_unit

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Unit after reading or DBC decoding. Raw CAN inputs infer it from the DBC; decoded CSV and memory inputs use the target unit when omitted. Explicit null is invalid; omit the field instead."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.conversion.properties.scale

json
{
  "type": "number",
  "description": "Multiplier. Inferred if both coefficients are omitted; defaults to 1 only when offset is explicitly supplied. Explicit coefficients must match the units."
}

analysis.schema.json: $.properties.signals.items.oneOf[0].properties.conversion.properties.offset

json
{
  "type": "number",
  "description": "Offset after multiplication, expressed in the target unit. Inferred if both coefficients are omitted; defaults to 0 only when scale is explicitly supplied."
}

analysis.schema.json: $.properties.signals.items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "frame_id",
    "signals"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.signals.items.oneOf[1].allOf[0].then.properties.frame_id

json
{
  "maximum": 2047,
  "description": "Integer message IDs for standard frames are limited to 2047. The plan loader checks the range after converting string IDs."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].allOf[0].if

json
{
  "required": [
    "is_extended"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].allOf[0].if.properties.is_extended

json
{
  "const": false,
  "description": "When standard frame format is explicitly selected, an integer ID must fit in 11 bits."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.frame_id

json
{
  "description": "CAN message ID, as an integer or string. 0x is hexadecimal, 0b binary, and no prefix decimal. The parsed value must be 0 to 536870911; an explicitly standard frame is limited to 2047."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.frame_id.oneOf[0]

json
{
  "type": "integer",
  "minimum": 0,
  "maximum": 536870911
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.frame_id.oneOf[1]

json
{
  "type": "string",
  "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
  "minLength": 1
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.channel

json
{
  "type": "integer",
  "minimum": 1,
  "description": "CAN channels in user configuration start at 1; 1 maps to internal channel 0. If omitted, inherits the source's unique channel."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.is_extended

json
{
  "type": "boolean",
  "description": "Optional standard/extended frame constraint. If omitted, use DBC and actual frames; request an explicit value only when ambiguous. Explicit null is invalid."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.is_fd

json
{
  "type": "boolean",
  "description": "Optional CAN/CAN FD constraint. If omitted, use DBC and actual frames; request an explicit value only when ambiguous. Explicit null is invalid."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.source

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "name of a declared source. The reference must exist; sources are not inferred from matching field or semantic names."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.source.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.period

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed period of this signal: a positive duration with a unit, such as 100ms. An explicit period takes precedence over the DBC message cycle; omitted valid_for is three times the period.",
  "examples": [
    "100ms",
    "0.1s"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.valid_for

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Maximum actual duration for reusing a valid sample. Optional; defaults to three times this signal's period, using an explicit period before the DBC message cycle. If neither is available, supply period or valid_for. An explicit valid_for overrides the default.",
  "examples": [
    "500ms",
    "2s"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.same_time_policy

json
{
  "enum": [
    "error",
    "last_by_sequence"
  ],
  "description": "Handling of multiple updates for one signal at the same timestamp. Conflicts are not ignored and records are not arbitrarily reordered. Options: \"error\", fail on conflicting same-time updates; \"last_by_sequence\", use the last update in original order.",
  "default": "error"
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals

json
{
  "type": "array",
  "minItems": 1,
  "description": "Signals in the same message. Supply each signal name and any required per-signal overrides."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items

json
{
  "type": "object",
  "required": [
    "name",
    "signal"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[0].then.allOf[0].then

json
{
  "required": [
    "choices"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[0].then.allOf[0].if

json
{
  "required": [
    "field"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[0].then.allOf[0].if.properties.field

json
{
  "type": "string",
  "description": "Decoded signal column names do not provide DBC type or unit metadata, so configuration must declare them."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[0].then.properties.choices

json
{
  "minItems": 1,
  "description": "Enum pairs [original_code,label]. Preserve the code's native type; do not stringify integer or Boolean codes through object keys."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[0].if

json
{
  "required": [
    "dtype"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[0].if.properties.dtype

json
{
  "const": "enum",
  "description": "Explicit enum signals use text labels. CAN may obtain choices from the DBC; decoded inputs require choices."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[1].then

json
{
  "required": [
    "dtype",
    "unit"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[1].if

json
{
  "required": [
    "field"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.allOf[1].if.properties.field

json
{
  "type": "string",
  "description": "Decoded signal column names do not provide DBC type or unit metadata, so configuration must declare them."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Simple name of this source or signal, used by subsequent references. It does not infer or rename the original data field."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.dtype

json
{
  "enum": [
    "int64",
    "uint64",
    "float64",
    "bool",
    "enum"
  ],
  "description": "Analysis signal type: int64, uint64, float64, bool, or enum. For CAN, omission infers a numeric type from DBC-decoded values; a DBC choice table alone does not select enum. Explicit manual choices with text or Boolean labels can establish enum or bool. Decoded inputs still require dtype."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Unit of numeric values, checked for expressions and conversion rather than inferred from field or file names. For CAN, omission reads the DBC unit; a missing DBC unit becomes unknown and unverified, while logical types use 1. Decoded inputs still require an explicit unit."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.valid_for

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Maximum actual duration for reusing a valid sample. Optional; defaults to three times this signal's period, using an explicit period before the DBC message cycle. If neither is available, supply period or valid_for. An explicit valid_for overrides the default.",
  "examples": [
    "500ms",
    "2s"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.sample_policy

json
{
  "const": "backward_hold",
  "description": "Sample reuse policy. Currently only backward_hold is supported: use the most recent valid sample within its validity duration. Constant: \"backward_hold\".",
  "default": "backward_hold"
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.same_time_policy

json
{
  "enum": [
    "error",
    "last_by_sequence"
  ],
  "description": "Handling of multiple updates for one signal at the same timestamp. Conflicts are not ignored and records are not arbitrarily reordered. Options: \"error\", fail on conflicting same-time updates; \"last_by_sequence\", use the last update in original order.",
  "default": "error"
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.code_dtype

json
{
  "enum": [
    "int64",
    "uint64"
  ],
  "description": "Integer type before enum labels are applied in version 4. Only enum_code requests original codes."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.choices

json
{
  "type": "array",
  "description": "Enum pairs [original_code,label]. Keep the native code type; object keys would turn integer or Boolean codes into strings. With dtype=enum, omission reads DBC choices; an explicit mapping takes precedence. Floating-point enum codes produced by scaling are rejected, not truncated to integers."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.choices.items

json
{
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": false
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.choices.items.prefixItems[0]

json
{
  "type": [
    "integer",
    "boolean",
    "string"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.choices.items.prefixItems[1]

json
{
  "type": [
    "string",
    "boolean"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.valid_range

json
{
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "description": "Allowed normalized numeric range, from lower to upper bound. Values outside the range follow the quality policy and are not clipped to the boundary."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.valid_range.items

json
{
  "type": "number"
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.invalid_values

json
{
  "type": "array",
  "description": "Original codes explicitly marked invalid. An invalid update replaces the previous value; it is not treated as no update.",
  "default": []
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.invalid_values.items

json
{
  "type": [
    "number",
    "string",
    "boolean",
    "null"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.semantic_id

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "Optional business-meaning identifier for documentation or role contracts. A matching identifier does not bind signals automatically. May be omitted or null; otherwise must be non-empty text."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.semantic_contract_version

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "Version of the business meaning identified by this signal's semantic_id, independent of the analysis configuration version. It does not establish that actual inputs were verified. May be omitted or null; every non-null value must be non-empty text and requires semantic_id on the same signal."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.mapping_version

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "Version identifier for the caller's signal mapping, identifying the explicit bindings used. May be omitted or null; otherwise must be non-empty text."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.sign_convention

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "Explicit meaning of positive/negative normalized values, such as positive for inflow. Signals from different locations or directions must not be merged by name alone. May be omitted or null; otherwise must be non-empty text."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.measurement_location

json
{
  "type": [
    "string",
    "null"
  ],
  "minLength": 1,
  "pattern": "\\S",
  "description": "Signal measurement location for checking business role contracts. May be omitted or null; otherwise must be non-empty text."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.metadata

json
{
  "type": "object",
  "description": "Additional notes as an object of JSON-native values. They do not trigger implicit conversion, template execution, or inference of business parameters.",
  "additionalProperties": true
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.period

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed period of this signal: a positive duration with a unit, such as 100ms. An explicit period takes precedence over the DBC message cycle; omitted valid_for is three times the period.",
  "examples": [
    "100ms",
    "0.1s"
  ]
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.signal

json
{
  "type": "string",
  "minLength": 1,
  "description": "Bound signal name for a calculation input, or original DBC signal name inside a CAN locator. These contexts are checked separately."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion

json
{
  "type": "object",
  "description": "Additional unit conversion. If both coefficients are omitted, infer conversion from input and target units. Supplying either coefficient selects a complete explicit conversion; DBC scaling is not repeated.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion.properties.input_unit

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Unit after reading or DBC decoding. Raw CAN inputs infer it from the DBC; decoded CSV and memory inputs use the target unit when omitted. Explicit null is invalid; omit the field instead."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion.properties.scale

json
{
  "type": "number",
  "description": "Multiplier. Inferred if both coefficients are omitted; defaults to 1 only when offset is explicitly supplied. Explicit coefficients must match the units."
}

analysis.schema.json: $.properties.signals.items.oneOf[1].properties.signals.items.properties.conversion.properties.offset

json
{
  "type": "number",
  "description": "Offset after multiplication, expressed in the target unit. Inferred if both coefficients are omitted; defaults to 0 only when scale is explicitly supplied."
}

analysis.schema.json: $.properties.derived

json
{
  "type": "object",
  "propertyNames": {
    "type": "string",
    "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
    "not": {
      "enum": [
        "abs",
        "isclose",
        "False",
        "None",
        "True",
        "and",
        "as",
        "assert",
        "async",
        "await",
        "break",
        "class",
        "continue",
        "def",
        "del",
        "elif",
        "else",
        "except",
        "finally",
        "for",
        "from",
        "global",
        "if",
        "import",
        "in",
        "is",
        "lambda",
        "nonlocal",
        "not",
        "or",
        "pass",
        "raise",
        "return",
        "try",
        "while",
        "with",
        "yield"
      ],
      "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
    }
  },
  "description": "Mapping from derived signal names to expression declarations. Only bound signals and restricted expressions are used; units and dependency cycles are checked.",
  "default": {}
}

analysis.schema.json: $.properties.derived.additionalProperties

json
{
  "type": "object",
  "required": [
    "expr"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.derived.additionalProperties.properties.expr

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Restricted expression using explicitly bound names and supported operations. It does not execute Python, attribute access, or arbitrary functions."
}

analysis.schema.json: $.properties.derived.additionalProperties.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Optional result unit. If omitted, infer it from supported unit relationships in the expression; fail explicitly if it cannot be determined."
}

analysis.schema.json: $.properties.derived.additionalProperties.properties.semantic_id

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Optional business-meaning identifier for documentation or role contracts. Matching identifiers do not bind signals automatically."
}

analysis.schema.json: $.properties.derived.additionalProperties.properties.semantic_contract_version

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Version of this semantic contract, independent of the analysis configuration version. It does not establish that actual inputs were verified."
}

analysis.schema.json: $.properties.derived.additionalProperties.properties.sign_convention

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Explicit meaning of positive/negative normalized values, such as positive for inflow. Signals from different locations or directions must not be merged by name alone."
}

analysis.schema.json: $.properties.derived.additionalProperties.properties.measurement_location

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Signal measurement location for checking business role contracts."
}

analysis.schema.json: $.properties.derived.additionalProperties.properties.metadata

json
{
  "type": "object",
  "description": "Additional notes as an object of JSON-native values. They do not trigger implicit conversion, template execution, or inference of business parameters.",
  "additionalProperties": true
}

analysis.schema.json: $.properties.rules

json
{
  "type": "array",
  "description": "Rules that identify events. Rule names share a unique namespace with windows, calculations, and sequences.",
  "default": []
}

analysis.schema.json: $.properties.rules.items.oneOf[0]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "condition",
    "minimum_duration",
    "duration_comparison"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.condition

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Boolean condition expression. Unknown values use three-valued logic; nonzero numeric values are not implicitly true."
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.selection_origin

json
{
  "enum": [
    "onset",
    "confirmed"
  ],
  "description": "Start of statistics for a duration-qualified event. Options: \"onset\", when the condition first becomes true; \"confirmed\", when the duration requirement is confirmed.",
  "default": "onset"
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.rule_type

json
{
  "const": "condition_duration",
  "description": "Event-rule type, determining the meanings of conditions, durations, thresholds, and other fields. Constant: \"condition_duration\", confirming an activity once the condition remains true for the required duration."
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.minimum_duration

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Minimum continuous duration required to confirm a condition, including a unit. This is not sample validity or a maximum waiting time.",
  "examples": [
    "0s",
    "500ms"
  ]
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.duration_comparison

json
{
  "type": "string",
  "enum": [
    ">=",
    ">"
  ],
  "description": "Required comparison between the continuous duration and minimum_duration: >= includes the threshold; > requires strictly longer. Exactly 60 seconds satisfies only >=. The activity start is unchanged; selection_origin still defaults to onset."
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval

json
{
  "description": "Interval source for this node. Omission inherits the global default. Multiple candidate drivers require an explicit driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"actual\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"fixed\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "Positive fixed calculation interval with a unit, such as 100ms. actual and dbc do not accept this field."
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[0].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "condition"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.condition

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Boolean condition expression. Unknown values use three-valued logic; nonzero numeric values are not implicitly true."
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.emit_initial

json
{
  "type": "boolean",
  "description": "Whether to trigger when the first known condition is already true. The default depends on rule type; falling edges cannot enable it.",
  "default": false
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.rule_type

json
{
  "const": "rising_edge",
  "description": "Event-rule type, determining the meanings of conditions, durations, thresholds, and other fields. Constant: \"rising_edge\", a point event when the condition changes from false to true."
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval

json
{
  "description": "Interval source for this node. Omission inherits the global default. Multiple candidate drivers require an explicit driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"actual\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"fixed\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "Positive fixed calculation interval with a unit, such as 100ms. actual and dbc do not accept this field."
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[1].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[2]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "condition"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.condition

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Boolean condition expression. Unknown values use three-valued logic; nonzero numeric values are not implicitly true."
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.emit_initial

json
{
  "const": false,
  "description": "Whether to trigger when the first known condition is already true. The default depends on rule type; falling edges cannot enable it. Constant: false.",
  "default": false
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.rule_type

json
{
  "const": "falling_edge",
  "description": "Event-rule type, determining the meanings of conditions, durations, thresholds, and other fields. Constant: \"falling_edge\", a point event when the condition changes from true to false."
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval

json
{
  "description": "Interval source for this node. Omission inherits the global default. Multiple candidate drivers require an explicit driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"actual\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"fixed\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "Positive fixed calculation interval with a unit, such as 100ms. actual and dbc do not accept this field."
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[2].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[3]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "condition",
    "window_duration"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.condition

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Boolean condition expression. Unknown values use three-valued logic; nonzero numeric values are not implicitly true."
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.window_duration

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Positive fixed window duration after a start_only trigger. A condition that remains true does not automatically retrigger when the window ends."
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.emit_initial

json
{
  "type": "boolean",
  "description": "Whether to trigger when the first known condition is already true. The default depends on rule type; falling edges cannot enable it.",
  "default": false
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.rule_type

json
{
  "const": "start_only",
  "description": "Event-rule type, determining the meanings of conditions, durations, thresholds, and other fields. Constant: \"start_only\", a fixed window after triggering, with repeated triggers suppressed inside it."
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval

json
{
  "description": "Interval source for this node. Omission inherits the global default. Multiple candidate drivers require an explicit driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"actual\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"fixed\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "Positive fixed calculation interval with a unit, such as 100ms. actual and dbc do not accept this field."
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[3].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[4]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "signal",
    "window",
    "direction",
    "threshold"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.signal

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Numeric signal name or allowed numeric expression checked by window_delta. This is neither an original DBC name nor a Boolean condition."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.window

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Full look-back window for calculating change: a positive duration with a unit, not a window ID."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.direction

json
{
  "enum": [
    "rise",
    "fall",
    "any"
  ],
  "description": "Direction of change. Options: \"rise\", last minus first; \"fall\", first minus last; \"any\", absolute difference between first and last."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.threshold

json
{
  "type": "number",
  "minimum": 0,
  "description": "Non-negative change threshold in the input signal's unit, inclusive of equality. The business threshold must be supplied rather than guessed."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.monotonic

json
{
  "type": "boolean",
  "description": "Whether values must remain monotonic within the look-back window. Defaults to false; direction still selects the direction.",
  "default": false
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.coverage_policy

json
{
  "const": "full",
  "description": "Observation-coverage policy for window_delta. Currently only full is accepted, requiring the entire look-back window to be covered. Constant: \"full\".",
  "default": "full"
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.emit_initial

json
{
  "type": "boolean",
  "description": "Whether to trigger when the first known condition is already true. The default depends on rule type; falling edges cannot enable it.",
  "default": false
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.retrigger

json
{
  "enum": [
    "edge",
    "once"
  ],
  "description": "Retrigger behavior for window_delta. Options: \"edge\", another trigger after the condition changes from false to true again; \"once\", at most one trigger per session.",
  "default": "edge"
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.rule_type

json
{
  "const": "window_delta",
  "description": "Event-rule type, determining the meanings of conditions, durations, thresholds, and other fields. Constant: \"window_delta\", checking change across the complete look-back window."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval

json
{
  "description": "Interval source for this node. Omission inherits the global default. Multiple candidate drivers require an explicit driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"actual\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"fixed\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "Positive fixed calculation interval with a unit, such as 100ms. actual and dbc do not accept this field."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[4].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[5]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "condition"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.condition

json
{
  "type": "string",
  "minLength": 1,
  "description": "Boolean condition expression. Unknown values use three-valued logic; nonzero numeric values are not implicitly true."
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.enter_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "How long the entry condition must remain true before activity starts: a non-negative duration with a unit, defaulting to 0s.",
  "default": "0s"
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.exit_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "How long the exit condition must remain true before exit, or the exit delay used when merging segments. Its meaning depends on the rule/window; a unit is required.",
  "default": "0s"
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.rule_type

json
{
  "const": "debounce",
  "description": "Event-rule type, determining the meanings of conditions, durations, thresholds, and other fields. Constant: \"debounce\", switching activity state after the condition remains stable for the delay."
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval

json
{
  "description": "Interval source for this node. Omission inherits the global default. Multiple candidate drivers require an explicit driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"actual\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"fixed\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "Positive fixed calculation interval with a unit, such as 100ms. actual and dbc do not accept this field."
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[5].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[6]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "enter_condition",
    "exit_condition"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.enter_condition

json
{
  "type": "string",
  "minLength": 1,
  "description": "Boolean expression for entering hysteresis activity, declared separately from the exit condition."
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.exit_condition

json
{
  "type": "string",
  "minLength": 1,
  "description": "Boolean expression for exiting hysteresis activity. It is not automatically the negation of the entry condition."
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.enter_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "How long the entry condition must remain true before activity starts: a non-negative duration with a unit, defaulting to 0s.",
  "default": "0s"
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.exit_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "How long the exit condition must remain true before exit, or the exit delay used when merging segments. Its meaning depends on the rule/window; a unit is required.",
  "default": "0s"
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.rule_type

json
{
  "const": "hysteresis",
  "description": "Event-rule type, determining the meanings of conditions, durations, thresholds, and other fields. Constant: \"hysteresis\", with separate entry and exit conditions and stability delays."
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval

json
{
  "description": "Interval source for this node. Omission inherits the global default. Multiple candidate drivers require an explicit driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"actual\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"fixed\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "Positive fixed calculation interval with a unit, such as 100ms. actual and dbc do not accept this field."
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[6].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[7]

json
{
  "type": "object",
  "required": [
    "name",
    "rule_type",
    "start_condition",
    "end_condition"
  ],
  "description": "The start condition begins activity; the end condition ends it normally. Reaching the time limit while the state is determinable produces timeout.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.start_condition

json
{
  "type": "string",
  "minLength": 1,
  "description": "Boolean expression that starts activity, paired with end_condition in a start/end rule."
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.end_condition

json
{
  "type": "string",
  "minLength": 1,
  "description": "Boolean expression that ends the current activity. An unknown condition is not a known end."
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.timeout

json
{
  "description": "Positive maximum wait after starting. null or omission means no time limit; this differs from sample validity valid_for.",
  "default": null
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.timeout.anyOf[0]

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$"
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.timeout.anyOf[1]

json
{
  "type": "null"
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.emit_initial

json
{
  "type": "boolean",
  "description": "Whether to trigger when the first known condition is already true. The default depends on rule type; falling edges cannot enable it.",
  "default": true
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.rule_type

json
{
  "const": "start_end",
  "description": "Event-rule type, determining the meanings of conditions, durations, thresholds, and other fields. Constant: \"start_end\", explicit start/end conditions with an optional wait limit."
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval

json
{
  "description": "Interval source for this node. Omission inherits the global default. Multiple candidate drivers require an explicit driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"actual\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"fixed\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "Positive fixed calculation interval with a unit, such as 100ms. actual and dbc do not accept this field."
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.rules.items.oneOf[7].properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.windows

json
{
  "type": "array",
  "description": "Data segments generated from events, with before/after extensions and a segment merge policy.",
  "default": []
}

analysis.schema.json: $.properties.windows.items

json
{
  "type": "object",
  "required": [
    "name",
    "rule"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.windows.items.allOf[0].else.not

json
{
  "required": [
    "exit_delay"
  ]
}

analysis.schema.json: $.properties.windows.items.allOf[0].then

json
{
  "required": [
    "exit_delay"
  ]
}

analysis.schema.json: $.properties.windows.items.allOf[0].then.properties.anchor

json
{
  "const": "activity",
  "description": "Whether the window is based on a point event or an activity interval; it must match the rule's event type. Constant: \"activity\", based on the activity start/end interval."
}

analysis.schema.json: $.properties.windows.items.allOf[0].if

json
{
  "required": [
    "merge"
  ]
}

analysis.schema.json: $.properties.windows.items.allOf[0].if.properties.merge

json
{
  "const": "exit_delay",
  "description": "How to merge segments generated by neighboring events, without changing the original events. Constant: \"exit_delay\", merging re-entry within the exit delay into one segment."
}

analysis.schema.json: $.properties.windows.items.properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.windows.items.properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.windows.items.properties.rule

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "name of the declared event rule that generates this window."
}

analysis.schema.json: $.properties.windows.items.properties.rule.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.windows.items.properties.anchor

json
{
  "enum": [
    "point",
    "activity"
  ],
  "description": "Whether the window is based on a point event or an activity interval. It must match the referenced rule's event type. Options: \"point\", centered on a point event; \"activity\", based on activity start/end. Inferred from the rule if omitted."
}

analysis.schema.json: $.properties.windows.items.properties.pre

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Non-negative extension before the event, with a unit. Defaults to 0s."
}

analysis.schema.json: $.properties.windows.items.properties.post

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Non-negative extension after the event, with a unit. Usually defaults to 0s; start_only inherits the rule's window_duration. Merge rules still check combination constraints."
}

analysis.schema.json: $.properties.windows.items.properties.merge

json
{
  "enum": [
    "none",
    "overlap",
    "overlap_and_adjacent",
    "exit_delay"
  ],
  "description": "How to merge segments generated by neighboring events, without changing the original events. Options: \"none\", keep each segment; \"overlap\", merge overlaps; \"overlap_and_adjacent\", merge overlapping or touching segments; \"exit_delay\", merge re-entry within the exit delay into one segment.",
  "default": "none"
}

analysis.schema.json: $.properties.windows.items.properties.exit_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "How long the exit condition must remain true before exit, or the exit delay used when merging segments. Its meaning depends on the rule/window; a unit is required."
}

analysis.schema.json: $.properties.windows.items.properties.interval

json
{
  "description": "Interval source for this node. Omission inherits the global default. Multiple candidate drivers require an explicit driver."
}

analysis.schema.json: $.properties.windows.items.properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.windows.items.properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"actual\"."
}

analysis.schema.json: $.properties.windows.items.properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.windows.items.properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"fixed\"."
}

analysis.schema.json: $.properties.windows.items.properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "Positive fixed calculation interval with a unit, such as 100ms. actual and dbc do not accept this field."
}

analysis.schema.json: $.properties.windows.items.properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.windows.items.properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.windows.items.properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.windows.items.properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.calculations

json
{
  "type": "array",
  "description": "A statistic, integral, duration, or record-selection calculation. Each item specifies its operation, scope, and input.",
  "default": []
}

analysis.schema.json: $.properties.calculations.items

json
{
  "type": "object",
  "required": [
    "name",
    "operation"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].else.else

json
{
  "required": [
    "expr"
  ]
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].else.if.properties.operation

json
{
  "enum": [
    "point_event_count",
    "activity_count",
    "segment_count"
  ],
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].then.oneOf[0]

json
{
  "required": [
    "expr"
  ]
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].then.oneOf[0].not

json
{
  "required": [
    "condition"
  ]
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].then.oneOf[1]

json
{
  "required": [
    "condition"
  ]
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].then.oneOf[1].not

json
{
  "required": [
    "expr"
  ]
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[0].if.properties.operation

json
{
  "const": "duration",
  "description": "Calculation operation, distinguishing sample and time-weighted statistics; ambiguous mean/min/max are rejected. Constant: \"duration\", total time for which the condition is true."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[1].else.not

json
{
  "required": [
    "method"
  ]
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[1].if.properties.operation

json
{
  "const": "integral",
  "description": "Calculation operation, distinguishing sample and time-weighted statistics; ambiguous mean/min/max are rejected. Constant: \"integral\", integration using the held previous value."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[2].else.properties.rule

json
{
  "description": "Do not set rule for this version or operation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[2].then

json
{
  "required": [
    "rule"
  ]
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[2].if.properties.operation

json
{
  "enum": [
    "point_event_count",
    "activity_count"
  ],
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[3].else.properties.window

json
{
  "description": "Do not set window for this version or operation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[3].then

json
{
  "required": [
    "window"
  ]
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[3].if.properties.operation

json
{
  "enum": [
    "segment_count"
  ],
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[4].then.properties.unit

json
{
  "const": "1",
  "description": "Requested result unit; it must be compatible with the quantity."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[4].if.properties.operation

json
{
  "enum": [
    "sample_count",
    "point_event_count",
    "activity_count",
    "segment_count"
  ],
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].then.properties.scope

json
{
  "const": "session",
  "description": "Select the session, event or window over which this calculation runs."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].then.properties.expr

json
{
  "description": "Do not set expr for this version or operation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].then.properties.condition

json
{
  "description": "Do not set condition for this version or operation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].then.properties.method

json
{
  "description": "Do not set method for this version or operation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].then.properties.minimum_coverage

json
{
  "description": "Do not set minimum_coverage for this version or operation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].then.properties.interval

json
{
  "description": "Do not set interval for this version or operation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[5].if.properties.operation

json
{
  "enum": [
    "point_event_count",
    "activity_count",
    "segment_count"
  ],
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[6].else.properties.ddof

json
{
  "description": "Do not set ddof for this version or operation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[6].if.properties.operation

json
{
  "enum": [
    "sample_variance",
    "sample_stddev",
    "time_variance",
    "time_stddev"
  ],
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[7].then.properties.ddof

json
{
  "const": 0,
  "description": "Degrees of freedom subtracted in the variance or standard deviation denominator."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[7].if.properties.operation

json
{
  "enum": [
    "time_variance",
    "time_stddev"
  ],
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[8].else.properties.q

json
{
  "description": "Do not set q for this version or operation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[8].then

json
{
  "required": [
    "q"
  ]
}

analysis.schema.json: $.properties.calculations.items.allOf[0].then.allOf[8].if.properties.operation

json
{
  "const": "sample_quantile",
  "description": "Named operation to run for this calculation."
}

analysis.schema.json: $.properties.calculations.items.allOf[0].if

json
{
  "required": [
    "operation"
  ]
}

analysis.schema.json: $.properties.calculations.items.allOf[0].if.properties.operation

json
{
  "$ref": "#/properties/calculations/items/properties/operation",
  "description": "Calculation operation. Sample statistics weight real samples equally; time statistics use the duration for which a value is valid. select returns matching rows, duration sums true time and integral uses zero-order hold. In version 4, sample_count counts valid samples, point_event_count counts points, activity_count counts activities and segment_count counts final segments. The enum lists the available operations."
}

analysis.schema.json: $.properties.calculations.items.properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.calculations.items.properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.calculations.items.properties.scope

json
{
  "description": "Calculation scope, defaulting to session. {rule: name} calculates per event; {window: name} calculates per window. References must already be declared."
}

analysis.schema.json: $.properties.calculations.items.properties.scope.oneOf[0]

json
{
  "const": "session",
  "description": "Analyze or export the available range of the whole session."
}

analysis.schema.json: $.properties.calculations.items.properties.scope.oneOf[1]

json
{
  "type": "object",
  "required": [
    "rule"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.calculations.items.properties.scope.oneOf[1].properties.rule

json
{
  "type": "string",
  "minLength": 1,
  "description": "Referenced rule or window name, already declared in this configuration."
}

analysis.schema.json: $.properties.calculations.items.properties.scope.oneOf[2]

json
{
  "type": "object",
  "required": [
    "window"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.calculations.items.properties.scope.oneOf[2].properties.window

json
{
  "type": "string",
  "minLength": 1,
  "description": "Referenced rule or window name, already declared in this configuration."
}

analysis.schema.json: $.properties.calculations.items.properties.operation

json
{
  "enum": [
    "select",
    "sample_minimum",
    "sample_maximum",
    "sample_mean",
    "min_time",
    "max_time",
    "time_weighted_mean",
    "duration",
    "integral",
    "sample_count",
    "point_event_count",
    "activity_count",
    "segment_count",
    "sample_variance",
    "sample_stddev",
    "time_variance",
    "time_stddev",
    "sample_rms",
    "time_rms",
    "sample_quantile",
    "sample_median"
  ],
  "description": "Calculation operation. Sample statistics weight real samples equally; time statistics use the duration for which a value is valid. select returns matching rows, duration sums true time and integral uses zero-order hold. In version 4, sample_count counts valid samples, point_event_count counts points, activity_count counts activities and segment_count counts final segments. The enum lists the available operations."
}

analysis.schema.json: $.properties.calculations.items.properties.condition

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Boolean condition expression. Unknown values use three-valued logic; nonzero numeric values are not implicitly true."
}

analysis.schema.json: $.properties.calculations.items.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "\\S",
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names."
}

analysis.schema.json: $.properties.calculations.items.properties.method

json
{
  "const": "zoh",
  "description": "Integration method. Currently only zoh is supported, accumulating the previous held value over its valid duration without automatic linear interpolation. Constant: \"zoh\"."
}

analysis.schema.json: $.properties.calculations.items.properties.partial_policy

json
{
  "enum": [
    "report",
    "strict"
  ],
  "description": "Handling of insufficient valid coverage. A calculation inherits execution when omitted; presets check their own parameter contracts. Options: \"report\", report available partial results and coverage information; \"strict\", apply strict completeness requirements to partial results."
}

analysis.schema.json: $.properties.calculations.items.properties.minimum_coverage

json
{
  "type": "number",
  "minimum": 0,
  "maximum": 1,
  "description": "Minimum required valid-coverage fraction, from 0 to 1. Do not reach the threshold by filling zeros or extending sample validity.",
  "default": 0
}

analysis.schema.json: $.properties.calculations.items.properties.expr

json
{
  "type": "string",
  "minLength": 1,
  "description": "Input signal name or allowed expression for statistics. Dependencies, types, and units are checked during compilation."
}

analysis.schema.json: $.properties.calculations.items.properties.interval

json
{
  "description": "Interval source for this node. Omission inherits the global default. Multiple candidate drivers require an explicit driver."
}

analysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"actual\"."
}

analysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"fixed\"."
}

analysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "Positive fixed calculation interval with a unit, such as 100ms. actual and dbc do not accept this field."
}

analysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.calculations.items.properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.calculations.items.properties.rule

json
{
  "type": "string",
  "minLength": 1,
  "description": "Name of the point or activity rule to count. Used only for object counts."
}

analysis.schema.json: $.properties.calculations.items.properties.window

json
{
  "type": "string",
  "minLength": 1,
  "description": "Name of the window whose final segments are counted. Only used by segment_count."
}

analysis.schema.json: $.properties.calculations.items.properties.ddof

json
{
  "type": "integer",
  "enum": [
    0,
    1
  ],
  "description": "Degrees of freedom for sample variance and standard deviation: 0 uses the population and 1 uses N−1. Time-weighted variants accept only 0."
}

analysis.schema.json: $.properties.calculations.items.properties.q

json
{
  "type": "number",
  "minimum": 0,
  "maximum": 1,
  "description": "Exact quantile probability: 0 for the minimum, 1 for the maximum or 0.95 for P95. Only sample_quantile accepts q."
}

analysis.schema.json: $.properties.presets

json
{
  "type": "array",
  "description": "Expand explicitly bound roles and parameters into ordinary rules, windows, and calculations. Signal names do not imply roles or thresholds.",
  "default": []
}

analysis.schema.json: $.properties.presets.items.oneOf[0]

json
{
  "type": "object",
  "required": [
    "name",
    "preset_type",
    "parameters"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.version

json
{
  "const": "1",
  "description": "Preset contract version. Optional, defaulting to the string \"1\". It controls a different object from the analysis file's integer config_version=4."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings

json
{
  "type": "object",
  "description": "Explicit mapping from preset roles to bound signals. Role names are not original data field names.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings.properties.mode

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Bound signal name for a business-mode role, or the selection mode for a calculation interval/export period. Interpret it in the containing object's context."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings.properties.mode.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings.properties.current

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Signal bound to the charging preset's current role. Unit, direction, and measurement location must be explicit."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings.properties.current.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings.properties.voltage

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Signal bound to the charging preset's voltage role. A name containing voltage is not enough for automatic selection."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.role_bindings.properties.voltage.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters

json
{
  "type": "object",
  "required": [
    "mode_value",
    "current_min",
    "minimum_duration"
  ],
  "description": "Business parameters required by a preset, or numeric parameters with units for message expressions. No undeclared vehicle-specific defaults are used.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.mode_value

json
{
  "type": "integer",
  "minimum": -9223372036854775808,
  "maximum": 18446744073709551615,
  "description": "Explicit integer code for the target operating mode, consistent with the role signal's choices and type."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.current_min

json
{
  "type": "number",
  "description": "Explicit current threshold in A. No vehicle- or device-specific default is guessed."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.compute_energy

json
{
  "type": "boolean",
  "default": false,
  "description": "Whether to generate a charging-energy calculation. Defaults to false; enabling it requires the appropriate roles and units to satisfy the contract."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.compute_charge

json
{
  "type": "boolean",
  "default": false,
  "description": "Whether to generate an electric-charge calculation. Defaults to false; calculation uses the explicit current direction and valid coverage."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.minimum_coverage

json
{
  "type": "number",
  "minimum": 0,
  "maximum": 1,
  "default": 0,
  "description": "Minimum required valid-coverage fraction, from 0 to 1. Do not reach the threshold by filling zeros or extending sample validity."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.partial_policy

json
{
  "enum": [
    "report",
    "strict"
  ],
  "description": "Handling of insufficient valid coverage. A calculation inherits execution when omitted; presets check their own parameter contracts. Options: \"report\", report available partial results and coverage information; \"strict\", apply strict completeness requirements to partial results."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.parameters.properties.minimum_duration

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Minimum continuous duration required to confirm a condition, including a unit. This is not sample validity or a maximum waiting time."
}

analysis.schema.json: $.properties.presets.items.oneOf[0].properties.preset_type

json
{
  "const": "charge_session",
  "description": "Preset type: role contracts are checked before ordinary inspectable nodes are created. Constant: \"charge_session\", charging activities with optional energy/electric-charge calculations."
}

analysis.schema.json: $.properties.presets.items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "name",
    "preset_type",
    "parameters"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.presets.items.oneOf[1].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.presets.items.oneOf[1].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.presets.items.oneOf[1].properties.version

json
{
  "const": "1",
  "description": "Preset contract version. Optional, defaulting to the string \"1\". It controls a different object from the analysis file's integer config_version=4."
}

analysis.schema.json: $.properties.presets.items.oneOf[1].properties.role_bindings

json
{
  "type": "object",
  "description": "Explicit mapping from preset roles to bound signals. Role names are not original data field names.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.presets.items.oneOf[1].properties.role_bindings.properties.alarm

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Boolean signal bound to the alarm role in the fault-context preset."
}

analysis.schema.json: $.properties.presets.items.oneOf[1].properties.role_bindings.properties.alarm.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.presets.items.oneOf[1].properties.parameters

json
{
  "type": "object",
  "required": [],
  "description": "Business parameters required by a preset, or numeric parameters with units for message expressions. No undeclared vehicle-specific defaults are used.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.presets.items.oneOf[1].properties.parameters.properties.pre

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Non-negative duration extending before an event, including a unit."
}

analysis.schema.json: $.properties.presets.items.oneOf[1].properties.parameters.properties.post

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Non-negative duration extending after an event, including a unit. Specific merging or fixed-window rules impose additional constraints."
}

analysis.schema.json: $.properties.presets.items.oneOf[1].properties.parameters.properties.emit_initial

json
{
  "type": "boolean",
  "default": false,
  "description": "Whether to trigger when the first known condition is already true. The default depends on rule type; falling edges cannot enable it."
}

analysis.schema.json: $.properties.presets.items.oneOf[1].properties.preset_type

json
{
  "const": "fault_context",
  "description": "Preset type: role contracts are checked before ordinary inspectable nodes are created. Constant: \"fault_context\", segments before and after an alarm."
}

analysis.schema.json: $.properties.presets.items.oneOf[2]

json
{
  "type": "object",
  "required": [
    "name",
    "preset_type",
    "parameters"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.version

json
{
  "const": "1",
  "description": "Preset contract version. Optional, defaulting to the string \"1\". It controls a different object from the analysis file's integer config_version=4."
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.role_bindings

json
{
  "type": "object",
  "description": "Explicit mapping from preset roles to bound signals. Role names are not original data field names.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.role_bindings.properties.request

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Signal name bound to the request role in the request/response preset."
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.role_bindings.properties.request.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.role_bindings.properties.response

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Declared signal bound to the response role. This is a preset signal binding, not a rule reference in sequences."
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.role_bindings.properties.response.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.parameters

json
{
  "type": "object",
  "required": [
    "max_delay"
  ],
  "description": "Business parameters required by a preset, or numeric parameters with units for message expressions. No undeclared vehicle-specific defaults are used.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.parameters.properties.min_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Minimum permitted response delay: a non-negative duration with a unit, inclusive of the endpoint."
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.parameters.properties.max_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Maximum permitted response delay, inclusive of the endpoint and no less than min_delay. A missing response by the deadline produces an explicit pairing status."
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.parameters.properties.emit_initial

json
{
  "type": "boolean",
  "default": false,
  "description": "Whether to trigger when the first known condition is already true. The default depends on rule type; falling edges cannot enable it."
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.parameters.properties.max_pending

json
{
  "type": "integer",
  "minimum": 1,
  "default": 65536,
  "description": "Maximum number of requests awaiting responses simultaneously. A positive integer defaulting to 65536; this is not the total number of input rows."
}

analysis.schema.json: $.properties.presets.items.oneOf[2].properties.preset_type

json
{
  "const": "command_response",
  "description": "Preset type: role contracts are checked before ordinary inspectable nodes are created. Constant: \"command_response\", request/response delay pairing."
}

analysis.schema.json: $.properties.presets.items.oneOf[3]

json
{
  "type": "object",
  "required": [
    "name",
    "preset_type",
    "role_bindings",
    "parameters"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.version

json
{
  "const": "1",
  "description": "Preset contract version. Optional, defaulting to the string \"1\". It controls a different object from the analysis file's integer config_version=4."
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.role_bindings

json
{
  "type": "object",
  "required": [
    "signal"
  ],
  "description": "Explicit mapping from preset roles to bound signals. Role names are not original data field names.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.role_bindings.properties.signal

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Analysis signal name for the threshold preset's signal role. It must satisfy that role's numeric type and unit requirements."
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.role_bindings.properties.signal.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.parameters

json
{
  "type": "object",
  "required": [
    "enter_threshold",
    "exit_threshold"
  ],
  "description": "Business parameters required by a preset, or numeric parameters with units for message expressions. No undeclared vehicle-specific defaults are used.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.parameters.properties.unit

json
{
  "type": "string",
  "minLength": 1,
  "description": "Threshold unit. Optional; defaults to the bound signal role's unit. An explicit unit must match the signal and does not cause additional conversion."
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.parameters.properties.enter_threshold

json
{
  "type": "number",
  "description": "Entry threshold for threshold activity, in the role signal's unit. Direction semantics determine its ordering relative to the exit threshold."
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.parameters.properties.exit_threshold

json
{
  "type": "number",
  "description": "Exit threshold for threshold activity. Do not guess a value to suppress fluctuation."
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.parameters.properties.enter_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "How long the entry condition must remain true before activity starts: a non-negative duration with a unit, defaulting to 0s."
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.parameters.properties.exit_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "How long the exit condition must remain true before exit, or the exit delay used when merging segments. Its meaning depends on the rule/window; a unit is required."
}

analysis.schema.json: $.properties.presets.items.oneOf[3].properties.preset_type

json
{
  "const": "threshold_excursion",
  "description": "Preset type: role contracts are checked before ordinary inspectable nodes are created. Constant: \"threshold_excursion\", threshold activity that enters on excursion and exits on recovery."
}

analysis.schema.json: $.properties.message_calculations

json
{
  "type": "array",
  "description": "Per-message accumulation for selected CAN messages. Each actual message is evaluated independently; ordinary signal holding is not applied and no extra time difference is multiplied in.",
  "default": []
}

analysis.schema.json: $.properties.message_calculations.items

json
{
  "type": "object",
  "required": [
    "name",
    "update_message",
    "expr",
    "unit"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.message_calculations.items.properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.message_calculations.items.properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.message_calculations.items.properties.source

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Raw CAN source name for message accumulation. May be omitted when exactly one applicable source exists; multiple candidates require a choice."
}

analysis.schema.json: $.properties.message_calculations.items.properties.source.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.message_calculations.items.properties.profile

json
{
  "enum": [
    "sclicer-functions-v1",
    "can-text-v1"
  ],
  "description": "Message reader/decoder implementation. Optional and determined by the source: the existing BLF path uses sclicer-functions-v1; ASC, raw CAN CSV, and mixed sources use can-text-v1. An explicit value must match the source."
}

analysis.schema.json: $.properties.message_calculations.items.properties.operation

json
{
  "const": "legacy_sum",
  "description": "Message accumulation method. Optional; legacy_sum is currently the only supported method and the default. Each qualifying message contributes once independently."
}

analysis.schema.json: $.properties.message_calculations.items.properties.message_policy

json
{
  "const": "current_message-v1",
  "description": "Optional, defaulting to current_message-v1. Use only the current target message's decoded values, without retaining a previous message's cached values."
}

analysis.schema.json: $.properties.message_calculations.items.properties.expr

json
{
  "type": "string",
  "pattern": "\\S",
  "description": "Restricted expression using explicitly bound names and supported operations. It does not execute Python, attribute access, or arbitrary functions."
}

analysis.schema.json: $.properties.message_calculations.items.properties.unit

json
{
  "type": "string",
  "pattern": "\\S",
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names."
}

analysis.schema.json: $.properties.message_calculations.items.properties.update_message

json
{
  "type": "object",
  "required": [
    "frame_id"
  ],
  "description": "CAN message that triggers evaluation. frame_id is required; channel defaults to the source channel. Standard/extended and CAN/FD constraints are optional and otherwise identified from actual input.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.message_calculations.items.properties.update_message.allOf[0].then.properties.frame_id

json
{
  "maximum": 2047,
  "description": "Non-negative integer CAN message ID, further constrained by the standard/extended frame flag."
}

analysis.schema.json: $.properties.message_calculations.items.properties.update_message.allOf[0].if

json
{
  "required": [
    "is_extended"
  ]
}

analysis.schema.json: $.properties.message_calculations.items.properties.update_message.allOf[0].if.properties.is_extended

json
{
  "const": false,
  "description": "Extended-frame flag, which must be Boolean. Standard and extended frame IDs have different ranges. Constant: false."
}

analysis.schema.json: $.properties.message_calculations.items.properties.update_message.properties.channel

json
{
  "type": "integer",
  "minimum": 1,
  "description": "CAN channels in user configuration start at 1; 1 maps to internal channel 0. If omitted, inherits the source's unique channel."
}

analysis.schema.json: $.properties.message_calculations.items.properties.update_message.properties.frame_id

json
{
  "description": "CAN message ID, as an integer or string. 0x is hexadecimal, 0b binary, and no prefix decimal. The parsed value must be 0 to 536870911; an explicitly standard frame is limited to 2047."
}

analysis.schema.json: $.properties.message_calculations.items.properties.update_message.properties.frame_id.oneOf[0]

json
{
  "type": "integer",
  "minimum": 0,
  "maximum": 536870911
}

analysis.schema.json: $.properties.message_calculations.items.properties.update_message.properties.frame_id.oneOf[1]

json
{
  "type": "string",
  "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
  "minLength": 1
}

analysis.schema.json: $.properties.message_calculations.items.properties.update_message.properties.is_extended

json
{
  "type": "boolean",
  "description": "Optional standard/extended frame constraint. If omitted, use DBC and actual frames; request an explicit value only when ambiguous. Explicit null is invalid."
}

analysis.schema.json: $.properties.message_calculations.items.properties.update_message.properties.is_fd

json
{
  "type": "boolean",
  "description": "Optional CAN/CAN FD constraint. If omitted, use DBC and actual frames; request an explicit value only when ambiguous. Explicit null is invalid."
}

analysis.schema.json: $.properties.message_calculations.items.properties.split_by_sign

json
{
  "type": "object",
  "description": "Select positive/negative accumulation buckets using the current raw decoded field, without extra normalization or reuse of another message's old value.",
  "required": [
    "signal",
    "bucket"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.message_calculations.items.properties.split_by_sign.properties.signal

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Analysis signal name used to distinguish positive/negative direction. It must come from the same target message but may be independent of contribution expr."
}

analysis.schema.json: $.properties.message_calculations.items.properties.split_by_sign.properties.signal.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.message_calculations.items.properties.split_by_sign.properties.bucket

json
{
  "enum": [
    "positive",
    "negative"
  ],
  "description": "Select the positive or negative bucket according to the specified current raw decoded field. Options: \"positive\", positive-value bucket; \"negative\", negative-value bucket."
}

analysis.schema.json: $.properties.message_calculations.items.properties.split_by_sign.properties.value_policy

json
{
  "const": "raw_decoded-v1",
  "description": "Value basis for grouping. Optional, defaulting to raw_decoded-v1: use this message's original decoded direction value without extra conversion or reuse of old values."
}

analysis.schema.json: $.properties.message_calculations.items.properties.parameters

json
{
  "type": "object",
  "propertyNames": {
    "type": "string",
    "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
    "not": {
      "enum": [
        "abs",
        "isclose",
        "False",
        "None",
        "True",
        "and",
        "as",
        "assert",
        "async",
        "await",
        "break",
        "class",
        "continue",
        "def",
        "del",
        "elif",
        "else",
        "except",
        "finally",
        "for",
        "from",
        "global",
        "if",
        "import",
        "in",
        "is",
        "lambda",
        "nonlocal",
        "not",
        "or",
        "pass",
        "raise",
        "return",
        "try",
        "while",
        "with",
        "yield"
      ],
      "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
    }
  },
  "description": "Business parameters required by a preset, or numeric parameters with units for message expressions. No undeclared vehicle-specific defaults are used."
}

analysis.schema.json: $.properties.message_calculations.items.properties.parameters.additionalProperties

json
{
  "type": "object",
  "required": [
    "value",
    "unit"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.message_calculations.items.properties.parameters.additionalProperties.properties.value

json
{
  "type": "number",
  "description": "Interval text with a unit, or a numeric expression parameter with a separate unit declaration. Type requirements depend on the containing object."
}

analysis.schema.json: $.properties.message_calculations.items.properties.parameters.additionalProperties.properties.unit

json
{
  "type": "string",
  "pattern": "\\S",
  "description": "Unit of numeric values. Units are checked during expressions and conversion and are not inferred from field or file names."
}

analysis.schema.json: $.properties.execution

json
{
  "type": "object",
  "required": [],
  "description": "Execution backend and analysis-layer resource limits. A declared budget is not a static measurement of peak memory.",
  "default": {},
  "additionalProperties": false
}

analysis.schema.json: $.properties.execution.properties.backend

json
{
  "enum": [
    "numpy",
    "reference",
    "auto"
  ],
  "description": "Numerical implementation selection. auto selects reference or numpy from verified whole-plan categories without reading or trial runs; numpy and reference select their respective numerical implementations. Explicit choices are preserved and runtime errors do not switch backends.",
  "default": "auto"
}

analysis.schema.json: $.properties.execution.properties.batch_rows

json
{
  "type": "integer",
  "minimum": 1,
  "description": "Maximum records/samples per read batch. A positive integer defaulting to 65536; it is not the number of parallel independent tasks.",
  "default": 65536
}

analysis.schema.json: $.properties.execution.properties.memory_budget_bytes

json
{
  "type": "integer",
  "minimum": 1,
  "description": "Memory budget for the new analysis layer. Positive bytes, default 268435456. It is not an RSS limit for the entire Python process or legacy reader.",
  "default": 268435456
}

analysis.schema.json: $.properties.execution.properties.result_buffer_rows

json
{
  "type": "integer",
  "minimum": 1,
  "description": "Maximum buffered result rows before writing. A positive integer defaulting to 4096.",
  "default": 4096
}

analysis.schema.json: $.properties.execution.properties.partial_policy

json
{
  "enum": [
    "report",
    "strict"
  ],
  "description": "Handling of insufficient valid coverage. A calculation inherits execution when omitted; presets check their own parameter contracts. Options: \"report\", report available partial results and coverage information; \"strict\", apply strict completeness requirements to partial results.",
  "default": "report"
}

analysis.schema.json: $.properties.execution.properties.on_budget_exceeded

json
{
  "const": "error",
  "description": "Budget-exceeded behavior. Currently only error is accepted: fail explicitly without dropping data or adding scans of the legacy input. Constant: \"error\".",
  "default": "error"
}

analysis.schema.json: $.properties.execution.properties.spool_quota_bytes

json
{
  "description": "Temporary-disk quota in positive integer bytes. null or omission means no quota is set.",
  "default": null
}

analysis.schema.json: $.properties.execution.properties.spool_quota_bytes.anyOf[0]

json
{
  "type": "null"
}

analysis.schema.json: $.properties.execution.properties.spool_quota_bytes.anyOf[1]

json
{
  "type": "integer",
  "minimum": 1
}

analysis.schema.json: $.properties.execution.properties.process_count

json
{
  "type": "integer",
  "minimum": 1,
  "default": 1,
  "description": "Limit reading and DBC-decoding workers for this analysis, excluding the main process. Supply an integer of at least 1; default 1. An explicit API or CLI override takes precedence. All files remain part of one continuous session."
}

analysis.schema.json: $.properties.outputs

json
{
  "type": "object",
  "description": "Result tables and optional signal/CAN exports. The published output directory can be reused; each run uses distinct timestamped filenames located through its completion manifest.",
  "default": {},
  "additionalProperties": false
}

analysis.schema.json: $.properties.outputs.properties.contributions

json
{
  "enum": [
    "none",
    "full"
  ],
  "description": "Whether to save individual message contributions. none is the default and keeps summaries only; full explicitly saves every contribution. Options: \"none\" and \"full\".",
  "default": "none"
}

analysis.schema.json: $.properties.outputs.properties.tables

json
{
  "enum": [
    "readable_csv",
    "csv",
    "jsonl"
  ],
  "description": "Result table format. Defaults to readable_csv: Chinese column names, exact seconds, and metrics for the same interval combined into one row. csv retains flat interchange tables and integer nanoseconds; jsonl retains one JSON object per line. Only the selected table set is generated. This does not select the configuration file format.",
  "default": "readable_csv"
}

analysis.schema.json: $.properties.outputs.properties.manifest

json
{
  "const": "json",
  "description": "Run-manifest format. Currently fixed to json. Constant: \"json\".",
  "default": "json"
}

analysis.schema.json: $.properties.outputs.properties.signal_csv

json
{
  "description": "Optional signal CSV export. Omission or null disables it. Enabling it requires an explicit signal selection and scope.",
  "default": null
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[0]

json
{
  "type": "null"
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1]

json
{
  "type": "object",
  "required": [
    "signals"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.signals

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "uniqueItems": true,
  "description": "Explicit list of original signal aliases to export, already declared in analysis signals. All signals are not exported by default."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.signals.items

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])"
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.signals.items.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.scope

json
{
  "description": "Explicitly select the whole session, events from a rule, or the range of a window."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.scope.oneOf[0]

json
{
  "const": "session",
  "description": "Analyze or export the available range of the whole session."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.scope.oneOf[1]

json
{
  "type": "object",
  "required": [
    "window"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.scope.oneOf[1].properties.window

json
{
  "type": "string",
  "minLength": 1,
  "description": "Referenced rule or window name, already declared in this configuration."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling

json
{
  "description": "Independent resampling settings for this export. Omission or null keeps original sampling; an export grid must not change the calculation interval."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[0]

json
{
  "type": "null"
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1]

json
{
  "type": "object",
  "required": [
    "continuous",
    "period",
    "max_gap"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.continuous

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "uniqueItems": true,
  "description": "Numeric signals explicitly allowed to use linear resampling. State, counter, and enum signals must not be treated as continuous merely because their dtype is numeric."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.continuous.items

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])"
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.continuous.items.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.max_gap

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Maximum actual sample gap permitted for interpolation or reconstruction. A positive duration with a unit, not a fixed time offset."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period

json
{
  "description": "Export grid period. Use a positive duration string for a fixed period, or a mode: dbc object for a DBC cycle. Periods are not inferred from filenames."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[0]

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed time offset: a number with s/ms/us/ns. Dates are not accepted."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.driver

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.driver.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.outputs.properties.signal_csv.oneOf[1].properties.resampling.oneOf[1].properties.start

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Origin of the resampling time grid, defaulting to 0ns. It does not change the analysis range or original frame timestamps."
}

analysis.schema.json: $.properties.outputs.properties.can_frames

json
{
  "description": "Optional original/reconstructed CAN frame export. Omission or null disables it; enabling it does not replace the analysis result tables.",
  "default": null
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[0]

json
{
  "type": "null"
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1]

json
{
  "type": "object",
  "required": [
    "format"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[0].then

json
{
  "required": [
    "timezone"
  ]
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[0].if

json
{
  "required": [
    "capture_date"
  ]
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[1].then

json
{
  "required": [
    "capture_date"
  ]
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[1].if

json
{
  "required": [
    "timezone"
  ]
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[2].then.not.anyOf[0]

json
{
  "required": [
    "capture_date"
  ]
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[2].then.not.anyOf[1]

json
{
  "required": [
    "timezone"
  ]
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[2].if

json
{
  "required": [
    "source_time_reference"
  ]
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].allOf[2].if.properties.source_time_reference

json
{
  "const": "epoch",
  "description": "Export time coordinates, relative to an origin or absolute Unix epoch. The original time interpretation must be explicit. Constant: \"epoch\", absolute Unix epoch time."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.source

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "name of a declared source. The reference must exist; sources are not inferred from matching field or semantic names."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.source.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.format

json
{
  "enum": [
    "asc",
    "blf"
  ],
  "description": "CAN output format, separate from csv/jsonl result tables. Options: \"asc\", ASC text frames; \"blf\", BLF binary frames."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.scope

json
{
  "description": "Explicitly select the whole session, events from a rule, or the range of a window."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[0]

json
{
  "const": "session",
  "description": "Analyze or export the available range of the whole session."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[1]

json
{
  "type": "object",
  "required": [
    "window"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[1].properties.window

json
{
  "type": "string",
  "minLength": 1,
  "description": "Referenced rule or window name, already declared in this configuration."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[2]

json
{
  "type": "object",
  "required": [
    "windows"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.scope.oneOf[2].properties.windows

json
{
  "const": "all",
  "description": "Use ranges from all configured windows. all is not interpreted as a window name."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.source_time_reference

json
{
  "enum": [
    "relative",
    "epoch"
  ],
  "description": "Export time coordinates, relative to an origin or absolute Unix epoch. The original time interpretation must be explicit. Options: \"relative\" and \"epoch\"."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.capture_date

json
{
  "type": "string",
  "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
  "description": "Explicit capture date for exports requiring a date header. The run date must not be substituted for the acquisition date."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.output_offset

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Explicit fixed offset for exported timestamps, with s/ms/us/ns. It does not change the analysis clock."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling

json
{
  "description": "Independent resampling settings for this export. Omission or null keeps original sampling; an export grid must not change the calculation interval."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[0]

json
{
  "type": "null"
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1]

json
{
  "type": "object",
  "required": [
    "period",
    "max_gap",
    "messages"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.max_gap

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Maximum actual sample gap permitted for interpolation or reconstruction. A positive duration with a unit, not a fixed time offset."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages

json
{
  "type": "array",
  "minItems": 0,
  "maxItems": 4096,
  "description": "CAN reconstruction rules, locating messages precisely and declaring continuous fields and protected fields."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items

json
{
  "type": "object",
  "required": [
    "frame_id",
    "continuous"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.allOf[0].then.properties.frame_id

json
{
  "maximum": 2047,
  "description": "Integer message IDs for standard frames are limited to 2047. The plan loader checks the range after converting string IDs."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.allOf[0].if

json
{
  "required": [
    "is_extended"
  ]
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.allOf[0].if.properties.is_extended

json
{
  "const": false,
  "description": "When standard frame format is explicitly selected, an integer ID must fit in 11 bits."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.channel

json
{
  "type": "integer",
  "minimum": 1,
  "description": "CAN channels in user configuration start at 1; 1 maps to internal channel 0. If omitted, inherits the source's unique channel."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.frame_id

json
{
  "description": "CAN message ID, as an integer or string. 0x is hexadecimal, 0b binary, and no prefix decimal. The parsed value must be 0 to 536870911; an explicitly standard frame is limited to 2047."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.frame_id.oneOf[0]

json
{
  "type": "integer",
  "minimum": 0,
  "maximum": 536870911
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.frame_id.oneOf[1]

json
{
  "type": "string",
  "pattern": "^(?:[0-9]+|0[xX][0-9a-fA-F]+|0[bB][01]+)(?![\\s\\S])",
  "minLength": 1
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.is_extended

json
{
  "type": "boolean",
  "description": "Optional standard/extended frame constraint. If omitted, use DBC and actual frames; request an explicit value only when ambiguous. Explicit null is invalid."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.is_fd

json
{
  "type": "boolean",
  "description": "Optional CAN/CAN FD constraint. If omitted, use DBC and actual frames; request an explicit value only when ambiguous. Explicit null is invalid."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.continuous

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "uniqueItems": true,
  "description": "Numeric signals explicitly allowed to use linear resampling. State, counter, and enum signals must not be treated as continuous merely because their dtype is numeric."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.continuous.items

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.protected

json
{
  "type": "array",
  "minItems": 0,
  "maxItems": 4096,
  "uniqueItems": true,
  "description": "DBC signals whose original values must be preserved during reconstruction, such as counters or checksum fields. Unknown algorithms are not recomputed automatically."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.protected.items

json
{
  "type": "string",
  "minLength": 1
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.messages.items.properties.same_time_policy

json
{
  "enum": [
    "error",
    "last_by_sequence"
  ],
  "description": "Handling of multiple updates for one signal at the same timestamp. Conflicts are not ignored and records are not arbitrarily reordered. Options: \"error\", fail on conflicting same-time updates; \"last_by_sequence\", use the last update in original order."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.unknown_policy

json
{
  "enum": [
    "passthrough",
    "nearest"
  ],
  "description": "Output for messages without a matching reconstruction rule. Options: \"passthrough\", preserve original frames and timestamps; \"nearest\", select the nearest original frame within an explicit time distance."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.max_distance

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Maximum allowed time distance when selecting the nearest original frame. A non-negative duration; 0s accepts only an original frame at exactly the same timestamp."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period

json
{
  "description": "Export grid period. Use a positive duration string for a fixed period, or a mode: dbc object for a DBC cycle. Periods are not inferred from filenames."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[0]

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Fixed time offset: a number with s/ms/us/ns. Dates are not accepted."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.period.oneOf[1].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.resampling.oneOf[1].properties.start

json
{
  "type": "string",
  "pattern": "^\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Origin of the resampling time grid, defaulting to 0ns. It does not change the analysis range or original frame timestamps."
}

analysis.schema.json: $.properties.outputs.properties.can_frames.oneOf[1].properties.timezone

json
{
  "type": [
    "string",
    "null"
  ],
  "description": "Fixed acquisition timezone, such as +08:00 or UTC. For BLF export of relative timestamps, provide it together with capture_date."
}

analysis.schema.json: $.properties.metadata

json
{
  "type": "object",
  "description": "Additional notes as an object of JSON-native values. They do not trigger implicit conversion, template execution, or inference of business parameters.",
  "default": {},
  "additionalProperties": true
}

analysis.schema.json: $.properties.sequences

json
{
  "type": "array",
  "description": "Pair request and response point events in FIFO order, specifying allowed delays and the maximum number of pending requests.",
  "default": []
}

analysis.schema.json: $.properties.sequences.items

json
{
  "type": "object",
  "required": [
    "name",
    "start",
    "response",
    "max_delay"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sequences.items.properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Unique declaration name. Start with a non-reserved English letter or underscore, followed by letters, digits, or underscores. Names must not repeat."
}

analysis.schema.json: $.properties.sequences.items.properties.name.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.sequences.items.properties.start

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Identifier of the request start-point rule, already declared in rules. Activity rules cannot be referenced here."
}

analysis.schema.json: $.properties.sequences.items.properties.start.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.sequences.items.properties.response

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?![\\s\\S])",
  "description": "Identifier of the response point rule, referencing a rising_edge, falling_edge, or start_only rule defined in rules. This is not a signal name or a sequence identifier."
}

analysis.schema.json: $.properties.sequences.items.properties.response.not

json
{
  "enum": [
    "abs",
    "isclose",
    "False",
    "None",
    "True",
    "and",
    "as",
    "assert",
    "async",
    "await",
    "break",
    "class",
    "continue",
    "def",
    "del",
    "elif",
    "else",
    "except",
    "finally",
    "for",
    "from",
    "global",
    "if",
    "import",
    "in",
    "is",
    "lambda",
    "nonlocal",
    "not",
    "or",
    "pass",
    "raise",
    "return",
    "try",
    "while",
    "with",
    "yield"
  ],
  "description": "Reserved names are not allowed: \"abs\", \"isclose\", \"False\", \"None\", \"True\", \"and\", \"as\", \"assert\", \"async\", \"await\", \"break\", \"class\", \"continue\", \"def\", \"del\", \"elif\", \"else\", \"except\", \"finally\", \"for\", \"from\", \"global\", \"if\", \"import\", \"in\", \"is\", \"lambda\", \"nonlocal\", \"not\", \"or\", \"pass\", \"raise\", \"return\", \"try\", \"while\", \"with\", \"yield\"."
}

analysis.schema.json: $.properties.sequences.items.properties.min_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Minimum permitted response delay: a non-negative duration with a unit, inclusive of the endpoint."
}

analysis.schema.json: $.properties.sequences.items.properties.max_delay

json
{
  "type": "string",
  "pattern": "^\\s*\\+?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*(?:ns|us|ms|s)\\s*$",
  "description": "Maximum permitted response delay, inclusive of the endpoint and no less than min_delay. A missing response by the deadline produces an explicit pairing status."
}

analysis.schema.json: $.properties.sequences.items.properties.max_pending

json
{
  "type": "integer",
  "minimum": 1,
  "description": "Maximum number of requests awaiting responses simultaneously. A positive integer defaulting to 65536; this is not the total number of input rows.",
  "default": 65536
}

analysis.schema.json: $.properties.sequences.items.properties.interval

json
{
  "description": "Interval source for this node. Omission inherits the global default. Multiple candidate drivers require an explicit driver."
}

analysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"actual\"."
}

analysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"fixed\"."
}

analysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "Positive fixed calculation interval with a unit, such as 100ms. actual and dbc do not accept this field."
}

analysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.sequences.items.properties.interval.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.intervals

json
{
  "type": "object",
  "description": "Time intervals used by ordinary temporal calculations. Defaults to actual record gaps and can be overridden per consumer. Signal validity is unchanged.",
  "default": {},
  "additionalProperties": false
}

analysis.schema.json: $.properties.intervals.properties.default

json
{
  "description": "Calculation interval used by consumers without a specific override. Defaults to actual observed timestamp differences."
}

analysis.schema.json: $.properties.intervals.properties.default.oneOf[0]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.intervals.properties.default.oneOf[0].properties.mode

json
{
  "const": "actual",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"actual\"."
}

analysis.schema.json: $.properties.intervals.properties.default.oneOf[1]

json
{
  "type": "object",
  "required": [
    "mode",
    "value"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.intervals.properties.default.oneOf[1].properties.mode

json
{
  "const": "fixed",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"fixed\"."
}

analysis.schema.json: $.properties.intervals.properties.default.oneOf[1].properties.value

json
{
  "type": "string",
  "minLength": 2,
  "description": "Positive fixed calculation interval with a unit, such as 100ms. actual and dbc do not accept this field."
}

analysis.schema.json: $.properties.intervals.properties.default.oneOf[1].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.intervals.properties.default.oneOf[2]

json
{
  "type": "object",
  "required": [
    "mode"
  ],
  "additionalProperties": false
}

analysis.schema.json: $.properties.intervals.properties.default.oneOf[2].properties.mode

json
{
  "const": "dbc",
  "description": "Interval source: actual uses observed timestamp differences, fixed uses an explicit value, and dbc reads the driving message cycle at runtime. Export-period objects allow only dbc. Constant: \"dbc\"."
}

analysis.schema.json: $.properties.intervals.properties.default.oneOf[2].properties.driver

json
{
  "type": "string",
  "minLength": 1,
  "description": "Original signal name that drives this calculation or selects the DBC cycle. Omission is allowed only when the declaration has a unique identifiable driver."
}

analysis.schema.json: $.properties.diagnostics

json
{
  "type": "object",
  "description": "Opt-in additional provenance, integrity diagnostics, or retention of working files. These three options are independent and all default to off.",
  "default": {},
  "additionalProperties": false
}

analysis.schema.json: $.properties.diagnostics.properties.trace

json
{
  "type": "boolean",
  "default": false,
  "description": "Whether to generate additional detailed provenance. Defaults to false; necessary results and error handling remain enabled."
}

analysis.schema.json: $.properties.diagnostics.properties.integrity

json
{
  "type": "boolean",
  "default": false,
  "description": "Whether to run additional integrity diagnostics. Defaults to false; this does not disable input checks required for ordinary analysis."
}

analysis.schema.json: $.properties.diagnostics.properties.retain_work

json
{
  "type": "boolean",
  "default": false,
  "description": "Whether to retain this run's own working files. Defaults to false; it does not authorize deleting or retaining unrelated user files."
}

analysis.schema.json: $.properties.imports

json
{
  "type": "array",
  "description": "Optional shared definition files. Import sources/signals/derived in list order, then append this file's declarations. Duplicate names fail; only one import level is allowed. Omission or an empty array means no external definitions."
}

analysis.schema.json: $.properties.imports.items

json
{
  "type": "string",
  "minLength": 1,
  "pattern": "^(?!.*://)(?!.*[\\*?\\[\\]])[\\s\\S]+$",
  "description": "Explicit local .json/.yaml/.yml file path, relative to the main configuration directory. URLs and wildcards are not supported."
}

analysis.schema.json: $.properties.overrides

json
{
  "type": "object",
  "description": "Explicit local overrides of shared definitions. imports must also be declared; unknown targets and disallowed fields fail.",
  "additionalProperties": false
}

analysis.schema.json: $.properties.overrides.properties.sources

json
{
  "type": "object",
  "description": "Permitted field overrides addressed by existing definition names. Overrides cannot create targets, rename them, or replace arbitrary metadata."
}

analysis.schema.json: $.properties.overrides.properties.sources.additionalProperties

json
{
  "type": "object"
}

analysis.schema.json: $.properties.overrides.properties.signals

json
{
  "type": "object",
  "description": "Permitted field overrides addressed by existing definition names. Overrides cannot create targets, rename them, or replace arbitrary metadata."
}

analysis.schema.json: $.properties.overrides.properties.signals.additionalProperties

json
{
  "type": "object"
}

analysis.schema.json: $.properties.overrides.properties.derived

json
{
  "type": "object",
  "description": "Permitted field overrides addressed by existing definition names. Overrides cannot create targets, rename them, or replace arbitrary metadata."
}

analysis.schema.json: $.properties.overrides.properties.derived.additionalProperties

json
{
  "type": "object"
}

batch-v1.schema.json

Original validation schema

batch-v1.schema.json: $

json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Chronaxis independent batch configuration version 1",
  "description": "Independent batch tasks. jobs load plans when each task starts; template expands files and compiles independent plans while the batch configuration is loaded, reading DBC metadata if needed but not business records. Consecutive files from one session remain in one analysis plan.",
  "type": "object",
  "required": [
    "batch_version"
  ],
  "$comment": "独立批量任务结构;相对引用只指向随包规范。",
  "additionalProperties": false
}

batch-v1.schema.json: $.oneOf[0]

json
{
  "required": [
    "jobs"
  ]
}

batch-v1.schema.json: $.oneOf[0].not.anyOf[0]

json
{
  "required": [
    "template"
  ]
}

batch-v1.schema.json: $.oneOf[0].not.anyOf[1]

json
{
  "required": [
    "inputs"
  ]
}

batch-v1.schema.json: $.oneOf[0].not.anyOf[2]

json
{
  "required": [
    "source"
  ]
}

batch-v1.schema.json: $.oneOf[1]

json
{
  "required": [
    "template",
    "inputs"
  ]
}

batch-v1.schema.json: $.oneOf[1].not

json
{
  "required": [
    "jobs"
  ]
}

batch-v1.schema.json: $.properties.batch_version

json
{
  "type": "integer",
  "const": 1,
  "description": "Structural version of the independent batch manifest, currently the integer 1. It is independent of each analysis plan's config_version. Constant: 1."
}

batch-v1.schema.json: $.properties.process_count

json
{
  "type": "integer",
  "minimum": 1,
  "default": 1,
  "description": "Maximum number of analysis worker processes. A positive integer defaulting to 1; excludes the scheduler parent and CAN reader child processes. Each task has an independent budget."
}

batch-v1.schema.json: $.properties.fail_fast

json
{
  "type": "boolean",
  "default": false,
  "description": "Whether to stop dispatching new tasks after observing a failure. Defaults to false; started tasks complete necessary cleanup."
}

batch-v1.schema.json: $.properties.backend

json
{
  "enum": [
    null,
    "reference",
    "numpy",
    "auto"
  ],
  "default": null,
  "description": "Numerical implementation override. null inherits each analysis plan; auto selects per plan from its static category; reference and numpy fix the numerical implementation. Explicit choices are preserved and runtime errors do not switch backends."
}

batch-v1.schema.json: $.properties.jobs

json
{
  "type": "array",
  "description": "Independent tasks. Each child plan is read when its task starts; failures are isolated according to fail_fast. Consecutive files from one session must not be split into independent tasks."
}

batch-v1.schema.json: $.properties.jobs.items

json
{
  "type": "object",
  "required": [
    "plan"
  ],
  "additionalProperties": false
}

batch-v1.schema.json: $.properties.jobs.items.properties.name

json
{
  "type": "string",
  "pattern": "^[A-Za-z_][A-Za-z0-9_]*$",
  "description": "Task name. If omitted, generate job_1, job_2, etc. by list position. Names must be unique, including case-insensitive comparison."
}

batch-v1.schema.json: $.properties.jobs.items.properties.plan

json
{
  "type": "string",
  "minLength": 1,
  "description": "YAML or JSON path for a child analysis plan, relative to the batch manifest directory. Loaded only when the task starts."
}

batch-v1.schema.json: $.properties.template

json
{
  "type": "string",
  "minLength": 1,
  "description": "Analysis template path used for each input file. Each file creates an independent task; cannot be combined with jobs."
}

batch-v1.schema.json: $.properties.inputs

json
{
  "description": "Each input file creates an independent task. Accepts a file, directory, wildcard, or list. Explicit lists keep declaration order; matches use natural order. Directories are not recursive unless an explicit ** wildcard is used."
}

batch-v1.schema.json: $.properties.inputs.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

batch-v1.schema.json: $.properties.inputs.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

batch-v1.schema.json: $.properties.inputs.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

batch-v1.schema.json: $.properties.inputs.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

batch-v1.schema.json: $.properties.inputs.oneOf[2]

json
{
  "type": "array",
  "minItems": 1,
  "maxItems": 4096,
  "description": "Paths kept in declaration order. Each directory's matched files are sorted in natural order."
}

batch-v1.schema.json: $.properties.inputs.oneOf[2].items

json
{
  "description": "Path text, or a file declaration with its own offset."
}

batch-v1.schema.json: $.properties.inputs.oneOf[2].items.oneOf[0]

json
{
  "type": "string",
  "minLength": 1,
  "description": "A file, directory, or wildcard path."
}

batch-v1.schema.json: $.properties.inputs.oneOf[2].items.oneOf[1]

json
{
  "type": "object",
  "required": [
    "path"
  ],
  "additionalProperties": false
}

batch-v1.schema.json: $.properties.inputs.oneOf[2].items.oneOf[1].properties.path

json
{
  "type": "string",
  "minLength": 1,
  "description": "This item's file, directory, or wildcard path."
}

batch-v1.schema.json: $.properties.inputs.oneOf[2].items.oneOf[1].properties.offset

json
{
  "type": "string",
  "minLength": 1,
  "description": "Time offset for this file, including its unit. It is added to the source-wide offset."
}

batch-v1.schema.json: $.properties.source

json
{
  "type": "string",
  "minLength": 1,
  "description": "Source name whose input path is replaced in the template. May be omitted if the template has only one source."
}

definitions.schema.json

Original validation schema

definitions.schema.json: $

json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Chronaxis shared definition file",
  "description": "Shares only sources, signals, and derived expressions. No version wrapper or nested imports; the structure is interpreted under the referencing current analysis configuration (config_version: 4).",
  "$comment": "公共定义文件结构;由分析配置通过单层imports引用。",
  "type": "object",
  "minProperties": 1,
  "additionalProperties": false
}

definitions.schema.json: $.properties.sources

json
{
  "type": "array",
  "description": "Sources in declaration order. Put consecutive files in one source's paths. Loading may enumerate filenames and read DBC metadata needed for omitted signal settings, but does not read business records."
}

definitions.schema.json: $.properties.sources.items

json
{
  "$ref": "analysis.schema.json#/properties/sources/items"
}

definitions.schema.json: $.properties.signals

json
{
  "type": "array",
  "description": "Bind original source fields to simple analysis signal names, specifying type, unit, and validity duration."
}

definitions.schema.json: $.properties.signals.items

json
{
  "$ref": "analysis.schema.json#/properties/signals/items"
}

definitions.schema.json: $.properties.derived

json
{
  "$ref": "analysis.schema.json#/properties/derived",
  "description": "Derived expressions declared by name, sharing the signals namespace. They cannot override same-named signals from earlier files or this file."
}
Chronaxis user manual · Offline edition