← Files note Workspace|ROGNALIAARCHIVED FILE

skills/note-strategist/references/schemas/weekly-plan-revision.schema.json

7.1 KB · Oct 4, 2026 · 12:33 UTC

↓ Download file

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:rognalia:note-workspace:schema:weekly-plan-revision:1",
  "title": "note Workspace weekly plan revision metadata",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "week",
    "revision",
    "request_id",
    "recorded_at",
    "status",
    "payload_sha256",
    "body_sha256",
    "plan"
  ],
  "properties": {
    "schema_version": {"const": 1},
    "week": {"type": "string", "pattern": "^[0-9]{4}-W[0-9]{2}$"},
    "revision": {"type": "integer", "minimum": 1},
    "request_id": {"type": "string", "pattern": "^[a-z0-9][a-z0-9._:-]{7,127}$"},
    "recorded_at": {"type": "string", "format": "date-time"},
    "status": {"enum": ["recommended", "confirmed", "paused"]},
    "payload_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
    "body_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
    "plan": {"$ref": "#/$defs/plan"}
  },
  "$defs": {
    "oneLineText": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "pattern": "^[^\\r\\n]+$"
    },
    "textList": {
      "type": "array",
      "maxItems": 20,
      "uniqueItems": true,
      "items": {"$ref": "#/$defs/oneLineText"}
    },
    "candidate": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "candidate_id", "direction", "audience", "reader_value", "article_role",
        "source_card_ids", "material_status", "missing_information",
        "research_questions", "why_now", "estimated_effort"
      ],
      "properties": {
        "candidate_id": {"type": "string", "pattern": "^idea-[a-z0-9][a-z0-9-]{2,63}$"},
        "direction": {"$ref": "#/$defs/oneLineText"},
        "audience": {"$ref": "#/$defs/oneLineText"},
        "reader_value": {"$ref": "#/$defs/oneLineText"},
        "article_role": {"enum": ["record", "relationship", "expertise", "work", "revenue", "other"]},
        "source_card_ids": {
          "type": "array",
          "maxItems": 20,
          "uniqueItems": true,
          "items": {"type": "string", "pattern": "^src-[a-z0-9]{8,32}$"}
        },
        "material_status": {"enum": ["ready", "needs_more_source"]},
        "missing_information": {"$ref": "#/$defs/textList"},
        "research_questions": {"$ref": "#/$defs/textList"},
        "why_now": {"$ref": "#/$defs/oneLineText"},
        "estimated_effort": {"$ref": "#/$defs/oneLineText"}
      }
    },
    "sourceSnapshot": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "source_card_id", "revision", "summary", "public_scope",
        "statement_type", "kind", "status"
      ],
      "properties": {
        "source_card_id": {"type": "string", "pattern": "^src-[a-z0-9]{8,32}$"},
        "revision": {"type": "integer", "minimum": 1},
        "summary": {"$ref": "#/$defs/oneLineText"},
        "public_scope": {"type": "string", "minLength": 1},
        "statement_type": {"type": "string", "minLength": 1},
        "kind": {"type": "string", "minLength": 1},
        "status": {"const": "active"}
      }
    },
    "metricStatuses": {
      "oneOf": [
        {"$ref": "#/$defs/metricStatusesV1"},
        {"$ref": "#/$defs/metricStatusesV2"}
      ]
    },
    "metricStatusesV1": {
      "type": "object",
      "additionalProperties": false,
      "required": ["views", "likes", "comments"],
      "properties": {
        "views": {"enum": ["available", "unavailable", "not_visible", "fetch_failed", "not_applicable", null]},
        "likes": {"enum": ["available", "unavailable", "not_visible", "fetch_failed", "not_applicable", null]},
        "comments": {"enum": ["available", "unavailable", "not_visible", "fetch_failed", "not_applicable", null]}
      }
    },
    "metricStatusesV2": {
      "type": "object",
      "additionalProperties": false,
      "required": ["impressions", "page_views", "likes", "comments", "sales"],
      "properties": {
        "impressions": {"enum": ["available", "unavailable", "not_visible", "fetch_failed", "not_applicable", "not_collected", null]},
        "page_views": {"enum": ["available", "unavailable", "not_visible", "fetch_failed", "not_applicable", "not_collected", null]},
        "likes": {"enum": ["available", "unavailable", "not_visible", "fetch_failed", "not_applicable", "not_collected", null]},
        "comments": {"enum": ["available", "unavailable", "not_visible", "fetch_failed", "not_applicable", "not_collected", null]},
        "sales": {"enum": ["available", "unavailable", "not_visible", "fetch_failed", "not_applicable", "not_collected", null]}
      }
    },
    "trackingReview": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "status", "checked_at", "history_path", "history_byte_length",
        "history_prefix_sha256", "history_event_count", "latest_request_id",
        "latest_run_id", "latest_observed_at", "latest_recorded_at",
        "latest_metric_statuses"
      ],
      "properties": {
        "status": {"enum": ["available", "partial", "unavailable", "not_yet_recorded"]},
        "checked_at": {"type": "string", "format": "date-time"},
        "history_path": {"const": "metrics/history.jsonl"},
        "history_byte_length": {"type": "integer", "minimum": 0},
        "history_prefix_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
        "history_event_count": {"type": "integer", "minimum": 0},
        "latest_request_id": {"type": ["string", "null"]},
        "latest_run_id": {"type": ["string", "null"]},
        "latest_observed_at": {"type": ["string", "null"], "format": "date-time"},
        "latest_recorded_at": {"type": ["string", "null"], "format": "date-time"},
        "latest_metric_statuses": {"$ref": "#/$defs/metricStatuses"}
      }
    },
    "plan": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "record_type", "decision", "desired_article_count", "change_summary",
        "confirmed_by_user", "candidates", "source_card_snapshots", "tracking_review"
      ],
      "properties": {
        "record_type": {"enum": ["strategy_recommendation", "user_selection"]},
        "decision": {"enum": ["recommend", "adopt", "revise", "replace", "pause"]},
        "desired_article_count": {"type": "integer", "minimum": 0, "maximum": 7},
        "change_summary": {"$ref": "#/$defs/oneLineText"},
        "confirmed_by_user": {"type": "boolean"},
        "candidates": {"type": "array", "maxItems": 7, "items": {"$ref": "#/$defs/candidate"}},
        "source_card_snapshots": {"type": "array", "maxItems": 140, "items": {"$ref": "#/$defs/sourceSnapshot"}},
        "tracking_review": {"$ref": "#/$defs/trackingReview"}
      },
      "allOf": [{
        "if": {"properties": {"record_type": {"const": "strategy_recommendation"}}, "required": ["record_type"]},
        "then": {
          "properties": {
            "decision": {"const": "recommend"},
            "confirmed_by_user": {"const": false}
          }
        },
        "else": {
          "properties": {
            "decision": {"enum": ["adopt", "revise", "replace", "pause"]},
            "confirmed_by_user": {"const": true}
          }
        }
      }]
    }
  }
}

SHA-256: 1ad1d9e0bb5beb58ee305b923c6a2327b5bee206c8d158774bbd3bb43501b888