Files
octopus-workflow/core/schemas/runs-index.schema.json
T

123 lines
6.0 KiB
JSON
Raw Normal View History

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://eightarms.net/octopus-workflow/schemas/runs-index.schema.json",
"title": "Tier 1 Run Artifact Index",
"description": "Schema for runs/{slug}/index.json 鈥?the artifact manifest for a Tier 1 local structured run. This is the compact-recovery entry point after compaction (compact never deletes local files). Parallel to, not a replacement for, the Tier 2 '## 宸ヤ欢绱㈠紩' issue comment. Authoritative layout: templates/runs-layout.md. Boundary rule: rules/two-tier-artifacts.md.",
"type": "object",
"additionalProperties": false,
"required": ["schema_version", "slug", "artifacts"],
"properties": {
"$schema": {
"type": "string",
"description": "Optional JSON Schema $self reference for editor validation."
},
"schema_version": {
"type": "integer",
"const": 1,
"description": "Index schema version."
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]*$",
"description": "Run slug; must match meta.json.slug."
},
"artifacts": {
"type": "array",
"items": { "$ref": "#/$defs/artifact" },
"description": "One entry per Tier 1 artifact in this run. Tier 2 artifacts (Gitea issue comments, wiki pages, commit status, PRs) are NEVER listed here 鈥?this index is Tier 1 only."
}
},
"$defs": {
"artifact": {
"type": "object",
"additionalProperties": false,
"required": ["path", "type", "tier"],
"properties": {
"path": {
"type": "string",
"minLength": 1,
"description": "Artifact path relative to {active-slug}/. Use forward slashes."
},
"type": {
"type": "string",
"enum": [
"meta",
"index",
"design",
"plan",
"review-findings",
"review-status",
"review-synthesis",
"synthesis-prompt",
"precondition-gate",
"working-notes",
"analysis",
"browser-evidence",
"other"
],
"description": "Artifact category. 'meta'/'index' for the manifest files themselves; stage categories for produced artifacts. 'review-synthesis' marks a synthesis result artifact (round verdict) as distinct from 'synthesis-prompt' (the Phase B task prompt) and 'review-status' (the lifecycle file). 'precondition-gate' marks the review-code mechanical-green gate log. 'working-notes' is the cross-stage narrative memory file ([org-internal #2600]) 鈥?one file per run, appended by every role at close, registered once (stage/produced_by null: multi-stage, multi-role). 'browser-evidence' marks a browser evidence pack manifest ([org-internal #4497] N-03, browser/{session-id}/manifest.json 鈥?shared/pack-manifest-v1)."
},
"schema": {
"type": ["string", "null"],
"format": "uri",
"description": "$id of the validating JSON Schema, or null for schema-less artifacts (e.g. a prompt .md passed via prompt_file). Accepts $ids from the current namespace https://eightarms.net/octopus-workflow/schemas/*.schema.json as well as legacy $ids from the historical namespace https://eightarms.net/fourbroad/octopus/ (archived live runs' index.json carry the old values); legacy values resolve via schemas/id-aliases.json."
},
"tier": {
"type": "integer",
"const": 1,
"description": "Tier marker. This index lists only Tier 1 artifacts, so the value is always 1."
},
"stage": {
"type": ["string", "null"],
"enum": [
"requirements",
"design",
"plan-iterations",
"roadmap",
"implement",
"review-roadmap",
"review-design-space",
"review-iteration-plan",
"review-dag",
"review-code",
"verify",
"audit-process",
"merge-pr",
null
],
"description": "Producing pipeline stage, or null for meta/index manifest entries. Live stage ids (per schemas/workflow-routing.schema.json): review-dag, review-code, verify, audit-process, merge-pr. The production-phase / retired names (requirements, design, plan-iterations, roadmap, implement, review-roadmap, review-design-space, review-iteration-plan) are retained ONLY so historical archived rows keep validating; new artifacts MUST use the live ids."
},
"produced_by": {
"type": ["string", "null"],
"enum": [
"Producer",
"Reviewer",
"Verifier",
"Tool",
"Coordinator",
"Analyst",
"Architect",
"Planner",
"Developer",
"Synthesizer",
"Orchestrator",
"Remediator",
"Auditor",
null
],
"description": "Role that produced the artifact, or null if not role-attributed. Canonical role names are Producer / Reviewer / Verifier / Tool / Coordinator (the `name` field of skills/_shared/roles/*.yaml). The remaining values are fine-grained sub-roles mapped to canonical roles via ROLE_ALIASES in role config: Analyst / Architect / Planner / Developer / Synthesizer / Orchestrator / Remediator map to `Producer`; Auditor maps to `Reviewer`. They are retained so historical index rows validate and so the audit target's revision role (Remediator) and reviewer sub-role (Auditor) can be attributed if ever written to a Tier 1 artifact."
},
"sha": {
"type": ["string", "null"],
"pattern": "^[0-9a-f]{64}$",
"description": "sha256 content digest, or null if not yet computed."
},
"tier2_ref": {
"type": ["string", "null"],
"description": "Cross-link to a Tier 2 mirror of this artifact (issue comment URL, wiki page path, commit status context) when one exists; null when the artifact is Tier 1 only."
}
}
}
}
}