Content Operations
Trace supplied derivative provenance branches
Review all reachable ancestor branches and exact asset-version references without enumerating every possible path. Supplied facts only; returns a review packet with no external effects.
Experimental native example · local preview · revision 1
WORKFLOW PREVIEW
See how it works
Use + and − to zoom, F to fit. Press Enter on a node to inspect it.
Private preview. These tested drafts are available for inspection. Adding them to a Vora workspace is still being tested.
What you need
- Authorized supplied facts matching the closed contract.
- Explicit scope, version, authority and completeness facts reviewed by an operator.
Follow the workflow step by step
Supplied agency data
Receive the explicitly supplied manual input packet.
Trace supplied derivative provenance branches
Review all reachable ancestor branches and exact asset-version references without enumerating every possible path. Supplied facts only; returns a review packet with no external effects.
Setup and review
- Review the contract and evidence bounds.
- Run a synthetic supplied-data case.
- Inspect every conflict, omission and unknown before proposing downstream action.
Inspect every node
Expand a node to inspect its complete settings. Review the runtime and adoption evidence before installing it.
Supplied agency data · wfManualTrigger
{
"label": "Supplied agency data"
}Trace supplied derivative provenance branches · code
{
"code": "\nfunction fail(reason){throw new Error('input: '+reason);}\nfunction check(schema,value,where){\n if(value===null){if(schema.type==='null'||Array.isArray(schema.type)&&schema.type.includes('null'))return;fail(where+' wrong_type');}\n const type=Array.isArray(schema.type)?schema.type[0]:schema.type;\n if(type==='object'){\n if(!value||typeof value!=='object'||Array.isArray(value))fail(where+' wrong_type');\n for(const name of Object.keys(value))if(!Object.hasOwn(schema.properties,name))fail(where+' unknown_field');\n for(const name of schema.required)if(!Object.hasOwn(value,name))fail(where+' missing_field');\n for(const [name,shape]of Object.entries(schema.properties))check(shape,value[name],where+'.'+name);\n }else if(type==='array'){\n if(!Array.isArray(value)||value.length>schema.maxItems)fail(where+' array_bound');\n for(const item of value)check(schema.items,item,where+'[]');\n }else if(type==='string'){if(typeof value!=='string'||value.length>schema.maxLength)fail(where+' string_bound');}\n else if(type==='integer'){if(!Number.isSafeInteger(value)||value<schema.minimum||value>schema.maximum)fail(where+' integer_bound');}\n else if(type==='boolean'){if(typeof value!=='boolean')fail(where+' wrong_type');}\n else fail(where+' unsupported_type');\n}\nfunction id(value){if(typeof value!=='string'||!value||value.trim()!==value)fail('noncanonical_identity');return value;}\nfunction unique(values,reason){if(new Set(values).size!==values.length)fail(reason);}\nfunction safeAdd(a,b){if(a>Number.MAX_SAFE_INTEGER-b)fail('unsafe_sum');return a+b;}\nfunction day(value){if(!/^\\d{4}-\\d{2}-\\d{2}$/.test(value))fail('invalid_calendar_day');const ms=Date.parse(value+'T00:00:00Z');if(!Number.isFinite(ms)||new Date(ms).toISOString().slice(0,10)!==value)fail('invalid_calendar_day');return ms;}\nfunction refKey(ref){id(ref.assetId);if(ref.version<1)fail('positive_version_required');return JSON.stringify([ref.assetId,ref.version]);}\nfunction refValue(key){const pair=JSON.parse(key);return {assetId:pair[0],version:pair[1]};}\nfunction sortedRefs(keys){return [...keys].sort().map(refValue);}\n\ncheck({\"type\":\"object\",\"properties\":{\"scopeId\":{\"type\":\"string\",\"maxLength\":128},\"target\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"maxLength\":128},\"version\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":9007199254740991}},\"required\":[\"assetId\",\"version\"],\"additionalProperties\":false},\"selectionComplete\":{\"type\":[\"boolean\",\"null\"]},\"assets\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"maxLength\":128},\"version\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":9007199254740991},\"scopeId\":{\"type\":\"string\",\"maxLength\":128},\"contentIdentity\":{\"type\":\"string\",\"maxLength\":128},\"parents\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"maxLength\":128},\"version\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":9007199254740991}},\"required\":[\"assetId\",\"version\"],\"additionalProperties\":false},\"maxItems\":20},\"requiredApprovalRefIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"maxLength\":128},\"maxItems\":20}},\"required\":[\"assetId\",\"version\",\"scopeId\",\"contentIdentity\",\"parents\",\"requiredApprovalRefIds\"],\"additionalProperties\":false},\"maxItems\":100},\"approvals\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"referenceId\":{\"type\":\"string\",\"maxLength\":128},\"assetId\":{\"type\":\"string\",\"maxLength\":128},\"version\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":9007199254740991},\"scopeId\":{\"type\":\"string\",\"maxLength\":128},\"approved\":{\"type\":[\"boolean\",\"null\"]}},\"required\":[\"referenceId\",\"assetId\",\"version\",\"scopeId\",\"approved\"],\"additionalProperties\":false},\"maxItems\":100}},\"required\":[\"scopeId\",\"target\",\"selectionComplete\",\"assets\",\"approvals\"],\"additionalProperties\":false},context.input,\"input\");\nconst result=(function derivativeProvenanceGraph(x){\n id(x.scopeId);const target=refKey(x.target),groups=new Map(),approvalMap=new Map();\n let declaredEdges=0,declaredReferences=0;\n for(const row of x.assets){\n const key=refKey(row);if(id(row.scopeId)!==x.scopeId)fail('scope_mismatch');id(row.contentIdentity);\n unique(row.parents.map(refKey),'duplicate_parent_reference');\n unique(row.requiredApprovalRefIds.map(id),'duplicate_required_reference');\n declaredEdges+=row.parents.length;declaredReferences+=row.requiredApprovalRefIds.length;\n if(declaredEdges>400)fail('bounded_edge_limit');\n if(declaredReferences>400)fail('bounded_reference_limit');\n if(!groups.has(key))groups.set(key,[]);groups.get(key).push(row);\n }\n for(const row of x.approvals){\n id(row.referenceId);refKey(row);if(id(row.scopeId)!==x.scopeId)fail('scope_mismatch');\n if(approvalMap.has(row.referenceId))fail('duplicate_approval_reference_id');approvalMap.set(row.referenceId,row);\n }\n const adjacency=new Map(),required=new Map(),allConflicts=new Set();\n for(const [key,records]of groups){\n const signatures=new Set(records.map(r=>JSON.stringify([r.contentIdentity,r.parents.map(refKey).sort(),[...r.requiredApprovalRefIds].sort()])));\n if(signatures.size>1)allConflicts.add(key);\n adjacency.set(key,new Set(records.flatMap(r=>r.parents.map(refKey))));\n required.set(key,new Set(records.flatMap(r=>r.requiredApprovalRefIds)));\n }\n const present=new Set(),missing=new Set(),queue=[target];\n while(queue.length){\n const key=queue.pop();if(present.has(key)||missing.has(key))continue;\n if(!groups.has(key)){missing.add(key);continue;}\n present.add(key);for(const parent of adjacency.get(key))queue.push(parent);\n }\n const colors=new Map(),cycles=[];\n function visit(key){\n colors.set(key,1);\n for(const parent of [...adjacency.get(key)].sort()){\n if(!present.has(parent))continue;\n if(colors.get(parent)===1)cycles.push({from:refValue(key),to:refValue(parent)});\n else if(!colors.get(parent))visit(parent);\n }\n colors.set(key,2);\n }\n for(const key of [...present].sort())if(!colors.get(key))visit(key);\n const missingRoots=new Set(),missingApproval=new Set(),rejected=new Set(),unknown=new Set();\n for(const key of present){\n const refs=required.get(key);\n if(adjacency.get(key).size===0&&refs.size===0)missingRoots.add(key);\n for(const referenceId of refs){\n const approval=approvalMap.get(referenceId);\n if(!approval){missingApproval.add(referenceId);continue;}\n if(refKey(approval)!==key||approval.approved===false){rejected.add(referenceId);continue;}\n if(approval.approved===null)unknown.add(referenceId);\n }\n }\n const conflicts=new Set([...present].filter(key=>allConflicts.has(key)));\n cycles.sort((a,b)=>{const ka=JSON.stringify([a.from.assetId,a.from.version,a.to.assetId,a.to.version]),kb=JSON.stringify([b.from.assetId,b.from.version,b.to.assetId,b.to.version]);return ka<kb?-1:ka>kb?1:0;});\n const status=conflicts.size?'conflict':cycles.length?'cycle':missing.size||missingRoots.size||missingApproval.size||rejected.size||unknown.size||x.selectionComplete!==true?'incomplete':'traceable';\n return {status,selectionComplete:x.selectionComplete,closure:sortedRefs(present),missingAncestors:sortedRefs(missing),conflictingAssets:sortedRefs(conflicts),cycleEdges:cycles,missingRootApprovalAssets:sortedRefs(missingRoots),missingApprovalRefIds:[...missingApproval].sort(),rejectedApprovalRefIds:[...rejected].sort(),unknownApprovalRefIds:[...unknown].sort()};\n})(context.input);\ncheck({\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"string\",\"maxLength\":128},\"selectionComplete\":{\"type\":[\"boolean\",\"null\"]},\"closure\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"maxLength\":128},\"version\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":9007199254740991}},\"required\":[\"assetId\",\"version\"],\"additionalProperties\":false},\"maxItems\":100},\"missingAncestors\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"maxLength\":128},\"version\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":9007199254740991}},\"required\":[\"assetId\",\"version\"],\"additionalProperties\":false},\"maxItems\":400},\"conflictingAssets\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"maxLength\":128},\"version\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":9007199254740991}},\"required\":[\"assetId\",\"version\"],\"additionalProperties\":false},\"maxItems\":100},\"cycleEdges\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"from\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"maxLength\":128},\"version\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":9007199254740991}},\"required\":[\"assetId\",\"version\"],\"additionalProperties\":false},\"to\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"maxLength\":128},\"version\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":9007199254740991}},\"required\":[\"assetId\",\"version\"],\"additionalProperties\":false}},\"required\":[\"from\",\"to\"],\"additionalProperties\":false},\"maxItems\":400},\"missingRootApprovalAssets\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"maxLength\":128},\"version\":{\"type\":\"integer\",\"minimum\":0,\"maximum\":9007199254740991}},\"required\":[\"assetId\",\"version\"],\"additionalProperties\":false},\"maxItems\":100},\"missingApprovalRefIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"maxLength\":128},\"maxItems\":400},\"rejectedApprovalRefIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"maxLength\":128},\"maxItems\":400},\"unknownApprovalRefIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"maxLength\":128},\"maxItems\":400}},\"required\":[\"status\",\"selectionComplete\",\"closure\",\"missingAncestors\",\"conflictingAssets\",\"cycleEdges\",\"missingRootApprovalAssets\",\"missingApprovalRefIds\",\"rejectedApprovalRefIds\",\"unknownApprovalRefIds\"],\"additionalProperties\":false},result,\"output\");\nreturn result;",
"label": "Trace supplied derivative provenance branches",
"memoryLimit": 16,
"outputVar": "result",
"timeout": 1000
}Input and output contracts
Input
{
"type": "object",
"properties": {
"scopeId": {
"type": "string",
"maxLength": 128
},
"target": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"maxLength": 128
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"assetId",
"version"
],
"additionalProperties": false
},
"selectionComplete": {
"type": [
"boolean",
"null"
]
},
"assets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"maxLength": 128
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"scopeId": {
"type": "string",
"maxLength": 128
},
"contentIdentity": {
"type": "string",
"maxLength": 128
},
"parents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"maxLength": 128
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"assetId",
"version"
],
"additionalProperties": false
},
"maxItems": 20
},
"requiredApprovalRefIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 128
},
"maxItems": 20
}
},
"required": [
"assetId",
"version",
"scopeId",
"contentIdentity",
"parents",
"requiredApprovalRefIds"
],
"additionalProperties": false
},
"maxItems": 100
},
"approvals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"referenceId": {
"type": "string",
"maxLength": 128
},
"assetId": {
"type": "string",
"maxLength": 128
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"scopeId": {
"type": "string",
"maxLength": 128
},
"approved": {
"type": [
"boolean",
"null"
]
}
},
"required": [
"referenceId",
"assetId",
"version",
"scopeId",
"approved"
],
"additionalProperties": false
},
"maxItems": 100
}
},
"required": [
"scopeId",
"target",
"selectionComplete",
"assets",
"approvals"
],
"additionalProperties": false
}Output
{
"type": "object",
"properties": {
"status": {
"type": "string",
"maxLength": 128
},
"selectionComplete": {
"type": [
"boolean",
"null"
]
},
"closure": {
"type": "array",
"items": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"maxLength": 128
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"assetId",
"version"
],
"additionalProperties": false
},
"maxItems": 100
},
"missingAncestors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"maxLength": 128
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"assetId",
"version"
],
"additionalProperties": false
},
"maxItems": 400
},
"conflictingAssets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"maxLength": 128
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"assetId",
"version"
],
"additionalProperties": false
},
"maxItems": 100
},
"cycleEdges": {
"type": "array",
"items": {
"type": "object",
"properties": {
"from": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"maxLength": 128
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"assetId",
"version"
],
"additionalProperties": false
},
"to": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"maxLength": 128
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"assetId",
"version"
],
"additionalProperties": false
}
},
"required": [
"from",
"to"
],
"additionalProperties": false
},
"maxItems": 400
},
"missingRootApprovalAssets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"maxLength": 128
},
"version": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"assetId",
"version"
],
"additionalProperties": false
},
"maxItems": 100
},
"missingApprovalRefIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 128
},
"maxItems": 400
},
"rejectedApprovalRefIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 128
},
"maxItems": 400
},
"unknownApprovalRefIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 128
},
"maxItems": 400
}
},
"required": [
"status",
"selectionComplete",
"closure",
"missingAncestors",
"conflictingAssets",
"cycleEdges",
"missingRootApprovalAssets",
"missingApprovalRefIds",
"rejectedApprovalRefIds",
"unknownApprovalRefIds"
],
"additionalProperties": false
}Choose an output for this job
This business workflow also has 15 delivery formats. Compare their inputs, output examples and limits.
Example input and result
These examples use synthetic data.
Input
{
"scopeId": "client-A",
"target": {
"assetId": "D",
"version": 1
},
"selectionComplete": true,
"assets": [
{
"assetId": "D",
"version": 1,
"scopeId": "client-A",
"contentIdentity": "content-D",
"parents": [
{
"assetId": "R1",
"version": 1
},
{
"assetId": "R2",
"version": 1
}
],
"requiredApprovalRefIds": []
},
{
"assetId": "R1",
"version": 1,
"scopeId": "client-A",
"contentIdentity": "content-R1",
"parents": [],
"requiredApprovalRefIds": [
"ap-R1"
]
}
],
"approvals": [
{
"referenceId": "ap-R1",
"assetId": "R1",
"version": 1,
"scopeId": "client-A",
"approved": true
}
]
}Expected result
{
"status": "incomplete",
"selectionComplete": true,
"closure": [
{
"assetId": "D",
"version": 1
},
{
"assetId": "R1",
"version": 1
}
],
"missingAncestors": [
{
"assetId": "R2",
"version": 1
}
],
"conflictingAssets": [],
"cycleEdges": [],
"missingRootApprovalAssets": [],
"missingApprovalRefIds": [],
"rejectedApprovalRefIds": [],
"unknownApprovalRefIds": []
}Success means: Review all reachable ancestor branches and exact asset-version references without enumerating every possible path. Supplied facts only; returns a review packet with no external effects.
When something goes wrong
- Correct the rejected shape, identity, scope or numeric bound and repeat with supplied facts. Preserve unknown and conflicting facts rather than invent a resolution.
Limits and costs
- Identity is exact (assetId,positive integer version), never latest-version fallback. Every supplied scope must match. Identical redundant asset facts collapse; differing parent sets, content identity or required references at one identity conflict. Inspect the union of supplied branches for conflicting identities while blocking traceable status. Root nodes require at least one supplied approved reference; every explicitly required reference must resolve to the exact asset/version and approved=true. Missing/unknown/rejected references block traceability. Reachable ancestor/edge closure only, maximum100 asset records,20 parents per record,400 total declared parent edges and400 required references. Detect bounded cycle edges; never enumerate all paths. Traceable status additionally requires selectionComplete=true and grants no legal permission. Pure supplied-data processing; no independent provider, legal, authentication or customer-acceptance verification.
- No paid model calls or metered third-party operations are declared in this pure graph. Vora plan availability, compute and quotas still apply; pricing has not been verified by this batch.